首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拟合多项式模型时runjags中的错误:“部分观察到,部分丢失”

拟合多项式模型时runjags中的错误:“部分观察到,部分丢失”
EN

Stack Overflow用户
提问于 2020-06-04 22:08:06
回答 1查看 141关注 0票数 0

我是第一次接触Jags,我正在尝试将多项式模型应用到我的数据中。当我运行代码时,我得到以下错误:“部分观察到positive.counts1,1:9,部分丢失”。我用谷歌搜索了一下,我发现这是因为一个节点不能同时有观察值和缺失值。这是因为在我的数据中(参见下面的代码),值和NA在同一行中。如果我用0值替换NA,模型就能正常工作。有谁有解决这个问题的办法吗?下面你可以找到数据和代码!

在此之前,非常感谢,

Elisa

代码语言:javascript
复制
##########################################################################
# 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);
EN

回答 1

Stack Overflow用户

发布于 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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62196708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档