Bootstrap d'une régression
Voyons maintenant comment fonctionne le bootstrap avec une régression. Le bootstrap aide à estimer l'incertitude d'estimateurs non standards. Considérez la statistique \(R^{2}\) associée à une régression. Lorsque vous exécutez une régression aux moindres carrés simple, vous obtenez une valeur de \(R^{2}\). Voyons toutefois comment obtenir un IC à 95 % pour \(R^2\).
Examinez le DataFrame df avec une variable dépendante \(y\) et deux variables indépendantes \(X1\) et \(X2\) à l'aide de 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 %.
Cette activité fait partie du cours
Simulation statistique en Python
Instructions de l’exercice
- Tirez un échantillon bootstrap à partir de l'ensemble de données original à l'aide de la méthode
sample()d'un DataFrame pandas. Le nombre de lignes doit être le même que celui du DataFrame original. - Ajustez une régression similaire à
reg_fit()avecsm.OLS()et extrayez la statistique \(R^{2}\) à l'aide du paramètrersquared. - Ajoutez la valeur de \(R^{2}\) à la liste
rsquared_boot. - Calculez l'IC à 95 % pour
rsquared_boot, nommér_sq_95_ci, avecnp.percentile().
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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))