如何在R中向GAMM模型添加随机截距和随机斜率项
我试图在一个GAMM模型中指定一个随机截距和随机斜率项,具有一个固定的效果 我已使用如何在R中向GAMM模型添加随机截距和随机斜率项,r,random,mgcv,R,Random,Mgcv,我试图在一个GAMM模型中指定一个随机截距和随机斜率项,具有一个固定的效果 我已使用mgcv库中的以下代码成功安装了带有随机截距的模型,但现在无法确定gamm()函数中随机斜率的语法: M1 = gamm(dur ~ s(dep, bs="ts", k = 4), random= list(fInd = ~1), data= df) 如果我在线性混合效应模型中同时使用随机截距和斜率,我将按照以下方式编写: M2 = lme(dur ~ dep, random=~1 + dep|fInd, d
mgcv
库中的以下代码成功安装了带有随机截距的模型,但现在无法确定gamm()
函数中随机斜率的语法:
M1 = gamm(dur ~ s(dep, bs="ts", k = 4), random= list(fInd = ~1), data= df)
如果我在线性混合效应模型中同时使用随机截距和斜率,我将按照以下方式编写:
M2 = lme(dur ~ dep, random=~1 + dep|fInd, data=df)
gamm()
支持文档指出,需要在list
表格中给出随机项,如lme()
中所示,但我找不到任何同时包含斜率和截距项的可解释示例。如有任何建议/解决方案,将不胜感激 在gamm4
包中的gamm4
函数包含一种执行此操作的方法。指定随机截距和坡度的方式与在lmer
样式中的方式相同。就你而言:
M1 = gamm4(dur~s(dep,bs="ts",k=4), random = ~(1+dep|fInd), data=df)
以下是gamm4文档:
以下是使用睡眠研究
数据集输入相关随机截距和斜率效应的gamm()
语法
library(nlme)
library(mgcv)
data(sleepstudy,package='lme4')
# Model via lme()
fm1 <- lme(Reaction ~ Days, random= ~1+Days|Subject, data=sleepstudy, method='REML')
# Model via gamm()
fm1.gamm <- gamm(Reaction ~ Days, random= list(Subject=~1+Days), data=sleepstudy, method='REML')
VarCorr(fm1)
VarCorr(fm1.gamm$lme)
# Both are identical
# Subject = pdLogChol(1 + Days)
# Variance StdDev Corr
# (Intercept) 612.0795 24.740241 (Intr)
# Days 35.0713 5.922103 0.066
# Residual 654.9424 25.591843
这还显示了如何将多个随机效果输入到
lme()
您指的是随机斜率还是随机截距?如果是随机斜率,我很确定您需要指定随机斜率适用于哪些变量。两者都适用。我想对因子变量fInd
(如lme()示例所示)同时使用随机斜率和随机截距,但我无法理解语法。
# Model via lme()
fm2 <- lme(Reaction ~ Days, random= list(Subject=~1, Subject=~0+Days), data=sleepstudy, method='REML')
# Model via gamm()
fm2.gamm <- gamm(Reaction ~ Days, random= list(Subject=~1, Subject=~0+Days), data=sleepstudy, method='REML')
VarCorr(fm2)
VarCorr(fm2.gamm$lme)
# Both are identical
# Variance StdDev
# Subject = pdLogChol(1)
# (Intercept) 627.5690 25.051328
# Subject = pdLogChol(0 + Days)
# Days 35.8582 5.988172
# Residual 653.5838 25.565285