JavaからMatlabを使ってマルコフ連鎖シミュレーションをやってみます。
https://jp.mathworks.com/help/matlab/ref/mpower.html
https://jp.mathworks.com/help/econ/create-and-modify-markov-chain-model-objects.html
https://jp.mathworks.com/help/econ/visualize-markov-chain-structure-and-evolution.html
(1) データの準備
推移確率行列
double data_transition[][] = {{ 0.25, 0.25, 0.5, 0 }, { 0, 0.25, 0.5, 0.25 }, { 0.25, 0.25, 0.25, 0.25 }, { 0.25, 0.25, 0, 0.5}};
初期状態
double initial[] = {0.25, 0.25, 0.25, 0.25};
(2) 推移確率行列の可視化(有向グラフ)
これは2乗した時の、推移確率の様子を示しています。
(3) 推移確率行列の可視化(Heat Map)
推移確率をHeat Mapで表してみます。これも2乗した時のです。
1 から 4への推移確率が低く、1への推移は低くなっています。
(4) 定常分布のシミュレーション
初期状態から世代を経て、確率分布がわかります。状態1は低く、状態3が高くなります。
5世代後の定常分布です。4世代目から動かなくなっていますので収束した状態です。
ソースコード
0 件のコメント:
コメントを投稿