Hoe r-kwadraat voor glm in r te berekenen


Wanneer we een lineair regressiemodel passen, gebruiken we vaak R-kwadraat om te evalueren hoe goed een model bij de gegevens past.

R kwadraat vertegenwoordigt het deel van de variantie in deresponsvariabele dat kan worden verklaard door de voorspellende variabelen in een regressiemodel.

Dit getal varieert van 0 tot 1, waarbij hogere waarden wijzen op een betere pasvorm van het model.

Er is echter geen R-kwadraatwaarde voor algemene lineaire modellen zoals logistische regressiemodellen en Poisson-regressiemodellen .

In plaats daarvan kunnen we een metriek berekenen die bekend staat als McFadden’s R-Squared , die varieert van 0 tot iets minder dan 1, waarbij hogere waarden wijzen op een betere pasvorm van het model.

We gebruiken de volgende formule om McFadden’s R kwadraat te berekenen:

McFadden’s R-kwadraat = 1 – (log- waarschijnlijkheidsmodel / nul- log-waarschijnlijkheid)

Goud:

  • log waarschijnlijkheidsmodel : log waarschijnlijkheidswaarde van het huidige gepaste model
  • nul- log-waarschijnlijkheid : log-waarschijnlijkheidswaarde van het nulmodel (alleen model met intercept)

In de praktijk geven waarden boven de 0,40 aan dat een model zeer goed bij de data past.

Het volgende voorbeeld laat zien hoe u McFadden’s R-kwadraat kunt berekenen voor een logistisch regressiemodel in R.

Voorbeeld: Berekening van McFadden’s R-kwadraat in R

Voor dit voorbeeld gebruiken we de standaarddataset uit het ISLR-pakket. We kunnen de volgende code gebruiken om een samenvatting van de dataset te laden en weer te geven:

 #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

Deze dataset bevat de volgende informatie over 10.000 personen:

  • standaard: geeft aan of een persoon in gebreke is gebleven of niet.
  • student: geeft aan of een persoon student is of niet.
  • saldo: Gemiddeld saldo dat door een individu wordt bijgehouden.
  • inkomen: inkomen van het individu.

We zullen de studentenstatus, het banksaldo en het inkomen gebruiken om een logistisch regressiemodel op te bouwen dat de waarschijnlijkheid voorspelt dat een bepaald individu in gebreke blijft:

 #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

Vervolgens zullen we de volgende formule gebruiken om de R-kwadraatwaarde van McFadden voor dit model te berekenen:

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

[1] 0.4619194

De R-kwadraatwaarde van McFadden blijkt 0,4619194 te zijn. Deze waarde is vrij hoog, wat aangeeft dat ons model goed bij de gegevens past en een hoge voorspellende kracht heeft.

Merk ook op dat we ook de functie pR2() uit het pscl- pakket kunnen gebruiken om de McFadden R-kwadraatwaarde voor het model te berekenen:

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

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

 McFadden 
0.4619194

Merk op dat deze waarde overeenkomt met de eerder berekende waarde.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:

Hoe R-kwadraat in R te berekenen
Hoe u het aangepaste R-kwadraat in R kunt berekenen
Wat is een goede R-kwadraatwaarde?

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert