バグでベイジアン混合効果モデルを指定する方法


8

私はこれを週の初めに投稿し、人々の時間を無駄にしたくない、良い情報源を見つけたときに質問を撤回しました。残念ながら、あまり進歩していません。ここで善良な市民になろうとすることで、問題をできるだけ明確にします。テイカーは少ないと思います。

RIにBUGSまたはRで分析したいデータフレームがあります。これは長い形式です。これは、120人の複数の観測値からなり、合計885行です。カテゴリカルな結果の発生について調査していますが、ここではあまり関係ありません。問題は、より深いものについてです。

ここまで使ってきたモデルは

  mymodel<-gee(Category ~ Predictor 1 + Predictor 2..family=binomial(link="logit"),
  data=mydata, 
   id=Person)

限界モデルは基本的に患者のクラスタリングを説明します。次に調べた

 mymodel<-gee(Category ~ Predictor 1 + Predictor 2.. , family=binomial(link="logit"), 
  corstr = "AR-M", 
  data=mydata, id=Person)

個々の人々の観察の時間順を説明するため。

これはあまり変わりませんでした。

次に、次の一連のMCMCPackコマンドを使用してモデル化を試みました。

 mymodel<-MCMCglmm(category~  Predictor1 + Predictor2..,  
 data=mydata, family=binomial(link="logit"))

出力の調査はスリル満点で、多くの予測因子に統計的有意性を示しました。私は、患者の中の反復測定を考慮に入れていなかったことに気づくまで、新しく改宗したベイズ人として自分を称賛しました。

私はそれを説明しなければならないことを理解しています。これは、各個人にハイパープライアを適合させることを意味する可能性があることを理解しています-それは正しいですか?バグではこれはどのような形になりますか?

基本的なログ登録モデルは次のとおりです:(kudos to Kruschke、J.、Indiana)

    model {
  for( i in 1 : nData ) {
    y[i] ~ dbern( mu[i] )
    mu[i] <- 1/(1+exp(-( b0 + inprod( b[] , x[i,] ))))
  }
  b0 ~ dnorm( 0 , 1.0E-12 )
   for ( j in 1 : nPredictors ) {
    b[j] ~ dnorm( 0 , 1.0E-12 )
  }
}

ただし、ここでは個人にとってハイパープライアはありません。これが個人内の設計でこれまでの私の最善の試みであり、人々の中で繰り返される測定を考慮に入れています:

これがJAGSのJackmanモデルです。

1 model{
2 ## loop over data for likelihood
3 for(i in 1:n){
4  y[i] ~ dbern( mu[i] )
    mu[i] <- 1/(1+exp(-( b0 + inprod( b[] , x[i,] ))))
6 }
7 sigma ˜ dunif(0,20) ## prior on standard deviation
8 tau <- pow(sigma,-2) ## convert to precision
9
10 ## hierarchical model for each state’s intercept & slope
11 for(p in 1:50){
12 beta[p,1:2] ˜ dmnorm(mu[1:2],Tau[,]) ## bivariate normal
13 }
14
15 ## means, hyper-parameters
16 for(q in 1:2){
17 mu[q] ˜ dnorm(0,.0016)

}

これがバグのための私生児モデルです

1 model{
2 ## loop over data for likelihood
3 for(i in 1:n){
4 mu.y[i] <- alpha + beta[s[i],1] + beta[s[i],2]*(j[i]-jbar)
5 demVote[i] ˜ dnorm(mu.y[i],tau)
6 }
7 sigma ˜ dunif(0,20) ## prior on standard deviation
8 tau <- pow(sigma,-2) ## convert to precision
9
10 ## hierarchical model for each state’s intercept & slope
11 for(p in 1:120){
12 beta[p,1:2] ˜ dmnorm(mu[1:2],Tau[,]) ## bivariate normal
13 }
14
15 ## means, hyper-parameters
16 for(q in 1:2){
17 mu[q] ˜ dnorm(0,.0016)
  }

誰かが私が正しい方向に向かっているかどうかを教えてもらえますか?これに対する私の理解は高まっていますが、ゆっくりです。優しくしてください。私は衛生兵であり、統計ではありません!私はかなりRを使用しましたが、私はバグとベイズが初めてです。

おかげで、

R


1.モデルのnのサイズは?2. whats j?共変量ですね 3.従属(応答)変数はバイナリであると思いました。4. mu.yとdemVoteを使用する理由 5.バグに単純な回帰(階層ではない)を当てはめて、従来の回帰と比較します。それらは似ているはずです。そして、lme4 pacageのlmer関数を使用して、Rの迅速な階層モデルに適合させます...
Manoel

回答:


8

あなたは(ほとんど)そこにいます。ほんの少しのコメント-事前のbeta[,1:2]パラメータをジョイントMVの通常にする必要はありません。を事前にしbeta[i,1]beta[i,2]を独立させて、物事を簡素化することができます(たとえば、事前の共分散を指定する必要はありません)。そうすることは、事後的に独立であることを意味しないことに注意してください。

その他のコメント:一定の項があるためalpha、回帰では、コンポーネントbeta[,1]は以前の平均がゼロであるはずです。また、alphaコード内に事前がありません。

これは、階層的な切片と勾配の項を持つモデルです。変更を考慮して、私は可能な限りあなたの事前と記法を守るようにしました:

model {
  for(i in 1:n){
    mu.y[i] <- alpha + beta0[s[i]] + beta1[s[i]]*(j[i]-jbar)
    demVote[i] ~ dnorm(mu.y[i],tau)
  }

  alpha ~ dnorm(0, 0.001) ## prior on alpha; parameters just made up for illustration
  sigma ~ dunif(0,20) ## prior on standard deviation
  tau <- pow(sigma,-2) ## convert to precision

  ## hierarchical model for each state’s intercept & slope
  for (p in 1:120) {
     beta0[p] ~ dnorm(0, tau0)
     beta1[p] ~ dnorm(mu1, tau1)
  }

  ## Priors on hierarchical components; parameters just made up for illustration
  mu1 ~ dnorm(0, 0.001) 
  sigma0 ~ dunif(0,20)
  sigma1 ~ dunif(0,20)
  tau0 <- pow(sigma0,-2)
  tau1 <- pow(sigma1,-2)
}

収束を高速化するためのいくつかの「トリック」を含む階層モデルに非常に役立つリソースは、GelmanとHillです。

(答えには少し遅れますが、将来の質問者に役立つかもしれません。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.