Как проверить нормальность распределения остактов и дисперсию остатков для модели sklearn.linear_model?

Рейтинг: 0Ответов: 1Опубликовано: 16.04.2023

Имеются следующие данные:

    date_trunc  mentor  mentee
0   2021-02-01  3       3
1   2021-03-01  3       3
2   2021-04-01  7       7
3   2021-05-01  18      19
4   2021-06-01  24      27
5   2021-07-01  37      35
6   2021-08-01  53      56
7   2021-09-01  63      70
8   2021-10-01  86      89
9   2021-11-01  102     114
10  2021-12-01  135     149
11  2022-01-01  154     169
12  2022-02-01  174     202
13  2022-03-01  232     287
14  2022-04-01  298     386
15  2022-05-01  343     475
16  2022-06-01  384     552
17  2022-07-01  446     684
18  2022-08-01  509     883
19  2022-09-01  469     757

Я использую следующие библиотеки:

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

Код для построения линейной регрессии:

# подготовка данных
    x = df['mentee'].to_numpy().reshape(-1, 1)
    y = df['mentor'].to_numpy()
# разделение данных на тренировочные и тестовые
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
# обучение модели и прогнозирование
    model = LinearRegression().fit(x_train, y_train)
    y_pred = model.predict(x_test)
# проверка модели
    mse = mean_squared_error(y_test, y_pred)
    mae = mean_absolute_error(y_test, y_pred)
    print('mse: %.3f, sqrt(mse): %.3f, mae: %.3f' % (mse, np.sqrt(mse), mae))
    print("Coefficients: \n", model.coef_)
    print('Independent: \n', model.intercept_)

Мне осталось только проверить нормальность распределения остатков и однородность дисперсии остатков. Как это сделать?

Ответы

▲ 2Принят

Нормальность распределения остатков проверяется любым алгоритмом проверки на нормальность. Например, реализованными в scipy.stats критерием Колмогорова-Смирнова, критерием хи-квадрат Пирсона, критерием Крамера-фон Мизеса, критерем Харке-Берра, критерием д'Агустинио, специализированным критерием Шапиро-Уилка.

Однородность дисперсии остатков Проверяется любым параметрическим или непараметрическим критерием сравнения дисперсии с заданным значением. Начиная от критерия ранговой корреляции Спирмана, критерия Ансари-Бредли, критерия Барлета, критерия Левене.

Крое того, существуют и другие тесты, не реализованные в scipy.stats, но реализовать которые достаточно просто.

А еще часто используют критерий Дарбина—Уотсона, реализованный в statsmodels для анализа наличия автокорреляции в остатках, что есть признаком зависимости (а следовательно и неоднородности) остатков.

Как видите, вариантов много, выбирайте.