Bootstrapping bei Regressionen
Schauen wir uns nun an, wie Bootstrapping bei Regressionen funktioniert. Bootstrapping hilft, die Unsicherheit nicht standardmäßiger Schätzer zu bestimmen. Betrachte die mit einer Regression verbundene \(R^{2}\)-Kennzahl. Wenn du eine einfache Methode der kleinsten Quadrate rechnest, erhältst du einen Wert für \(R^{2}\). Aber wie bekommen wir ein 95-%-KI für \(R^2\)?
Untersuche das DataFrame df mit der abhängigen Variable \(y\) und zwei unabhängigen Variablen \(X1\) und \(X2\) mit df.head(). Wir haben diese Regression bereits mit statsmodels (sm) angepasst, und zwar mit:
reg_fit = sm.OLS(df['y'], df.iloc[:,1:]).fit()
Untersuche das Ergebnis mit reg_fit.summary() und stelle fest, dass \(R^{2}=0{,}3504\) ist. Verwende Bootstrapping, um das 95-%-KI zu berechnen.
Diese Übung ist Teil des Kurses
Statistische Simulation in Python
Anleitung zur Übung
- Ziehe eine Bootstrap-Stichprobe aus dem ursprünglichen Datensatz mit der Methode
sample()eines pandas DataFrame. Die Zeilenanzahl soll der des ursprünglichen DataFrame entsprechen. - Passe eine Regression analog zu
reg_fit()mitsm.OLS()an und extrahiere die \(R^{2}\)-Kennzahl über das Attributrsquared. - Hänge das \(R^{2}\) an die Liste
rsquared_bootan. - Berechne das 95-%-KI für
rsquared_bootalsr_sq_95_cimitnp.percentile().
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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))