簡體   English   中英

從R中的runjags對象中刪除一個鏈

[英]Remove a chain from a runjags object in R

我有一個runjags對象,有兩個鏈很好地混合(鏈1和3),一個沒有(鏈2)。 我怎樣才能修改runjags對象只包含鏈1和3?

這是一個使用runjag生成JAGS模型的可重現示例(盡管這里的鏈條混合得很好)。

library(runjags)

#generate the data
x <- seq(1,10, by = 0.1)
y <- x + rnorm(length(x))

#write a jags model
j.model = "
model{
#this is the model loop.
for(i in 1:N){
y[i] ~dnorm(y.hat[i], tau)
y.hat[i] <- m*x[i]
}

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

#put data in a list.
data = list(y=y, x=x, N=length(y))

#run the jags model.
jags.out <- run.jags(j.model,
                     data = data,
                     n.chains=3,
                     monitor=c('m'))

實現此目的的一種方法是將runjags對象轉換為mcmc.list ,然后使用以下代碼刪除鏈:

trim.jags <- as.mcmc.list(jags.out)
trim.jags <- mcmc.list(trim.jags[[1]], trimjags[[3]])

但是,一旦在這個方向轉換,數據就不能放回runjags格式。 我真的想要一個將輸出保持為runjags格式的解決方案,因為我當前的工作流程依賴於runjags摘要輸出生成的格式。

看一下(肯定不是很明顯的名字)divide.jags函數:

jags_13 <- divide.jags(jags.out, which.chains=c(1,3))                     
jags_13
extend.jags(jags_13)
# etc

希望這完全符合您的要求。

馬特

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM