使用时jags.parallel
,我收到以下错误:
> out <- jags.parallel(win.data, inits, params, "Poisson.OD.t.test.txt",
+ nc, ni, nb, nt);
Error in get(name, envir = envir) : invalid first argument
Run Code Online (Sandbox Code Playgroud)
使用jags
函数的相同调用运行正常.我只在这个主题上找到了一个主题,但只有一个推测性的建议不适用也不适用于此.
可重复使用的代码,取自生态学家的WinBUGS简介,参见第14.1章(稍作修改):
set.seed(123)
### 14.1.2. Data generation
n.site <- 10
x <- gl(n = 2, k = n.site, labels = c("grassland", "arable"))
eps <- rnorm(2*n.site, mean = 0, sd = 0.5)# Normal random effect
lambda.OD <- exp(0.69 +(0.92*(as.numeric(x)-1) + eps) )
lambda.Poisson <- exp(0.69 +(0.92*(as.numeric(x)-1)) ) # …
Run Code Online (Sandbox Code Playgroud) 我有一个函数调用 (to jags.parallel
),当给定数字参数时,该函数调用有效,n.iter = 100
但当参数使用变量值 时,该函数调用失败n.iter = n.iter
。这看起来可能是一个错误jags.parallel
错误的最小可重现示例:
library(R2jags)
model.file <- system.file(package="R2jags", "model", "schools.txt")
J <- 8.0
y <- c(28.4,7.9,-2.8,6.8,-0.6,0.6,18.0,12.2)
sd <- c(14.9,10.2,16.3,11.0,9.4,11.4,10.4,17.6)
jags.data <- list("y","sd","J")
jags.params <- c("mu","sigma","theta")
jags.inits <- function(){
list("mu"=rnorm(1),"sigma"=runif(1),"theta"=rnorm(J))
}
Run Code Online (Sandbox Code Playgroud)
然后这有效:
jagsfit.p <- jags.parallel(data=jags.data, inits=jags.inits, jags.params,
n.iter=5000, model.file=model.file)
Run Code Online (Sandbox Code Playgroud)
但这并不:
n.iter=5000
jagsfit.p <- jags.parallel(data=jags.data, inits=jags.inits, jags.params,
n.iter=n.iter, model.file=model.file)
Run Code Online (Sandbox Code Playgroud)
给出错误:
Error in checkForRemoteErrors(lapply(cl, recvResult)) :
3 nodes produced errors; first error: object 'n.iter' not found
Run Code Online (Sandbox Code Playgroud)
我认为这与不将变量导出到集群有关n.iter
,但尚不清楚 jags.parallel 使用的是什么并行引擎。n.iter …