我正在尝试用JAGS做到这一点:z[l] ~ dbeta(0.5,0.5)y[i,l] ~ z[l]*dnorm(0,10000) + inprod(1-z[l],dnegbin(exp(eta_star[i,l]),alpha[l]))(dnorm(0,10000)为0中的Dirac增量建模:如果对模型感兴趣,请参见here)。但是我得到: RUNTIME ERROR: Incorrect number of arguments in function dnegbin但是,如果我这样做:y[i,l] ~ dnegbin(exp(eta_star[i,l]),alpha[l])运行正常。我想知道我不能乘以一个分布的值,所以我想像这样的东西可以工作:z[l] ~ dbeta(0.5,0.5)pointmass_0[l] ~ dnorm(0,10000)y[i,l] ~ dnegbin(exp(eta_star[i,l]),alpha[l])y_star[i,l] = z[l]*pointmass_0[l]+inprod(1-z[l],y[i,l])如果我运行,我得到:ystar[1,1] is a logical node and cannot be observed 最佳答案 您正在寻找一个零膨胀负二项式模型的模型。如果您使用“ ones技巧”,则可以在JAGS中执行此操作,这是一种伪似然方法,当结果变量的分布不是JAGS中的标准分布之一时仍可以使用,但是您仍然可以为可能性。“一个把戏”包括创建值为1的伪观测值,然后将其建模为伯努利随机变量概率参数Lik / C,其中Lik是您观察到的可能性,C是一个大常数,以确保Lik / C data { C <- 10000 for (i in 1:N) { one[i,1] <- 1 }}model { for (i in 1:N) { one[i,1] ~ dbern(lik[i,1]/C) lik[i,1] <- (y[i,1]==0)*z[1] + (1 - z[1]) * lik.NB[i,1] lik.NB[i,1] <- dnegbin(y[i,1], exp(eta_star[i,1]), alpha[1]) } z[l] ~ dbeta(0.5,0.5)}请注意,名称dnegbin在JAGS中已重载。有一个具有两个参数的分布,一个具有三个参数并返回似然性的函数。我们正在使用后者。我正在考虑将计数分布的零膨胀版本添加到JAGS中,因为上述构造对于用户来说是尴尬的报价,而零膨胀分布在JAGS内部很容易实现。关于r - JAGS中的运行时错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40528715/
10-12 19:49