1

runjagsRのモデルの出力を として持っていますmcmc.list。以下は、1,000 サンプルの 3 つのチェーンを生成するコードです。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)
4

1 に答える 1

2

これを行う最も簡単な方法は、window を使用することです。

z2 <- window(z, start=601, end=1000, thin=1)
summary(z2)

以下も参照してください。

?window.mcmc.list

あるいは、as.mcmc と as.mcmc.list を使用して、切り捨てられた行列 (のリスト) を mcmc.list オブジェクトに変換することもできます。

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

しかし、私があなただったら、window を使い続けるでしょう!

マット

于 2018-04-26T11:30:06.940 に答える