我正在nlme软件包中使用lme函数拟合半参数模型。我在将其转换为lmer(nlme4)时遇到麻烦。
我的代码的主要问题是我在随机效果的规范中依赖pdIdent和pdSymm。我找不到如何将其转换为lmer的代码。
我的nlme代码如下。 Z.spline是25 x 25样条曲线的bausis矩阵,而indic是1的列。我的数据(dat2
)为长格式,每个人都有25个观察值。 frac
是范围从1到5的变量,对观察进行排序。 rs445925
是一个SNP,是一个取3个值的因子变量。 density
是连续的。
Z.spline<-outer(frac,knots,"-")
Z.spline<-Z.spline*(Z.spline>0)
dat2$Z.spline <- do.call(rbind, replicate(n, Z.spline, simplify=FALSE))
fit <-lme(density~ frac * rs445925,
random=list(indic=pdIdent(~Z.spline-1),FID=pdSymm(~1)),
data=dat2,method="ML",control=lmeControl(returnObject=TRUE))
我认为模型的第一部分将转换为lmer代码,如下所示:
fit2 <- lmer(density ~ frac * rs445925 + (1|FID) + ....
包含样条曲线基础的模型的pdIdent部分给了我很多思路,我无法将其转换为lmer代码。