评估混合效应模型中的线性度

机器算法验证 混合模式 二项分布
2022-03-28 07:09:27

我收集了多个年级(1-6 年级)的发育数据,每个年级的每个孩子都被测量了很多次。我希望能够评估跨年级的响应变量是否存在任何线性或非线性趋势。将第一个 lmer 处理等级作为连续运行,获得残差,然后将第二个 lmer 处理等级作为一个因素运行是否有意义?那是:

fit1 = lmer(
   formula = response ~ (1|child)+grade_as_numeric
   , data = my_data
   , family = gaussian
)
my_data$resid = residuals(fit1)
fit2 = lmer(
   formula = resid ~ (1|child)+grade_as_factor
   , data = my_data
   , family = gaussian
)

据我了解,fit1 会告诉我数据中是否有任何线性趋势,而 fit2 会告诉我除了 fit1 中获得的线性趋势之外,数据中是否还有任何非线性趋势。

如果这是明智的,鉴于二项式模型的残差不是 0/1,我如何将其应用于第二个二项式响应变量?

1个回答

不是一个真正的答案,但我有兴趣尝试一下......我假设仅通过绘图就不容易识别该模式?因此,我尝试编造一些可能以这种方式表现的数据:

set.seed(69)
id<- rep(1:20, each=6)
x<-rep(1:6, 20)
y<-jitter(x+id/5, factor=5) + jitter(sin(x), factor=5)
df1<-data.frame(id, x, y)

plot(y~x)
xyplot(y~x|id, data=df1, type="l")

对我来说,如果我在不知道它是如何制作的情况下拥有这些数据,我想我将很难挑选出重叠的信号,并且可能会假设它是线性的。残差与 lmer1 的拟合(下)没有显示太多,但残差与 x 更具暗示性。

lmer1<-lmer(y~x+(1|id), data=df1, REML=F)
xyplot(resid(lmer1)~fitted(lmer1), type=c("p", "smooth"))
xyplot(resid(lmer1)~x, type=c("p", "smooth"))

使用您对残差进行方差分析的建议会产生显着的效果,表明可能存在某种系统差异:

lmer2<-lmer(resid(lmer1)~factor(x)+(1|id), data=df1, REML=F) #sd attributed to id is 0
anova(lmer2)

因此,也许这种方法可能有助于确定您是否需要通过使用增加阶多项式来包含更高阶项:

lmer3.1 <- lmer(y~poly(x,2)+(1|id), data=df1, REML=F)
lmer3.2 <- lmer(y~poly(x,3)+(1|id), data=df1, REML=F)
lmer3.3 <- lmer(y~poly(x,4)+(1|id), data=df1, REML=F)
anova(lmer1, lmer3.1, lmer3.2, lmer3.3)

在这种方法中,三次函数“获胜”,可能是正在发生的事情的有用近似值,并且非常接近生成的模型:

lmer4<-lmer(y~x+sin(x)+(1|id), data=df1)
anova(lmer3.2, lmer4)

我真的不知道这是否有帮助,但希望这些模拟数据能反映您的问题,并且有人可以使用它来为您的问题提供更准确的答案。我不确定你问题的二项式部分。