==== マルコフ性とマルコフ過程 ====
時間を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]が必要なすべての情報である、ということにマルコフ性は等しい。
なお、互いに独立な確率変数の列もマルコフ性は満たす。
マルコフ過程に関する簡単なことは[[http://bin.t.u-tokyo.ac.jp/startup16/file/2-2.pdf|この資料]](東京大学の都市生活学・ネットワーク行動学研究室の勉強会資料)によくまとまっているので、5分から10分ほどかけて、一読しておくといい。
=== 状態の分類 ===
P[i,i]=1という遷移確率を持つ状態iを吸収状態という。
=== チャップマン・コルモゴロフ方程式 ===
=== 停止時刻 ===
=== 再帰的 ===
=== 収束定理 ===
=== 定常分布 ===
==== マルコフ連鎖の例 ====
本に目を通す、というマルコフ連鎖を考える。
まずは本を手にとって、カバーを見る。
カバーを見た時点の次には、確率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)
> P
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0.2 0.7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1
[2,] 0.0 0.4 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.1
[3,] 0.0 0.0 0.5 0.3 0.0 0.0 0.0 0.0 0.1 0.1
[4,] 0.0 0.0 0.0 0.5 0.3 0.0 0.0 0.0 0.1 0.1
[5,] 0.0 0.0 0.0 0.0 0.5 0.3 0.0 0.0 0.1 0.1
[6,] 0.0 0.0 0.0 0.0 0.0 0.5 0.3 0.0 0.1 0.1
[7,] 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.3 0.1 0.1
[8,] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.1 0.4
[9,] 0.0 0.2 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
[10,] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0
たとえばある時点で表紙にいるとは、次のベクトルで表す。
x = matrix(c(1,0,0,0,0,0,0,0,0,0),nrow=1,ncol=10)
実行してみると、表紙に1、他の状態は0という行ベクトルが表示去れる。
> x
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 0 0 0 0 0 0 0 0 0
この次の時点にいる状態の確率分布は
x %*% P
で得られる。ここで%*%は、ベクトルとベクトル、ベクトルと行列、あるいは行列と行列の掛け算である。
> x %*% P
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0.2 0.7 0 0 0 0 0 0 0 0.1
これは別名、確率ベクトルと呼ばれる。総和が1は、条件付き確率分布の全確率が1であることに符号する。
2時点先にいる状態の確率分布は
x %*% P %*% P
で与えられる。
> x %*% P %*% P
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0.04 0.42 0.35 0 0 0 0 0 0 0.19
マルコフ連鎖では、Pをかけた回数分だけ未来の確率分布が、簡単に得られる。この計算をチェインルールと呼ぶこともある。
本を手に取ってから10時点先は
round(x %*% P %*% P %*% P %*% P %*% P %*% P %*% P %*% P %*% P %*% P,3)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 0.015 0.034 0.051 0.063 0.059 0.042 0.028 0.036 0.673
となる。時点の間隔が1時間ならば、10時間後には読み終えているか、飽きるかして、67.3%の確率で本を閉じている。
==== markovchain ====
[[r:markovchain]]パッケージは、離散状態離散時間マルコフ過程(通称は離散マルコフ過程、あるいはマルコフ連鎖)をRで扱うのに便利な機能を提供する。
install.packages(c("dplyr","stringr","DiagrammeR","networkD3"))
==== MDPtoolbox ====
[[r:MDPtoolbox]]パッケージは、マルコフ過程を少し拡張した、マルコフ決定過程をRで扱うのに便利な機能を提供する。
==== msm ====
パネルデータのための多状態モデル。
==== mcmcR ====
モンテカルロマルコフ連鎖。
==== hmm ====
共変量を持つ隠れマルコフモデル。
==== mstate ====
生存解析のためのマルコフ連鎖の上の多状態モデルの推定。