如何在R's lme混合模型中抑制随机效应但保留AR(1)相关结构

oxiaedzo  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(145)

我尝试使用R的lme函数重新创建一些SAS混合模型分析。以下SAS代码:

proc mixed data = df noclprint covtest;
   class patid visno;
   model va = cst va0 cst0 / solution;
   random intercept / subject = patid;
   repeated visno / type = sp(pow)(month) subject = patid;
run;

假设每个PATID都有一个随机截距,此外,对于每个PATID的重复观测,有一组具有AR(1)型相关结构(但具有不等的时间间隔)的误差被添加到它们中。
这个分析显然可以在R中这样重新创建:

fitBoth <- lme(fixed = va ~ CST + cst0 + va0, data = muggeo,
           random = ~1 | PATID,
           correlation  = corAR1(form = ~ month | PATID))

我说它可以被重建是因为参数的数值估计看起来是相同的,
在SAS中,我可以从上面的SAS代码中删除随机截距语句,SAS认为控制语句是合理的,并估计不同的模型(没有随机截距的模型)。
但看起来这在R中不起作用。如果我从R代码中删除random语句,我会得到以下错误消息:

Error in lme.formula ... incompatible formulas for groups in 'random'
and 'correlation'

是否有方法在lme中重新创建第二个SAS分析(即没有随机语句)?
非常感谢

oaxa6hgo

oaxa6hgo1#

正如@user20650所建议的,如果要拟合具有异方差和/或相关性但没有随机效应的模型,则需要使用gls(“广义最小二乘”)而不是lme(“线性混合效应”)。

fitBoth <- gls(va ~ CST + cst0 + va0, data = muggeo,
           correlation  = corAR1(form = ~ month | PATID))

(note gls()的第一个参数被称为model,而不是lme中的fixed)* 应该 * 工作(但我不能测试,因为你没有提供一个可重复的例子)...这确实工作:

data("sleepstudy", package = "lme4")
library(nlme)
gls(Reaction ~ Days, data = sleepstudy,
   correlation = corAR1(form = ~Days | Subject))

相关问题