如何在R的lme混合模型中剔除随机效应但保留AR(1)相关结构?
用R复现无随机截距的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(lme)实现
fitBoth <- lme(fixed = va ~ CST + cst0 + va0, data = muggeo, random = ~1 | PATID, correlation = corAR1(form = ~ month | PATID))
两者参数估计结果完全一致。
无随机截距模型的问题与解决
在SAS中移除random intercept / subject = patid;语句即可拟合无随机截距的模型,但直接删除R中lme的random参数会触发错误:
Error in lme.formula ... incompatible formulas for groups in 'random' and 'correlation'
报错原因
lme要求random与correlation的分组结构匹配,移除random参数后,没有指定分组,与correlation中| PATID的分组规则冲突。
正确解决方式:使用gls函数
无随机截距的模型本质是带相关结构的广义最小二乘(GLS)模型,而非混合效应模型,因此应使用nlme包的gls函数拟合,对应SAS中无random语句的proc mixed:
fitNoRandom <- gls(fixed = va ~ CST + cst0 + va0, data = muggeo, correlation = corAR1(form = ~ month | PATID))
该模型的参数估计结果与SAS版本完全一致。
用lme的冗余实现(不推荐)
若一定要用lme,可通过指定无随机效应的分组来适配,但这不符合lme的设计初衷,仅作演示:
fitNoRandom_lme <- lme(fixed = va ~ CST + cst0 + va0, data = muggeo, random = ~0 | PATID, correlation = corAR1(form = ~ month | PATID))
内容的提问来源于stack exchange,提问作者Neal Oden
相关产品推荐
相关产品推荐

