RのJAGSを使用して離散値にワイブルモデルをフィッティングしています。連続データにワイブルを当てはめるのに問題はありませんが、離散値。ここでJAGSまたはバグで離散的なワイブル分布を指定するR
は、いくつかのデータであり、ぎざぎざでワイブルモデルに合うようにコード:
#draw data from a weibull distribution
y <- rweibull(200, shape = 1, scale = 0.9)
#y <- round(y)
#load jags, specify a jags model.
library(runjags)
j.model ="
model{
for (i in 1:N){
y[i] ~ dweib(shape[i], scale[i])
shape[i] <- b1
scale[i] <- b2
}
#priors
b1 ~ dnorm(0, .0001) I(0,)
b2 ~ dnorm(0, .0001) I(0,)
}
"
#load data as list
data <- list(y=y, N = length(y))
#run jags model.
jags.out <- run.jags(j.model,
data=data,
n.chains=3,
monitor=c('b1','b2')
)
summary(jags.out)
このモデルはうまく収まります。しかし、y値をy <- round(y)
で離散値に変換して同じモデルを実行すると、エラーError in node y[7], Node inconsistent with parents
で失敗します。試してみるたびにノードの特定の番号が変わりますが、常にその番号は小さいです。
私はこれを私のすべての値に非常に小さな数値を加えて実行することができますが、これはデータが離散的であるという事実を説明していません。離散ワイブル分布が存在することは分かっていますが、JAGSでどのように実装できますか?