gpt4 book ai didi

JAGS 中的运行时错误

转载 作者:行者123 更新时间:2023-12-02 17:46:29 26 4
gpt4 key购买 nike

我正在尝试在 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 中的狄拉克 delta 进行建模:如果您对该模型感兴趣,请参阅 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 << 1.

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 内部实现起来非常容易。

关于JAGS 中的运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40528715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com