Exercice 1
Alice choisit (secrètement) un nombre a (strictement positif mais quelconque).•
Elle tire ensuite n > 2 nombres X1,X2,…,Xn indépendemment et uniformément dans l’intervalle [0,a].
n est un nombre fixe et décidé par Alice et Bob avant de jouer (par exemple n= 10)
Bob doit essayer de “deviner” le nombre a à partir des Xi.
Question 1.1
M = max Xi est un estimateur de a.
Étudier pour différentes valeurs de a et de n de votre choix l’espérance de M
## On choisit a et n
a = 52
n = 100
## On tire indépendemment et uniformément n valeurs entre 0 et a et on choisit leur maximum
## On réplique cette opération 10000 fois
## Pour calculer la moyenne des maximums obtenus
## Cela nous donne l'éspérence de M = max Xi ci dessus
## Une fois qu'on a l'éspérence on peut également calculer la variance
M = replicate(n = 100000, max(runif(n,0,a)))
E=mean(M)
V=mean((M-mean(M))**2)
E
## [1] 51.48286
V
## [1] 0.2629421
## Remarque : On peut jouer à faire varier n et a
## plus n est grand plus l'éspérance est proche de a
## Formule de E[M] en fonction de a et n
E = (n/(n+1)) * a
E
## [1] 51.48515
## Voici une formule montrant comment "corriger" M pour que E = a
E = (n/(n+1)) * a + (1/(n+1)) * a
E
## [1] 52
## Formule de Var[M] en fonction de a et n
V = (n/(n+2)) * (a^2) - ((n/(n+1)) * a)^2
V
## [1] 0.2598746
Question 1.2
Étudier pour différentes valeurs de a et de n de votre choix l’espérance de
M = 2/n * ∑i Xi
## On choisit a et n
a = 52
n = 100
## On tire indépendemment et uniformément X = X1 ... Xn ( n valeurs entre 0 et a )
## On calcule la somme des Xi et on la multiplie par 2/n
## On réplique cette opération 10000 fois
## Cela nous donne l'éspérence de M = 2/n * ∑i Xi ci dessus
## Une fois qu'on a l'éspérence on peut également calculer la variance
M = replicate(10000, (2/n) * sum(runif(n,0,a)))
E = mean(M)
V = mean((M-mean(M))**2)
E
## [1] 52.04364
V
## [1] 8.987089
## On remarque que E est très proche de a
## Démontrons que E[M] = a
## E(M) = E(2/n*sum(Xi)) = 2/n * sum(E(Xi)) = 2/n * sum(a/2) = 2/n * na/2 = a
## Dans cette expérience V est beaucoup plus grand que dans la question précédente, c'est donc un moin bon estimateur de a
Exercice 2
Cette fois ci, Alice annonce à Bob la plus grande valeur obtenue (M = max Xi).
Bob doit alors deviner la valeur de a à partir de la valeur M révélée par Alice.
Pour cela, il propose une réponse r(M) aussi proche que possible de a.
– Si r(M) est strictement supérieur à a, Bob a perdu et Alice le lui prouve en révélant a
– Si r(M) est plus petie que a, Bob gagne la différence entre M et r(M)
(i.e., Alice doit donner G = r(M) − M euros à Bob)
Question 2.3
Stratégie de Bob : r(M) = 1.1 * M
## La stratégie de Bob semble efficace car il gagne en moyenne 1.66 euros
n = 10
a = 52
f = function(){
X = runif(n,0,a)
M = max(X)
gain=0
r = 1.1 * M
if(r <= a) {
gain = r - M
}
return(gain)
}
gains = sample(0,100000,replace=TRUE)
for(i in 1:100000) {
gains[i]=f()
}
mean(gains)
## [1] 1.662928
Question 2.4
Supposons que
n = 3
a est tiré uniformément dans l’ensemble discret {0 , 0.1 , … , 1.0}
Les Xi sont des multiples de 0.1 tirés uniformément dans l’ensemble discret {0 , … , M}
Écrire un code permettant d’estimer P[A=a,M=m] pour les différentes valeurs de a et de m
Pour cette question j’ai eu besoin d’aide. Adrien m’a expliquer qu’il fallait contruire une matrice contenant les probabilités pour des valeurs de a et m
f = function(N,n) {
g = function(a,n,m) {
A=sample(x=(0:10)/10, 1);
X=sample(x=(0:(10*A))/10, n, replace=TRUE)
M=max(X);
return (A==a && M==m)
}
Matrix = matrix(nrow = 11, ncol = 11, dimnames =
list(c("a=0","a=0.1","a=0.2","a=0.3","a=0.4","a=0.5","a=0.6","a=0.7","a=0.8","a=0.9","a=1"),
c("m=0","m=0.1","m=0.2","m=0.3","m=0.4","m=0.5","m=0.6","m=0.7","m=0.8","m=0.9","m=1")));
for (i in 0:10) { for(j in 0:10){
Matrix[i+1,j+1] = mean(replicate(N, g(i/10, n, j/10)))
}}
return(Matrix)
}
f(1000, 3)
## m=0 m=0.1 m=0.2 m=0.3 m=0.4 m=0.5 m=0.6 m=0.7 m=0.8 m=0.9 m=1
## a=0 0.083 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## a=0.1 0.009 0.083 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## a=0.2 0.003 0.025 0.072 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## a=0.3 0.000 0.012 0.026 0.062 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## a=0.4 0.000 0.011 0.017 0.027 0.064 0.000 0.000 0.000 0.000 0.000 0.000
## a=0.5 0.001 0.002 0.006 0.017 0.037 0.042 0.000 0.000 0.000 0.000 0.000
## a=0.6 0.000 0.003 0.006 0.011 0.015 0.031 0.026 0.000 0.000 0.000 0.000
## a=0.7 0.000 0.002 0.005 0.006 0.013 0.021 0.016 0.036 0.000 0.000 0.000
## a=0.8 0.000 0.000 0.003 0.006 0.007 0.004 0.012 0.013 0.025 0.000 0.000
## a=0.9 0.000 0.000 0.001 0.002 0.003 0.009 0.014 0.015 0.020 0.032 0.000
## a=1 0.000 0.000 0.001 0.003 0.005 0.010 0.004 0.008 0.017 0.014 0.022
## Remarque : la partie triangulaire supérieur droite de la matrice est remplie de 0 car m > a est impossible
## On peut lire P[A=a | M=0.5] dans la colonne m=0.5 de la matrice obtenue
Question 2.5
## M^alpha < M ( avec alpha < 1 et M > 1 )
## Cela semble donc être une mauvaise stratégie
## On peut faire varier n et alpha
n = 10
a = 52
alpha = 0.9
f = function(){
X = runif(n,0,a)
M = max(X)
gain=0
r = M**alpha
if(r <= a) {
gain = r - M
}
return(gain)
}
gains = sample(0,100000,replace=TRUE)
for(i in 1:100000) {
gains[i]=f()
}
mean(gains)
## [1] -15.13303