CommencezCommencez gratuitement

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

Voir le cours

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() avec sm.OLS() et extrayez la statistique \(R^{2}\) à l'aide du paramètre rsquared.
  • Ajoutez la valeur de \(R^{2}\) à la liste rsquared_boot.
  • Calculez l'IC à 95 % pour rsquared_boot, nommé r_sq_95_ci, avec np.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))
Modifier et exécuter le code