ПочатиПочніть безкоштовно

Бутстреп для регресії

Тепер подивімося, як бутстреп працює для регресії. Бутстреп допомагає оцінити невизначеність нестандартних оцінювачів. Розгляньмо статистику \(R^{2}\), пов'язану з регресією. Коли ви запускаєте звичайну регресію найменших квадратів, ви отримуєте значення \(R^{2}\). Але як отримати 95% ДІ для \(R^2\)?

Огляньте датафрейм df із залежною змінною \(y\) та двома незалежними змінними \(X1\) і \(X2\) за допомогою df.head(). Ми вже оцінили цю регресію у statsmodels (sm) за допомогою:

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

Перегляньте результат через reg_fit.summary(), щоб побачити, що \(R^{2}=0.3504\). Використайте бутстреп, щоб обчислити 95% ДІ.

Ця вправа є частиною курсу

Статистичне моделювання в Python

Переглянути курс

Інструкції до вправи

  • Візьміть бутстреп-вибірку з початкового набору даних методом sample() датафрейму pandas. Кількість рядків має збігатися з початковим датафреймом.
  • Оцініть регресію, подібну до reg_fit(), використовуючи sm.OLS(), і витягніть статистику \(R^{2}\) через атрибут rsquared.
  • Додайте значення \(R^{2}\) до списку rsquared_boot.
  • Обчисліть 95% ДІ для rsquared_boot як r_sq_95_ci, використавши np.percentile().

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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))
Редагувати та запускати код