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
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()metsm.OLS()en haal de \(R^{2}\)-statistiek op met de parameterrsquared. - Voeg de \(R^{2}\) toe aan de lijst
rsquared_boot. - Bereken het 95%-BI voor
rsquared_bootalsr_sq_95_cimetnp.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))