尝试将SAS代码转换为R(混合效果模型)

问题描述 投票:0回答:1

我在 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 不能做到这一点,在这种情况下我如何获得类似的结果?

sas
1个回答
0
投票

您的模型不是单一随机截取模型,而是将结果视为多元正态。方差-协方差的 R(以及V)部分具有与时间点一样多的不同行和列,单个随机截距将同样适用于所有时间点。

这在解释上与每个时间点的随机截距相同(但不是计算或方差参数化!)。在收敛精度内获得相同结果的替代方案应该是:

  1. 将 SAS
    repeated
    语句更改为
    random
    ,使模型实际上使用 G 侧参数化产生随机效应,并分析出单个残差方差。这只是为了展示不同的参数化在其解释中如何匹配,这是一个更复杂/更慢的计算来获得相同的结果,但会“完全”执行 R 替代方案的操作。
  2. 使用
    (time | patient_id)
    作为 R 中的随机效应(假设
    time
    是一个因子)。
  3. 使用 R 的
    mmrm
    包(专门为重现此类模型而构建),随机效应变为
    us(time | patient_id)
    (再次假设两者都是因子)。这还允许您匹配来自 SAS 的多个自由度近似值(如果您正在解释 P 值,则您正在使用适当的自由度近似值,对吧?)。
© www.soinside.com 2019 - 2024. All rights reserved.