在jags / rjags / runjags中修剪mcmc.list

时间:2018-04-25 14:28:50

标签: r jags rjags runjags

我在R中将runjags模型的输出作为mcmc.list。下面是生成3个1,000个样本链的代码。我想将所有12个链条修剪成最后400个样品。我可以拆开链并在列表中保存链输出的矩阵,但它不再是mcmc.list,我无法弄清楚如何将其转回mcmc.list。

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

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)

1 个答案:

答案 0 :(得分:2)

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

library('coda')
z3 <- as.mcmc.list(lapply(z, function(x) as.mcmc(x[601:1000,])))
summary(z3)

另见:

var geojsonLayer = new L.GeoJSON.AJAX("xxx.geojson", {
            style: function (feature) { // Style option
                console.log("feature", feature);
                return {
                    'weight'    : 1,
                    'color'     : 'black',
                    'fillColor' : 'yellow'
                }
            }
        });   
        geojsonLayer.addTo(map);

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

pandas.concat

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

马特