如何在线性混合模型中选择随机效应和固定效应结构?


19

请从主题设计的两个方面考虑以下数据:

df <- "http://personality-project.org/r/datasets/R.appendix4.data"
df <- read.table(df,header=T)
head(df)

Observation Subject Task Valence Recall
1           1     Jim Free     Neg      8
2           2     Jim Free     Neu      9
3           3     Jim Free     Pos      5
4           4     Jim Cued     Neg      7
5           5     Jim Cued     Neu      9
6           6     Jim Cued     Pos     10

我想使用混合线性模型对此进行分析。考虑到所有可能的固定效应和随机效应,有多种可能的模型:

# different fixed effects with random-intercept
a0 <- lmer(Recall~1 + (1|Subject), REML=F,df)
a1 <- lmer(Recall~Task + (1|Subject), REML=F,df)
a2 <- lmer(Recall~Valence + (1|Subject), REML=F,df)
a3 <- lmer(Recall~Task+Valence + (1|Subject), REML=F,df)
a4 <- lmer(Recall~Task*Valence + (1|Subject), REML=F,df)

# different fixed effects with random-intercept-random-slope
b0 <- lmer(Recall~1 + (1|Subject) + (0+Task|Subject) + (0+Valence|Subject), REML=F,df)
b1 <- lmer(Recall~Task + (1|Subject) + (0+Task|Subject) + (0+Valence|Subject), REML=F,df)
b2 <- lmer(Recall~Valence + (1|Subject) + (0+Task|Subject) + (0+Valence|Subject), REML=F,df)
b3 <- lmer(Recall~Task+Valence + (1|Subject) + (0+Task|Subject) + (0+Valence|Subject), REML=F,df)
b4 <- lmer(Recall~Task*Valence + (1|Subject) + (0+Task|Subject) + (0+Valence|Subject), REML=F,df)

# different fixed effects with random-intercept-random-slope including variance-covariance matrix
c0 <- lmer(Recall~1 + (1 + Valence + Task|Subject), REML=F,df)
c1 <- lmer(Recall~Task + (1 + Valence + Task|Subject), REML=F,df)
c2 <- lmer(Recall~Valence + (1 + Valence + Task|Subject), REML=F,df)
c3 <- lmer(Recall~Task+Valence + (1 + Valence + Task|Subject), REML=F,df)
c4 <- lmer(Recall~Task*Valence + (1 + Valence + Task|Subject), REML=F,df)
  1. 在这种情况下,选择最佳拟合模型的推荐方法是什么?使用对数似然比测试时,建议的步骤是什么?向上生成模型(从零模型到最复杂的模型)还是向下生成模型(从最复杂的模型到零的模型)?逐步包含或排除?还是建议将所有模型放在一个对数似然比检验中,并选择p值最低的模型?如何比较未嵌套的模型?

  2. 是否建议先找到合适的固定效果结构,然后再找到合适的随机效果结构,或者相反(我已经找到了这两种选择的参考...)?

  3. 建议的结果报告方式是什么?通过对数似然比检验报告p值,将完全混合模型(具有问题的影响)与简化模型(没有问题的影响)进行比较。还是最好使用对数似然比检验找到最佳拟合模型,然后使用lmerTest从最佳拟合模型中的效果报告p值?

Answers:


18

我不确定对此是否真的有一个规范的答案,但是我会试一试。

在这种情况下,选择最佳拟合模型的推荐方法是什么?使用对数似然比测试时,建议的步骤是什么?向上生成模型(从零模型到最复杂的模型)还是向下生成模型(从最复杂的模型到零的模型)?逐步包含或排除?还是建议将所有模型放在一个对数似然比检验中,并选择p值最低的模型?如何比较未嵌套的模型?

