我是第一次接触Jags,我正在尝试将多项式模型应用到我的数据中。当我运行代码时,我得到以下错误:“部分观察到positive.counts1,1:9,部分丢失”。我用谷歌搜索了一下,我发现这是因为一个节点不能同时有观察值和缺失值。这是因为在我的数据中(参见下面的代码),值和NA在同一行中。如果我用0值替换NA,模型就能正常工作。有谁有解决这个问题的办法吗?下面你可以找到数据和代码!
在此之前,非常感谢,
Elisa
##########################################################################
# load jags
library(runjags)
# define the data:
data <- list("N_cases"=c(978,737, 737, 1189, 270, 268), "positive.counts" = matrix(c(649 ,567 ,464 ,821, 98, 117,203 , 133, 81, 290, 41, 26,3, 7, 4, 6, 5, 0,NA, NA, NA, NA, 20, 19,24, 15, 3, NA, 21, 15,NA, NA, 184, NA, 17, 23, NA, NA, NA, NA, 26, 17,99, 15, 1, 72, 14, 25,NA, NA, NA, NA, 28, 26),6,9), "n"= 6,"n_responses" = 9)
# define the model
model { mu.w <- 0
prec <- 0.5
for (s in 1:n_responses) {
w[s] ~ dnorm(mu.w, prec);
a[s] <- exp(w[s]); # positive parameter
}
for (i in 1:n){
positive.counts[i,1:n_responses] ~ dmulti(p[i,1:n_responses], N_cases[i])
}
for(i in 1:n){
for (s in 1:n_responses) {
delta[i, s] ~ dgamma(a[s], 1)
}
}
for(i in 1:n){
for (s in 1:n_responses) {
p[i, s] <- delta[i,s] / sum(delta[i,1:n_responses])
}
}
}
# run the model
n.adapt=1000
n.burn=5000
n.iters=10000
n.chains <- 5;
n.total.samples <- 10000
n.samples.per.chain <- (n.total.samples %/% n.chains)
n.thin <- n.iters %/% n.samples.per.chain; if(n.thin==0) n.thin <- 1;
tomonitor <- c("a","p")
mcmc.post <- run.jags(model="multi_model.jags",
data=data,
method="parallel",
sample=n.samples.per.chain,
burnin=n.burn,
adapt=n.adapt,
n.chains=n.chains,
thin=n.thin,
monitor= tomonitor);发布于 2020-06-04 23:50:19
正如您已经发现的,JAGS不允许您对部分观察到的多项式分布进行建模。这是一个限制。如果您将NA替换为零,您不再会说“我没有行和列变量组合的数据”,而是“我没有观察到这种行和列变量组合的事件”。因此,模型将(可能)运行并产生一些输出。但您不再对观察到的数据集进行建模。因此,模型的结果不再适用于您的数据。你从中得出的结论是无效的。
因此,您需要一种方法来模拟具有不完整观测值的多项式数据。一种方法是将数据转换为一系列相关的二项式变量。对于具有k个类别的多项式数据中的每个类别ci,创建一个二项式变量Yi ~ Bin(pi,n),其中n是观察值的数量(数据中的N_cases?)通过预测的组合(您的数据中的positive.counts行?)和pi = Prob(x >= ci)。换句话说,pi是具有相关预测变量集的观察值属于类别ci或更高类别的概率。(因此,根据定义,p1 =1。)
如果这个解释有点抽象,我很抱歉,但是你给了我们你的代码,但没有上下文。我不能用你的实际模型来解释它,因为我不知道它是什么。
在this post中给出了两种在JAGS中拟合这种模型的方法。你可以相信答案的作者。他是马丁·普卢默。他写的是JAGS。
https://stackoverflow.com/questions/62196708
复制相似问题