Как рассчитать R-квадрат для glm в R


Часто, когда мы подбираем модель линейной регрессии, мы используем R-квадрат как способ оценить, насколько хорошо модель соответствует данным.

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

Это число находится в диапазоне от 0 до 1, причем более высокие значения указывают на лучшее соответствие модели.

Однако такого значения R-квадрата нет для общих линейных моделей, таких как модели логистической регрессии и модели регрессии Пуассона .

Вместо этого мы можем рассчитать показатель, известный как R-квадрат Макфаддена , который колеблется от 0 до чуть меньше 1, причем более высокие значения указывают на лучшее соответствие модели.

Мы используем следующую формулу для расчета R-квадрата Макфаддена:

R-квадрат Макфаддена = 1 - ( модель логарифмического правдоподобия / нуль логарифмического правдоподобия)

куда:

  • модель логарифмического правдоподобия : значение логарифмического правдоподобия текущей подобранной модели
  • журнал правдоподобия null : значение вероятности журнала нулевой модели (только модель с перехватом)

На практике значения выше 0,40 указывают на то, что модель очень хорошо соответствует данным.

В следующем примере показано, как рассчитать R-квадрат Макфаддена для модели логистической регрессии в R.

Пример: вычисление R-квадрата Макфаддена в R

В этом примере мы будем использовать набор данных по умолчанию из пакета ISLR. Мы можем использовать следующий код для загрузки и просмотра сводки набора данных:

#install and load ISLR package
install. packages('ISLR')
library (ISLR)

#define dataset
data <- ISLR::Default

#view summary of dataset
summary(data)

 default student balance income 
 No :9667 No :7056 Min. : 0.0 Min. : 772 
 Yes: 333 Yes:2944 1st Qu.: 481.7 1st Qu.:21340 
 Median : 823.6 Median :34553 
 Mean : 835.4 Mean :33517 
 3rd Qu.:1166.3 3rd Qu.:43808 
 Max.:2654.3 Max.:73554 

#find total observations in dataset
nrow(data)

[1] 10000

Этот набор данных содержит следующую информацию о 10 000 человек:

  • по умолчанию: указывает, нарушил ли индивидуум дефолт.
  • студент: Указывает, является ли человек студентом.
  • баланс: средний баланс, который несет физическое лицо.
  • доход: Доход физического лица.

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

#fit logistic regression model
model <- glm(default~student+balance+income, family='binomial', data=data)

#view model summary
summary(model)

Call:
glm(formula = default ~ balance + student + income, family = "binomial", 
 data = data)

Deviance Residuals: 
 Min 1Q Median 3Q Max 
-2.4691 -0.1418 -0.0557 -0.0203 3.7383 

Coefficients:
 Estimate Std. Error z value Pr(>|z|) 
(Intercept) -1.087e+01 4.923e-01 -22.080 < 2e-16 \*\*\*
balance 5.737e-03 2.319e-04 24.738 < 2e-16 \*\*\*
studentYes -6.468e-01 2.363e-01 -2.738 0.00619 \*\* 
income 3.033e-06 8.203e-06 0.370 0.71152 
---
Signif. codes: 0 ‘\*\*\*’ 0.001 ‘\*\*’ 0.01 ‘\*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

 Null deviance: 2920.6 on 9999 degrees of freedom
Residual deviance: 1571.5 on 9996 degrees of freedom
AIC: 1579.5

Number of Fisher Scoring iterations: 8

Далее мы будем использовать следующую формулу для расчета значения R-квадрата Макфаддена для этой модели:

#calculate McFadden's R-squared for model
with(summary(model), 1 - deviance/null. deviance )

[1] 0.4619194

Значение R-квадрата Макфаддена оказывается равным 0,4619194.Это значение довольно высокое, что указывает на то, что наша модель хорошо соответствует данным и обладает высокой предсказательной силой.

Также обратите внимание, что мы могли бы использовать функцию pR2() из пакета pscl для вычисления значения R-квадрата Макфаддена для модели:

#install and load pscl package
install. packages('pscl')
library (pscl)

#calculate McFadden's R-squared for model
pR2(model)['McFadden']

 McFadden 
0.4619194

Обратите внимание, что это значение совпадает с рассчитанным ранее.

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

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

Как рассчитать R-квадрат в R
Как рассчитать скорректированный R-квадрат в R
Что такое хорошее значение R-квадрата?

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.