Байесовская модель: найти минимальное значение мю
Я пытался решить проблему с помощью байесовских методов, но я не могу понять, как написать модель.
Я пытаюсь найти значение mu, такое что x = mu + Error, Error ~ Gamma(a, b) (или какой-либо другой дистрибутив).
По сути, я хочу сказать что-то вроде:
for(i in 1:N) {
x[i] <- mu + tau[i]
tau[i] ~ dgamma(0.001, 0.001)
}
mu ~ dunif(0.0, 1000)
Однако, это не работает, потому что x[i] должен иметь распределение, и я не могу придумать, как это сделать (я пытался сделать x[i] ~ dgamma(0.001, 0.001), но это не не ограничивайте х быть> мю, и б. не помогает мне оценить мю.
Если бы вы могли помочь, это было бы очень признательно.
Спасибо!
1 ответ
Если я правильно понимаю, я думаю, что вы должны вывести минимальное (mu) из значений x за пределами BUGS и передать его как часть данных или просто дать tau напрямую. Это необходимо, так как функция min в BUGS не будет работать для всего вектора. Возможно, модель (и данные), такие как это, что уместно:
#BUGS model
model{
#data manipulations
for(i in 1:N){
tau[i] <- x[i]-mu
}
#model
for(i in 1:N){
y[i] ~ dlnorm(tau[i], y.tol)
log.y[i] <- log(y[i])
}
#prior
y.tol ~ dunif(0,1000)
}
#data
list(x=c(5,3,8,9,3,6,8,2,4,11), N=10, mu=2)
У меня была еще одна мысль: возможно, вы хотите смоделировать минимум как тип упражнения по моделированию экстремальных значений? В этом случае вы должны проверить dgev в OpenBUGS.