Wielozmienna regresja logistyczna

Uogólnione modele liniowe w Pythonie

Ita Cirovic Donev

Data Science Consultant

Ustawienie wielozmienne

  • Formuła modelu $$ \text{logit}(y) = \beta_0+\beta_1\color{red}{x_1} $$
Uogólnione modele liniowe w Pythonie

Ustawienie wielozmienne

  • Formuła modelu $$ \text{logit}(y) = \color{blue}{\beta_0}+\color{blue}{\beta_1}\color{red}{x_1} $$
Uogólnione modele liniowe w Pythonie

Ustawienie wielozmienne

  • Formuła modelu $$ \text{logit}(y) = \beta_0+\beta_1x_1 + \beta_2\color{red}{x_2} + ... + \beta_p \color{red}{x_p} $$
Uogólnione modele liniowe w Pythonie

Ustawienie wielozmienne

  • Formuła modelu $$ \text{logit}(y) = \beta_0+\beta_1x_1 + \color{blue}{\beta_2}\color{red}{x_2} + ... + \color{blue}{\beta_p}\color{red}{x_p} $$

  • W Pythonie

    model = glm('y ~ x1 + x2 + x3 + x4', 
              data = my_data, 
              family = sm.families.Binomial()).fit()
    
Uogólnione modele liniowe w Pythonie

Przykład – zmiana studni

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
===============================================================================
Uogólnione modele liniowe w Pythonie

Przykład – zmiana studni

                  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
  • Oba współczynniki są istotne statystycznie
  • Znaki współczynników są logiczne
  • Jednostkowa zmiana distance100 odpowiada różnicy -0,89 w logicie
  • Jednostkowa zmiana arsenic odpowiada różnicy +0,46 w logicie
Uogólnione modele liniowe w Pythonie

Wpływ dodania zmiennej

  • Wpływ zmiennej arsenic
  • distance100 zmienia się z -0,62 na -0,89
  • Im dalej od bezpiecznej studni
    • Tym większe prawdopodobieństwo wysokiego poziomu arsenu
                  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  
Uogólnione modele liniowe w Pythonie

Wielowspółliniowość

  • Zmienne skorelowane z innymi zmiennymi modelu

Struktura dwóch zmiennych z korelacją 0,8; 0,4; 0; -0,4 i -0,8.

  • Wzrost błędów standardowych współczynników
    • Współczynniki mogą nie być istotne statystycznie
1 https://en.wikipedia.org/wiki/Correlation_and_dependence
Uogólnione modele liniowe w Pythonie

Wykrywanie wielowspółliniowości

Na co zwrócić uwagę?

  • Współczynnik nieistotny, ale zmienna silnie skorelowana z $y$
  • Dodanie/usunięcie zmiennej znacząco zmienia współczynniki
  • Nielogiczny znak współczynnika
  • Wysokie korelacje parami między zmiennymi
Uogólnione modele liniowe w Pythonie

Współczynnik inflacji wariancji (VIF)

  • Najszerzej stosowana miara diagnostyczna wielowspółliniowości
    • Obliczana dla każdej zmiennej objaśniającej
    • Określa, jak bardzo wariancja współczynnika jest zawyżona
  • Zalecany próg: VIF > 2,5
  • W Pythonie
from statsmodels.stats.outliers_influence import variance_inflation_factor
Uogólnione modele liniowe w Pythonie

Czas na ćwiczenia!

Uogólnione modele liniowe w Pythonie

Preparing Video For Download...