Бутстреп для регресії
Тепер подивімося, як бутстреп працює для регресії. Бутстреп допомагає оцінити невизначеність нестандартних оцінювачів. Розгляньмо статистику \(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))