首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jags /rjag/ runjags中裁剪mcmc.list

在jags /rjag/ runjags中裁剪mcmc.list
EN

Stack Overflow用户
提问于 2018-04-25 14:28:50
回答 1查看 323关注 0票数 1

我把R中runjags模型的输出作为mcmc.list。下面是生成3条1,000个样本链的代码。我想把所有的12条链都剪到最后的400个样品上。我可以拆开链子,把链表输出的矩阵保存在一个列表中,但是它不再是一个mcmc.list,我也想不出如何把它变成一个mcmc.list。

下面是运行runjags模型并将输出转换为mcmc.list的一些数据

代码语言:javascript
复制
y <- rnorm(100)

jags.model ="
model {
#model
for (i in 1:N){
      y[i] ~ dnorm(y.hat[i], tau) 
  y.hat[i] <- m0
}

#priors
m0 ~ dnorm(0, .0001)
tau <- pow(sigma, -2)
sigma ~ dunif(0, 100)
}
"

jags.data <- list(y = y, N = length(y))
jags.out <- runjags::run.jags(jags.model,
                              data = jags.data,
                              n.chains = 3,
                              adapt = 100,
                              burnin = 100,
                              sample = 1000,
                              monitor = c('m0'))
z <- coda::as.mcmc.list(jags.out)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-26 11:30:06

最简单的方法是使用窗口:

代码语言:javascript
复制
z2 <- window(z, start=601, end=1000, thin=1)
summary(z2)

另请参阅:

代码语言:javascript
复制
?window.mcmc.list

或者,您可以使用as.mcmc和as.mcmc.list将(截断的)矩阵列表转换回mcmc.list对象:

代码语言:javascript
复制
library('coda')
z3 <- as.mcmc.list(lapply(z, function(x) as.mcmc(x[601:1000,])))
summary(z3)

但如果我是你我会坚持用窗户!

哑光

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50024864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档