Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中提取lme4模型随机效应的后验估计和可信区间_R_Lme4_Confidence Interval_Mcmc_Credible Interval - Fatal编程技术网

在R中提取lme4模型随机效应的后验估计和可信区间

在R中提取lme4模型随机效应的后验估计和可信区间,r,lme4,confidence-interval,mcmc,credible-interval,R,Lme4,Confidence Interval,Mcmc,Credible Interval,我需要从我的模型中提取随机效应的后验估计和区间 出于说明目的,与我使用的数据集类似的数据集是base R中的ChickWeight数据集 我提取固定效应的后验估计值和区间的方法如下: #load package library(lme4) #model m.surv<-lmer(weight ~ Time + Diet + (1|Chick), data=ChickWeight) #load packages library(MCMCglmm) library(arm) #set u

我需要从我的模型中提取随机效应的后验估计和区间

出于说明目的,与我使用的数据集类似的数据集是base R中的
ChickWeight
数据集

我提取固定效应的后验估计值和区间的方法如下:

#load package
library(lme4)

#model
m.surv<-lmer(weight ~ Time + Diet + (1|Chick), data=ChickWeight)

#load packages
library(MCMCglmm)
library(arm)

#set up for fixed effects
sm.surv<-sim(m.surv)
smfixef.surv=sm.surv@fixef
smfixef.surv=as.mcmc(smfixef.surv)

#which gives
> posterior.mode(smfixef.surv)
(Intercept)        Time       Diet2  ... 
  8.5963329   8.7034260   5.1220436  ...
> HPDinterval(smfixef.surv)
                   lower      upper
(Intercept) -0.90309142 21.3617805
Time         8.42279728  9.0306337
Diet2       -6.84371527 35.1745980
...
attr(,"Probability")
[1] 0.95
>
mcmc.list(x)中出错:参数必须是mcmc对象

关于如何修改代码以提取随机效果的这些值,有什么建议吗?

其他用户注意:如果模型为MCMCglmm模型,则可按如下方式提取随机效果MCMC输出的后验模式值:


要提取随机效果的估计值和95%置信区间,请使用以下代码:

sm.surv <-sim(m.surv)

#between Chick variance
bChick <-sm@ranef$Chick[,,1]
bvar<-as.vector(apply(bChick, 1, var)) #between ind variance posterior distribution
bvar<-as.mcmc(bvar)
posterior.mode(bvar) #mode of the distribution
HPDinterval(bvar)

这意味着估计值为501,下95%区间为412,上95%区间为630

str(sm.surv)
建议
sm。surv@ranef
sm。surv@fixef
是相当不同的,这是有意义的。在r中,
fixef
是提取固定效应估计的函数,
ranef
是提取随机效应估计的函数。您可能希望使用
merTools
软件包。或者,可能是一个
rstan
实现来扩展Henry的评论,str(smfixef.surv)显示smfixef.surv是一个100x5矩阵。str(ramranef.surv)显示smranef.surv是一个包含100x50x1数组的列表。在提取smranef.surv=as.mcmc(smranef.surv[[1]][,1])时,我能够作为.mcmc()应用。我认为这是可行的,因为?as.mcmc揭示该函数采用向量或矩阵,而不是列表或更高维数组。@fausto.siegmund确实有助于它的运行!然而,输出(可能这是因为随机效应不同于固定效应)包括随机效应中每个水平的估计和区间,而不是一个总体估计和区间。有没有关于如何正确整合这些值的想法,以便对随机效应有一个估计和一组区间?
posterior.mode(sm.surv$VCV[,1])
HPDinterval(sm.surv$VCV[,1])
sm.surv <-sim(m.surv)

#between Chick variance
bChick <-sm@ranef$Chick[,,1]
bvar<-as.vector(apply(bChick, 1, var)) #between ind variance posterior distribution
bvar<-as.mcmc(bvar)
posterior.mode(bvar) #mode of the distribution
HPDinterval(bvar)
>     posterior.mode(bvar)
     var1 
     501.24353 
>     HPDinterval(bvar)
      lower   upper
var1 412.36042 630.201
attr(,"Probability")
[1] 0.95