- 前日の記事からの続き
- どういう得点分布が勝敗にどう影響するかに興味がある
- それを知るためには、得点の期待値が等しい2チームでの勝敗の結果が知りたい
- シミュレーションするために、得点の期待値が等しい得点分布を発生させる必要がある
- Cは定数
- N個の値があって、2つの式が制約しているから自由度はN-2
- 第2式から第1式を引いて
- N-1個の値、をディリクレ乱数を使って発生させて、うまくいくように調整して発生させ、その上で、勝敗と2チームの得点分布の分散とを比較してみるのが次のソース(ここで分散を比較するのは、2チームの期待値はすでに等しくしてやっているので、期待値〜平均〜1次モーメント の次に分布を説明する特徴量を取り出すとしたら、それは分散〜2次モーメント、だから・・・)
- 面白いことに、得点期待値=(N+1)/2にすると、2チームの得点の分散の大小関係によらず、勝敗は五分五分らしい
- これは、今の設定(得点は1,2,...,Nのいずれかをとるとした)で、得点期待値を(N+1)/2にするということは、「対称な得点分布」を発生させているから(のような気がする)
- 得点期待値をそこからずらすと、分散の大小と勝敗に関係が生じる(ようだ)
library(MCMCpack)
N<-3
C<-1.5 # 期待値は固定する、勝手な値を入れるとP1,P2の要素が0以上という条件を満足できなくなる(かもしれないので注意)
# C<-(N+1)/2 #とすると、Us=Lsになるらしい
# Pの自由度はN-2
Niter<-1000
#Us :勝率,Vs: 負率、V1s,V2s 確率分布P1,P2の分散
Us<-Ls<-V1s<-V2s<-rep(0,Niter)
for(i in 1:Niter){
tmpP1<-rdirichlet(1,rep(1,(N-1)))*(C-1)
tmpP2<-rdirichlet(1,rep(1,(N-1)))*(C-1)
tmpP1<-tmpP1/(1:(N-1))
tmpP2<-tmpP2/(1:(N-1))
P1<-c(1-sum(tmpP1),tmpP1)
P2<-c(1-sum(tmpP2),tmpP2)
#tmpP1<-c((C-1)-tmpP1%*% (2:(N-1)),tmpP1)
#tmpP2<-c((C-1)-tmpP2%*% (2:(N-1)),tmpP2)
P1<-c(C-tmpP1%*% (2:N),tmpP1)
P2<-c(C-tmpP2%*% (2:N),tmpP2)
M<-P1%*%t(P2)
Ex1<-P1 %*% (1:N)
Ex2<-P2 %*% (1:N)
P1
P2
Ex1
Ex2
sum(M[upper.tri(M)])
sum(M[lower.tri(M)])
Us[i]<-sum(M[upper.tri(M)])
Ls[i]<-sum(M[lower.tri(M)])
V1s[i]<-V1<-var(P1)
V2s[i]<-V2<-var(P2)
}
library(rgl)
plot3d(V1s,V2s,Us/Ls)
X <- par3d("userMatrix")
movie3d( par3dinterp( userMatrix=list(X,rotate3d(X, pi/2, 1, 0, 0),rotate3d(X, pi/2, 0, 1, 0) )), duration=5 ,movie="test2",dir=".")
plot(V1s-V2s,Us-Ls)