R: como calcular odds ratio em um modelo de regressão logística


A regressão logística é um método que podemos usar para ajustar um modelo de regressão quando a variável de resposta é binária.

Quando você ajusta um modelo de regressão logística em R, os coeficientes no resumo do modelo representam a mudança média nas probabilidades logarítmicas da variável de resposta associada a um aumento de uma unidade em cada variável preditora.

No entanto, muitas vezes queremos calcular a razão de chances para as variáveis preditoras no modelo.

Para calcular rapidamente as taxas de probabilidade para cada variável preditora no modelo, você pode usar a seguinte sintaxe:

 exp(coef(model))

Você também pode calcular um intervalo de confiança de 95% para cada razão de probabilidade usando a seguinte sintaxe:

 exp(cbind(Odds_Ratio = coef(model), confint(model)))

O exemplo a seguir mostra como usar essa sintaxe para calcular e interpretar odds ratio para um modelo de regressão logística em R.

Exemplo: Calculando Odds Ratios em um modelo de regressão logística em R

Para este exemplo, usaremos o conjunto de dados padrão do pacote ISLR em R.

Podemos usar o seguinte código para carregar e exibir um resumo do conjunto de dados:

 library (ISLR)

#view first five rows of Default dataset
head(Default)

  default student balance income
1 No No 729.5265 44361.625
2 No Yes 817.1804 12106.135
3 No No 1073.5492 31767.139
4 No No 529.2506 35704.494
5 No No 785.6559 38463.496
6 No Yes 919.5885 7491.559

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 estudantil, o saldo bancário e a renda para construir um modelo de regressão logística que prevê a probabilidade de inadimplência de um determinado indivíduo.

Podemos usar a função glm e especificar family=’binomial’ para que R ajuste um modelo de regressão logística ao conjunto de dados:

 #fit logistic regression model
model <- glm(default~student+balance+income, family=' binomial ', data=Default)

#disable scientific notation for model summary
options(scipen=999)

#view model summary
summary(model)

Call:
glm(formula = default ~ student + balance + income, family = "binomial", 
    data = train)

Deviance Residuals: 
    Min 1Q Median 3Q Max  
-2.5586 -0.1353 -0.0519 -0.0177 3.7973  

Coefficients:
                 Estimate Std. Error z value Pr(>|z|)    
(Intercept) -11.478101194 0.623409555 -18.412 <0.0000000000000002 ***
studentYes -0.493292438 0.285735949 -1.726 0.0843 .  
balance 0.005988059 0.000293765 20.384 <0.0000000000000002 ***
income 0.000007857 0.000009965 0.788 0.4304    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2021.1 on 6963 degrees of freedom
Residual deviance: 1065.4 on 6960 degrees of freedom
AIC: 1073.4

Number of Fisher Scoring iterations: 8

Os coeficientes no resultado indicam a variação média no log das probabilidades de inadimplência.

Por exemplo, um aumento de uma unidade no saldo está associado a um aumento médio de 0,005988 no log da probabilidade de incumprimento.

Em vez disso, para calcular a razão de chances para cada variável preditora, podemos usar a seguinte sintaxe:

 #calculate odds ratio for each predictor variable
exp(coef(model))

  (Intercept) studentYes balance income 
0.00001903854 0.52373166965 1.00575299051 1.00000303345 

Também podemos calcular cada odds ratio, bem como um intervalo de confiança de 95% para cada odds ratio:

 #calculate odds ratio and 95% confidence interval for each predictor variable 
exp(cbind(Odds_Ratio = coef(model), confint(model)))

               Odds_Ratio 2.5% 97.5%
(Intercept) 0.00001903854 0.000007074481 0.0000487808
studentYes 0.52373166965 0.329882707270 0.8334223982
balance 1.00575299051 1.005308940686 1.0062238757
income 1.00000303345 0.999986952969 1.0000191246

A razão de chances para cada coeficiente representa o aumento médio nas probabilidades de inadimplência de um indivíduo, assumindo que todas as outras variáveis preditoras permanecem constantes.

Por exemplo, o saldo da variável preditora tem uma razão de chances de 1,0057 .

Isto significa que, por cada dólar adicional no saldo que um indivíduo carrega, as probabilidades de o indivíduo deixar de pagar o seu empréstimo aumentam por um factor de 1,0057 , assumindo que o estatuto de estudante e o rendimento permanecem constantes .

Podemos interpretar as razões de probabilidade para as outras variáveis preditoras da mesma maneira.

Recursos adicionais

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

Como usar Predict() com modelo de regressão logística em R
Como interpretar Pr(>|z|) na saída de regressão logística em R
Como traçar uma curva de regressão logística em R

Add a Comment

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