Bootstrapping av regression
Nu ska vi se hur bootstrapping fungerar i samband med regression. Bootstrapping hjälper till att skatta osäkerheten hos icke-standardiserade estimatorer. Ta \(R^{2}\)-statistiken för en regression som exempel. När du kör en enkel minsta kvadratregression får du ett värde för \(R^{2}\). Men hur kan vi beräkna ett 95%-igt konfidensintervall för \(R^2\)?
Underök DataFrame:n df med en beroende variabel \(y\) och två oberoende variabler \(X1\) och \(X2\) med hjälp av df.head(). Vi har redan anpassat den här regressionen med statsmodels (sm) enligt:
reg_fit = sm.OLS(df['y'], df.iloc[:,1:]).fit()
Underök resultatet med reg_fit.summary() och konstatera att \(R^{2}=0.3504\). Använd bootstrapping för att beräkna det 95%-iga konfidensintervallet.
Den här övningen är en del av kursen
Statistisk simulering i Python
Övningsinstruktioner
- Dra ett bootstrap-urval från den ursprungliga datamängden med metoden
sample()för en pandas DataFrame. Antalet rader ska vara detsamma som i den ursprungliga DataFrame:n. - Anpassa en regression på liknande sätt som
reg_fit()med hjälp avsm.OLS()och extrahera \(R^{2}\)-statistiken med parameternrsquared. - Lägg till \(R^{2}\)-värdet i listan
rsquared_boot. - Beräkna ett 95%-igt konfidensintervall för
rsquared_bootsomr_sq_95_cimed hjälp avnp.percentile().
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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))