Une fonction pour effectuer un bootstrap par paires
Comme expliqué dans la vidéo, le bootstrap par paires consiste à rééchantillonner des paires de données. Chaque ensemble de paires est ajusté avec une droite, ici à l’aide de np.polyfit(). On répète l’opération pour obtenir des répliques bootstrap des valeurs des paramètres. Pour disposer d’un outil pratique de bootstrap par paires, vous allez écrire une fonction qui l’applique à un jeu de données x,y.
Cet exercice fait partie du cours
Réflexion statistique en Python (Partie 2)
Instructions
- Définissez une fonction avec la signature d’appel
draw_bs_pairs_linreg(x, y, size=1)pour estimer par bootstrap par paires les paramètres d’une régression linéaire.- Utilisez
np.arange()pour créer un tableau d’indices allant de0àlen(x). Ce sont eux que vous allez rééchantillonner et utiliser pour sélectionner des valeurs dans les tableauxxety. - Utilisez
np.empty()pour initialiser les tableaux de répliques de la pente et de l’ordonnée à l’origine avec une taillesize. - Écrivez une boucle
forpour :- Rééchantillonner les indices
inds. Utiliseznp.random.choice()pour cela. - Créer les nouveaux tableaux \(x\) et \(y\),
bs_xetbs_y, à partir des indices rééchantillonnésbs_inds. Pour ce faire, découpezxetyavecbs_inds. - Utiliser
np.polyfit()sur les nouveaux tableaux \(x\) et \(y\) et stocker la pente et l’ordonnée à l’origine calculées.
- Rééchantillonner les indices
- Retournez les répliques bootstrap par paires de la pente et de l’ordonnée à l’origine.
- Utilisez
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
def draw_bs_pairs_linreg(x, y, size=1):
"""Perform pairs bootstrap for linear regression."""
# Set up array of indices to sample from: inds
inds = ____
# Initialize replicates: bs_slope_reps, bs_intercept_reps
bs_slope_reps = ____
bs_intercept_reps = ____
# Generate replicates
for i in range(size):
bs_inds = np.random.choice(____, size=____)
bs_x, bs_y = x[____], y[____]
bs_slope_reps[i], bs_intercept_reps[i] = ____
return bs_slope_reps, bs_intercept_reps