2017-08-24 109 views
3

在Julia中可能存在LMM中随机效应的相互作用吗?Julia中混合效应模型中随机斜率的相互作用

这给出了一个错误

model = fit!(lmm(@formula(response ~ 1 + A*B + (1+A*B|sub)), data) 
ERROR: MethodError: no method matching getindex(::DataFrames.DataFrame, ::Expr) 

拆开方面也没有帮助。

model = fit!(lmm(@formula(response ~ 1 + A*B + (1+A+B+A&B|sub)), data) 

这工作

mode2 = fit!(lmm(@formula(response ~ 1 + A*B + (1+A+B|sub)), data) 

注意,没有任何问题,当你有固定效应的相互作用。

回答

1

也许这应该是github上的MixedModels.jl或DataFrames.jl中的一个问题。但是,无论如何,我已经查明了似乎是一个问题:计算@formulaeterms。所以,为了让它起作用,我重新定义了计算。以下内容粘贴到了REPL和尝试有问题​​fit!

function DataFrames.evt(ex::Expr) 
    if ex.head != :call error("Non-call expression encountered") end 
    if !(ex.args[1] in DataFrames.nonevaluation) 
     trms = DataFrames.getterms(ex) 
     if length(trms)>1 
      return vcat(map(DataFrames.evt,trms)...) 
     else 
      return [trms] 
     end 
    end 
    return filter(x->!isa(x,Number), vcat(map(DataFrames.evt, ex.args[2:end])...)) 
end 

现在,这个留给另一个问题在Cholesky分解功能的改变(我Julia是V0.7),这也是可以解决的,但如果一切其他人正在工作,上述重新定义允许继续过去的第一个问题。

通过以下链接可MixedModels和DataFrames github上页:

+0

谢谢!这似乎工作。我正在使用Julia v0.6.0,并且能够获得模型的完整输出。它不想用'fast = true'运行,但给出了和R中lmer大致相同的结果(一般来说,我看到一些变化,所以不能确定这是由于重新定义了计算还是正常行为) 。不确定Cholesky分解,但与R相比,随机效应的相关性是关闭的。 – mike