Як обчислити r-квадрат для glm у r


Часто, коли ми підбираємо модель лінійної регресії, ми використовуємо R-квадрат , щоб оцінити, наскільки модель відповідає даним.

R у квадраті представляє частку дисперсії у змінній відповіді , яку можна пояснити змінними предикторів у регресійній моделі.

Це число коливається від 0 до 1, причому вищі значення вказують на кращу підгонку моделі.

Однак не існує значення R-квадрат для загальних лінійних моделей, таких як моделі логістичної регресії та моделі регресії Пуассона .

Натомість ми можемо розрахувати показник, відому як R-квадрат Макфаддена , який коливається від 0 до трохи менше 1, причому вищі значення вказують на кращу відповідність моделі.

Ми використовуємо таку формулу, щоб обчислити квадрат R Макфаддена:

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

золото:

  • log likelihood model : значення log likelihood для поточної встановленої моделі
  • нульова логарифмічна правдоподібність : значення логарифмічної правдоподібності нульової моделі (тільки модель з перехопленням)

На практиці значення вище 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-квадрат?

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *