Aan de slagGa gratis aan de slag

Bootstrapping bij regressie

Laten we nu bekijken hoe bootstrapping werkt bij regressie. Bootstrapping helpt de onzekerheid van niet-standaard schatters in te schatten. Neem de \(R^{2}\)-statistiek die bij een regressie hoort. Als je een gewone kleinste-kwadratenregressie draait, krijg je een waarde voor \(R^{2}\). Maar hoe bepalen we een 95%-BI voor \(R^2\)?

Bekijk de DataFrame df met een afhankelijke variabele \(y\) en twee onafhankelijke variabelen \(X1\) en \(X2\) met df.head(). We hebben deze regressie al gefit met statsmodels (sm) via:

reg_fit = sm.OLS(df['y'], df.iloc[:,1:]).fit()

Onderzoek het resultaat met reg_fit.summary() en je ziet dat \(R^{2}=0.3504\). Gebruik bootstrapping om het 95%-BI te berekenen.

Deze oefening maakt deel uit van de cursus

Statisticale simulatie in Python

Cursus bekijken

Oefeninstructies

  • Trek een bootstrapsteekproef uit de oorspronkelijke dataset met de methode sample() van een pandas-DataFrame. Het aantal rijen moet gelijk zijn aan dat van de oorspronkelijke DataFrame.
  • Fit een regressie vergelijkbaar met reg_fit() met sm.OLS() en haal de \(R^{2}\)-statistiek op met de parameter rsquared.
  • Voeg de \(R^{2}\) toe aan de lijst rsquared_boot.
  • Bereken het 95%-BI voor rsquared_boot als r_sq_95_ci met np.percentile().

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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))
Code bewerken en uitvoeren