Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-JAGS未知变量_R_Jags_Mixture Model - Fatal编程技术网

R-JAGS未知变量

R-JAGS未知变量,r,jags,mixture-model,R,Jags,Mixture Model,我不熟悉JAGS和贝叶斯估计,并试图通过R拟合Wang&McArdle(DOI:10.1080/10705510701758265)在JAGS中描述的模型 这是我的密码: # 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) colname

我不熟悉JAGS和贝叶斯估计,并试图通过R拟合Wang&McArdle(DOI:10.1080/10705510701758265)在JAGS中描述的模型

这是我的密码:

# 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)

我不确定如何以及在哪里为jags提供相关变量。我必须为它提供初始值还是必须来自我的数据?谁能给我一些建议吗

矩阵
R
是先前Wishart分布的一个参数。您必须在
jags.data
中提供它。非常感谢,这很有帮助!对于这种情况,像对角矩阵这样的东西是否合理?
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.