得点分布

  • プログラミングセミナーがあった
  • ゲームの構成など、論理の大事な部分は、リンク元にお任せするとして、「分布」「期待値」「勝敗」の関係を確かめたりする部分について、覚書
  • 2チームで得点を競うチームがあるとする
  • それぞれのチームは、0からN点までをある確率分布で得点するとする
  • そのとき、勝敗の確率はどうなるか
N<-30 # 最大得点(0,1,2,...,N点を取るとする)
m1<-4 # チーム1の得点分布を作るためのパラメタ
m2<-2 # チーム2の得点分布を作るためのパラメタ
# 2チームの得点確率分布は、2つのポアッソン分布を合成することにする
P1<-dpois(0:N,m1) #チーム1のためのポアッソン分布のひとつめ
P2<-dpois(0:N,m2) #チーム2のためのそれのひとつめ
# 二つのポアッソン分布を適当な比率で合わせる
P3<-dpois(0:N,m1)+2*dpois(0:N,m1*2)
P4<-dpois(0:N,m2)+dpois(0:N,m2*6)
# 足して1に補正する
P3<-P3/sum(P3) 
P4<-P4/sum(P4)
# 2チームの対決の点数をN+1 x N+1 行列の確率パターンにする
M<-P4%*%t(P3)
# 足せば1
sum(M)
# チーム1、チーム2が勝利する確率は、上三角・下三角成分の和
UpperM<-M[upper.tri(M)]
LowerM<-M[lower.tri(M)]

Win<-sum(UpperM)
Lose<-sum(LowerM)
Tie<-sum(diag(M)) # 引き分け確率
# チーム1、2の点数の期待値
sum(P3*(0:N)) 
sum(P4*(0:N))
# 勝ち負け率
Win
Lose
# 期待値の大小と勝ち負けの大小は必ずしも一致しない

plot(0:N,P3,ylim=c(0,max(P3,P4)))
par(new=TRUE)
plot(0:N,P4,col="red",ylim=c(0,max(P3,P4)))
  • もう少し考えよう
  • (N+1)\times (N+1)行列,M=(m_{ij})を考える
  • 定義より、
    • \sum__{i,j} m_{ij}=1
    • P_a =(\sum_{i} m_{ij}) : チームaの得点別確率ベクトル
    • P_b=(\sum_{j} m_{ij}):チームbのそれ
    • Exp(A) = \sum_{j} j \times \sum_{i} m_{ij} : チームaの得点の期待値
    • Exp(B) = \sum_{i} i \times \sum_{j} m_{ij} : チームbの得点の期待値
    • このときに
      • [tex: Win = \sum_{i > j} m_{ij},Lose= \sum_{i
  • 明日の記事に続く