Search on the blog

2011年10月22日土曜日

確率遷移行列の形と定常状態

マルコフ性(単純マルコフ過程)をもつ事象がある確率推移のもと、どのような定常状態に落ち着くのか実験してみた。

 Haskellで書きました。こういうのはHaskellが綺麗に書けますねー。

genNextPrb a b c d = \(x, y) -> (a*x+b*y, c*x+d*y)
main = mapM_ print . take 200 . iterate nextPrb $ (1, 0)
where nextPrb = genNextPrb 0.2 0.2 0.8 0.8

分かったこと。確率遷移行列をP, 事象の分布の初期値をx0, 収束時の事象の分布をxnとおきます。
  1. Pが単位行列の場合は、xn = x0となる。
  2. すべての行iにおいてPi0 = Pi1 = Pi2 =...の場合(列の値が同じ)、xn = [Pi0, Pi1, Pi2, ...]となる。
  3. Pが対象行列の場合、xnはすべての要素の値は等しい。(一様分布になる)
  4. 1.以外の場合は、xnはx0の値によらない。(エルゴード性)

 少しだけ補足。
 1.はベクトルに単位行列かけるだけなので確率分布がかわらないのは当たり前。
 2.は、次に特定の事象がおこる確率は、現在の状況に依存しないことを表している。例えば、サイコロをふる場合など。これはマルコフ性を持つ事象とは呼ばないのかもしれない。
 3.はおもしろい。x ∈ R^2のときは感覚的に分かりやすい。
例えば、天気の推移にマルコフ性があると仮定して
  • 晴れの次が晴れの確率を0.9
  • 晴れの次が雨の確率を0.1
  • 雨の次が晴れの確率0.1
  • 雨の次が雨の確率0.9
とする。このとき確率推移行列は対称行列である。一旦晴れになるとなるべくその状態を保とうとするし、一旦雨になるとなるべくその状態を保とうとする。よって仮にx0 = [1, 0]、つまり晴れの確率100%などとしても、次の日には雨が10%になって、その10%は晴れ側にほとんど戻ってこないのでそれが蓄積されていって最終的にxn = [0.5, 0.5]で落ち着く。これは感覚的に分かりやすい。

 では一般にx ∈ R^nの場合はどうか?これは対称行列を写像として見たときの意味を考えるか、対角化して極限を取るみたいなことをして数学的に証明できるのかもしれないが、大変そうなので直感的に理解する方法を考えてみる。オートマトンみたいな状態遷移図を書けば分かりやすそう。。3次元の場合も、以下の図をみると直感的には定常状態では均等に落ち着きそうです。

たくさん持っているところからはたくさん出て行き、少ししかないところからは少ししかでていかない。同じ色の線は同じ遷移確率を持るのがポイントです。(電子回路のオペアンプをバッファとして使う場合に定常状態がどうなるかを考えるのに似ているかも。)

4. は、確率遷移行列が単位行列以外の場合は、定常状態が初期状態によらないことを意味している。初期状態が何でもいいというのは、シミュレーションをする場合にとてもありがたい特性である。また、初期状態によらないということは、マルコフ性を持つ確率モデルは遷移行列によってのみ特徴づけられることを意味している。固有値とか固有ベクトルとかがここでも使えそうである。

0 件のコメント:

コメントを投稿