得点の期待値が等しいときの、勝負強さ

  • 前日の記事からの続き
  • どういう得点分布が勝敗にどう影響するかに興味がある
  • それを知るためには、得点の期待値が等しい2チームでの勝敗の結果が知りたい
  • シミュレーションするために、得点の期待値が等しい得点分布を発生させる必要がある
    • \sum p_i=1; i=1,2,...,N
    • \sum i \time p_i = C Cは定数
    • N個の値があって、2つの式が制約しているから自由度はN-2
    • 第2式から第1式を引いて\sum_{i=2}^N (i-1)\times p_i= C-1
    • N-1個の値、((i-1)\times p_i)をディリクレ乱数を使って発生させて、うまくいくように調整して発生させ、その上で、勝敗と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)