Я подгоняю модель Вейбулла к дискретным значениям, используя JAGS в 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 в дискретные значения с помощью y <- round(y)
и запускаю ту же модель, произойдет сбой с ошибкой Error in node y[7], Node inconsistent with parents
. Конкретный номер узла меняется каждый раз, когда я пытаюсь, но его всегда мало.
Я знаю, что могу выполнить этот запуск, добавив очень небольшое число ко всем моим значениям, однако это не учитывает тот факт, что данные дискретны. Я знаю, что существуют дискретные дистрибутивы Вейбулла, но как мне реализовать их в JAGS?