我正在用R中的JAGS對離散值擬合威布爾模型。我對連續數據擬合威布爾沒有問題,但是當我切換到離散數據時遇到麻煩值。在JAGS或BUGS中指定R的離散威布爾分佈
這裏有一些數據和代碼在JAGS以適應泊爾模型:
#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 <- round(y)
將y值轉換爲離散值,並運行相同的模型,則會失敗,並顯示錯誤Error in node y[7], Node inconsistent with parents
。每次我嘗試時節點的特定號碼都會改變,但是它總是一個很低的數字。
我知道我可以通過爲我的所有值添加一個非常小的數字來運行此操作,但是,這並不說明數據是離散的。我知道存在離散的威布爾分佈,但是我怎樣才能在JAGS中實現一個?