差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

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