Kom igångKom igång gratis

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

Visa kurs

Ö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 av sm.OLS() och extrahera \(R^{2}\)-statistiken med parametern rsquared.
  • Lägg till \(R^{2}\)-värdet i listan rsquared_boot.
  • Beräkna ett 95%-igt konfidensintervall för rsquared_boot som r_sq_95_ci med hjälp av np.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))
Redigera och kör kod