1

ベイジアン法を使用して問題を解決しようとしていますが、モデルの書き方がわかりません。

x = mu + Error, Error ~ Gamma(a, b) (またはその他の分布) となるような値 mu を見つけようとしています。

基本的には、次のようなことが言えるようになりたいです。

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 が > mu になるように制約し、b. mu の推定に役立たない。

お役に立てれば大変助かります。

ありがとう!

4

1 に答える 1

1

私の理解が正しければ、BUGS の外側で x の値の最小値 (mu) を導出し、それをデータの一部として渡すか、単に 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)

私が考えたもう 1 つの考えは、極値モデリング演習の一種として最小値をモデル化したいということでしょうか? その場合、OpenBUGS で dgev をチェックアウトする必要があります。

于 2012-12-03T17:04:05.430 に答える