贝叶斯模型:找出mu的最小值

时间:2012-11-29 07:57:15

标签: model bayesian winbugs

我一直在尝试使用贝叶斯方法解决问题,但我无法弄清楚如何编写模型。

我试图找到值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),但这不是a。约束x是&gt; mu,而b。不能帮我估算mu。

如果你能提供帮助,我们将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,我认为你应该在BUGS之外得到x的最小值(μ)并将其作为数据的一部分传递或直接给出tau。这是必要的,因为BUGS中的min函数不适用于整个向量。也许这样的模型(和数据)是恰当的:

#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)

我所拥有的另一个想法是,您是否希望将最小值建模为极值建模练习的类型?在这种情况下,您应该在OpenBUGS中查看dgev。