jags.parallel
를 사용하여, 나는 다음과 같은 오류가 발생합니다 :jags.parallel - GET (이름, envir = envir) 오류 : 유효하지 않은 첫 번째 인수
> 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
jags
기능을 사용하여 같은 전화 확인을 실행합니다. 나는 단지 one thread on this topic을 찾았지만 적용되지도 않고 여기서 일하는 하나의 추측적인 제안 만 있습니다. (약간 수정) Introduction to WinBUGS for ecologists, see chapter 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))) # For comparison
C.OD <- rpois(n = 2*n.site, lambda = lambda.OD)
C.Poisson <- rpois(n = 2*n.site, lambda = lambda.Poisson)
### 14.1.4. Analysis using WinBUGS
# Define model
sink("Poisson.OD.t.test.txt")
cat("
model {
# Priors
alpha ~ dnorm(0,0.001)
beta ~ dnorm(0,0.001)
sigma ~ dunif(0, 10)
tau <- 1/(sigma * sigma)
maybe_overdisp <- mean(exp_eps[])
# Likelihood
for (i in 1:n) {
C.OD[i] ~ dpois(lambda[i])
log(lambda[i]) <- alpha + beta *x[i] #+ eps[i]
eps[i] ~ dnorm(0, tau)
exp_eps[i] <- exp(eps[i])
}
}
",fill=TRUE)
sink()
# Bundle data
win.data <- list(C.OD = C.OD, x = as.numeric(x)-1, n = length(x))
# Inits function
inits <- function(){ list(alpha=rlnorm(1), beta=rlnorm(1), sigma = rlnorm(1))}
# Parameters to estimate
params <- c("lambda","alpha", "beta", "sigma", "maybe_overdisp")
# MCMC settings
nc <- 3 # Number of chains
ni <- 3000 # Number of draws from posterior per chain
nb <- 1000 # Number of draws to discard as burn-in
nt <- 5 # Thinning rate
require(R2jags)
# THIS WORKS FINE
out <- R2jags::jags(win.data, inits, params, "Poisson.OD.t.test.txt",
nc, ni, nb, nt);
# THIS PRODUCES ERROR
out <- jags.parallel(win.data, inits, params, "Poisson.OD.t.test.txt",
nc, ni, nb, nt);
# THIS ALSO PRODUCES ERROR
out <- do.call(jags.parallel, list(win.data, inits, params, "Poisson.OD.t.test.txt",
nc, ni, nb, nt));
: 같은
전체 수정 보인다. 'traceback'을 사용하여 어떤 함수가'get'을 호출하고 오류를 생성하는지 확인한 다음 함수 본문의 객체를 조사하는 함수 인'debug'를 사용하십시오. 또는'options (error = recover)'를 사용할 수 있습니다 ('options (error = NULL)'을 통해). –
감사합니다. @Joshua! 그래서 실제로 이것은 jags 패키지를 디버깅하는 것이지 내 코드는 디버깅하지 않습니다. 우리가 버그라고 결론을 내린다면 아마도 최고의 전략은 재그 개발자들에게보고하는 것일까? – TMS
확실하지 않습니다. 나는이 패키지들에 익숙하지 않고 코드를 실행하지 않았기 때문에 여전히 당신의 함수 중 하나가 될 수있다. (예를 들어,'inits'는''jags.parallel' 호출에서''inits "'이어야한다.) .. 하지만 일단 추적 추적을 실행하면 그것은 분명해야합니다. –