CommencerCommencer gratuitement

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

Afficher le cours

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() avec sm.OLS() et extrayez la statistique \(R^{2}\) via l’attribut rsquared.
  • Ajoutez la valeur de \(R^{2}\) à la liste rsquared_boot.
  • Calculez l’IC à 95 % pour rsquared_boot sous le nom r_sq_95_ci en utilisant np.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))
Modifier et exécuter le code