【マルコフ連鎖】3×3遷移確率行列の計算例(卑近な例)


 現在の状態が過去の状態によって確率的に決定されるというマルコフ過程(マルコフ連鎖)を説明するために簡単な例を用意した。昨日の朝食によって、今日の朝食が確率的に決まるような話である。見ていこう。

例題

毎日朝食には「ライス」、「パン」、「イモ」のいずれかを食べる。昨日食べた朝食によって確率的に今日の朝食を決めるように執事に伝えている。朝食の確率的な決定(遷移)は上の絵のとおり行われる。一昨日の朝食が「ライス」であったときに、今日の朝食が「ライス」である確率を求めよ。

1. 行列で見る

 マルコフ連鎖では行列を用いて状態の遷移を表現することがある。以下では、確率遷移行列を導入し、例題を解いてみる。


1.1 確率遷移行列をつくる

 昨日の朝食によって確率的に今日の朝食が決まる時、遷移の様子を行列により表現することができる。状態は、「ライス」「パン」「イモ」の3通りであるため、3次元のベクトルで状態を表すことができる。以下の図にその様子を示した。

 この図によれば、昨日の状態(ベクトル)を遷移行列でつなぐことにより今日の状態(ベクトル)を表現している。

 同様にして、昨日の状態(ベクトル)も一昨日の状態(ベクトル)によって下のように表現できる。波線のところを再度、行列で表現すれば良い。

 一昨日の朝食は「ライス」であったため、一昨日のベクトルについては「ライス」の成分が1で、残りの「パン」「イモ」は0である(ライス100%)。

1.2 確率遷移行列による解法

 求めたい確率は左にあるベクトルの 今日の「ライス」 である。あとは遷移行列の2乗を計算すれば良い。分母の 10 は行列の外に出しておく。

    \begin{eqnarray*} \left[\frac{1}{10}\left( \begin{array}{ccc} 1&4&4 \\ 7&2&3\\ 2&4&3 \end{array} \right)\right]^2 &=& \frac{1}{10^2}\left( \begin{array}{ccc} 37&28&28 \\ 27&44&43\\ 36&28&29 \end{array}\right) \\ \\ &=& \left( \begin{array}{ccc} 0.37&0.28&0.28 \\ 0.27&0.44&0.43\\ 0.36&0.28&0.29 \end{array}\right) \end{eqnarray*}

となる。したがって、今日の朝食が「ライス」である確率 P_{rice} は以下のように計算される。

    \begin{eqnarray*} \left( \begin{array}{c} P_{\rm rice}\\P_{\rm bread}\\P_{\rm oimo} \end{array}\right) &=&\left( \begin{array}{ccc} 0.37&0.28&0.28 \\ 0.27&0.44&0.43\\ 0.36&0.28&0.29 \end{array}\right) \left( \begin{array}{c} 1\\ 0 \\ 0 \end{array}\right) \\ \\ &=& \left( \begin{array}{ccc} 0.37\\ 0.27\\ 0.36 \end{array}\right) \quad \blacksquare \end{eqnarray*}

 ついでに、今日の朝食が「パン」である確率 P_{rice} 、今日の朝食が「イモ」である確率 P_{imo} も同時に求められた。



2. n日後

 今見てきたように、昨日の状態は一昨日の状態で決まる。さらに、一昨日の状態はその前日の状態によって確率的に決まっている。もっと過去からの遷移も考えることができるだろう。同時に未来についても確率的に予測できそうである。

 したがって、この確率遷移行列があれば未来の朝食も決定できそうである。今日から n 日後にどうなっているか考えてみる。

例題(計算多め)

今日の朝食が「ライス」であったときに、今日から n 日後の朝食が「ライス」である確率を求めよ。



2.1 確率遷移行列をつくる

 n 日後の状態が知りたいなら n-1 日後の状態を知れば良い。n-1 日後の状態が知りたいなら n-2 日後の状態がわかればよい。先の例題の確率遷移行列で表現してみる。

 今日から n 日後まで確率遷移行列は n 個ある。したがって遷移行列の n 乗が知りたいのである。行列の n 乗が知りたければ対角化をする。表記を簡単にするために、以下のようにベクトルと行列 A を取り決める。



2.2 対角化と一般項

 ここでは、行列の対角化は簡単に済ませる。固有値は以下の通りである。

