Bortom linjär regression

Generaliserade linjära modeller i Python

Ita Cirovic Donev

Data Science Consultant

Kursmål

  • Lär dig grunderna i GLM
  • Träna GLM
  • Tolka modellresultat
  • Utvärdera modellens prestanda
  • Beräkna prediktioner
  • Kapitel 1: Hur är GLM en utvidgning av linjära modeller
  • Kapitel 2: Binomial (logistisk) regression
  • Kapitel 3: Poisson-regression
  • Kapitel 4: Multivariat logistisk regression
Generaliserade linjära modeller i Python

Repetition av linjära modeller

Spridningsdiagram över antal års erfarenhet och lön.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times\color{#FF6138}{\text{experience}} + \epsilon}$

$\normalsize{\color{#00A388}y = \beta_0 + \beta_1x_1 + \epsilon}$

Generaliserade linjära modeller i Python

Repetition av linjära modeller

Spridningsdiagram över antal års erfarenhet och lön.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times{\text{experience}} + \epsilon$

$\color{#00A388}y = \beta_0 + \beta_1x_1 + \epsilon$

där:
$\color{#00A388}y$ - responsvariabel (utdata)

Generaliserade linjära modeller i Python

Repetition av linjära modeller

Spridningsdiagram över antal års erfarenhet och lön.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times\color{#FF6138}{\text{experience}} + \epsilon}$

$\normalsize{\color{#00A388}y = \beta_0 + \beta_1\color{#FF6138}{x_1} + \epsilon}$

där:
$y$ - responsvariabel (utdata)
$\color{#FF6138}x$ - förklarande variabel (indata)

Generaliserade linjära modeller i Python

Repetition av linjära modeller

Spridningsdiagram över antal års erfarenhet och lön.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\times\color{#FF6138}{\text{experience}} + \epsilon}$

$\normalsize{\color{#00A388}y = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\color{#FF6138}{x_1} + \epsilon}$

där:
$y$ - responsvariabel (utdata)
$x$ - förklarande variabel (indata)
$\color{#007AFF}{\beta}$ - modellparametrar
$\color{#007AFF}{\beta_0}$ - intercept
$\color{#007AFF}{\beta_1}$ - lutning

Generaliserade linjära modeller i Python

Repetition av linjära modeller

Spridningsdiagram över antal års erfarenhet och lön.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\times\color{#FF6138}{\text{experience}} + \color{#B12BFF}\epsilon}$

$\normalsize{\color{#00A388}y = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\color{#FF6138}{x_1} + \color{#B12BFF}\epsilon}$

där:
$y$ - responsvariabel (utdata)
$x$ - förklarande variabel (indata)
$\color{#007AFF}{\beta}$ - modellparametrar
$\color{#007AFF}{\beta_0}$ - intercept
$\color{#007AFF}{\beta_1}$ - lutning
$\color{#B12BFF}{\epsilon}$ - slumpmässigt fel

Generaliserade linjära modeller i Python

LINJÄR MODELL - ols()

from statsmodels.formula.api import ols
model = ols(formula = 'y ~ X', 
            data = my_data).fit()

GENERALISERAD LINJÄR MODELL - glm()

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm(formula = 'y ~ X', 
            data = my_data,
            family = sm.families.____).fit()
Generaliserade linjära modeller i Python

Antaganden för linjära modeller

Linjär anpassning till data över antal års erfarenhet och lön.

$$ \normalsize{{\text{salary} = \color{blue}{25790} + \color{blue}{9449}\times\text{experience}}} $$

Regressionsfunktion

$\normalsize{E[y] = \mu = \beta_0 + \beta_1x_1}$

Antaganden

  • Linjär i parametrarna
  • Felen är oberoende och normalfördelade
  • Konstant varians
Generaliserade linjära modeller i Python

Vad händer om ... ?

  • Responsen är binär eller ett räknevärde $\rightarrow \color{red}{\text{INTE kontinuerlig}}$

Fördelningsplot för kontinuerlig, binär och Poisson-fördelad slumpvariabel.

  • Variansen för $y$ är inte konstant $\rightarrow \color{red}{\text{beror på medelvärdet}}$
Generaliserade linjära modeller i Python

Datamängd – skokrabbors häckning

Variabelnamn Beskrivning
sat Antal satelliter i boet
y Det finns minst en satellit i boet; 0/1
weight Honkrabbans vikt i kg
width Honkrabbans bredd i cm
color 1 - ljust mellanbrun, 2 - mellanbrun, 3 - mörkt mellanbrun, 4 - mörk
spine 1 - båda hela, 2 - en sliten eller bruten, 3 - båda slitna eller brutna
1 A. Agresti, An Introduction to Categorical Data Analysis, 2007.
Generaliserade linjära modeller i Python

Linjär modell och binär respons

 

$\text{satellite crab} \sim \text{female crab weight}$

y ~ weight

$P(\text{satellite crab is present})=P(y=1)$

Generaliserade linjära modeller i Python

Linjär modell och binär respons

Spridningsdiagram över honkrabbans vikt och responsen (minst en satellit i närheten).

Generaliserade linjära modeller i Python

Linjär modell och binär respons

Linjär anpassning till data över honkrabbans vikt och responsen (minst en satellit i närheten).

Generaliserade linjära modeller i Python

Linjär modell och binär respons

Avläsning av sannolikhetsvärde för den linjära modellanpassningen av honkrabbans vikt och responsen (minst en satellit i närheten).

Generaliserade linjära modeller i Python

Linjär modell och binära data

GLM (binomial) anpassning tillagd till den linjära anpassningen av honkrabbans vikt och responsen (minst en satellit i närheten).

Generaliserade linjära modeller i Python

Linjär modell och binära data

Avläsning av sannolikhetsvärde för GLM (binomial) modellanpassningen av honkrabbans vikt och responsen (minst en satellit i närheten).

Generaliserade linjära modeller i Python

Från sannolikheter till klasser

Separation av modellutdata utifrån ett definierat sannolikhetsgränsvärde.

Generaliserade linjära modeller i Python

Nu kör vi en övning!

Generaliserade linjära modeller i Python

Preparing Video For Download...