前の記事と先生の漸化式からの続き。
あるイニングの得点と、1イニングあたりに取る得点の確率から、次のイニングでの得点が帰納的に求められる的な話題。
ここで、推移行列というものについて。
あるイニングtで得点kを取る確率が収まっている行ベクトルと、次のイニングでのの関係は、推移行列Mを用いて
と書ける。ここで、Mの満たす条件というものがあって、の要素数がn個だとすると
・N行N列
N個の要素があるが、同じくN個の要素があるに推移するのだから、そうだね。
・成分の取りうる値は0〜1
成分はそれぞれ確率なので。
・すべての列について和が1
のj項目がのj項目に推移するには、のj項目から出るN本の矢を考えないといけない。
NKによると、今回は推移確率がどの過程でも一定な、マルコフ過程の特別な場合らしい。
一般にマルコフ過程では、推移確率を用いて
となるらしい。
先生のをちょっとパクッたスクリプト。
library(MCMCpack) score<- 5 # 1イニングの最大得点。 Ninning<- 9 # やるイニング回数。 Result<- rdirichlet(1,rep(1,score+1)) # 得点確率。 M<- matrix(0, # 推移行列。 nr=(length(Result)-1)*Ninning+length(Result), nc=(length(Result)-1)*Ninning+1) M[1:length(Result),1]<- Result m<- matrix(M[1:ncol(M),1],nc=1) for(j in 2:ncol(M)){ M[j:(length(Result)+j-1),j]<- Result } colSums(M) # 列の和が1になることを確認。 M<- head(M,n=ncol(M)) library(expm) Rinning<- M %^% (Ninning-1) %*% m # 結果。 plot(Rinning,type="l") # 前の記事のtを使って Rinning/t # すべて1
をnステップ推移行列というらしい。byNK