Байесовская модель: найти минимальное значение мю

Я пытался решить проблему с помощью байесовских методов, но я не могу понять, как написать модель.

Я пытаюсь найти значение 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.

Другие вопросы по тегам