Come calcolare r quadrato per glm in r


Spesso quando adattiamo un modello di regressione lineare, utilizziamo R quadrato per valutare quanto bene un modello si adatta ai dati.

R al quadrato rappresenta la proporzione della varianza nella variabile di risposta che può essere spiegata dalle variabili predittive in un modello di regressione.

Questo numero varia da 0 a 1, con valori più alti che indicano un migliore adattamento del modello.

Tuttavia, non esiste un valore R quadrato per i modelli lineari generali come i modelli di regressione logistica e i modelli di regressione di Poisson .

Possiamo invece calcolare una metrica nota come R-Squared di McFadden , che varia da 0 a poco meno di 1, con valori più alti che indicano un migliore adattamento del modello.

Usiamo la seguente formula per calcolare R quadrato di McFadden:

R-quadrato di McFadden = 1 – ( modello di verosimiglianza logaritmica / verosimiglianza logaritmica zero )

Oro:

  • modello di verosimiglianza logaritmica : valore di verosimiglianza logaritmica del modello adattato corrente
  • verosimiglianza logaritmica zero : valore di verosimiglianza logaritmica del modello nullo (solo modello con intercetta)

In pratica, valori superiori a 0,40 indicano che un modello si adatta molto bene ai dati.

L’esempio seguente mostra come calcolare l’R quadrato di McFadden per un modello di regressione logistica in R.

Esempio: calcolo dell’R quadrato di McFadden in R

Per questo esempio utilizzeremo il set di dati predefinito del pacchetto ISLR. Possiamo utilizzare il seguente codice per caricare e visualizzare un riepilogo del set di dati:

 #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

Questo set di dati contiene le seguenti informazioni su 10.000 individui:

  • default: indica se un individuo è inadempiente o meno.
  • studente: indica se un individuo è studente o meno.
  • saldo: saldo medio portato da un individuo.
  • reddito: reddito dell’individuo.

Utilizzeremo lo status di studente, il saldo bancario e il reddito per costruire un modello di regressione logistica che prevede la probabilità che un dato individuo vada in default:

 #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

Successivamente, utilizzeremo la seguente formula per calcolare il valore R quadrato di McFadden per questo modello:

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

[1] 0.4619194

Il valore R quadrato di McFadden risulta essere 0,4619194 . Questo valore è piuttosto elevato, indicando che il nostro modello si adatta bene ai dati e ha un elevato potere predittivo.

Si noti inoltre che potremmo anche utilizzare la funzione pR2() del pacchetto pscl per calcolare il valore R quadrato di McFadden per il modello:

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

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

 McFadden 
0.4619194

Da notare che questo valore corrisponde a quello calcolato in precedenza.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in R:

Come calcolare R-quadrato in R
Come calcolare l’R quadrato corretto in R
Qual è un buon valore R quadrato?

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *