我是混合模型分析的新手。有人能帮我把事情弄清楚吗?
我有以下重复测量设计:测试前-干预-测试后
Varaibles:Go_rt-反应时间。pre_post-分类变量(测试前;测试后)期望-参与者期望。
我有下面的R代码,我想应用混合模型来评估反应时间是否在统计学上不同(测试前和测试后)。此外,我想知道是否有与参与者期望有效的互动。
模式<-lmer(Go_rt~pre_post+expects+pre_post:expects+(1|参与者),data=data,REML=FALSE)
我怀疑的是pre_post变量是否必须在随机部分中指定。所以代码看起来是这样的:
mod1<-lmer(Go_rt~pre_post+expects+pre_post:expects+(1+pre_post|participant),data=data,REML=FALSE)
如果我这样改变它,它会改变什么?
mod2<-lmer(Go_rt~pre_post+expects+pre_post:expects+(1|参与者)+(1|pre_post),data=data,REML=FALSE)
事实上,mod2为我的交互效应提供了显著的结果,而mod&mod1没有。
如果我正确理解你的问题,你不想对你的治疗(前/后)进行随机拦截。这不是你想要解释的一些噪音,而是你的实验问题,所以mod2
是不存在的。此外,你真的不应该有一个只有两个级别的随机效果(https://dynamicecology.wordpress.com/2015/11/04/is-it-a-fixed-or-random-effect/)。
预测试应该是该因素的参考水平,这样你就可以很容易地解释你的治疗对反应时间的影响。您可以通过将以下代码修改为您的数据来改变这一点:
data$pre_post = relevel(data$pre_post, ref="pre")
对于反应时间,在许多学科中,对对数反应时间进行建模也是惯例,这可以很容易地通过将其放入模型公式中来实现,我在下面做了这一点。如果你所在的领域不是这样,请随意忽略这一点。
expectations
对参与者的影响也可能不同,因此您也可以按参与者添加expectations
的随机斜率。首先,我将测试第一个随机斜率pre_post
是否会导致明显更好的模型拟合。我会用下面的代码来完成。请注意,REML已更改为true,因为您现在正在比较随机效果。
mod1 <- lmer(log(Go_rt) ~ pre_post + expectations + pre_post:expectations + (1|participant), data=data, REML=TRUE)
mod1.1 <- lmer(log(Go_rt) ~ pre_post + expectations + (1 + pre_post|participant), data=data, REML=TRUE)
anova(mod1, mod1.1)
如果它确实导致了一个更好的模型,我会把它留在里面。然后我会测试expectations
的随机斜率是否会改进模型。
mod1.2 <- lmer(log(Go_rt) ~ pre_post + expectations + (1 + pre_post + expectations|participant), data=data, REML=TRUE)
anova(mod1.1, mod1.2)
在我找到最佳的随机效应结构后,我会从相互作用开始观察固定效应,并再次使用anova()
函数在似然比测试中观察它是否显著。
我希望这能有所帮助。还有其他方法可以观察随机效应,并使用lme4
中包含的rePCA()
函数来查看它们是否有保证。如果你正在拟合混合模型,那么研究这篇论文可能是个好主意:https://arxiv.org/pdf/1506.04967.pdf
不清楚您在问什么,似乎不确定应该建模什么,这是一个统计问题,可能更适合Cross-Valided,但似乎也不确定R(或者更确切地说是包lme4
)语法。
看看这个https://arxiv.org/pdf/1406.5823.pdf使用lme4
的全面指南,特别是第6页,将有助于理解随机效果语法。来自该文件:
"每个随机效应项的形式为(expr|factor)。表达式expr的求值为线性模型公式,按照标准中使用的相同规则生成模型矩阵R建模函数(例如lm或glm)。表达式因子被评估为R因子">
当你有这样指定的RE术语时:(1|participant) + (1|pre_post)
意味着RE是交叉的(见下面的PeerJ论文),而pre_post + (1+ pre_post|participant)
是一个相关的截距和斜率(见上面链接中的第6页)。
我同意@sjp的观点,你不想对只有两个级别的东西使用随机效果。这篇论文是对混合模型的精彩介绍,建议你至少有5个级别:https://peerj.com/articles/4794/
对于@sjp建议的可能适用于试验时间数据的日志转换数据,另一种选择是使用带有family=gamma
参数的glmer()
函数,但无论哪种方式,都可以检查残差图的模型拟合http://www.sthda.com/english/articles/39-regression-model-diagnostics/161-linear-regression-assumptions-and-diagnostics-in-r-essentials/.
在实际不需要随机效应项的情况下,基本R函数lm
和glm
将分别取代lmer
和glmer
。