Как рассчитать стандартизованные остатки в Python


Остаток — это разница между наблюдаемым значением и прогнозируемым значением в регрессионной модели .

Он рассчитывается как:

Остаток = наблюдаемое значение – прогнозируемое значение

Если мы нанесем наблюдаемые значения и наложим подобранную линию регрессии, остатки для каждого наблюдения будут вертикальным расстоянием между наблюдением и линией регрессии:

Один тип остатка, который мы часто используем для выявления выбросов в регрессионной модели, известен как стандартизированный остаток .

Он рассчитывается как:

r i = e i / s(e i ) = e i / RSE√ 1-h ii

куда:

  • e i : i -й остаток
  • RSE: остаточная стандартная ошибка модели.
  • h ii : рычаг i -го наблюдения

На практике мы часто считаем выбросом любой стандартизованный остаток с абсолютным значением больше 3.

В этом руководстве представлен пошаговый пример расчета стандартизированных остатков в Python.

Шаг 1: введите данные

Во-первых, мы создадим небольшой набор данных для работы с Python:

import pandas as pd

#create dataset
df = pd.DataFrame({'x': [8, 12, 12, 13, 14, 16, 17, 22, 24, 26, 29, 30],
 'y': [41, 42, 39, 37, 35, 39, 45, 46, 39, 49, 55, 57]})

Шаг 2: Подгонка регрессионной модели

Далее мы подгоним простую модель линейной регрессии :

import statsmodels.api as sm

#define response variable
y = df['y']

#define explanatory variable
x = df['x']

#add constant to predictor variables
x = sm.add_constant (x)

#fit linear regression model
model = sm. OLS (y, x). fit ()

Шаг 3: Рассчитайте стандартизированные остатки

Далее мы рассчитаем стандартизированные остатки модели:

#create instance of influence
influence = model. get_influence ()

#obtain standardized residuals
standardized_residuals = influence. resid_studentized_internal

#display standardized residuals
print(standardized_residuals)

[ 1.40517322 0.81017562 0.07491009 -0.59323342 -1.2482053 -0.64248883
 0.59610905 -0.05876884 -2.11711982 -0.066556 0.91057211 1.26973888]

Из результатов видно, что ни один из стандартизированных остатков не превышает абсолютного значения 3. Таким образом, ни одно из наблюдений не является выбросом.

Шаг 4: Визуализируйте стандартизированные остатки

Наконец, мы можем создать диаграмму рассеяния, чтобы визуализировать значения переменной-предиктора по сравнению со стандартизованными остатками:

import matplotlib.pyplot as plt

plt.scatter (df.x, standardized_residuals)
plt.xlabel('x')
plt.ylabel('Standardized Residuals')
plt.axhline (y=0, color='black', linestyle='--', linewidth=1)
plt.show() 

Дополнительные ресурсы

Что такое остатки?
Что такое стандартизированные остатки?
Как рассчитать стандартизованные остатки в R
Как рассчитать стандартизированные остатки в Excel