文書の過去の版を表示しています。
マルコフ性とマルコフ過程
時間をtで表し、時間の経過とともに変化する状態X[t]を考える。 時間の間隔は等間隔とし、整数で表す。
X[0], X[1], …, X[t-1],X[t],X[t+1],…は時間の添え字を持つ確率変数の列である。 この確率変数の列は(離散時間)確率過程と呼ばれる。 任意の時点tより昔の確率変数の実現値の列x[0], x[1], …, x[t-1]を時点tより前の履歴(history)といい、H[t-]と記す。
任意の時点tの状態X[t]の、それ以前のすべての時点の履歴を与えた条件付き確率分布Pr[X[t]=i|H[t-]] = Pr[X[t]=i|X[t-1]=x[t-1],X[t-2]=x[t-2],X[t-3]=x[t-3],…]が、直前の1時点のみを与えて定まる、すなわちPr[X[t]=i|H[t-]] = Pr[X[t]=i|X[t-1]=x[t-1]]を満たす時、その確率過程はマルコフ性を持つという。
マルコフ性を持つ確率過程をマルコフ過程という。
以上ではX[t]が離散確率変数の場合を紹介したが、連続確率変数でも条件付き確率密度関数を用いて、同様の議論が展開できる。 それを連続状態離散時間マルコフ過程という。
現在の時点をt、少し先の未来の時点をt+1と置くと、 Pr[X[t+1]=i|H[t]] = Pr[X[t+1]=i|X[t]=x[t]] となり、未来を予測するのに、過去のすべてのデータを参照する必要はなく、現在の状態x[t]が必要なすべての情報である、ということにマルコフ性は等しい。
なお、互いに独立な確率変数の列もマルコフ性は満たす。
マルコフ連鎖の例
本に目を通す、というマルコフ連鎖を考える。 まずは本を手にとって、カバーを見る。 カバーを見た時点の次には、確率20%(0.2)でカバーを見続けるか、確率70%(0.7)で目次に目を移すか、 あるいは確率10%(0.1)で興味を失って閉じる。
目次を開いた時点の次には、確率40%(0.4)で目次を見続けて内容を把握するか、確率50%(0.5)で第一章に進むか、 あるいは確率10%(0.1)で興味を失って閉じる。
このような目の通し方を確率表で表すと、次のようになる。
カバー | 目次 | 第1章 | 第2章 | 第3章 | 第4章 | 第5章 | 第6章 | 索引 | 閉じる | |
カバー | 0.2 | 0.7 | 0.1 | |||||||
目次 | 0.4 | 0.5 | 0.1 | |||||||
第1章 | 0.5 | 0.3 | 0.1 | 0.1 | ||||||
第2章 | 0.5 | 0.3 | 0.1 | 0.1 | ||||||
第3章 | 0.5 | 0.3 | 0.1 | 0.1 | ||||||
第4章 | 0.5 | 0.3 | 0.1 | 0.1 | ||||||
第5章 | 0.5 | 0.3 | 0.1 | 0.1 | ||||||
第6章 | 0.5 | 0.1 | 0.3 | |||||||
索引 | 0 | 0.2 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
閉じる | 1 |
確率0は空欄とした。
この行列は水平方向(行)の和が100%(確率1)になる。 各行は、ある時点でその行に居たときの、次の時点の状態の条件付き確率分布である。 これを行列で表したものを状態推移確率行列といい、またマルコフ行列と呼ばれることもある。
Rの行列として定義すると、次のようになる。
P = matrix(c( 0.2,0.7,0,0,0,0,0,0,0,0.1, 0,0.4,0.5,0,0,0,0,0,0,0.1, 0,0,0.5,0.3,0,0,0,0,0.1,0.1, 0,0,0,0.5,0.3,0,0,0,0.1,0.1, 0,0,0,0,0.5,0.3,0,0,0.1,0.1, 0,0,0,0,0,0.5,0.3,0,0.1,0.1, 0,0,0,0,0,0,0.5,0.3,0.1,0.1, 0,0,0,0,0,0,0,0.5,0.1,0.4, 0,0.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1, 0,0,0,0,0,0,0,0,0,1),ncol=10,byrow=TRUE)
たとえばある時点で表紙にいるとは、次のベクトルで表す。
x = matrix(c(1,0,0,0,0,0,0,0,0,0),nrow=1,ncol=10)
この次の時点にどの状態にいるかは、
x %*% P
で得られる。
markovchain
markovchainパッケージは、離散状態離散時間マルコフ過程(通称は離散マルコフ過程、あるいはマルコフ連鎖)をRで扱うのに便利な機能を提供する。
MDPtoolbox
MDPtoolboxパッケージは、マルコフ過程を少し拡張した、マルコフ決定過程をRで扱うのに便利な機能を提供する。