Zacznij terazZacznij za darmo

Bootstrapping w regresji

Sprawdźmy teraz, jak bootstrapping sprawdza się w kontekście regresji. Ta metoda pozwala oszacować niepewność estymatorów, które nie mają standardowych wzorów analitycznych. Rozważmy statystykę \(R^{2}\) dla regresji. Zwykła regresja metodą najmniejszych kwadratów daje jedną wartość \(R^{2}\) – ale jak wyznaczyć dla niej 95% przedział ufności?

Zbadaj ramkę danych df ze zmienną zależną \(y\) i dwiema zmiennymi niezależnymi \(X1\) i \(X2\), używając df.head(). Dopasowanie regresji za pomocą statsmodels (sm) zostało już wykonane:

reg_fit = sm.OLS(df['y'], df.iloc[:,1:]).fit()

Przejrzyj wyniki za pomocą reg_fit.summary() – zobaczysz, że \(R^{2}=0.3504\). Użyj bootstrappingu, aby wyznaczyć 95% przedział ufności dla \(R^2\).

To ćwiczenie jest częścią kursu

Symulacje statystyczne w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Wylosuj próbkę bootstrapową z oryginalnego zbioru danych, korzystając z metody sample() na ramce danych pandas. Liczba wierszy powinna być taka sama jak w oryginalnej ramce danych.
  • Dopasuj regresję analogiczną do reg_fit za pomocą sm.OLS() i wyciągnij statystykę \(R^{2}\), używając parametru rsquared.
  • Dołącz wartość \(R^{2}\) do listy rsquared_boot.
  • Oblicz 95% przedział ufności dla rsquared_boot jako r_sq_95_ci, korzystając z np.percentile().

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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))
Edytuj i uruchom kod