R パッケージを通じて JAGS モデルを実行していますrunjags
。JAGS 3.4 から JAGS 4.0.0 にアップデートしたところ、アップデートに関連すると思われる予期しない動作に気付きました。
まず、モデルを実行すると、警告メッセージWARNING: Unused variable(s) in data table:
に続いて、モデルで参照され、データとして提供されるデータ オブジェクトのリストが表示されるようになりました。結果には影響しないようです (しかし、非常に不可解です)。ただし、これをいじっていると、いくつかの変数では事後変数が事前変数と実質的に同一であることに何度か気づきました (更新が発生していないことを示しています)。現在、更新の失敗を再現することはできないようですが、以下は奇妙な警告メッセージを示す再現可能なコード例です。ヘルプ ページのコード例でrun.jags
も同じ警告が生成されます。
R2jags
2 つ目は、R パッケージの代わりにR パッケージを使用した場合に同じメッセージが表示されるかどうかを確認することですが、runjags
(依存関係の 1 つ) が明らかに JAGS 4.0 と互換性がないため (JAGS 3 を探しているため)、R2jags
読み込まれません。 rjags
。バツ)。また、runjags
関数 run.jags では、引数method="rjags"
が機能しなくなったように見えますが、機能method="parallel"
します。
runjags_2.0.1-4 と R 3.2.2 を使用しています。
だから私の質問は:
1) rjags は本当に JAGS 4.0 と互換性がないのですか? 4.0 に移行する動機は、インデックスとしてベクトルを使用することでした ( https://martynplummer.wordpress.com/2015/08/16/whats-new-in-jags-4-0-0-part-34-r-を参照)。スタイル機能/ )。
2) 未使用の変数の警告はどうなっていますか? それについて心配する必要がありますか?
ありがとう、グレン
コード:
#--- GENERATE DATA ------------------------
rm(list=ls())
# Number of sites and observations per site
N <- 200
nobs <- 3
# generate covariates and standardize (where appropriate)
set.seed(123)
forest <- rnorm(N)
# relationship between occupancy and covariates
b0 <- 0.5
b.for <- 0.5
psi <- plogis(b0 + b.for*forest)
# draw occupancy for each site
z <- rbinom(n=N, size=1,prob=psi)
# specify detection probablility
p <- 0.5
pz <- p*z
# generate the observations
Y <- rbinom(n=N, size=nobs,prob=pz)
#---- BUGS model ------------------------
model1 <- "model {
for (i in 1:N){
logit(eta[i]) <- b0 + b.for*forest[i]
z[i] ~ dbern(eta[i])
pz[i] <- z[i]*p
y[i] ~ dbin(pz[i],nobs)
} #i
b0.0 ~ dunif(0,1)
b0 <- log(b0.0/(1-b0.0))
b.for ~ dnorm(0,0.01)
p ~ dunif(0,1)
}"
occ.data1 <-list(y=Y,N=N,nobs=nobs,forest=forest)
inits1 <- function(){list(b0.0=runif(1),b.for=rnorm(1),p=runif(1),z=as.numeric(Y>0))}
parameters1 <- c("b0","b.for","p")
#---- RUN MODEL ------------------------
library(runjags)
ni <- 2000
nt <- 1
nb <- 1000
nc <- 3
ad <- 100
out <- run.jags(model=model1,data=occ.data1,monitor=parameters1,n.chains=nc,inits=inits1,burnin=nb,
sample=ni,adapt=ad,thin=nt,modules=c("glm","dic"),method="parallel")