我通过R包runjags
运行JAGS模型。我刚从JAGS 3.4更新到JAGS 4.0.0,并且注意到一些似乎与更新有关的意外行为。runjags模型中未使用的变量警告
首先,当我运行一个模型时,我现在会收到一条警告消息WARNING: Unused variable(s) in data table:
,随后是在模型中引用并作为数据提供的数据对象列表。它似乎没有影响结果(但它非常令人费解)。然而,我在玩这个游戏时已经注意到了几次,对于一些变量,后辈几乎与前辈相同(表示没有更新发生)。我似乎无法立即重新创建更新失败,但下面是一个可重现的代码示例,说明奇怪的警告消息。 run.jags
帮助页面上的代码示例也会产生相同的警告。
其次,我认为我会检查,看看是否同样的消息弹出,如果我使用R包R2jags
代替runjags
,但R2jags
不会加载,因为显然rjags
(依赖项之一)不兼容JAGS 4.0(它正在寻找JAGS 3.X)。另外,在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-style-features/)。
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")
rjags_4-3不在CRAN还,但可以从http://sourceforge.net/projects/mcmc-jags/files/rjags/4/。使用R(64位)3.2的''run.jags'示例(使用'method ='rjags'')对我来说工作正常(没有错误/警告)。2在Windows上,JAGS 4.0,runjags 2.0.2-8和rjags 4-3。 – jbaums
(仅供参考:您自己的代码未添加到帖子中) – jbaums
@jbaums糟糕 - 我现在添加了示例代码。谢谢,rjags现在也适用于我,但是只有我从管理帐户开始工作。否则,我得到:'Loading required namespace:rjags 失败,错误:'.onLoad在'rjags'的loadNamespace()中失败,详细信息: 调用:fun(libname,pkgname) 错误:C:\ Program Files \ x64 /bin/libjags-4.dll找不到' 错误:未安装rjags软件包(或未能加载) - 请(重新)安装此软件包以使用runjags的'rjags'方法引用的文件确实存在在C:\ Program Files \ JAGS \ JAGS-4.0.0 \ x64 \ bin中。 –