首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >runjags模型中的未使用变量警告

runjags模型中的未使用变量警告
EN

Stack Overflow用户
提问于 2015-10-09 20:25:52
回答 1查看 1.7K关注 0票数 1

我正在通过R包runjags运行JAGS模型。我刚刚从Jags3.4更新到Jags4.0.0,并注意到了一些与更新相关的意外行为。

首先,当我运行模型时,我现在得到一个警告消息WARNING: Unused variable(s) in data table:,后面是模型中引用并作为数据提供的数据对象列表。它似乎不影响结果(但这是非常令人费解的)。然而,我在玩这个的时候注意到了几次,对于一些变量来说,后验和前驱几乎是一样的(表示没有更新)。我现在似乎无法重新创建更新失败,但下面是一个可重复的代码示例,演示了奇怪的警告信息。run.jags帮助页上的代码示例也会产生相同的警告。

第二,如果我使用R包R2jags而不是runjags,我会检查是否会弹出相同的消息,但是R2jags不会加载,因为显然rjags (依赖项之一)与Jag4.0不兼容(它在查找Jag3.x)。此外,在runjags函数run.jags中,参数method="rjags"似乎不再起作用,但method="parallel"确实起作用。

我使用runjages2.0.1-4和R3.2.2。

所以我的问题是:

1) rjags真的与Jags4.0不兼容吗?进入4.0的动机是使用向量作为索引(参见https://martynplummer.wordpress.com/2015/08/16/whats-new-in-jags-4-0-0-part-34-r-style-features/)。

( 2)未使用的变量警告是怎么回事,我应该关注它吗?

谢谢你,格伦

代码:

代码语言:javascript
复制
#--- 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")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-12 07:43:44

回答你的问题:

1) rjags和JAGS使用链接(不可交换)版本,CRAN系统仍然使用JAGS_3.4.0,因此CRAN匹配上的rjags版本。这将很快更新,同时您可以从sourceforge页面获取rjags的正确版本,如@jbaum注释。

2)这是JAGS/rjags提供的一条有用的消息,它告诉您您已经指定了模型没有使用的数据。记住,变量名是区分大小写的。

代码语言:javascript
复制
library('runjags')
model <- "model {
    m ~ dunif(-1000,1000)
    #data# M
    #inits# m
    #monitor# m
}"
M <- 0
m <- list(-10, 10)

results <- run.jags(model, method="interruptible", n.chains=2)
results <- run.jags(model, method="rjags", n.chains=2)

..。给出一个警告,因为m与m不匹配。还请注意,这个警告看起来与两个函数调用有点不同--在第一个函数调用中,它在JAGS输出的一半处出现,而在第二个函数中,它在函数完成后作为警告出现在R中。

至于“我是否应该关心”-是的,如果你认为这些变量应该在你的模型中。如果您找不到问题,尝试张贴您正在使用的代码-它被切断了您的原始帖子。

哑光

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33046575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档