2017-08-24 114 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