2017-04-30 16 views
0

私はパラメータ化された線形ガウスベイジアンネットワークを持っており、rjagsを使用してモデルの予測を試みています。私は1つの観察のためにこれを行うことができますが、複数の観察をどのように渡すかはわかりません。ここでの例では、期待されるように、この作品JAGSを使用して予測を生成

library(rjags) 
library(coda) 

初期モデル

mod <- textConnection("model { 
    mpg.hat <- (34.96055404 - 3.35082533* wt - 0.01772474* disp) 
    wt  ~ dnorm(3.21725, 1/0.9784574^2) 
    disp ~ dnorm(230.7219, 1/123.9387^2) 
    mpg  ~ dnorm(mpg.hat, 1/2.916555^2) 
}") 

# Evaluate and get prediction when wt=1 and disp is hidden 
m <- jags.model(mod, n.chains = 1, n.adapt = 1000, data=list(wt=1, disp=NA)) 
update(m, 10000) 
cs <- coda.samples(m, c("mpg", "wt", "disp"), 1e5) 
summary(cs) 

である、しかし、私は私がのための予測を生成するデータの複数の行を持っています。 data=list(引き数を拡張してより多くの行を含めると、エラーがスローされます。だから、モデルのテキスト、および次のコマンドを再実行した後、私はエラーを取得する

m <- jags.model(mod, n.chains = 1, n.adapt = 1000, data=list(wt=1:2, disp=1:2)) 

jags.modelでエラーが発生しました(モッズ、n.chains = 1、n.adapt = 1000、データ=リスト(重量= 1:2、:
ノードdnormでエラーが発生しました(230.722、(A1 /(a123.939^2)))
長の不一致ノード:: setValueの

でどのように私はより多くの観測にこれを拡張していますか?

答えて

1

あなたは反復する必要がありますあなたが同様にあなたのデータリストにNを追加する必要があります

mod <- textConnection("model { 
    for (n in 1:N) { 
    mpg.hat[n] <- (34.96055404 - 3.35082533* wt[n] - 0.01772474* disp[n]) 
    mpg[n]  ~ dnorm(mpg.hat[n], 1/2.916555^2) 
    wt[n]  ~ dnorm(3.21725, 1/0.9784574^2) 
    disp[n] ~ dnorm(230.7219, 1/123.9387^2) 
    } 
}") 

注:

data = list(N = 1, wt = 1, disp = NA) 
data = list(N = 2, wt = 1:2, disp = 1:2) 
行通じ
関連する問題