Regressão logística multivariável

Modelos Lineares Generalizados em Python

Ita Cirovic Donev

Data Science Consultant

Cenário multivariável

  • Fórmula do modelo $$ \text{logit}(y) = \beta_0+\beta_1\color{red}{x_1} $$
Modelos Lineares Generalizados em Python

Cenário multivariável

  • Fórmula do modelo $$ \text{logit}(y) = \color{blue}{\beta_0}+\color{blue}{\beta_1}\color{red}{x_1} $$
Modelos Lineares Generalizados em Python

Cenário multivariável

  • Fórmula do modelo $$ \text{logit}(y) = \beta_0+\beta_1x_1 + \beta_2\color{red}{x_2} + ... + \beta_p \color{red}{x_p} $$
Modelos Lineares Generalizados em Python

Cenário multivariável

  • Fórmula do modelo $$ \text{logit}(y) = \beta_0+\beta_1x_1 + \color{blue}{\beta_2}\color{red}{x_2} + ... + \color{blue}{\beta_p}\color{red}{x_p} $$

  • Em Python

    model = glm('y ~ x1 + x2 + x3 + x4', 
              data = my_data, 
              family = sm.families.Binomial()).fit()
    
Modelos Lineares Generalizados em Python

Exemplo - troca de poço

formula = 'switch ~ distance100 + arsenic'
wells_fit = glm(formula = formula, data = wells, 
                family = sm.families.Binomial()).fit()
===============================================================================
                  coef    std err          z      P>|z|      [0.025      0.975]
-------------------------------------------------------------------------------
Intercept       0.0027      0.079      0.035      0.972      -0.153       0.158
distance100    -0.8966      0.104     -8.593      0.000      -1.101      -0.692
arsenic         0.4608      0.041     11.134      0.000       0.380       0.542
===============================================================================
Modelos Lineares Generalizados em Python

Exemplo - troca de poço

                  coef    std err          z      P>|z|      [0.025      0.975]
-------------------------------------------------------------------------------
Intercept       0.0027      0.079      0.035      0.972      -0.153       0.158
distance100    -0.8966      0.104     -8.593      0.000      -1.101      -0.692
arsenic         0.4608      0.041     11.134      0.000       0.380       0.542
  • Ambos os coeficientes são estatisticamente significativos
  • Sinal dos coeficientes é lógico
  • Uma unidade a mais em distance100 reduz o logit em 0,89
  • Uma unidade a mais em arsenic aumenta o logit em 0,46
Modelos Lineares Generalizados em Python

Impacto de adicionar uma variável

  • Impacto da variável arsenic
  • distance100 muda de -0,62 para -0,89
  • Quanto mais longe do poço seguro,
    • maior a chance de níveis mais altos de arsênio
                  coef    std err 
---------------------------------
Intercept       0.0027      0.079
distance100    -0.8966      0.104
arsenic         0.4608      0.041  
                  coef    std err
---------------------------------
Intercept       0.6060      0.060
distance100    -0.6291      0.097  
Modelos Lineares Generalizados em Python

Multicolinearidade

  • Variáveis correlacionadas com outras variáveis do modelo

Estrutura de duas variáveis com correlação em 0,8 0,4 0, -0,4 e -0,8, respectivamente.

  • Aumento dos erros-padrão dos coeficientes
    • Coeficientes podem não ser estatisticamente significativos
1 https://en.wikipedia.org/wiki/Correlation_and_dependence
Modelos Lineares Generalizados em Python

Presença de multicolinearidade?

O que observar?

  • Coeficiente não é significativo, mas a variável é altamente correlacionada com $y$
  • Adicionar/remover uma variável muda muito os coeficientes
  • Sinal do coeficiente não é lógico
  • Variáveis têm alta correlação par a par
Modelos Lineares Generalizados em Python

Fator de inflação da variância (VIF)

  • Diagnóstico mais usado para multicolinearidade
    • Calculado para cada variável explicativa
    • Indica quanto a variância do coeficiente está inflada
  • Limite sugerido VIF > 2,5
  • Em Python
from statsmodels.stats.outliers_influence import variance_inflation_factor
Modelos Lineares Generalizados em Python

Vamos praticar!

Modelos Lineares Generalizados em Python

Preparing Video For Download...