Cross Entropy Minimisation

概要

  • エントロピー差が最小になるような最も近い分布を求める案件
  • 平均2.2の正規分布から平均2.3の分布を求める

Rコード

参考サイト1にMatlabコードがあるのでそれをR用に書き写した

結果

期待値2.2と2.3がそれぞれ求められているのであっているっぽい。

PDFをプロットすると以下の様な感じ。参考サイト1と同じに見えるっぽい?
150614

参考

Tutorial Demo on Cross Entropy minimization (I) [Matlab Octave]
http://www.quantcode.com/modules/mydownloads/singlefile.php?lid=478

Forecasting Using Relative Entropy
https://www.frbatlanta.org/-/media/Documents/filelegacydocs/wp0222.pdf
(元論文。あまり読んでいない。)

未知パラメータがある場合のパーティクルフィルタ

概要

  • 未知パラメータ(ノイズの分散など)を含む場合のパーティクルフィルタの実装
  • システムノイズが正規分布の場合とコーシー分布の場合の比較

システムノイズが正規分布の場合

詳しい理論に関しては参考文献のP.225辺りからを御覧ください。

対象データに関しては前回の記事と同様のものを使っております。前回との違いとしては、システムノイズと観測ノイズの分散が同時に推定されているという点ですね。
また、今回は重点遷移密度を得るためにAnxiliary Particle Filter(補助粒子フィルタ)を使っています。これは、未知パラメータを含んでいるからという理由と、他の分布への一般化も視野に入れているからという理由です。

また参考文献中では実装されていませんが、多項リサンプリングも行なっています。

状態の推定結果

粒子数は1万個です。以下のように、若干ずれる箇所はありますが、カルマンフィルタとほぼ同程度の推定を行なっていることが分かります。
150607_1

システム分散の推定結果

システム分散の真値は1ですが、まあまあという感じですかね。
赤の破線はそれぞれ25%タイル値、75%タイル値を表しています。
150607_2

観測分散の推定結果

こちらの真値は2ですが、まあこんな感じという感じなんですかね(― ―)
150607_3

システムノイズがコーシー分布の場合

ほとんど正規分布の場合と変わりません。正規分布のコードをコピーして再利用しているので、変数名などが適切ではないですがそこは目をつむってください(― ―)

今回推定対象としたデータ列は以下。コーシー分布に従う状態に、正規分布を上乗せしています。
状態がコーシー分布なので、正規分布よりもドラスティックなジャンプが時々発生します。
150607_0

状態の推定結果

粒子数は100万個。青線は状態の真値で、赤線がパーティクルフィルタで推定された状態です。
概ね推定されているような気がしなくもないですがやはり精度はかなり悪くなりますね。
100万個でこれですからね。MBPで走らせるとかなり時間がかかります(― ―)
150607_1

システムノイズのscaleの推定結果

真値は0.05ですがこんなもんなんですかね。時々ゼロに張り付いたりしていますが。
150607_2

観測分散の推定結果

こちらはまあいい感じですかね。真値は1.5です。
150607_3

参考文献

Amazon.co.jp: Rによるベイジアン動的線形モデル (統計ライブラリー): G.ペトリス, S.ペトローネ, P.カンパニョーリ, 和合 肇, 萩原 淳一郎: 本
http://www.amazon.co.jp/dp/4254127960