这取决于您的目标。

  • 一般来说,你应该非常非常小心型号选择(见例如这个答案,或者这个职位,或者只是谷歌“哈勒尔逐步” ......)。
  • 如果您有兴趣让您的p值是有意义的(即你正在做验证假设检验),你应该不会做模型的选择。但是如果您要对模型的非重点部分进行模型选择,例如对随机效应进行模型选择(如果您的主要兴趣是对固定效应进行推断),那么对我来说尚不清楚模型选择过程是否同样糟糕。
  • 没有“将所有模型放在一个似然比测试中”这样的东西-似然比测试是成对的过程。如果您想在随机效应上进行模型选择(例如),我可能会建议使用此示例中的信息准则采用“一次全部”方法-至少避免逐步方法的一些问题(但不能避免型号选择)。
  • 巴尔等。2013年“保持最大性能” 杂志《记忆与语言》(doi:10.1016 / j.jml.2012.11.001)建议使用最大模型(仅)。
  • Shravan Vasishth表示反对,认为除非数据集非常大(并且信噪比很高),否则此类模型的功能将不足,因此存在问题。
  • 另一种合理的方法是拟合一个大型但合理的模型,然后,如果拟合为单数,则删除术语,直到不再适用为止。
  • 通过一些警告(在GLMM FAQ中进行了枚举),您可以使用信息标准来比较具有不同随机效果的非嵌套模型(尽管Brian Ripley表示不同意见:请参见第6页的底部

是否建议先找到合适的固定效果结构,然后再找到合适的随机效果结构,或者相反(我已经找到了这两种选择的参考...)?

我想没有人知道。一般情况下,请参阅有关模型选择的先前答案。如果您可以清楚地定义您的目标(很少有人这样做),那么这个问题可能是可以回答的。如果您同时具有这两个选项的参考,则将您的问题编辑为包括它们将很有用...(关于它的价值,此示例(上面已引述)使用信息条件选择随机效果部分,然后避开对模型的固定效果部分。

建议的结果报告方式是什么?通过对数似然比检验报告p值,将完全混合模型(具有问题的影响)与简化模型(没有问题的影响)进行比较。还是最好使用对数似然比检验找到最佳拟合模型,然后使用lmerTest从最佳拟合模型中的效果报告p值?

这是另一个难题。如果您报告的边际效应,通过报道lmerTest,你必须对边缘化的担心(例如,主要影响的估计是否AB有意义时,有一个A-by- B模型交互); 这是一大堆蠕虫,但是如果您按照的建议使用,则可以缓解一些蠕虫。平衡的设计也有帮助。如果您真的想解决所有这些难题,我想我会推荐,它为您提供与相似的输出,但是会尝试解决这些问题。contrasts="sum"afex::mixed()afex::mixedlmerTest


12

2017年5月更新:事实证明,我在这里写的东西有点不对劲。在整个帖子中进行了一些更新。


我已经非常同意Ben Bolker所说的话(感谢您的大声疾呼afex::mixed()),但是让我在这个问题上添加一些更笼统和具体的想法。

专注于固定效应与随机效应以及如何报告结果

对于乔纳森·巴伦(Jonathan Baron)的示例数据集中表示的实验研究类型,您使用的重要问题通常是操纵因素是否具有整体效果。例如,我们是否找到的整体主要效果或相互作用Task?重要的一点是,在那些数据集中,通常所有因素都在完全实验控制之下并随机分配。因此,关注的焦点通常集中在固定效果上。
相反,随机效应成分可以看作是捕获对主要问题不一定重要的系统差异(即效应大小之间的个体差异)的“讨厌”参数。从这个角度来看,建议使用Barr等人提出的最大随机效应结构。自然地遵循。不难想象,实验性操作不会以完全相同的方式影响所有个体,我们希望对此进行控制。另一方面,因素或水平的数量通常不会太大,以致过度拟合的危险似乎相对较小。

因此,我会遵循Barr等人的建议。并指定一个最大的随机效应结构,并将固定效应的测试报告为我的主要结果。为了测试固定效果,我还建议使用afex::mixed()它报告效果或因子测试(而不是参数测试)并以某种合理的方式计算这些测试(例如,对所有模型使用相同的随机效果结构,其中删除了单个效果,使用了零和和,提供了不同的方法来计算p值,...)。

那示例数据呢

您提供的示例数据的问题在于,对于该数据集,最大的随机效应结构会导致模型过饱和,因为设计的每个像元只有一个数据点:

> with(df, table(Valence, Subject, Task))
, , Task = Cued

       Subject
Valence Faye Jason Jim Ron Victor
    Neg    1     1   1   1      1
    Neu    1     1   1   1      1
    Pos    1     1   1   1      1

, , Task = Free

       Subject
Valence Faye Jason Jim Ron Victor
    Neg    1     1   1   1      1
    Neu    1     1   1   1      1
    Pos    1     1   1   1      1

因此,lmer对最大随机效应结构的抑制:

> lmer(Recall~Task*Valence + (Valence*Task|Subject), df)
Error: number of observations (=30) <= number of random effects (=30) for term
(Valence * Task | Subject); the random-effects parameters and the residual variance
(or scale parameter) are probably unidentifiable

不幸的是,据我所知,尚无商定的方式来解决该问题。但让我素描并讨论一些问题:

  1. 第一个解决方案是删除最高随机斜率并测试此模型的效果:

    require(afex)
    mixed(Recall~Task*Valence + (Valence+Task|Subject), df)
            Effect    F ndf  ddf F.scaling p.value
    1         Task 6.56   1 4.00      1.00     .06
    2      Valence 0.80   2 3.00      0.75     .53
    3 Task:Valence 0.42   2 8.00      1.00     .67

    但是,此解决方案是临时的,并没有太过积极。

    2017年5月更新:这是我目前认可的方法。请参阅此博客文章我共同撰写的章节的草稿,“传统ANOVA设计的随机效应结构”部分。

  2. 另一种解决方案(可以看作是Barr等人的讨论所倡导的一种解决方案)可以是始终去除随机斜率以获得最小的效果。不过,这有两个问题:(1)我们使用哪种随机效应结构来找出最小的效应,以及(2)如果较高阶的效应(例如,存在这种效应的相互作用(请参见此处)。结果,将需要手工建立这种随机效果结构,并将如此构造的模型矩阵传递给lmer调用。

  3. 第三种解决方案是使用随机效应部分的替代参数化,即与该数据的RM-ANOVA模型相对应的一种。不幸的是(?),lmer不允许“负方差”,因此此参数化与所有数据集的RM-ANOVA不完全对应,请参见此处和其他地方(例如,此处此处)的讨论。这些数据的“ lmer-ANOVA”为:

    > mixed(Recall~Task*Valence + (1|Subject) + (1|Task:Subject) + (1|Valence:Subject), df)
            Effect    F ndf  ddf F.scaling p.value
    1         Task 7.35   1 4.00      1.00     .05
    2      Valence 1.46   2 8.00      1.00     .29
    3 Task:Valence 0.29   2 8.00      1.00     .76

考虑到所有这些问题lmer,除非可以针对最大随机效应结构的问题找到更一致的解决方案,否则我根本不会用它来拟合设计中每个单元只有一个数据点的数据集。

  1. 相反,我仍然可以仍然使用经典的方差分析。car::Anova()afex结果中使用包装器之一将是:

    > aov4(Recall~Task*Valence + (Valence*Task|Subject), df)
            Effect         df  MSE      F  ges   p
    1      Valence 1.44, 5.75 4.67   1.46  .02 .29
    2         Task       1, 4 4.08 7.35 +  .07 .05
    3 Valence:Task 1.63, 6.52 2.96   0.29 .003 .71

    请注意,afex现在还允许返回拟合模型aov,可以将模型传递给lsmeans事后测试(但对于效果测试,所报告的效果car::Anova仍然更合理):

    > require(lsmeans)
    > m <- aov4(Recall~Task*Valence + (Valence*Task|Subject), df, return = "aov")
    > lsmeans(m, ~Task+Valence)
     Task Valence lsmean       SE   df lower.CL upper.CL
     Cued Neg       11.8 1.852026 5.52  7.17157 16.42843
     Free Neg       10.2 1.852026 5.52  5.57157 14.82843
     Cued Neu       13.0 1.852026 5.52  8.37157 17.62843
     Free Neu       11.2 1.852026 5.52  6.57157 15.82843
     Cued Pos       13.6 1.852026 5.52  8.97157 18.22843
     Free Pos       11.0 1.852026 5.52  6.37157 15.62843
    
    Confidence level used: 0.95 

(+1)“不幸的是,lmer不允许负相关” –难道这不是“不允许负方差”吗?另外,请重新更新:您能否更明确地知道此答案中的“错误”是什么?
变形虫说恢复莫妮卡

(我阅读了链接文章,似乎主要的信息是,这里列出的#1方法比您以前想像的更加洁净。正确吗?目前尚不清楚您是否认为它比#3或#4更可取。 )。
变形虫说莫妮卡(Reonica)

@amoeba是的,您是正确的。我太懒了,无法据此更新我的答案。
亨里克

@amoeba而且您也正确的相关。lmer不允许负方差,但显然方差成分之间存在负相关。
亨里克

1
我做了一些编辑,您可能要确保我没有歪曲您的身份。
变形虫说恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.