回答:
ランダムなサンプルではなく、事後分布の平均を取ると仮定すると、これは一般にRao-Blackwellizationと呼ばれるものですか?
私は確率論的ボラティリティモデルについてはあまり詳しくありませんが、ほとんどの設定で、後部から描画するためにギブスまたはMHアルゴリズムを選択する理由は、後部がわからないためです。多くの場合、事後平均を推定する必要があります。事後平均がわからないため、事後からサンプルを抽出し、サンプル平均を使用して推定します。したがって、事後分布から平均をどのように取ることができるかわかりません。
代わりに、Rao-Blackwellized推定量は完全な条件付きの平均の知識に依存します。それでもサンプリングは必要です。以下で詳しく説明します。
事後分布を2つの変数)で定義し、事後平均を推定したいとします。これで、ギブスサンプラーが利用可能であった場合、それを実行するか、MHアルゴリズムを実行して後方からサンプリングできます。E [ θ | データ]
ギブスサンプラーを実行できる場合は、が閉じた形でわかり、この分布の平均がわかります。その意味をます。はとデータの関数であることに注意してください。φ * φ * μ
これは、後部からを積分できることも意味するため、周辺後部は(これは完全にはわかっていませんが、定数まではわかっています)。ここで、が不変分布であるようなマルコフチェーンを実行し、この周辺事後からサンプルを取得します。質問はμ F (μ | D A T A )F (μ | D A T A )
周辺事後からこれらのサンプルのみを使用して事後平均をどのように推定できますか?μ
これは、Rao-Blackwellizationを介して行われます。
したがって、周辺事後からサンプルしたとします。次に、 μ φ = 1
のRao-Blackwellized推定量と呼ばれます。同じことは、関節辺縁部からシミュレーションすることによっても行うことができます。
例(完全にデモ用)。
サンプリングしたい後方未知結合があるとします。データはいくつかのであり、次の完全な条件式 のy μ | φ 、Y 〜N (φ 2 + 2 Y 、Y 2)
これらの条件を使用してギブスサンプラーを実行し、結合後部からサンプルを取得します。これらのサンプルをます。あなたはのサンプル平均を見つけることができます秒、それはのための事後平均のための通常のモンテカルロ推定量になり ..
または、ガンマ分布
ここではあなたに与えられたデータであり、したがって知られています。その場合、Rao Blackwellized推定量は
事後平均の推定量がサンプルを使用せず、サンプルのみを使用することに注意してください。いずれにしても、ご覧のとおり、マルコフ連鎖から取得したサンプルをまだ使用しています。これは確定的なプロセスではありません。
次に、ギブスサンプラーを使用して、辺縁後部からの(たとえば)サンプルの効率を向上させることができます。これをと呼びます。注 したがって、限界密度いくつかの値での条件付き密度の期待値である所与時点で。
これは、条件分解 分散がある分散分解補題ために興味深いものです。。また、です。特に、 ギブスサンプラーは実現ます。その結果、を 推定した方がよい は、点にを使用する従来のカーネル密度推定よりも
例
とが、平均ゼロ、分散1、相関 2変量正規分布であると仮定します。つまり、 明らかに、わずかに、ですが、これを知らないふりをしてみましょう。が与えられたの条件付き分布がことはよく知られています。
いくつかの所与の実現の密度の"ラオ-ブラックウェル"推定でその後で として、カーネル密度の推定値とRBアプローチを比較してみましょう
library(mvtnorm)
rho <- 0.5
R <- 50
xy <- rmvnorm(n=R, mean=c(0,0), sigma= matrix(c(1,rho,rho,1), ncol=2))
x <- xy[,1]
y <- xy[,2]
kernel_density <- density(y, kernel = "gaussian")
plot(kernel_density,col = "blue",lty=2,main="Rao-Blackwell estimates from conditional normals",ylim=c(0,0.4))
legend(1.5,.37,c("Kernel","N(0,1)","Rao-Blackwell"),lty=c(2,1,3),col=c("blue","black","red"))
g <- seq(-3.5,3.5,length=100)
lines(g,dnorm(g),lty=1) # here's what we pretend not to know
density_RB <- rep(0,100)
for(i in 1:100) {density_RB[i] <- mean(dnorm(g[i], rho*x, sd = sqrt(1-rho^2)))}
lines(g,density_RB,col = "red",lty=3)
RBの見積もりは、条件付きの情報を利用するため、はるかに優れていることがわかります。