Introduction à l'analyse d'inférence avec BootStraps en Python
L'analyse d'inférence d'amorçage peut vous convenir si vous traitez des échantillons de données volumineux et représentatifs .
Le mois dernier, mon patron a demandé : pourrions-nous trouver les véritables vues vidéo moyennes des bobines Instagram pour les marques TOP en Amérique du Nord ?
J'aurais tort de lui rapporter les vues vidéo moyennes d'un seul échantillon de Reels. Pour résoudre ces problèmes, nous devons penser de manière probabiliste…
Bootstraps à la rescousse ! Cette technique crée un nombre fini d'échantillons ; calcule une statistique récapitulative (telle que la moyenne) pour chaque échantillon ; et trouve un intervalle pour la solution. Dans le passé, obtenir 10 000 échantillons semblait une tâche impossible, mais avec Python, nous pouvons nous frayer un chemin.
Outre les intervalles de confiance , nous pouvons utiliser Bootstraps pour exécuter des tests de signification . Cet article concerne la compréhension des bootstraps et la génération d'intervalles de confiance.
Pourquoi le bootstrapping ?
Si votre patron vous demande pourquoi Bootstraps, dites-lui ceci :
- Il s'agit d'une technique non paramétrique , ce qui signifie qu'elle ne suppose pas de distribution sous-jacente
- Nous n'avons pas besoin de nous occuper de la normalité des données ou d'une variance similaire
Qu'est-ce qu'un bootstrap ?
"Le bootstrap est l'utilisation de données rééchantillonnées - avec remplacement - pour effectuer une inférence statistique"
Un exemple Python rapide expliquerait mieux le concept que moi :
import numpy as np
reel_views = [191, 145]
bootstrapped_video_views = np.random.choice(
reel_views
, size=len(reel_views)
)
print(f`the first sample: {bootstrapped_video_views}`)
--> the first sample: [191, 191]
print(f`the second sample: {bootstrapped_video_views}`)
--> the second sample: [145, 145]
print(f`the third sample: {bootstrapped_video_views}`)
--> the third sample: [191, 145]
Comment générer des intervalles de confiance bootstrappés ?
Nous pouvons estimer l'incertitude avec Bootstraps en utilisant des intervalles de confiance. L'idée est de trouver l'intervalle pour la statistique récapitulative ( la moyenne ) qui contient la vraie moyenne de la population de l'échantillon.
Nous créons une réplique bootstrap en rééchantillonnant nos données (vues vidéo) et en calculant la statistique récapitulative d'intérêt (la moyenne des vues vidéo) . Le code ci-dessous se lit comme suit :
- Il crée un nouvel échantillon en sélectionnant au hasard avec remplacement à partir de nos données
- Il calcule la statistique récapitulative ( la moyenne ) à partir de ce nouvel échantillon et la stocke. C'est ce qu'on appelle une réplique bootstrap
- Il répète les étapes 1 et 2 un nombre fini de fois (10 000 est la norme)
- Il calcule les centiles 2,5 et 97,5 des 10 000 statistiques récapitulatives stockées
def draw_bs_reps(data: list, func: Callable, size: int = 10000) -> np.array:
"""
Draw bootstrap replicates. Generate n 1d bootstrap replicates. Typical size = 5 - 10K repetitions
"""
rng = np.random.default_rng(seed=42)
bs_sample = rng.choice(data, size=(size, len(data)))
bs_replicates = np.apply_along_axis(func, arr=bs_sample, axis=1)
return bs_replicates
reel_views = [191, 145, 198, 192, 1022, ...] # Big Representative Sample
bootstrap_replicates = draw_bs_reps(reel_views, np.mean)
conf_int = np.percentile(bootstrap_replicates, [2.5, 97.5])
print(f'95% Confidence Interval: {conf_int}')
--> `95% Confidence Interval: [137.9, 150.3]`
Tracer vos résultats ne fait jamais de mal. Lors du dessin de répliques bootstrap, nous pouvons dessiner des ECDF, des tracés KDE ou des histogrammes. Pour moi, les tracés ECDF et KDE sont supérieurs aux histogrammes car ils tracent tous les points de données sans avoir besoin de binning. Ci-dessous se trouve le KDE qui trace toutes les 10 000 répliques bootstrap :
95 % des répétitions moyennes bootstrap se situent dans les lignes violettes.
Si vous vous retrouvez avec un intervalle large, rappelez-vous que l'augmentation du nombre de répliques bootstrap (par exemple, 20 000) ne le réduira pas. Si vous souhaitez un intervalle plus court, votre seule option consiste à collecter un échantillon de données plus important.
Les bootstraps sont géniaux, mais la seule façon de réduire l'effet des valeurs aberrantes et de produire un intervalle plus étroit est de rassembler un échantillon de données plus important.
Plats à emporter
- Les intervalles de confiance bootstrap nous aident à estimer l'incertitude
- Pour utiliser cette technique, nous avons besoin d' un échantillon large et représentatif
- Les bootstraps ne peuvent pas compresser comme par magie plus de données dans un échantillon
- Pour produire des intervalles plus serrés, nous devons augmenter la taille de notre échantillon
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































