Selon moi la valeur de l’espérance de M sera proche de la valeur de a.
a=sample(x=1:1000, size=1)
n=sample(x=1:a, size=1)
X=replicate(10000, max(runif(n,0,a)))
E=mean(X)
V=mean((X-mean(X))**2)
Eemp=(n/(n+1))*a
Vemp=(n/(n+2))*(a**2)-((n/(n+1))*a)**2
a
## [1] 448
n
## [1] 37
E
## [1] 436.0934
V
## [1] 134.9191
Eemp
## [1] 436.2105
Vemp
## [1] 131.8639
Nous pouvons observer qu’en effet l’espérance est très proche de la valeur de a.
En ce qui concerne l’espérance selon a et n j’ai commencé par intuiter que E=(n-1)/na et fini par trouver que E=(n/n+1)a.
Pour la variance selon a et n j’ai d’abord calculé la fonction de densité pour ensuite pouvoir calculé E(X2) à l’aide du théorème du transfert et calculer la variance avec la formule V(X) = E(X2) - E(X)**2
tab <- data.frame(a=c(6),N=c(6),E=c(6),Eemp=c(6));
E = mean(replicate(10000, max(runif(10,0,1000))))
Eemp= (10/11)*1000
tab[1,1] = 1000
tab[1,2] = 10
tab[1,3] = E
tab[1,4] = Eemp
E2 = mean(replicate(10000, max(runif(10,0,100))))
Eemp2 = (10/11)*100
tab[2,1] = 100
tab[2,2] = 10
tab[2,3] = E2
tab[2,4] = Eemp2
E3 = mean(replicate(10000, max(runif(10,0,10))))
Eemp3 = (10/11)*10
tab[3,1] = 10
tab[3,2] = 10
tab[3,3] = E3
tab[3,4] = Eemp3
E4 = mean(replicate(10000, max(runif(2,0,1000))))
Eemp4 = (1/2)*1000
tab[4,1] = 1000
tab[4,2] = 2
tab[4,3] = E4
tab[4,4] = Eemp4
E5 = mean(replicate(10000, max(runif(1000,0,1000))))
Eemp5 = (1000/1001)*1000
tab[5,1] = 1000
tab[5,2] = 1000
tab[5,3] = E5
tab[5,4] = Eemp5
E6 = mean(replicate(10000, max(runif(100,0,1000))))
Eemp6 = (100/101)*1000
tab[6,1] = 1000
tab[6,2] = 100
tab[6,3] = E6
tab[6,4] = Eemp6
tab
## a N E Eemp
## 1 1000 10 909.301705 909.090909
## 2 100 10 90.893757 90.909091
## 3 10 10 9.094533 9.090909
## 4 1000 2 669.040715 500.000000
## 5 1000 1000 999.005742 999.000999
## 6 1000 100 990.053495 990.099010
Nous observons qu’effectivement plus N est grand, plus nous nous rapprochons de a
De plus avec Eemp = (n/n+1)*a nous nous rapprochons effectivement dans la plupart des cas de l’espérence voulu ( sauf évidemment lorsque N est trop petit).
tab3 <- data.frame(a=c(6),N=c(6),V=c(6),Vemp=c(6));
V = var(replicate(10000, max(runif(10,0,1000))))
tab3[1,1] = 1000
tab3[1,2] = 10
tab3[1,3] = V
V2 = var(replicate(10000, max(runif(10,0,100))))
tab3[2,1] = 100
tab3[2,2] = 10
tab3[2,3] = V2
V3 = var(replicate(10000, max(runif(10,0,10))))
tab3[3,1] = 10
tab3[3,2] = 10
tab3[3,3] = V3
V4 = var(replicate(10000, max(runif(2,0,1000))))
tab3[4,1] = 1000
tab3[4,2] = 2
tab3[4,3] = V4
V5 = var(replicate(10000, max(runif(1000,0,1000))))
tab3[5,1] = 1000
tab3[5,2] = 1000
tab3[5,3] = V5
V6 = var(replicate(10000, max(runif(100,0,1000))))
tab3[6,1] = 1000
tab3[6,2] = 100
tab3[6,3] = V6
#(n/(n+2))*(a**2)-((n/(n+1))*a)**2
Vemp= (10/12)*(1000**2)-((10/11)*1000)**2
Vemp2=(10/12)*(100**2)-((10/11)*100)**2
Vemp3=(10/12)*(10**2)-((10/11)*10)**2
Vemp4=(2/4)*(1000**2)-((2/3)*1000)**2
Vemp5=(1000/1002)*(1000**2)-((1000/1001)*1000)**2
Vemp6=(100/102)*(1000**2)-((100/101)*1000)**2
tab3[1,4] = Vemp
tab3[2,4] = Vemp2
tab3[3,4] = Vemp3
tab3[4,4] = Vemp4
tab3[5,4] = Vemp5
tab3[6,4] = Vemp6
tab3[1]=tab[1]
tab3[2]=tab[2]
tab3
## a N V Vemp
## 1 1000 10 6.871683e+03 6.887052e+03
## 2 100 10 6.664050e+01 6.887052e+01
## 3 10 10 7.067329e-01 6.887052e-01
## 4 1000 2 5.560454e+04 5.555556e+04
## 5 1000 1000 1.007145e+00 9.960110e-01
## 6 1000 100 9.486994e+01 9.610746e+01
Nous observons ici que notre formule de variance est juste pour différentes valeurs de a et n.
A première vue on peut estimer que la somme des Xi équivaut à n*(a/2). Muliplier par 2/n on peut penser que l’espérance se rapprochera fortement de a.
a=sample(x=1:1000, size=1)
n=sample(x=1:a, size=1)
X2=replicate(1000, (2/n)*sum(runif(n,0,a)))
E=mean(X2)
V=mean((X2-mean(X2))**2)
a
## [1] 583
n
## [1] 44
E
## [1] 584.0867
V
## [1] 2729.071
Nous observons qu’effectivement l’espérance est très proche de la valeur de a. Démonstration par linéarité de l’espérance :
E(M) = 2/nsomme(E(Xi)) = 2/nsomme(a/2) = 2/n*na/2 = a
La variance semble très élevé. On peut donc en déduire que cet estimateur est moins efficace que le précédent.
Le gain possible avec cette stratègie semble a première vue assez faible. Il sera en effet de 0.1*M.
f = function(a,n){
X=runif(n,0,a)
Max=max(X)
rM=1.1*Max
gain=0
if(rM <= a) {
gain=rM-Max
}
return(gain)
}
G=sample(0,1000,replace=TRUE)
for(i in 1:1000) {
a=runif(1,0,1)
G[i]=f(a,10)
}
E=mean(G)
E
## [1] 0.01527675
L’espérence du gain avec cette stratégie est d’approximativement 0.015. Ce qui paraît en effet assez faible.
A première vue il semblerait que P[A=a,M=m] soit la plus elevée quand a=m. En effet sur un grand échantillonage m à de grande chance de se rapprocher fortement de a puiqu’il est le maximum des Xi.
f1 = function(a,m) {
A=sample(x=(0:10)/10, 1);
X=sample(x=(0:(10*A))/10, 3, replace=TRUE)
Max=max(X);
return (A==a && Max==m)
}
M = mean(replicate(10000,f1(0.5,0.4)))
M
## [1] 0.0263
On à ici une fonction qui calcul P[A=a,M=m]. Nous pouvons voir que par exemple pour a=0.5 et m=0.4 l’espérance vaut 0.0254.
tabM05 <- data.frame(A=c(0),E=c(0));
for(i in 0:10){
tabM05[i,1]=i/10
tabM05[i,2]=mean(replicate(10000,f1(i/10,0.5)))
}
tabM05
## A E
## 1 0.1 0.0000
## 2 0.2 0.0000
## 3 0.3 0.0000
## 4 0.4 0.0000
## 5 0.5 0.0413
## 6 0.6 0.0248
## 7 0.7 0.0174
## 8 0.8 0.0106
## 9 0.9 0.0094
## 10 1.0 0.0067
Nous pouvons voir ci dessus une estimation de P[A=a|M=0.5] pour chaque valeur de a et que la valeur la plus optimale de a pour m=0.5 est bien 0.5.
tab <- data.frame(A=c(0),M=c(0),E=c(0));
cpt=0
for(i in 0:10){
for(j in 0:10){
tab[cpt,1]=i/10
tab[cpt,2]=j/10
tab[cpt,3]=mean(replicate(10000,f1(i/10,j/10)))
cpt=cpt+1
}
}
tab
## A M E
## 1 0.0 0.1 0.0000
## 2 0.0 0.2 0.0000
## 3 0.0 0.3 0.0000
## 4 0.0 0.4 0.0000
## 5 0.0 0.5 0.0000
## 6 0.0 0.6 0.0000
## 7 0.0 0.7 0.0000
## 8 0.0 0.8 0.0000
## 9 0.0 0.9 0.0000
## 10 0.0 1.0 0.0000
## 11 0.1 0.0 0.0121
## 12 0.1 0.1 0.0782
## 13 0.1 0.2 0.0000
## 14 0.1 0.3 0.0000
## 15 0.1 0.4 0.0000
## 16 0.1 0.5 0.0000
## 17 0.1 0.6 0.0000
## 18 0.1 0.7 0.0000
## 19 0.1 0.8 0.0000
## 20 0.1 0.9 0.0000
## 21 0.1 1.0 0.0000
## 22 0.2 0.0 0.0040
## 23 0.2 0.1 0.0249
## 24 0.2 0.2 0.0642
## 25 0.2 0.3 0.0000
## 26 0.2 0.4 0.0000
## 27 0.2 0.5 0.0000
## 28 0.2 0.6 0.0000
## 29 0.2 0.7 0.0000
## 30 0.2 0.8 0.0000
## 31 0.2 0.9 0.0000
## 32 0.2 1.0 0.0000
## 33 0.3 0.0 0.0017
## 34 0.3 0.1 0.0094
## 35 0.3 0.2 0.0284
## 36 0.3 0.3 0.0529
## 37 0.3 0.4 0.0000
## 38 0.3 0.5 0.0000
## 39 0.3 0.6 0.0000
## 40 0.3 0.7 0.0000
## 41 0.3 0.8 0.0000
## 42 0.3 0.9 0.0000
## 43 0.3 1.0 0.0000
## 44 0.4 0.0 0.0005
## 45 0.4 0.1 0.0055
## 46 0.4 0.2 0.0141
## 47 0.4 0.3 0.0265
## 48 0.4 0.4 0.0478
## 49 0.4 0.5 0.0000
## 50 0.4 0.6 0.0000
## 51 0.4 0.7 0.0000
## 52 0.4 0.8 0.0000
## 53 0.4 0.9 0.0000
## 54 0.4 1.0 0.0000
## 55 0.5 0.0 0.0004
## 56 0.5 0.1 0.0028
## 57 0.5 0.2 0.0085
## 58 0.5 0.3 0.0141
## 59 0.5 0.4 0.0269
## 60 0.5 0.5 0.0387
## 61 0.5 0.6 0.0000
## 62 0.5 0.7 0.0000
## 63 0.5 0.8 0.0000
## 64 0.5 0.9 0.0000
## 65 0.5 1.0 0.0000
## 66 0.6 0.0 0.0002
## 67 0.6 0.1 0.0022
## 68 0.6 0.2 0.0051
## 69 0.6 0.3 0.0094
## 70 0.6 0.4 0.0162
## 71 0.6 0.5 0.0257
## 72 0.6 0.6 0.0310
## 73 0.6 0.7 0.0000
## 74 0.6 0.8 0.0000
## 75 0.6 0.9 0.0000
## 76 0.6 1.0 0.0000
## 77 0.7 0.0 0.0001
## 78 0.7 0.1 0.0013
## 79 0.7 0.2 0.0031
## 80 0.7 0.3 0.0060
## 81 0.7 0.4 0.0099
## 82 0.7 0.5 0.0173
## 83 0.7 0.6 0.0221
## 84 0.7 0.7 0.0311
## 85 0.7 0.8 0.0000
## 86 0.7 0.9 0.0000
## 87 0.7 1.0 0.0000
## 88 0.8 0.0 0.0003
## 89 0.8 0.1 0.0007
## 90 0.8 0.2 0.0024
## 91 0.8 0.3 0.0044
## 92 0.8 0.4 0.0076
## 93 0.8 0.5 0.0108
## 94 0.8 0.6 0.0179
## 95 0.8 0.7 0.0201
## 96 0.8 0.8 0.0261
## 97 0.8 0.9 0.0000
## 98 0.8 1.0 0.0000
## 99 0.9 0.0 0.0001
## 100 0.9 0.1 0.0003
## 101 0.9 0.2 0.0016
## 102 0.9 0.3 0.0025
## 103 0.9 0.4 0.0040
## 104 0.9 0.5 0.0109
## 105 0.9 0.6 0.0134
## 106 0.9 0.7 0.0146
## 107 0.9 0.8 0.0210
## 108 0.9 0.9 0.0231
## 109 0.9 1.0 0.0000
## 110 1.0 0.0 0.0001
## 111 1.0 0.1 0.0007
## 112 1.0 0.2 0.0008
## 113 1.0 0.3 0.0023
## 114 1.0 0.4 0.0041
## 115 1.0 0.5 0.0066
## 116 1.0 0.6 0.0083
## 117 1.0 0.7 0.0103
## 118 1.0 0.8 0.0164
## 119 1.0 0.9 0.0188
## 120 1.0 1.0 0.0238
Le tableau ci dessus confirme bien mon intuition. En effet pour chaque valeur de m, l’espérance est maximale lorsque a=m. Par exemple pour m=0.8 nous avons :
E08=0.0280 E09=0.0199 E1=0.0136
Nous avons bien l’espérence maximale pour a=0.8.
Cette stratègie semble être une bonne stratégie. En effet on a bien M**alpha>M et contrairement à la première nous pouvons changer le alpha pour optimiser le gain. Il serait donc, à mon sens logique de gagner plus avec cette stratégie qu’avec la précédente.
f = function(a,n,alpha){
X=runif(n,0,a)
Max=max(X)
rM=Max**alpha
gain=0
if(rM <= a) {
gain=rM-Max
}
return(gain)
}
G1=sample(0,1000,replace=TRUE)
G2=sample(0,1000,replace=TRUE)
G3=sample(0,1000,replace=TRUE)
G4=sample(0,1000,replace=TRUE)
G5=sample(0,1000,replace=TRUE)
G6=sample(0,1000,replace=TRUE)
G7=sample(0,1000,replace=TRUE)
G8=sample(0,1000,replace=TRUE)
G9=sample(0,1000,replace=TRUE)
for(i in 1:1000) {
a=runif(1,0,1)
G1[i]=f(a,2,0.1)
G2[i]=f(a,2,0.2)
G3[i]=f(a,2,0.3)
G4[i]=f(a,2,0.4)
G5[i]=f(a,2,0.5)
G6[i]=f(a,2,0.6)
G7[i]=f(a,2,0.7)
G8[i]=f(a,2,0.8)
G9[i]=f(a,2,0.9)
}
E1=mean(G1)
E2=mean(G2)
E3=mean(G3)
E4=mean(G4)
E5=mean(G5)
E6=mean(G6)
E7=mean(G7)
E8=mean(G8)
E9=mean(G9)
E1
## [1] 0.02291747
E2
## [1] 0.03637596
E3
## [1] 0.0536414
E4
## [1] 0.05768301
E5
## [1] 0.0635473
E6
## [1] 0.06519244
E7
## [1] 0.06002179
E8
## [1] 0.04386149
E9
## [1] 0.02475543
Nous observons que comme prévu, cette stratégie est plus efficace que la précédente et est optimale pour alpha=0.5 avec un gain moyen de 0.068.
for(i in 1:1000) {
a=runif(1,0,1)
G1[i]=f(a,10,0.1)
G2[i]=f(a,10,0.2)
G3[i]=f(a,10,0.3)
G4[i]=f(a,10,0.4)
G5[i]=f(a,10,0.5)
G6[i]=f(a,10,0.6)
G7[i]=f(a,10,0.7)
G8[i]=f(a,10,0.8)
G9[i]=f(a,10,0.9)
}
E1=mean(G1)
E2=mean(G2)
E3=mean(G3)
E4=mean(G4)
E5=mean(G5)
E6=mean(G6)
E7=mean(G7)
E8=mean(G8)
E9=mean(G9)
E1
## [1] 0.002091552
E2
## [1] 0.004170584
E3
## [1] 0.006783981
E4
## [1] 0.007323831
E5
## [1] 0.01099181
E6
## [1] 0.0110525
E7
## [1] 0.01426595
E8
## [1] 0.01366208
E9
## [1] 0.01326542
Pour n=10 nous pouvons voir que alpha=0.8 devient le meilleur aplpha. Cependant le gain pour ce dernier est d’approximativement 0.015 ce qui est faible comparé à cette même expérience avec n=2 mais se rapproche de la stratégie de r(M)=1.1*M vu en question 2.3.
Dans cette situation Bob répond toujours oui donc seul le lancé de pièce influe sur la résultat final. On suis donc une loi Binomial de paramètre p=0.5
X=sample(0:1, 10000 , replace=TRUE)
E=mean(X==0)
E
## [1] 0.5004
Une stratégie possible à adopté serait de répondre oui lorsque Alice done une valeur supérieur ou égale à 0.5 et non dans le cas contraire. En effet si le nombre est plus grand que 0.5 il est plus probable qu’il soit le plus grand des deux et vice versa.
A2= runif(10000,0,1)
A1= runif(10000,0,A2)
Win=sample(0,10000,replace=TRUE)
lancer=sample(0:1,10000,replace=TRUE)
for(i in 1:10000){
if((A2[i]> 0.5 && lancer[i]==0) || (A1[i]<=0.5&&lancer[i]==1)) {
Win[i]=1
}
}
mean(Win)
## [1] 0.6766
Nous pouvons observer qu’avec A1 etr A2 tiré uniformément dans [0,1] Bob gagne 2 fois sur trois. Notre stratégie est donc meilleure que la stratègie initiale.
A2=0.6
A1=0.4
Win=sample(0,10000,replace=TRUE)
lancer=sample(0:1,10000,replace=TRUE)
for(i in 1:10000){
if((A2> 0.5 && lancer[i]==0) || (A1<=0.5&&lancer[i]==1)) {
Win[i]=1
}
}
mean(Win)
## [1] 1
Avec notre stratégie si Alice choisi A1=0.4 et A2=0.6 Bob est bien sur obligé de gagner.