留学・音ゲー・研究備忘録

heine98の音ゲー・研究・留学の記録。Juliaとかlatexとか使います。

2つ以上のマルコフ過程

経済学において確率変数を扱うことは多い。特にAR(1)過程に従う外生ショックが主流だ。例えばz _ {t+1}がAR(1)過程であるとは


z _ {t+1} = \rho z _ {t} + \epsilon _{t+1},\ \epsilon _ {t+1}\sim\mathcal{N} (0,\sigma^2),\ \rho\in(0,1)

である。 ショック項が正規分布に従う場合、z _ {t+1}も連続確率変数となり数値計算では扱えないので、Tauchen (1986)やRouwenhorstの手法でマルコフ過程として離散化することになる。

今回、いつもわからなくなる遷移確率行列と、2つ以上のマルコフ過程が合わさったときの遷移確率行列の作成、動的計画法におけるインデックスゼーションについてかんたんにまとめておきたい。

  • 遷移確率行列のおさらい

n状態のStationary Markov Processを考える。遷移確率行列\Gamman\times n行列で


\Gamma=
\begin{bmatrix}
p_{11} & p_{12} & p_{13} & \cdot, p_{1n} \\
p_{21} & p_{22} & p_{23} & \cdot, p_{2n} \\
\cdots \\
p_{n1} & p_{n2} & p_{n3} & \cdot, p_{nn} \\
\end{bmatrix}

数学的に正しい定義は縦が今期の状態ごと、横に来期ごととなる。すなわち、このp _ {ij}は状態iから状態jへの推移確率になる。 覚え方は"Row(行) is Now"。行は今期の状態を所与とした確率になる。

経済学、特にHeterogeneous Agents Modelでは非可算無限な経済主体を考える。例えば、各Stateにおけるagentsのmeasureを縦に積んだnサイズベクトルが\mu_{t}であるとする。この場合、このTransition probability matrixから求められる来季のDistributionは


\mu_{t+1}=\Gamma '\mu_{t}

となる。

同様に、Standard Aiyagari modelを考えた場合に、数値計算Value functionの期待値を考える場合は、Value functionの値を格納した行列Vn _ {a} \times n _ {y}としたとき、n _ {y}サイズの遷移確率行列\Gamma によって


\mathbb{E}[V_{t+1}] = V_{t} \Gamma'

で求められる。

V _ {t+1}(i,j)要素は、来季の期所(state variable)のassetがグリッドa _ {i}であったとして、今期のlabor productivity shockがy _ {j}だったときのValue functionの期待値)

  • 2つ以上のMarkov ProcessのindexとTransition Probability Matrix

Markov process2つを考える。この場合、Aiyagariの簡単な拡張として 2 exogenous states model(no aggregate uncertainty)とすれば、state variableはassetと2つのショックを入れて3つの(a,y,\epsilon)になる。

これを数値計算で解くときにValue functionやPolicy functionの次元を3次元にすればindexは簡単になるが、遷移確率の扱いが面倒くさくなるので、とにかく2次元にしたい。

仮定として、 
y\in ( y _ {1} , y _ {2} , ... , y _ {n} )  \ \epsilon\in ( \epsilon _ {1},\epsilon _ {2}....,\epsilon _ {m} )
とする、すなわち、yn個の、\epsilonm個の値を取れるとする。(上記でsetの{}が数式モードで出せなかった。)

このとき、縦にassetとして、横にexogenous stateを取った2次元行列を作成する場合、以下のような順序で取るのが好ましい。


(y _ {1}, \epsilon _ {1}), (y _ {2}, \epsilon _ {1}), ..., (y _ {n}, \epsilon _ {1}), (y _ {1}, \epsilon _ {2}), ..., (y _ {n},  \epsilon _ {2}), ... , (y _ {n}, \epsilon _ {m})

この場合、遷移確率行列が\Gamma _ {\epsilon,\epsilon'}  \otimes \Gamma _ {y,y'}ですぐに求まる。3つ以上のMarkovの合成も、同様にして


(y _ {1}, \epsilon _ {1} z_{1}), (y _ {2}, \epsilon _ {1} z_{1}), ..., (y _ {n}, \epsilon _ {1} z_{1}), (y _ {1}, \epsilon _ {2} z_{1}), ..., (y _ {n},  \epsilon _ {2} z_{1}), ... , (y _ {n}, \epsilon _ {m} z_{1}), ... ,(y _ {n}, \epsilon _ {m} z_{l})

とすれば、遷移確率行列が\Gamma _ {zz'} \otimes \Gamma _ {\epsilon,\epsilon'} \otimes \Gamma _ {y,y'}となるはず(俺がクロネッカー積の定義を間違えてなければ)

問題は、何列目が一体どのstateを指すのか、もしくは任意のy,\epsilon,zの組み合わせは何列目に当たるのか(ここなくても今後困らない気がしてきたから気が向いたら書く、必要な場合は、A practical Guide to Parallelization in Economics (Fernandez-Villaverde & Valencia 2018)の記事内かGithubのサンプルコードを見るとどうゆうふうに次元を下げられるかが乗っているので、そんな感じで。