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?