【问题标题】:Are random effect variables automatically taken as factors in lmer (or lme) in R?随机效应变量是否会自动作为 R 中 lmer(或 lme)中的因子?
【发布时间】:2017-02-19 03:20:33
【问题描述】:

我了解在混合效应模型中将连续或数值变量作为随机效应没有多大意义(例如,请参阅here)。

但我想知道的是,R 中的 lme4::lmernlme::lme 是否故意阻止您这样做......

具体来说,我要问的是:如果我提供lmer(或lme)任何非因子(非分类)变量作为随机效应,函数会自动将其视为因素?

factor() 直接插入lmer(使用lm 时的常用方法)会产生以下错误:

lmer(y ~ z + (1|factor(x)), data = dat)
Error: couldn't evaluate grouping factor factor(x) within model frame: try adding grouping factor to data frame explicitly if possible

虽然上述错误提到直接向数据添加分组因子,但它没有指定所述分组因子 需要 是否是一个因子(或者这可能是单词选择中隐含的)?

我知道直接从我的数据创建一个新的因子类变量相当简单,但我只是好奇在使用lmer(或lme)时是否真的有必要。

【问题讨论】:

    标签: r lme4 categorical-data mixed-models nlme


    【解决方案1】:

    这似乎无关紧要。

    library(lme4)
    
    sl <- sleepstudy
    sl$Subject <- as.numeric(levels(sl$Subject))[sl$Subject]
    
    ## subject as factor
    m1 <- lmer(Reaction ~ Days + (1|Subject), data = sleepstudy)
    
    ## subject as numeric
    m2 <- update(m1, data = sl)
    
    all.equal(VarCorr(m1), VarCorr(m2))
    # TRUE
    

    检查对象的其余部分,调用不同(这是有道理的,我将数据框称为不同的东西),并且框架不同(由于主题中的数字与因子差异)。其他一切都是一样的。

    all.equal(m1, m2)
    #[1] "Attributes: < Component “call”: target, current do not match when deparsed >"     
    #[2] "Attributes: < Component “frame”: Component “Subject”: 'current' is not a factor >"
    

    分组因子受factorize()mkBlist() 的影响,这在mkReTrms() 内调用,它为随机效应创建模型矩阵。 factorize() 是一个助手,它最终在随机效应公式中的右侧项上调用 factor(x)(取决于它是否已经是一个因素等)

    【讨论】:

    • 感谢您的反馈!这有点肤浅(回答粗体问题“函数会自动将其视为一个因素吗?”而不是 为什么 在公式的 RE 部分调用函数不起作用) .这不是我理解得不够好的评论,你想添加一个答案吗?
    • @alexforrence 谢谢,Alex 这很有帮助。您在哪里/如何准确确定您的最后一段(“分组因素......等)”?
    • @theforestecologist 通常来自github.com/lme4/lme4/blob/master/R/utilities.R 的来源,有没有什么特别的地方没有意义?
    • @alexforrence 不,我只是不知道如何自己做:p。
    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多