複数のパラメーターのABC推論に続く事後予測チェック


8

私はベイジアン統計に比較的新しいので、穏やかにしてください。

マルチパラメータモデルの推論のために、近似ベイズ計算(ABC)を実行しました。現在、推論されたパラメーターに対して事後予測チェックを実行しようとしています。

私が知りたいのは、事後予測チェックの要約統計を生成するために事後からサンプリングするとき、各パラメーターの周辺事後から独立してサンプリングするか、またはパラメーター値を一緒にサンプリングすることになっている(つまり、サンプル受け入れられた要約統計量をもたらした正確なパラメーターの組み合わせから)。

モデルには多くのパラメーター(6を超える)が含まれており、各パラメーターの限界後任に興味があります。この質問が理にかなっているといいのですが。

回答:


8

初心者にとって素晴らしい質問です!!!

θ1,,θMθM

#normal data with 100 observations 
x=rnorm(100)
#observed summaries
sumx=c(median(x),mad(x))

#normal x gamma prior
priori=function(N){
  return(cbind(rnorm(N,sd=10),1/sqrt(rgamma(N,shape=2,scale=5))))
  }

ABC=function(N){

  prior=priori(N)  #reference table

  #pseudo-data
  summ=matrix(0,N,2)
  for (i in 1:N){
    xi=rnorm(100)*prior[i,2]+prior[i,1]
    summ[i,]=c(median(xi),mad(xi)) #summaries
    }

  #normalisation factor for the distance
  mads=c(mad(summ[,1]),mad(summ[,2]))

  #distance
  dist=(abs(sumx[1]-summ[,1])/mads[1])+(abs(sumx[2]-summ[,2])/mads[2])

  #selection
  posterior=prior[dist<quantile(dist,.05),]

  return(posterior)
  }

あなたがプロットした場合

res=ABC(10^5);hist(res[,1])

通常の平均の限界ABC事後を取得します。

ただし、事後予測チェックを実行する場合、事後の1つのコンポーネントを一度に生成して、疑似データと対応する要約を取得することはできません。新しい正規標本を取得するには、平均と分散の両方が必要です!だから私のRコードは

postsample=res[sample(1:length(res[,1]),10^3),]

ABC-posteriorからサンプルを引き出すと、疑似データが以前のように生成されます。

  #pseudo-data
  summ=matrix(0,M,2)
  for (i in 1:M){
    xi=rnorm(100)*postsample[i,2]+postsample[i,1]
    summ[i,]=c(median(xi),mad(xi)) #summaries
    }

1
徹底した回答ありがとうございました。あなたの例のRスクリプトは本当に私にそれを明らかにしました。私がその質問を投稿した後、私が何を求めているのかをより注意深く考え、あなたが与えた結論に近づきましたので、私にそれを確認してもらうのは素晴らしいことです:-)
David

1
@西安:完了。ありがとうございました。私はまだこのサイトに新しいです!
デビッド

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