混合效应模型中随机斜率的交互作用在Julia中的处理

3

在Julia中,是否可能对LMM拟合进行随机效应的交互作用?

这会导致错误。

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个回答

1
也许这应该是在 GitHub 上的 MixedModels.jl 或 DataFrames.jl 中的一个问题。但无论如何,我已经找到了似乎存在的问题:计算 @formula 的 eterms。因此,为了使其正常工作,我重新定义了计算方法。将以下内容粘贴到 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页面链接:

谢谢!这似乎有效。我正在使用Julia v0.6.0,并能够获得模型的完整输出。它不想在fast=true下运行,但与R中的lmer大致相同的结果(通常情况下,我看到一些变化,因此无法确定这是由于重新定义计算还是正常行为)。不确定Cholesky分解,但与R相比,随机效应的相关性有所偏差。 - mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接