使用lme4的混合效应模型中交互项的P值


10

我正在使用lme4in来分析一些行为数据R,主要是按照Bodo Winter的出色教程进行的,但是我不理解我是否正确处理了交互。更糟糕的是,没有其他人参与到这项研究中来,因此使用混合模型,因此在确保一切正确的时候我有点不知所措。

我认为我应该尽最大的努力来解释问题,然后请求您的集体更正,而不是仅仅寻求帮助。其他一些方面是:

  • 在写作时,我发现了这个问题,表明nlme更直接地给交互项赋予p值,但是我认为与的关系仍然有效lme4
  • Livius'该问题的答案提供了许多其他阅读文章的链接,我将在接下来的几天中尝试阅读这些文章,因此,我将对所带来的任何进步进行评论。

在我的数据中,我有一个因变量dv,一个condition操作(0 =对照,1 =实验条件,应导致更高的值dv),还有一个前提条件,标记为appropriate1为此进行编码的试验应显示出效果,但编码的试验0可能不会,因为缺少一个关键因素。

我还包括两个随机截距,分别用于subject和,用于target反映dv每个主题内以及所解决的14个问题中的每个问题的相关值(每个参与者都解决了每个问题的对照和实验版本)。

library(lme4)
data = read.csv("data.csv")

null_model        = lmer(dv ~ (1 | subject) + (1 | target), data = data)
mainfx_model      = lmer(dv ~ condition + appropriate + (1 | subject) + (1 | target),
                         data = data)
interaction_model = lmer(dv ~ condition + appropriate + condition*appropriate +
                              (1 | subject) + (1 | target), data = data)
summary(interaction_model)

输出:

## Linear mixed model fit by REML ['lmerMod']
## ...excluded for brevity....
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  subject  (Intercept) 0.006594 0.0812  
##  target   (Intercept) 0.000557 0.0236  
##  Residual             0.210172 0.4584  
## Number of obs: 690, groups: subject, 38; target, 14
## 
## Fixed effects:
##                                Estimate Std. Error t value
## (Intercept)                    0.2518     0.0501    5.03
## conditioncontrol               0.0579     0.0588    0.98
## appropriate                   -0.0358     0.0595   -0.60
## conditioncontrol:appropriate  -0.1553     0.0740   -2.10
## 
## Correlation of Fixed Effects:
## ...excluded for brevity.

然后interaction_model,方差分析显示比的拟合度要好得多mainfx_model,由此可以得出结论,存在显着的交互作用(p = .035)。

anova(mainfx_model, interaction_model)

输出:

## ...excluded for brevity....
##                   Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)  
## mainfx_model       6 913 940   -450      901                          
## interaction_model  7 910 942   -448      896  4.44      1      0.035 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

从那里,我隔离出appropriate满足要求的数据的子集(即appropriate = 1),并使其适合空模型和包含condition效果的模型,再次使用ANOVA比较这两个模型,然后找出condition是一个重要的预测指标。

good_data = data[data$appropriate == 1, ]
good_null_model   = lmer(dv ~ (1 | subject) + (1 | target), data = good_data)
good_mainfx_model = lmer(dv ~ condition + (1 | subject) + (1 | target), data = good_data)

anova(good_null_model, good_mainfx_model)

输出:

## Data: good_data
## models:
## good_null_model: dv ~ (1 | subject) + (1 | target)
## good_mainfx_model: dv ~ condition + (1 | subject) + (1 | target)
##                   Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)  
## good_null_model    4 491 507   -241      483                          
## good_mainfx_model  5 487 507   -238      477  5.55      1      0.018 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

检查以下问题以获取有关p值的更多信息lme4stats.stackexchange.com/questions/118416/…–
蒂姆

使用lmerTest :: anova()将为您提供每个术语具有p值的anova表。这样,您就可以直接检查交互,而不必比较整体模型。看到此问题的答案@Tim链接到:stats.stackexchange.com/a/118436/35304
Kayle Sawyer

Answers:


3

我在这里看不到太多要说的。我认为你做得很好。

人们已经讨论了几种方法来测试效果并获得复杂混合效果模型的p值。这是一个很好的概述这里。最好是使用计算量大的方法(自举或贝叶斯方法),但这对大多数人来说更高级。第二种最佳(也是最方便的一种)方法是使用似然比检验。那就是anova()(技术上是?anova.merMod())正在做什么。重要的是,仅对完全完全然而不是受限最大似然拟合的模型使用似然比检验(REML)。另一方面,对于最终模型和解释,您想使用REML。这让许多人感到困惑。在输出中,我们看到您使用REML拟合了模型(这是因为TRUE默认情况下,该选项设置为lmer()。这意味着您的测试无效,但是,因为这是一个常见错误,因此anova.merMod()包含一个refit参数,该参数由默认设置为TRUE,并且您没有更改它,因此软件包开发人员的远见卓识将您保存在那里。

关于打开交互包装的策略,您所做的一切都很好。请记住,交互使用所有数据进行测试。可能会有很大的交互作用,但没有任何分层测试有意义,这使某些人感到困惑。(不过,您似乎没有发生过。)


0

我本人是新手,请遵循Zuur等人的建议。我lmenlme程序包中使用,而不是lme4在需要向其他线性模型中添加层次结构错误结构时使用。我的回应可能还很遥远。

两条评论:

(1)我不确定仅condition在子集中进行测试是否有意义appropriate==1。如果要获取主要效果的p值,可以Anova从“ car”包中使用:

require(car)
Anova(M,type="III")# type III Sum of Squares. M was fitted using method=REML

如果您想解决交互问题,则可以直接运行配对比较(?),也可以对两个子集进行操作(即也可以对其中的子集进行操作appropriate==0)。

(2)您可能想首先选择错误结构,而不是假设(1 | subject) + (1 | target)是最佳错误结构。从你写的内容来看,我认为这condition是一个主观因素,而appropriate无论是一个学科间因素还是一个目标间因素。您可能想要为主题内和/或目标内因子dv ~ condition + appropriate + (1+condition | subject) + (1 | target)添加斜率,例如:为主题内因子添加随机斜率condition。受试者之间/目标之间的因子不需要斜率。

干杯


谢谢。难道不Anova只是假装主题内和目标不相关吗?我仅使用数据重复分析的原因appropriate==1是,所用的许多材料在事后测试中均显示出问题,因此是“不合适的”。最后,我没有使用随机斜率,原因很简单,因为没有斜率模型会更适合。
Eoin
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.