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


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

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

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

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

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

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

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

Золото:

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

На практике значения выше 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    
---
Significant. 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-квадрата?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *