2021年7月21日水曜日

MCMCへの道(3)

 MCMCへの道(2)からの続き

次は,MCMC法#3マルコフ連鎖である。昼食のメニューが3種類に限られていて,なおかつ当日のメニュー選択の確率が,前日のメニューだけによって定まるという例があげられていた。はい,この例は非常によくわかる。

問題は,Juliaの配列と行列の扱いだ。MahthematicaはすべてListと考えればよいのでわかりやすかったが,Juliaでは型として,ArrayもMatrixもある。見様見真似でとりあえずコードを書いたのだけれど,まだ十分理解できていない。このため,3x3行列の配列であるbをベクトルvにかけて得られる配列の転置ができなかったので,手動で転置している。

#using LinearAlgebra
using Plots

x=[zeros(3) for i in 1:11]
y=[zeros(11) for i in 1:3]
#
a=[0.2 0.1 0.3 ; 0.2 0.6 0.5 ; 0.6 0.3 0.2]
b=[zeros(3,3) for i in 1:11]
b[1]=[1 0 0 ; 0 1 0 ; 0 0 1]
v=[0.3,0.2,0.5]
#
for i in 2:11
  b[i]=a*b[i-1]
end

for j in 1:11
  x[j]=b[j]*v
end
#
for i in 1:11
  for j in 1:3
    y[j][i]=x[i][j]
  end
end
#
plot(y,legend=:bottom, xlim=(0,10),ylim=(0,0.6))




0 件のコメント: