ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

マルコフ連鎖サンプラーを使用する標本分布の表現

一般の生成法 にある方法は、計算において標本分布を表すことが難しければ不適切な場合があります。このような分布は、データのベイズ解析やマルコフ連鎖モンテカルロ (MCMC) シミュレーションの大規模な組み合わせ問題などで発生します。代わりの方法は、状態の分布が目標に収束する最初のバーンイン期間の後に、鎖の状態を使って乱数を生成し、目標の標本分布に等しい定常分布をもつマルコフ連鎖を作成することです。

メトロポリス・ヘイスティングス アルゴリズムの使用

メトロポリス・ヘイスティングス アルゴリズムは、定数のみから求められる分布から標本を取り出します。乱数は、提案関数と等しいかまたは比例する、確率密度関数をもつ分布から生成されます。

乱数を生成するには、次の操作を行います。

  1. 初期値 x(t) を仮定します。

  2. 提案分布 q(y|x(t)) から標本 y(t) を抽出します。

  3. r(x(t),y(t)) という確率で y(t) を次の標本 x(t + 1) として採択し、1 - r(x(t),y(t)) という確率で x(t) を次の標本 x(t + 1) として保持します。ここで、

    r(x,y)=min{f(y)f(x)q(x|y)q(y|x),1}

  4. t を t + 1 としてインクリメントし、望ましい標本数が得られるまで手順 2 と 3 を繰り返します。

関数 mhsample でメトロポリス・ヘイスティングス法を使用して、乱数を生成します。メトロポリス・ヘイスティングス アルゴリズムを使って、質の良い標本を効率よく生成するには、適切な提案分布を選択することが重要です。有効な提案分布を見つけることが難しい場合、提案分布を明示的に指定しない Slice Sampling アルゴリズム (slicesample) を使用します。

スライス標本化の使い方

効率的なメトロポリス・ヘスティングス提案分布を求めることが困難な場合でも、Slice Sampling アルゴリズムでは明示的な指定が必要ありません。Slice Sampling アルゴリズムは、垂直方向と水平方向のステップの列を使って、密度関数の下の領域から標本を抽出します。はじめに、0 ~密度関数 f (x) で、無作為に高さを選択します。次に、選択された高さよりも高い密度の水平方向の "スライス" から標本化することによって、新しい x の値を無作為に選択します。同様の Slice Sampling アルゴリズムは、多変量分布に対しても使用されます。

密度関数に比例する関数 f (x) が与えられる場合は、以下の操作で乱数を生成します。

  1. f (x) の定義域内で、初期値 x(t) を仮定します。

  2. (0, f(x(t))) から実数 y を等間隔に抽出することで、水平方向の "スライス" を S = {x: y < f(x)} として定義します。

  3. すべて、またはほとんどの "スライス" S を含む x(t) 周辺の区間 I = (L, R) を検出します。

  4. この区間内に新たな点 x(t + 1) を描きます。

  5. t → t + 1 と増加させ、目的とする標本数が得られるまで手順 2 から 4 を繰り返します。

密度の "スライス" である、区間 I = (L,R) を効率的な数値処理で見つけることができれば、スライス標本化は、任意の形の密度関数をもつ分布から乱数を生成できます。

関数 slicesample を使用して、スライス標本化法を使って、乱数を生成できます。

この情報は役に立ちましたか?