Pour ce DM, j’ai discuté avec Alan Guivarch, Alexandre Salmon, Alexandra Chaton

Exercice 1 : Question préliminaire à propos d’estimation

Q1.1 M = maxi Xi est un estimateur de a. Étudier pour différentes valeurs de a et de n de votre choix l’espérance de M.

Observations

Essayons tout d’abord de faire varier le nombre de tirages.

set.seed(100)

for (n in c(1:10)) {
  # Alice choisit un nb a 
  a = 5000

  # Tirage des x de X1,...Xn
  M = replicate(10000,max(runif(n,0.0,a)))

  # Affichage du résultat
  cat("E(M)=",mean(M),"avec a=5000 et n=",n,"\n")
}
## E(M)= 2501.478 avec a=5000 et n= 1 
## E(M)= 3318.775 avec a=5000 et n= 2 
## E(M)= 3753.937 avec a=5000 et n= 3 
## E(M)= 3997.609 avec a=5000 et n= 4 
## E(M)= 4162.985 avec a=5000 et n= 5 
## E(M)= 4288.216 avec a=5000 et n= 6 
## E(M)= 4372.839 avec a=5000 et n= 7 
## E(M)= 4445.763 avec a=5000 et n= 8 
## E(M)= 4504.572 avec a=5000 et n= 9 
## E(M)= 4538.941 avec a=5000 et n= 10

Je remarque que lorsque la valeur de n augmente, le résultat augmente et tend vers la valeur de a.

Essayons maintenant de faire varier la valeur a choisie initialement par Alice.

set.seed(100)
n = 10

for (a in c(2,5,30,400)) {
  M = replicate(10000,max(runif(n,0.0,a)))

  cat("E(M)=",mean(M)," avec n=10 et a=",a,"\n")
}
## E(M)= 1.817291  avec n=10 et a= 2 
## E(M)= 4.54394  avec n=10 et a= 5 
## E(M)= 27.24865  avec n=10 et a= 30 
## E(M)= 363.7088  avec n=10 et a= 400

Je remarque que si on si on fait varier la valeur de a pour un n fixé, l’écart entre le maximum et a augmente (la valeur de l’espérance augmente)

Déduction de l’espérance

Soit N le nombre de répétitions. \[\mathbb{E}(M) = \frac{\sum_{i=1}^{N} max(X_{i})}{N} \to a\]

En utilisant mes expériences précédentes, je peux en déduire l’écriture suivante : \[\mathbb{E}(M) = \frac{an}{n+1} \to a\]

Pour obtenir exactement a avec l’expression précédente, on peut la “corriger” en la multipliant avec la fraction \(\frac{n+1}{n}\). Cela nous donne bel et bien par simplification a.

Déduction de la variance

v = mean(M**2) - mean(M)**2
print(v)
## [1] 1089.639
print(var(M))
## [1] 1089.748
v2 = (((a**2)*n)/(n+2)) - (a*n/(n+1))**2
                           
print(v2)
## [1] 1101.928

La formule de la variance est : \[ Var(M) = \mathbb{E}(M^{2}) - (\mathbb{E}(M))^{2}\] Si l’on remplace l’Espérance de M par la formule empirique déduite précédemment, on obtient une approche empirique de la variance en fonction de a et de n. Après calcul de \(\mathbb{E}(M^{2})\) grâce à la formule de l’intégrale, on obtient l’expression suivante :

\[ Var(M) = \frac{a^{2}n}{n+2} - (\frac{an}{n+1})^{2}\]

Q1.2 Étudier pour différentes valeurs de a et de n de votre choix l’espérance de M’

set.seed(100)

# Variation de n 
for (n in c(1:10)) {
  # Alice choisit un nb a 
  a = 5000

  # Tirage des x de X1,...Xn
  M2 = replicate(10000,(2/n)*sum(runif(n,0.0,a)))

  # Affichage du résultat
  cat("E(M')=",mean(M2),"avec a=5000 et n=",n,"\n")
}
## E(M')= 5002.956 avec a=5000 et n= 1 
## E(M')= 4976.171 avec a=5000 et n= 2 
## E(M')= 4989.079 avec a=5000 et n= 3 
## E(M')= 4996.226 avec a=5000 et n= 4 
## E(M')= 4989.956 avec a=5000 et n= 5 
## E(M')= 5023.594 avec a=5000 et n= 6 
## E(M')= 5004.889 avec a=5000 et n= 7 
## E(M')= 5013.376 avec a=5000 et n= 8 
## E(M')= 5008.381 avec a=5000 et n= 9 
## E(M')= 4990.928 avec a=5000 et n= 10
n = 10

for (a in c(2,5,30,400)) {
  M2 = replicate(10000,(2/n)*sum(runif(n,0.0,a)))

  cat("E(M')=",mean(M2)," avec n=10 et a=",a,"\n")
}
## E(M')= 2.002953  avec n=10 et a= 2 
## E(M')= 5.000134  avec n=10 et a= 5 
## E(M')= 29.99407  avec n=10 et a= 30 
## E(M')= 401.2726  avec n=10 et a= 400

On remarque maintenant que le fait de faire varier n pour un a fixé, n’influe plus sur la valeur de l’espérance.

Le fait de faire varier a pour un n fixé, influe sur l’espérance. Elle varie de façon proportionnelle à a.

On peut le montrer en réécrivant l’expression de départ telle que : \[ M' = \frac{2}{n}\times\sum_{i=1}^{n} X_{i} = 2\times\frac{\sum_{i=1}^{n} X_{i}}{n} = 2\times\mathbb{E}(M') = 2\times\frac{a}{2} = a \] Cela fonctionne car les \(X_i\) sont uniformes.

On en déduit l’expression de l’espérance suivante :

\[\mathbb{E}(M') = \]

Déduction de la variance

v = mean(M2**2) - mean(M2)**2
print(v)
## [1] 5237.635
print(var(M2))
## [1] 5238.158

\[ Var(M) = a^{2} - ()^{2}\]

Exercice 2 : Un deuxième jeu à base de max

Q2.3. Bob n’a pas encore trop pu réfléchir à la bonne stratégie et il se propose donc d’essayer la stratégie r(M) = 1.1M lorsque n = 10.

La stratégie de Bob n’est pas très bonne, parce que tout au plus il gagnera M*1.1 - M, soit 0.1% de M, c’est-à-dire au mieux 1 centime.

set.seed(100)

# Variation de A 
n = 10
A = runif(n,0.0,1.0) 
for (i in c(1:n)) {
  # Tirage des x de X1,...Xn
  M = replicate(10000,max(runif(n,0.0,A[i])))
  
  # Proposition de Bob
  RM = M*1.1
  
  cat("E(M')=",mean(RM <= A),"avec n=",n," et A=",A[i],"\n")
  
  gain = 0
  for(j in c(1:10000)) {
    if(RM[j] <= A[i]) {
      gain = gain + (RM[j] - M[j])
    }
  }
  cat("gain=",gain,"\n\n")
}
## E(M')= 0.6453 avec n= 10  et A= 0.3077661 
## gain= 99.259 
## 
## E(M')= 0.7398 avec n= 10  et A= 0.2576725 
## gain= 82.65328 
## 
## E(M')= 0.1929 avec n= 10  et A= 0.5523224 
## gain= 177.6815 
## 
## E(M')= 0.936 avec n= 10  et A= 0.05638315 
## gain= 18.08012 
## 
## E(M')= 0.3972 avec n= 10  et A= 0.4685493 
## gain= 147.6247 
## 
## E(M')= 0.3669 avec n= 10  et A= 0.4837707 
## gain= 155.8744 
## 
## E(M')= 0.0419 avec n= 10  et A= 0.8124026 
## gain= 257.2691 
## 
## E(M')= 0.547 avec n= 10  et A= 0.3703205 
## gain= 116.4434 
## 
## E(M')= 0.1994 avec n= 10  et A= 0.5465586 
## gain= 170.7164 
## 
## E(M')= 0.8393 avec n= 10  et A= 0.1702621 
## gain= 54.85304

Avec les résultats du dessus on peut voir que la stratégie de Bob n’est pas bonne car l’espérance de gain est faible.

Q2.4.

set.seed(100)
  
  # Variation de A 
  n = 3
  A = sample(x=c(0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0),size = n,replace = T) 
  # Tirage des x de X1,...Xn
  M = replicate(10000,max(runif(n,0.0,A))%%0.1)

Q2.5

set.seed(100)

# Variation de A 
for(alpha in c(0.7,0.5,0.3)) {
n = 10
A = runif(n,0.0,1.0) 
for (i in c(1:n)) {
  # Tirage des x de X1,...Xn
  M = replicate(10000,max(runif(n,0.0,A[i])))
  
  # Proposition de Bob
  RM = M**alpha
  
  cat("E(M')=",mean(RM <= A),"avec n=",n," et A=",A[i],"\n")
  
  gain = 0
  for(j in c(1:10000)) {
    if(RM[j] <= A[i]) {
      gain = gain + (RM[j] - M[j])
    }
  }
  cat("gain=",gain,"\n\n")
}
}
## E(M')= 0.5086 avec n= 10  et A= 0.3077661 
## gain= 6.898741 
## 
## E(M')= 0.5594 avec n= 10  et A= 0.2576725 
## gain= 2.919364 
## 
## E(M')= 0.1169 avec n= 10  et A= 0.5523224 
## gain= 101.1162 
## 
## E(M')= 0.9 avec n= 10  et A= 0.05638315 
## gain= 0 
## 
## E(M')= 0.1857 avec n= 10  et A= 0.4685493 
## gain= 50.8654 
## 
## E(M')= 0.1653 avec n= 10  et A= 0.4837707 
## gain= 57.95032 
## 
## E(M')= 0.0419 avec n= 10  et A= 0.8124026 
## gain= 341.5421 
## 
## E(M')= 0.402 avec n= 10  et A= 0.3703205 
## gain= 15.97992 
## 
## E(M')= 0.1172 avec n= 10  et A= 0.5465586 
## gain= 89.43115 
## 
## E(M')= 0.7199 avec n= 10  et A= 0.1702621 
## gain= 0.5278893 
## 
## E(M')= 0.3216 avec n= 10  et A= 0.8339043 
## gain= 266.5 
## 
## E(M')= 0.7 avec n= 10  et A= 0.06375672 
## gain= 0 
## 
## E(M')= 0.7 avec n= 10  et A= 0.07156163 
## gain= 0 
## 
## E(M')= 0.5005 avec n= 10  et A= 0.5813128 
## gain= 12.81416 
## 
## E(M')= 0.5011 avec n= 10  et A= 0.5303062 
## gain= 2.741632 
## 
## E(M')= 0.1873 avec n= 10  et A= 0.9692256 
## gain= 503.65 
## 
## E(M')= 0.1875 avec n= 10  et A= 0.9685131 
## gain= 501.1081 
## 
## E(M')= 0.2599 avec n= 10  et A= 0.9396243 
## gain= 496.9627 
## 
## E(M')= 0.7 avec n= 10  et A= 0.01404462 
## gain= 0 
## 
## E(M')= 0.3387 avec n= 10  et A= 0.7810237 
## gain= 155.1193 
## 
## E(M')= 0.0375 avec n= 10  et A= 0.6991043 
## gain= 1.599267 
## 
## E(M')= 0.004 avec n= 10  et A= 0.8720115 
## gain= 112.3333 
## 
## E(M')= 0.1007 avec n= 10  et A= 0.6005099 
## gain= 0 
## 
## E(M')= 0.8 avec n= 10  et A= 0.0205602 
## gain= 0 
## 
## E(M')= 0.1004 avec n= 10  et A= 0.6235031 
## gain= 0 
## 
## E(M')= 0.0275 avec n= 10  et A= 0.7160975 
## gain= 0.3993705 
## 
## E(M')= 0.1544 avec n= 10  et A= 0.3642408 
## gain= 0 
## 
## E(M')= 0.2765 avec n= 10  et A= 0.3140639 
## gain= 0 
## 
## E(M')= 0.0865 avec n= 10  et A= 0.6432802 
## gain= 0 
## 
## E(M')= 0.6519 avec n= 10  et A= 0.03682868 
## gain= 0

Exercice 3 : Question BONUS : un dernier jeu à base de max et de pile ou face

Q3.6. Bob se dit qu’il n’a rien à perdre à toujours répondre “oui”. Quelle est sa probabilité de gagner ?

set.seed(100)

n= 1000
  # Proposition de Bob
  flip = sample(x=c("P","F"),size=n,replace=T)
  
  cat("E(M')=",mean(flip == "P"),"avec n=",n,"\n")
## E(M')= 0.48 avec n= 1000

Si la pièce de monnaie est non biaisée, il possède une chance de gagner égale à \(\frac{1}{2}\).

Q3.7. Élaborez une autre stratégie permettant à Bob de tomber juste strictement plus d’une fois sur deux.

De mon avis, une meilleure stratégie pour Bob serait de répondre “oui” uniquement si la valeur donnée par Alice est supérieure à 0.5. En effet, si la valeur est supérieure à 0.5, il y a moins de chance que l’autre valeur soit supérieure à celle-ci.

Quand A1 = 0.4 et A2=0.6

Dans ce cas là, Bob à 100% de chances de gagner avec ma stratégie.

Quand Alice tire ses deux nombres uniformément

set.seed(100)

n= 1000

  A1 = runif(n,0.0,1.0)
  A2 = runif(n,A1,1.0)
  
  # Proposition de Bob
  flip = sample(x=c("P","F"),size=n,replace=T)
  res <- c(1:n)
  res2 <- c(1:n)
  for(i in c(1:n)) {
    res[i] = (flip[i] == "P" && A2[i] >= 0.5 || flip[i] == "F" && A1[i] < 0.5)
  }
  cat("E(M')=",mean(res == 1),"avec n=",n,"\n")
## E(M')= 0.652 avec n= 1000

On remarque qu’avec ma stratégie, que l’on passe en effet de 50% de chances de victoire à 65% lorsque Alice tire ses nombres uniformément.