Я запускаю модели JAGS через пакет R runjags
. Я только что обновил JAGS 4.0.0 от JAGS 3.4 и заметил некоторое неожиданное поведение, которое, похоже, связано с обновлением.неиспользованная переменная (ы) предупреждение в 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 действительно несовместима с зазубринами 4.0? Мотивация перехода на 4.0 заключалась в использовании векторов в качестве индексов (см. https://martynplummer.wordpress.com/2015/08/16/whats-new-in-jags-4-0-0-part-34-r-style-features/).
2) Что случилось с предупреждением неиспользуемой переменной (-ов), и я должен беспокоиться об этом?
Спасибо, Glenn
Код:
#--- 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/. Пример '? Run.jags' (который использует' method = 'rjags'') отлично работает для меня (без ошибок/предупреждений) с R (64-разрядным) 3.2.2 в Windows, с JAGS 4.0, runjags 2.0.2-8 и rjags 4-3. – jbaums
(FYI: ваш собственный код не был добавлен в сообщение) – jbaums
@jbaums К сожалению, я добавил код примера. И спасибо, rjags теперь работает и для меня, но ТОЛЬКО, если я работаю из учетной записи администратора. В противном случае я получаю: 'Загрузка требуемого пространства имен: rjags Ошибка с ошибкой: '.onLoad failed in loadNamespace() для' rjags ', подробности: call: fun (libname, pkgname) ошибка: C: \ Program Files/x64 /bin/libjags-4.dll не найден ' Ошибка: пакет rjags не установлен (или не загружен) - пожалуйста, (повторно) установите этот пакет, чтобы использовать метод «rjags» для runjags' Файл, на который ссылается, существует в C: \ Program Files \ JAGS \ JAGS-4.0.0 \ x64 \ bin. –