НачатьНачать бесплатно

Бутстрэп в регрессии

Давайте посмотрим, как бутстрэп применяется в регрессионном анализе. Этот метод помогает оценить неопределённость нестандартных оценок. Рассмотрим статистику \(R^{2}\), связанную с регрессией. При выполнении обычного МНК-регрессии вы получаете конкретное значение \(R^{2}\). Но как построить 95% доверительный интервал для \(R^{2}\)?

Изучите DataFrame 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 DataFrame. Количество строк должно совпадать с количеством строк в исходном DataFrame.
  • Подгоните регрессию аналогично 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))
Редактировать и запускать код