不是一个真正的答案,但我有兴趣尝试一下......我假设仅通过绘图就不容易识别该模式?因此,我尝试编造一些可能以这种方式表现的数据:
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)
我真的不知道这是否有帮助,但希望这些模拟数据能反映您的问题,并且有人可以使用它来为您的问题提供更准确的答案。我不确定你问题的二项式部分。