スライスサンプリング
確率変数Xを確率密度関数f(x)からサンプルするために、拡張変数Uを導入し、次の手順でサンプルを行う。
今得られているxを用いて、[0, f(x)]から一様乱数によりuをサンプルする
得られたuを用いて必ずしも連結ではない集合{x|f(x) > u}から一様乱数でサンプル点を選びxとする
実際にはuにより定まる非連結なスライスから一様乱数によりサンプル点を得ることは容易ではなく、仮に連結であったとしても、スライスが巨大領域となれば一度にサンプル点が大きく移動して効率が悪化する恐れがある。この問題に対処するため、サンプル候補領域の拡大・縮小を伴う以下のアルゴリズムを用いることが多い。
幅がwであるサンプル候補領域の端点においてf(x)の値を評価し、その値がuを下回るようになるまで、端点をwずつ外側に広げていく。これを拡大のプロセスとする。
拡大のプロセスが終了したら、サンプル候補領域から一様乱数により、候補点xcandを得る。もしf(xcand)がuより大きければ、これをxとする。そうでなければ、xcandを新たな端点とするようにサンプル候補領域を狭めて、もう一度候補点を選びなおす。
スライスサンプリング(英: slice sampling)とはマルコフ連鎖モンテカルロ法の一種であり、何らかの確率密度関数に従う擬似乱数を生成するためのアルゴリズムである。このアルゴリズムは等高線の高さと、等高線により囲まれた領域からサンプルされる点とを交互に一様乱数でサンプリングすることにより実現される。
スライスサンプリングにより、現在の点xから次のサンプル点xを決定する方法は次のようになる。
[0, f(x)]から一様乱数によりuをサンプリングする(これが等高線の高さにあたる)
確率密度関数においてuより大きな値をとる部分、すなわち{x| f(x) > u}となる場所から一様に点をサンプルしxとする
このアルゴリズムにおいて扱いが難しいのは、ある高さu以上となる領域が非連結となる場合である。また、このような部分からのみ一様にサンプル点を得るのは一般にそれほど容易ではない。そこで実際の処理ではxを含み、f(x)>uとなる連結領域から擬似的に一様乱数でサンプリングを行う。
スライスサンプリングも他のマルコフ連鎖モンテカルロ法と同様に確率密度関数の規格化定数が不明の場合でもサンプリングができる。さらにスライスサンプリングでは確率密度関数の評価さえ可能であるならば、任意の確率密度関数から容易にサンプル点を得ることができる。