Como realizar regressão logística usando modelos estatísticos


O módulo statsmodels do Python oferece uma variedade de funções e classes que permitem adaptar vários modelos estatísticos.

O exemplo passo a passo a seguir mostra como realizar regressão logística usando funções statsmodels.

Etapa 1: crie os dados

Primeiro, vamos criar um DataFrame do pandas que contém três variáveis:

  • Horas estudadas (valor inteiro)
  • Método de estudo (método A ou B)
  • Resultado do exame (aprovado ou reprovado)

Ajustaremos um modelo de regressão logística usando horas estudadas e método de estudo para prever se um aluno passa ou não em determinado exame.

O código a seguir mostra como criar o DataFrame do pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' result ': [0, 1, 0, 0, 0, 0, 0, 1, 1, 0,
                              0, 1, 1, 1, 0, 1, 1, 1, 1, 1],
                   ' hours ': [1, 2, 2, 2, 3, 2, 5, 4, 3, 6,
                            5, 8, 8, 7, 6, 7, 5, 4, 8, 9],
                   ' method ': ['A', 'A', 'A', 'B', 'B', 'B', 'B',
                             'B', 'B', 'A', 'B', 'A', 'B', 'B',
                             'A', 'A', 'B', 'A', 'B', 'A']})

#view first five rows of DataFrame
df. head ()

	result hours method
0 0 1 A
1 1 2 A
2 0 2 A
3 0 2 B
4 0 3 B

Passo 2: Ajustar o modelo de regressão logística

A seguir, ajustaremos o modelo de regressão logística usando a função logit() :

 import statsmodels. formula . api as smf

#fit logistic regression model
model = smf. logit (' result~hours+method ', data=df). fit ()

#view model summary
print ( model.summary ())

Optimization completed successfully.
         Current function value: 0.557786
         Iterations 5
                           Logit Regression Results                           
==================================================== ============================
Dept. Variable: result No. Observations: 20
Model: Logit Df Residuals: 17
Method: MLE Df Model: 2
Date: Mon, 22 Aug 2022 Pseudo R-squ.: 0.1894
Time: 09:53:35 Log-Likelihood: -11.156
converged: True LL-Null: -13.763
Covariance Type: nonrobust LLR p-value: 0.07375
==================================================== ============================
                  coef std err z P>|z| [0.025 0.975]
-------------------------------------------------- -----------------------------
Intercept -2.1569 1.416 -1.523 0.128 -4.932 0.618
method[TB] 0.0875 1.051 0.083 0.934 -1.973 2.148
hours 0.4909 0.245 2.002 0.045 0.010 0.972
==================================================== ============================

Os valores na coluna coef do resultado nos indicam a variação média no log de chances de passar no exame.

Por exemplo:

  • O uso do método de estudo B está associado a um aumento médio de 0,0875 no log de chances de aprovação no exame em comparação ao uso do método de estudo A.
  • Cada hora adicional estudada está associada a um aumento médio de 0,4909 no log de chances de aprovação no exame.

Os valores em P>|z| A coluna representa os valores p de cada coeficiente.

Por exemplo:

  • O método de estudo possui valor p de 0,934 . Como esse valor não é inferior a 0,05, significa que não existe relação estatisticamente significativa entre as horas cursadas e a aprovação ou não do aluno no exame.
  • As horas estudadas possuem valor p de 0,045 . Como esse valor é inferior a 0,05, significa que existe uma relação estatisticamente significativa entre as horas estudadas e a aprovação ou reprovação do aluno no exame.

Etapa 3: avaliar o desempenho do modelo

Para avaliar a qualidade do modelo de regressão logística, podemos observar duas métricas no resultado:

1. Apelido R-quadrado

Este valor pode ser considerado um substituto do valor R-quadrado para um modelo de regressão linear.

É calculado como a razão entre a função de log-verossimilhança maximizada do modelo nulo para o modelo completo.

Este valor pode variar de 0 a 1, sendo que valores mais altos indicam melhor ajuste do modelo.

Neste exemplo, o valor do pseudo R ao quadrado é 0,1894 , o que é bastante baixo. Isso nos diz que as variáveis preditoras do modelo não estão fazendo um trabalho muito bom ao prever o valor da variável resposta.

2. Valor p do LLR

Este valor pode ser considerado um substituto do valor p do valor F geral de um modelo de regressão linear.

Se este valor estiver abaixo de um determinado limite (por exemplo α = 0,05), podemos então concluir que o modelo como um todo é “útil” e pode prever melhor os valores da variável resposta em comparação com um modelo sem variáveis preditivas.

Neste exemplo, o valor p do LLR é 0,07375 . Dependendo do nível de significância que escolhermos (por exemplo, 0,01, 0,05, 0,1), podemos ou não concluir que o modelo como um todo é útil.

Recursos adicionais

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

Como realizar regressão linear em Python
Como realizar regressão logarítmica em Python
Como realizar regressão quantílica em Python

Add a Comment

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