Como calcular r-quadrado para glm em r


Freqüentemente, quando ajustamos um modelo de regressão linear, usamos R-quadrado para avaliar quão bem um modelo se ajusta aos dados.

R ao quadrado representa a proporção da variância na variável resposta que pode ser explicada pelas variáveis preditoras em um modelo de regressão.

Esse número varia de 0 a 1, com valores mais altos indicando melhor ajuste do modelo.

No entanto, não há valor de R ao quadrado para modelos lineares gerais, como modelos de regressão logística e modelos de regressão de Poisson .

Em vez disso, podemos calcular uma métrica conhecida como R-Squared de McFadden , que varia de 0 a pouco menos de 1, com valores mais altos indicando melhor ajuste do modelo.

Usamos a seguinte fórmula para calcular o R ao quadrado de McFadden:

R-quadrado de McFadden = 1 – ( modelo de log de verossimilhança / log de probabilidade zero )

Ouro:

  • modelo de log de verossimilhança : valor de log de verossimilhança do modelo ajustado atual
  • log de probabilidade zero : valor de log de probabilidade do modelo nulo (modelo com interceptação apenas)

Na prática, valores acima de 0,40 indicam que um modelo se ajusta muito bem aos dados.

O exemplo a seguir mostra como calcular o R-quadrado de McFadden para um modelo de regressão logística em R.

Exemplo: Calculando R-quadrado de McFadden em R

Para este exemplo, usaremos o conjunto de dados padrão do pacote ISLR. Podemos usar o seguinte código para carregar e exibir um resumo do conjunto de dados:

 #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

Este conjunto de dados contém as seguintes informações sobre 10.000 indivíduos:

  • inadimplência: indica se um indivíduo está inadimplente ou não.
  • estudante: indica se um indivíduo é estudante ou não.
  • saldo: Saldo médio mantido por um indivíduo.
  • renda: Renda da pessoa física.

Usaremos a situação de estudante, o saldo bancário e a renda para construir um modelo de regressão logística que prevê a probabilidade de um determinado indivíduo entrar em 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

A seguir, usaremos a seguinte fórmula para calcular o valor R ao quadrado de McFadden para este modelo:

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

[1] 0.4619194

O valor R ao quadrado de McFadden é 0,4619194 . Este valor é bastante elevado, indicando que nosso modelo se ajusta bem aos dados e possui alto poder preditivo.

Observe também que também poderíamos usar a função pR2() do pacote pscl para calcular o valor R-quadrado de McFadden para o modelo:

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

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

 McFadden 
0.4619194

Observe que este valor corresponde ao calculado anteriormente.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

Como calcular R-quadrado em R
Como calcular R-quadrado ajustado em R
O que é um bom valor de R ao quadrado?

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *