R JAGS неизвестная переменная - PullRequest
0 голосов
/ 17 января 2020

Я новичок в JAGS и байесовской оценке и пытаюсь приспособить модель, описанную Wang & McArdle (DOI: 10.1080 / 10705510701758265) в JAGS через R.

Вот мой код:

# generate data for reprex
m1 <- matrix(runif(20000, 0, 1), ncol=40)
colnames(m1) <- paste0("m1_d", 1:40)
m2 <- matrix(runif(20000, 0, 1), ncol=40)
colnames(m2) <- paste0("m2_d", 1:40)

# define model
model.loc <- "model.txt"

cat("
model{
# likelihood for y1 and y2
    for( i in 1 : nsubj ) {
        for( j in 1 : ntime ) {

    y1[i , j] ~ dnorm(muy1[i , j],tauy1)
    muy1[i , j] <- b[i,1] + b[i,2] * x[i , j] + b[i,3] * (max(0,b[i,4]-x[i , j]))*(max(0,b[i,4]-x[i , j] ))

    y2[i , j] ~ dnorm(muy2[i , j],tauy2)
    muy2[i , j] <- b[i,5] + b[i,6] * x[i , j] + b[i,7] * (max(0,b[i,8]-x[i , j] ))*(max(0,b[i,8]-x[i , j] ))

} }

# distribution for the random-effects parameters
for( i in 1 : nsubj ) {
    b[i,1:8]~dmnorm(mub[1:8], taub[1:8,1:8])
}

# priors
# prior distribution for the inverse of the level-1 residual variance of y1 and y2
tauy1 ~ dgamma(0.1,0.001)
tauy2 ~ dgamma(0.1,0.001)

# prior distribution of the fixed parameters
mub[1:8]~dmnorm(mean[1:8],prec[1:8,1:8])

# prior distribution of the inverse of the covariance matrix of random-effects parameters
taub[1:8, 1:8] ~ dwish(R[1:8, 1:8], 8)

sigma2[1:8, 1:8] <- inverse(taub[1:8, 1:8])
for (i in 1 : 8) {sigmab[i] <- sqrt(sigma2[i, i])}
    sigmay1 <- 1 / sqrt(tauy1)
    sigmay2 <- 1 / sqrt(tauy2)
}
", file = model.loc)


# create list of data
jags.data <- list("y1" = m1,
                  "y2" = m2,
                  "ntime" = 40,
                  "nsubj" = 500)

# define inits
jags.inits <- list(list(.RNG.seed=1,
                        .RNG.name="base::Mersenne-Twister"),
                   list(.RNG.seed=2,
                        .RNG.name="base::Mersenne-Twister"),
                   list(.RNG.seed=3,
                        .RNG.name="base::Mersenne-Twister"))

# create vector of parameters to monitor in JAGS
jags.params <- c("muy1", "tauy1")

#' run model
mod_lgm_cp_as <- jags(jags.data,
                      parameters.to.save = jags.params,
                      inits = jags.inits,
                      model.file = model.loc,
                      n.chains = 3,
                      n.burnin = 5000,
                      n.thin = 1,
                      n.iter = 10000)

Когда я запускаю этот код, я получаю сообщение об ошибке

Error in jags.model(model.file, data = data, inits = init.values, n.chains = n.chains,  : 
  RUNTIME ERROR:
Compilation error on line 29.
Unknown variable R
Either supply values for this variable with the data
or define it  on the left hand side of a relation.

Я не совсем уверен, как и где предоставить зазоры с соответствующей переменной. Должен ли я предоставить начальные значения для него или он должен исходить из моих данных? Может кто-нибудь дать мне совет?

...