当缺少结果时使用 nlme 正确建模纵向相关性 (R)

Modeling longitudinal correlation correctly with nlme when there are missing outcomes (R)

我有长格式的纵向数据,前两个科目看起来像这样:

  id X  M     Y
1  1 0 M1  2.53
2  1 0 M2  1.45
3  1 0 M3  1.17
4  1 0 M5  0.78
5  1 0 M7 -0.95
6  1 0 M9 -0.07
7  2 1 M1 -0.81
8  2 1 M2 -1.66
9  2 1 M3 -0.01
10 2 1 M5  0.39

M1到M9表示九个不同的固定测量时机。作为典型的纵向数据,一些结果 Y 缺失。受试者 id 1 错过了 M4、M6、M8 的结果,并且 id 2 错过了 M4 和 M6 到 M9。数据中的其他受试者在不同点缺失数据。

一个随机截距模型符合 lme 与场合和协变量 X 作为固定效应是

lme(fixed = Y ~ M + X, random = ~ 1 | id , data  = dat)

众所周知,这隐含地产生了一个复合对称相关结构,并且只要缺失结果是 MAR,估计就是一致的。如果复合对称性不合理,可以选择添加随机斜率或指定不同的相关结构,例如非结构化。

lme(fixed = Y ~ M + X, random = ~ 1 | id , data  = dat, correlation = corSymm())

然后在输出中我得到一个 M1 到 M9 的组内相关矩阵。但是,lme 如何知道哪些时间点 M 相邻,即顺序是什么以及两个结果不相邻的位置?例如,对于 id 1,看起来 lme 将其前 6 个测量值作为 M1、M2、...、M6,而不是 M1、M2、M3、M5、M7,和 M9。所以我担心非结构化相关矩阵估计不正确。有没有办法把信息传递给lme每个Y关注哪些时间点?

如果M1到M9是固定的测量场合,则可以将其识别为时间,作为连续变量处理。

library(nlme)
# arbitrary time selected from the measurement occasion labels
dat$T <- as.numeric(sub("M", "", dat$M))
lme(fixed = Y ~ T + X, random = ~ 1 | id , data  = dat) 

或者,corSymm 结构可以包含有关时间协变量的信息并定义测量顺序。

corSymm(form = ~ T)

请注意,T 必须包含一系列连续整数才能成功用作相关结构中的时间协变量。