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


R -квадрат , часто обозначаемый как R2, представляет собой долю дисперсии переменной отклика , которая может быть объяснена переменными-предикторами в модели линейной регрессии .

Значение для R-квадрата может варьироваться от 0 до 1. Значение 0 указывает, что переменная отклика вообще не может быть объяснена предикторной переменной, в то время как значение 1 указывает, что переменная отклика может быть полностью объяснена предиктором без ошибок. переменные.

Скорректированный R-квадрат — это модифицированная версия R-квадрата, которая корректирует количество предикторов в регрессионной модели. Он рассчитывается как:

Скорректированный R 2 = 1 – [(1-R 2 )*(n-1)/(nk-1)]

куда:

  • R 2 : R 2 модели
  • n : количество наблюдений
  • k : Количество переменных-предикторов

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

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

Связанный:Что такое хорошее значение R-квадрата?

Пример 1. Расчет скорректированного R-квадрата с помощью sklearn

В следующем коде показано, как подобрать модель множественной линейной регрессии и рассчитать скорректированный R-квадрат модели с помощью sklearn:

from sklearn. linear_model import LinearRegression
import pandas as pd

#define URL where dataset is located
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/mtcars.csv"

#read in data
data = pd.read_csv (url)

#fit regression model
model = LinearRegression ()
X, y = data[["mpg", "wt", "drat", "qsec"]], data.hp
model. fit (X, y)

#display adjusted R-squared
1 - (1-model. score (X, y))\*( len (y)-1)/( len (y)-X. shape [1]-1)

0.7787005290062521

Скорректированный R-квадрат модели оказывается равным 0,7787 .

Пример 2. Расчет скорректированного R-квадрата с использованием статистических моделей

В следующем коде показано, как подобрать модель множественной линейной регрессии и рассчитать скорректированный R-квадрат модели с помощью статистических моделей:

import statsmodels.api as sm
import pandas as pd

#define URL where dataset is located
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/mtcars.csv"

#read in data
data = pd.read_csv (url)

#fit regression model
X, y = data[["mpg", "wt", "drat", "qsec"]], data.hp
X = sm.add_constant (X)
model = sm. OLS (y, X). fit ()

#display adjusted R-squared
print(model. rsquared_adj )

0.7787005290062521

Скорректированный R-квадрат модели оказывается равным 0,7787 , что соответствует результату из предыдущего примера.

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

Как выполнить простую линейную регрессию в Python
Как выполнить множественную линейную регрессию в Python
Как рассчитать AIC регрессионных моделей в Python