R mgcv包GAM随机效应的方差-协方差矩阵

R mgcv包GAM随机效应的方差-协方差矩阵,r,lme4,mgcv,random-effects,R,Lme4,Mgcv,Random Effects,lme4包装的随机效应和随机效应的方差-协方差矩阵提取如下: library(lme4) fm1 <- lmer(Reaction ~ Days + (1|Subject), sleepstudy) fm1.rr <- ranef(fm1,condVar=TRUE) fm1.pv <- attr(rr[[1]],"postVar") 库(lme4) fm1 我们可以看到,两个模型中的随机效应与预期的相同 为了提取随机效应的方差协方差矩阵并计算误差,我们使用参数Vp,它是贝叶斯

lme4包装的随机效应和随机效应的方差-协方差矩阵提取如下:

library(lme4)
fm1 <- lmer(Reaction ~ Days + (1|Subject), sleepstudy)
fm1.rr <- ranef(fm1,condVar=TRUE)
fm1.pv <- attr(rr[[1]],"postVar")
库(lme4)
fm1
我们可以看到,两个模型中的随机效应与预期的相同

为了提取随机效应的方差协方差矩阵并计算误差,我们使用参数
Vp
,它是贝叶斯后验协方差矩阵:

fm2.pv <-sqrt(diag(fm2$Vp))[idx]

我们可以看到,使用
mgcv
估计的随机效应误差与使用
lme4
模型估计的随机效应误差略有不同。基于贝叶斯后验协方差矩阵的误差较大,而基于频率矩阵的误差较小。

您也可以使用软件包
gamm4
,该软件包基于
gamm
软件包,但下面使用
lme4
。该模型将安装为:

fm3 <- gamm4(Reaction ~ Days, random = ~ (1|Subject), data = sleepstudy)

但是
gamm4
可能比
gam
慢得多,所以请阅读帮助文件,看看什么时候最适合您的需要。

是否执行
mgcv::random.effects()
nlme::ranef()
执行您需要的操作?必须承认我对mgcv不太熟悉。如果没有,您能否发布一小部分数据样本,也许可以使用
dput()
?请参阅以获取帮助。您应该更详细地解释您的期望。您确实得到了
主题
的平滑样条线周围的“标准偏差”估计值@菲尔:提问者将数据加载到他的工作区,因为它在hte lme4包中。如果没有运行第一位代码,则需要执行:
data(sleepstury,package=“lme4”)
。您还需要使用
data=sleeptudy
,因为
gam
的第二个参数不是
data
。谢谢。在lme4示例中,我得到了随机效应和每个变量
主题
水平的标准偏差估计值,即18个随机效应和18个方差。在
mgcv
中,我仅得到样条曲线周围的一个估计值。基本上,我希望通过
mgcv
获得与
lme4
相同的输出。我错过什么了吗?我想使用mgcv的原因是因为我的真实模型包含了一些其他类型的样条曲线以及随机效果。谢谢你的提示
idx <-grep("Subject", names(coef(fm2)))
fm2.rr<-coef(fm2)[idx]
attributes(fm2.rr)<-NULL
fm2.pv <-sqrt(diag(fm2$Vp))[idx]
fm2.pv <-sqrt(diag(fm2$Ve))[idx]
fm3 <- gamm4(Reaction ~ Days, random = ~ (1|Subject), data = sleepstudy)
fm3.rr <- ranef(fm3$mer,condVar=TRUE)
fm3.pv <- attr(fm3.rr[[1]],"postVar")[1,1,]