x[[1]]
-
- ヒットの確率を掛け合わせた確率 をおさめたベクトル
x[[2]]
- 確率を計算するにはあとアウトの確率とアウトがどこに入るかの係数をかける必要がある
- baseの数は得点者、残塁者にのみ影響する
p<-c(0.3,0.2,0.1,0.05)
q<-1-sum(p)
a<-list(list(c()),1)
b<-list(list(c(1)),c(p[1]))
c<-list(list(c(1,0),c(1,1)),c(p[1]*p[1],p[2]))
d<-list(list(c(1,0,0),c(1,0,1),c(1,1,0),c(1,1,1)),c(p[3],p[2]*p[1],p[1]*p[2],p[1]^3))
N<-10
x<-list(c(0,b[[1]],c[[1]],d[[1]]),c(1,b[[2]],c[[2]],d[[2]]))
for (i in 1:N){
a1<-lapply(a[[1]],append,c(1,0,0,0),after=FALSE)
b1<-lapply(b[[1]],append,c(1,0,0),after=FALSE)
c1<-lapply(c[[1]],append,c(1,0),after=FALSE)
d1<-lapply(d[[1]],append,c(1),after=FALSE)
a2<-a[[2]]*p[4]
b2<-b[[2]]*p[3]
c2<-c[[2]]*p[2]
d2<-d[[2]]*p[1]
u<-list(c(a1,b1,c1,d1),c(a2,b2,c2,d2))
a<-b
b<-c
c<-d
d<-u
x<-list(c(x[[1]],u[[1]]),c(x[[2]],u[[2]]))
}
Nb <-3
score <- function (v,Nb=Nb){
if ( length(v) > Nb){
return(sum(v[1:(length(v)-Nb)]))
}else{
return(0)
}
}
Nout<-3
A<-matrix(0,2,length(x[[1]]))
for(i in 1:length(x[[1]])){
A[1,i]<-score(x[[1]][[i]],Nb)
A[2,i]<-choose(sum(x[[1]][[i]])+Nout-1,Nout-1)*q^3*x[[2]][[i]]
}
- 行列Aの1行A[1,]は1イニングの得点,A[2,]はその確率
- あとは得点ごとに確率を足し合わせればよい