Bootstrap en régression
Voyons maintenant comment fonctionne le bootstrap en régression. Le bootstrap aide à estimer l’incertitude d’estimateurs non standard. Considérez la statistique \(R^{2}\) associée à une régression. Lorsque vous exécutez une régression des moindres carrés, vous obtenez une valeur de \(R^{2}\). Mais comment obtenir un IC à 95 % pour \(R^2\) ?
Examinez le DataFrame df avec une variable dépendante \(y\) et deux variables explicatives \(X1\) et \(X2\) en utilisant df.head(). Nous avons déjà ajusté cette régression avec statsmodels (sm) en utilisant :
reg_fit = sm.OLS(df['y'], df.iloc[:,1:]).fit()
Examinez le résultat avec reg_fit.summary() pour constater que \(R^{2}=0.3504\). Utilisez le bootstrap pour calculer l’IC à 95 %.
Cet exercice fait partie du cours
Simulation statistique en Python
Instructions
- Prélevez un échantillon bootstrap à partir du jeu de données initial en utilisant la méthode
sample()d’un DataFrame pandas. Le nombre de lignes doit être identique à celui du DataFrame d’origine. - Ajustez une régression similaire à
reg_fit()avecsm.OLS()et extrayez la statistique \(R^{2}\) via l’attributrsquared. - Ajoutez la valeur de \(R^{2}\) à la liste
rsquared_boot. - Calculez l’IC à 95 % pour
rsquared_bootsous le nomr_sq_95_cien utilisantnp.percentile().
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
rsquared_boot, coefs_boot, sims = [], [], 1000
reg_fit = sm.OLS(df['y'], df.iloc[:,1:]).fit()
# Run 1K iterations
for i in range(sims):
# First create a bootstrap sample with replacement with n=df.shape[0]
bootstrap = ____
# Fit the regression and append the r square to rsquared_boot
rsquared_boot.append(____(bootstrap['y'],bootstrap.iloc[:,1:]).fit().rsquared)
# Calculate 95% CI on rsquared_boot
r_sq_95_ci = ____
print("R Squared 95% CI = {}".format(r_sq_95_ci))