Bootstrapping în regresie
Hai să vedem cum funcționează bootstrapping-ul în contextul regresiei. Bootstrapping-ul ajută la estimarea incertitudinii pentru estimatori non-standard. Gândește-te la statistica \(R^{2}\) asociată unei regresii. Când rulezi o regresie simplă prin metoda celor mai mici pătrate, obții o valoare pentru \(R^{2}\). Dar cum putem calcula un interval de încredere de 95% pentru \(R^2\)?
Examinează DataFrame-ul df, care conține o variabilă dependentă \(y\) și două variabile independente \(X1\) și \(X2\), folosind df.head(). Am ajustat deja această regresie cu statsmodels (sm) astfel:
reg_fit = sm.OLS(df['y'], df.iloc[:,1:]).fit()
Examinează rezultatul cu reg_fit.summary() pentru a confirma că \(R^{2}=0.3504\). Folosește bootstrapping pentru a calcula intervalul de încredere de 95%.
Acest exercițiu face parte din cursul
Simulare statistică în Python
Instrucțiuni pentru exercițiu
- Extrage un eșantion bootstrap din setul de date original folosind metoda
sample()a unui DataFrame pandas. Numărul de rânduri trebuie să fie același cu cel al DataFrame-ului original. - Ajustează o regresie similară cu
reg_fit()folosindsm.OLS()și extrage statistica \(R^{2}\) cu ajutorul parametruluirsquared. - Adaugă valoarea \(R^{2}\) în lista
rsquared_boot. - Calculează intervalul de încredere de 95% pentru
rsquared_bootcar_sq_95_cifolosindnp.percentile().
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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))