lmer 模型的假设

机器算法验证 r 混合模式 lme4-nlme 重复测量 随机效应模型
2022-04-05 05:11:37
subject <- factor(rep(c(1,2,3,4,5,6,7),each=4, times=2))
dep <- c(5,4,9,3,4,4,2,1,10,7,8,7,1,2,1,1,5,10,1,7,3,2,1,4,3,8,7,3,1,1,2,1,15,10,20,11,2,2,1,3,11,12,9,7,2,3,1,2,11,9,8,9,3,4,2,1) 

f1 <- factor(rep(c(rep("Female",times=16),rep("Male",times=12)), times=2))
f2 <- factor(rep(c("day1","day2","day3","day4"),times=14))

data <- data.frame(sub=subject, dep=dep, f1=f1, f2=f2)

m <- lmer(dep ~ f1*f2 + (1|sub), data=data)

我试图了解如何测试混合模型的假设。

1)在模型 m 的情况下,我应该查看f1f2这样的每个组合的方差同质性,plot(resid(m)~fitted(.)|f1:f2)还是仅仅这样做就足够了plot(resid(m))

2)在任何一种情况下,我的真实模型都呈现出漏斗形状,这是否太成问题了?在那种情况下你会怎么做?

3)如何检查 R 中每个分类变量的线性假设?

4)除了方差的同质性和残差的正态性之外,您认为我应该注意哪些其他重要假设?

2个回答
  1. 是否存在差异:不需要检查,在实践中,它总是正确的。

  2. 线性:不需要检查,因为您的协变量是分类的。

  3. 同质性:需要通过绘制残差与预测值来检查。

  4. 误差项的正态性:需要通过直方图、残差 QQplot 甚至 Kolmogorov-Smirnov 检验来检查。

  5. 随机效应的正态性:获取随机效应的估计值(在您的情况下为随机截距),并检查它们作为检查残差。但这效率不高,因为您只有 7 个随机截距。

    另一个假设是受试者之间的独立性。没有测试,根据你的判断。主题特定随机截距是指来自同一主题的响应变量之间的相关性相同。

线性混合效应模型的常用假设(或我更喜欢称之为“条件”)是:

  • 预测变量的线性。这可以通过根据响应绘制残差并寻找任何系统形状,并通过包括非线性项(或样条)和比较模型拟合来检查。通常这不会是一个问题,如果是,那么在线性预测器中包含非线性项(例如logexp多项式)可能就足够了。更重要的是,实质性领域知识应告知线性条件是否合理。例如,在药代动力学等某些领域,基于严格的理论和实验,我们已经知道线性模型在某些情况下是不合适的。

  • 残差具有恒定的方差。这可以通过针对拟合值的残差图进行检查 - 不应该有模式/趋势。

  • 残差是独立的。这可以通过针对协变量(尤其是时变或空间协变量)绘制残差来检查。不应该有任何系统模式

  • 残差是正态分布的。这可以通过多种方式进行检查,例如 QQ 图和简单的直方图。统计检验,例如 Anderson-Darling 和 Kolmogorov-Smirnov 也是可能的。

请注意,上面的“残差”指的是单元级残差(通常称为“错误”)随机效应。对于随机效应,如果样本中仅存在少量组/集群,这可能会出现问题。在 OP 中给出的模拟示例中,有 7 个集群。有很多经验法则可以告知足够数量的集群,通常认为 7 很难得出任何结论。

在 OP 中提到,他们的实际模型展示了残差与拟合值的漏斗形状图。这表明异方差性。一种方法是考虑变量的转换——理想情况下,这应该由专业领域知识来告知。考虑到这一点,Box-Cox 变换可能很有用。