我在 SAS 中有以下代码:
PROC MIXED DATA = mydata;
CLASS time;
MODEL y = trt time / SOLUTION;
REPEATED time / SUBJECT = patient_id TYPE = UN;
RUN;
我想在 R 中运行它,但输出不匹配。我试过这个
library(lme4)
model <- lmer(y ~ trt + time + (1 | patient_id), data = mydata)
我预计 trt 的 p 值小于 0.05,但在 R 中它大于 0.1。此外,其他输出都不匹配。我认为它与 TYPE = UN 相关,但我不知道如何使用 lme4 做到这一点。也许 lme4 不能做到这一点,在这种情况下我如何获得类似的结果?
您的模型不是单一随机截取模型,而是将结果视为多元正态。方差-协方差的 R(以及V)部分具有与时间点一样多的不同行和列,单个随机截距将同样适用于所有时间点。
这在解释上与每个时间点的随机截距相同(但不是计算或方差参数化!)。在收敛精度内获得相同结果的替代方案应该是:
repeated
语句更改为 random
,使模型实际上使用 G 侧参数化产生随机效应,并分析出单个残差方差。这只是为了展示不同的参数化在其解释中如何匹配,这是一个更复杂/更慢的计算来获得相同的结果,但会“完全”执行 R 替代方案的操作。(time | patient_id)
作为 R 中的随机效应(假设 time
是一个因子)。mmrm
包(专门为重现此类模型而构建),随机效应变为 us(time | patient_id)
(再次假设两者都是因子)。这还允许您匹配来自 SAS 的多个自由度近似值(如果您正在解释 P 值,则您正在使用适当的自由度近似值,对吧?)。