Jak obliczyć r-kwadrat dla glm w r


Często, gdy dopasowujemy model regresji liniowej, używamy współczynnika R-kwadrat, aby ocenić, jak dobrze model pasuje do danych.

R kwadrat reprezentuje proporcję wariancjizmiennej odpowiedzi , którą można wyjaśnić za pomocą zmiennych predykcyjnych w modelu regresji.

Liczba ta waha się od 0 do 1, przy czym wyższe wartości wskazują na lepsze dopasowanie modelu.

Jednakże nie ma wartości R-kwadrat dla ogólnych modeli liniowych, takich jak modele regresji logistycznej i modele regresji Poissona .

Zamiast tego możemy obliczyć metrykę znaną jako R-Squared McFaddena , która waha się od 0 do nieco poniżej 1, przy czym wyższe wartości wskazują na lepsze dopasowanie modelu.

Do obliczenia kwadratu R McFaddena używamy następującego wzoru:

R-kwadrat McFaddena = 1 – ( model wiarygodności logarytmicznej / logarytm wiarygodności zerowej )

Złoto:

  • log wiarygodności modelu : log wiarygodności wartości aktualnie dopasowanego modelu
  • prawdopodobieństwo logarytmu zerowego : wartość wiarygodności logarytmicznej modelu zerowego (tylko model z wyrazem wolnym)

W praktyce wartości powyżej 0,40 oznaczają, że model bardzo dobrze pasuje do danych.

Poniższy przykład pokazuje, jak obliczyć kwadrat R McFaddena dla modelu regresji logistycznej w R.

Przykład: Obliczanie kwadratu R McFaddena w R

W tym przykładzie użyjemy domyślnego zestawu danych z pakietu ISLR. Możemy użyć następującego kodu, aby załadować i wyświetlić podsumowanie zbioru danych:

 #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

Ten zbiór danych zawiera następujące informacje na temat 10 000 osób:

  • default: wskazuje, czy dana osoba nie wywiązała się ze zobowiązania, czy nie.
  • student: wskazuje, czy dana osoba jest studentem, czy nie.
  • saldo: Średnie saldo utrzymywane przez osobę.
  • dochód: Dochód osoby fizycznej.

Wykorzystamy status studenta, stan konta bankowego i dochody do zbudowania modelu regresji logistycznej, który przewiduje prawdopodobieństwo niewypłacalności danej osoby:

 #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

Następnie użyjemy następującego wzoru do obliczenia wartości R-kwadrat McFaddena dla tego modelu:

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

[1] 0.4619194

Wartość R-kwadrat McFaddena wynosi 0,4619194 . Wartość ta jest dość wysoka, co wskazuje, że nasz model dobrze pasuje do danych i ma dużą moc predykcyjną.

Zauważ również, że możemy również użyć funkcji pR2() z pakietu pscl do obliczenia wartości R-kwadrat McFaddena dla modelu:

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

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

 McFadden 
0.4619194

Należy pamiętać, że wartość ta odpowiada wcześniej obliczonej.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:

Jak obliczyć R-kwadrat w R
Jak obliczyć skorygowany R-kwadrat w R
Jaka jest dobra wartość R-kwadrat?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *