Le rééchantillonnage, un cas particulier de simulation de Monte Carlo

Simulations de Monte Carlo en Python

Izzy Weber

Curriculum Manager, DataCamp

Le rééchantillonnage, un cas particulier de simulation de Monte Carlo

 

Simulations de Monte Carlo

  • Échantillonner à partir de lois de probabilité
  • Lois connues ou supposées
  • S'appuyer sur des données historiques ou l'expertise pour choisir les bonnes lois

 

Rééchantillonnage

  • Échantillonner aléatoirement dans des données existantes
  • Les données existantes forment une loi implicite
  • Supposer que les données sont représentatives
Simulations de Monte Carlo en Python

Méthodes de rééchantillonnage

  1. Échantillonnage sans remise
    • Pour tirer un échantillon aléatoire
  2. Échantillonnage avec remise (ou bootstrap)
    • Pour estimer la distribution d'échantillonnage de presque toute statistique
  3. Permutation
    • Souvent pour comparer deux groupes
Simulations de Monte Carlo en Python

Échantillonnage sans remise

Tirer aléatoirement deux États distincts parmi les six de la Nouvelle-Angleterre

import random
def two_random_ne_states():

ne_states=["Maine", "Vermont", "New Hampshire", "Massachusetts", "Connecticut", "Rhode Island"]
return(random.sample(ne_states, 2))

 

 

two_random_ne_states()
two_random_ne_states()
['Massachusetts', 'Connecticut']
['New Hampshire', 'Maine']
Simulations de Monte Carlo en Python

Bootstrap

Estimer l'intervalle de confiance à 95 % pour la taille moyenne des joueurs NBA

import random
import numpy as np

nba_heights = [196, 191, 198, 216, 188, 185, 211, 201,
               188, 191, 201, 208, 191, 183, 196]
simu_heights = []

for i in range(1000): bootstrap_sample = random.choices(nba_heights, k=15) simu_heights.append(np.mean(bootstrap_sample))
upper = np.quantile(simu_heights, 0.975) lower = np.quantile(simu_heights, 0.025) print([np.mean(simu_heights), lower, upper])
[196.26666666666668, 191.8, 201.2]
Simulations de Monte Carlo en Python

Visualisation des résultats du bootstrap

Bibliothèques de tracé :

  • seaborn
  • matplotlib
import seaborn as sns
import matplotlib.pyplot as plt

sns.displot(simu_heights)
plt.axvline(191.8, color="red")
plt.axvline(201.2, color="red")
plt.axvline(196.3, color="green")

 

un tracé de distribution des tailles simulées

Simulations de Monte Carlo en Python

Permutation

Estimer l'intervalle de confiance à 95 % de la différence moyenne entre la taille des joueurs NBA et celle des hommes américains

us_heights = [165, 185, 179, 187, 193, 180, 178, 179, 171, 176, 
              169, 160, 140, 199, 176, 185, 175, 196, 190, 176]
nba_heights = [196, 191, 198, 216, 188, 185, 211, 201, 188, 191, 201, 208, 191, 183, 196]

all_heights = us_heights + nba_heights
simu_diff = [] for i in range(1000): perm_sample = np.random.permutation(all_heights) perm_nba, perm_adult = perm_sample[0:15], perm_sample[15:35]
perm_diff = np.mean(perm_nba) - np.mean(perm_adult) simu_diff.append(perm_diff)
Simulations de Monte Carlo en Python

Résultats de permutation

Différence de moyennes entre la taille des joueurs NBA et celle des hommes américains adultes :

np.mean(nba_heights) - np.mean(us_adult_height)
18.31666666666669

Intervalle de confiance à 95 % pour la permutation de deux listes aléatoires :

upper = np.quantile(simu_diff, 0.975)
lower = np.quantile(simu_diff, 0.025)
print([lower, upper])
[-10.033333333333331, 10.033333333333331]
Simulations de Monte Carlo en Python

Visualiser les résultats de permutation

sns.distplot(simu_diff)
plt.axvline(-10.03, color="red")
plt.axvline(10.03, color="red")
plt.axvline(18.32, color="green")

un tracé de distribution des tailles simulées

Simulations de Monte Carlo en Python

Passons à la pratique !

Simulations de Monte Carlo en Python

Preparing Video For Download...