2017-08-21 2 views
1

非常によく混じった2つのチェーン(チェーン1と3)とチェーン2(チェーン2)を持つrunjagsオブジェクトがあります。チェーン1と3だけを含むようにrunjagsオブジェクトをトリミングするにはどうすればいいですか?Runjagsオブジェクトからチェーンを削除するR

ランナーを使ってJAGSモデルを生成するという再現可能な例があります(ここでチェーンはよく混在していますが)。

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

しかし、一度この方向に変換され、データができません。これを達成する

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に反対変換することですrunjags形式に戻します。現在のワークフローはrunjagsサマリ出力によって生成されたフォーマットに依存しているので、出力をrunjags形式で保持するソリューションが本当に好きです。

+1

あなたは[再現可能な例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-を提供する場合、あなたを助けるために容易になるだろうたとえば、サンプル入力データ、実行しているコード、およびその入力の希望出力を表示します。 – MrFlick

+2

rjags/codaのように小さなrunjagsの例を追加できますか?mcmc.listは通常のリストと同じサブセットにすることができます – user20650

答えて

3

(確かに非常に明らかに名前が付けられていない)を見て、機能をdivide.jags:

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

うまくいけば、これは正確に何をしたいん。

マット

+0

いつもありがとう、Matt! – colin

関連する問題