それぞれの固有値について固有ベクトルを求めて、A を対角化する行列 PP^{-1} を求めた。対角要素には、固有値 \lambda=\frac{10}{10},-\frac{1}{10},-\frac{3}{10} が並ぶように P を作った。対角化行列は D\equiv P^{-1}A{P}とする。

    \begin{eqnarray*} P\equiv \left( \begin{array}{ccc}  4&0&1\\5&1&-2 \\ 4&-1&1 \end{array} \right),\quad  P^{-1}=\frac{1}{13}\left( \begin{array}{ccc}  1&1&1\\13&0&-13 \\ 9&-4&-4 \end{array} \right)\\ \end{eqnarray*}

    \begin{eqnarray*} D=\frac{1}{10}\left( \begin{array}{ccc} -3&0&0\\0&-1&0 \\ 0&0&10 \end{array} \right)\\ \end{eqnarray*}

これより、A^n を求める。

    \begin{eqnarray*} A^{n}&=&PD^{n}P^{-1} \\ \\ &=& \frac{1}{13}\left( \begin{array}{ccc}  4&0&1\\5&1&-2 \\ 4&-1&1 \end{array} \right) \frac{1}{10^n}\left( \begin{array}{ccc} 10^n&0&0\\0&(-1)^n&0 \\ 0&0&(-3)^n \end{array} \right) \left( \begin{array}{ccc}  1&1&1\\13&0&-13 \\ 9&-4&-4 \end{array} \right)\\ \\ &=& \frac{1}{13\cdot10^n}\left( \begin{array}{ccc}  4&0&1\\5&1&-2 \\ 4&-1&1 \end{array} \right) \left( \begin{array}{ccc} 10^n&10^n&10^n\\ 13\cdot(-1)^n&0&-13\cdot(-1)^n \\ 9\cdot(-3)^n & -4\cdot(-3)^n &-4\cdot (-3)^n \end{array} \right)\\ \\ \end{eqnarray*}

行列に入れると複雑なので要素ごとに書く( A^n=[a_{ij}] とする)。ただし、今日の状態は (1 0 0) ベクトルなので 1列目の成分だけ計算する。

    \begin{eqnarray*} a_{11}&=& \frac{4}{13}+\frac{9}{13}\cdot\left(-\frac{3}{10}\right)^n\\ a_{21}&=& \frac{5}{13}+\left(-\frac{1}{10}\right)^n-\frac{18}{13}\cdot\left(-\frac{3}{10}\right)^n\\ a_{31}&=& \frac{4}{13} -\left(-\frac{1}{10}\right)^n +\frac{9}{13} \cdot\left(-\frac{3}{10}\right)^n \\ \end{eqnarray*}


P^{n}_{\rm rice}: n 日後の朝食が「ライス」である確率
P^{n}_{\rm break}: n 日後の朝食が「パン」である確率
P^{n}_{\rm oimo}: n 日後の朝食が「イモ」である確率

として計算する。

    \begin{eqnarray*} \left(\begin{array}{c} P^{n}_{\rm rice}\\ P^{n}_{\rm break}\\ P^{n}_{\rm oimo} \end{array}\right)&=& \left(  \begin{array}{ccc} a_{11}&a_{12}&a_{13}\\ a_{21}&a_{22}&a_{23}\\ a_{31}&a_{32}&a_{33}  \end{array}  \right) \left(\begin{array}{c} 1\\ 0\\ 0 \end{array}\right)\\ \\ &=& \left(\begin{array}{c} \frac{4}{13}+\frac{9}{13}\cdot\left(-\frac{3}{10}\right)^n \\ \\ \frac{5}{13}+\left(-\frac{1}{10}\right)^n-\frac{18}{13}\cdot\left(-\frac{3}{10}\right)^n \\ \\ \frac{4}{13} -\left(-\frac{1}{10}\right)^n +\frac{9}{13} \cdot\left(-\frac{3}{10}\right)^n \end{array}\right) \quad \blacksquare \end{eqnarray*}

 この答えは、n=2 とすれば初めの例題の答えに一致する。



2.3 ∞日後の朝食

 大学入試問題だと数列の一般項を求めて最後におまけのように極限の問題がついているので、ここでも同じように考えてみる。

 \lim_{n\rightarrow \infty} P^n_{\rm breakfast} を考えれば \infty 日後の朝食がわかります(地球があれば)。それぞれ、\frac{4}{13},\frac{5}{13},\frac{4}{13} に収束します。



3. まとめ

 ここでは単純なモデルを考えた。行列の対角化を用いれば n 日後の状態まで考えることができることも学んだ。

 行列が複雑だと計算が大変になる。普通はこういう単純な計算はコンピュータに任せて、人間はいかに現象をモデル化するか考えるものである。


コメントを残す

メールアドレスが公開されることはありません。