mhsample
メトロポリス・ヘイスティングス標本
構文
smpl = mhsample(start,nsamples,'pdf',pdf,'proppdf',proppdf, 'proprnd',proprnd)
smpl = mhsample(...,'symmetric',sym)
smpl = mhsample(...,'burnin',K)
smpl = mhsample(...,'thin',m)
smpl = mhsample(...,'nchain',n)
[smpl,accept] = mhsample(...)
説明
smpl = mhsample(start,nsamples,'pdf',pdf,'proppdf',proppdf, 'proprnd',proprnd)
は、メトロポリス・ヘイスティングス アルゴリズムを使って、ターゲットの定常分布 pdf
から nsamples
の無作為標本を抽出します。
start
は、マルコフ連鎖の開始値を含む行ベクトルです。nsamples
は、生成する標本数を指定する整数です。pdf
、proppdf
、および proprnd
は、@
を使用して作成された関数ハンドルです。proppdf
は、提案分布の密度を定義し、proprnd
は提案分布に対する乱数発生器を定義します。pdf
と proprnd
は、start
と同じタイプとサイズをもつ 1 つの引数を入力として受け入れます。proppdf
は、start
と同じタイプとサイズをもつ 2 つの引数を入力として受け入れます。
smpl
は、標本を含む列ベクトルまたは行列です。対数密度関数が選ばれた場合、'pdf'
と 'proppdf'
は、'logpdf'
と 'logproppdf'
に置き換えることが可能です。メトロポリス・ヘイスティングス アルゴリズムで使われる密度関数は、必ずしも正規化されるわけではありません。
提案分布 q(x,y) は、y が現在の点である場合、次の点として選択する x に対して確率密度を与えます。q(x|y) として記述される場合もあります。
proppdf
または logproppdf
が q(x,y) = q(y,x) を満たす場合、すなわち提案分布が対称の場合、mhsample
は、ランダム ウォーク メトロポリス・ヘイスティングス サンプリングを実行します。proppdf
または logproppdf
が q(x,y) = q(x) を満たす場合、すなわち提案分布が現在の値に依存しない場合、mhsample
は、独立メトロポリス・ヘイスティングス サンプリングを実行します。
smpl = mhsample(...,'symmetric',sym)
は、メトロポリス・ヘイスティングス アルゴリズムを使って、ターゲットの定常分布 pdf
から nsamples
の無作為標本を抽出します。sym
は、提案の分布が対称であるかどうかを示す論理値です。既定値は false で、非対称な提案分布に対応します。sym
が true、すなわち提案分布が対称の場合、proppdf
と logproppdf
はオプションです。
smpl = mhsample(...,'burnin',K)
は、開始点と生成されたシーケンスで省略された k
番目の点の間の値をもつマルコフ連鎖を生成します。k
番目を超える値は保持されます。k
は既定の設定の幅 0
をもつ非負の整数です。
smpl = mhsample(...,'thin',m)
は、生成されたシーケンスで省略された m
値からの m-1
をもつマルコフ連鎖を生成します。m
は、既定値 1
をもつ正の整数です。
smpl = mhsample(...,'nchain',n)
は、メトロポリス・ヘイスティングス アルゴリズムを使用して、n
マルコフ連鎖を生成します。n
は、既定値 1 をもつ正の整数です。smpl
は、標本を含んでいる行列です。最後の次元は、独立した連鎖のインデックスを含みます。
[smpl,accept] = mhsample(...)
は、提案分布の受容比である accept
も返します。accept
は、単一連鎖が生成された場合はスカラーで、複数連鎖が生成された場合はベクトルです。
例
バージョン履歴
R2006a で導入