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