За пределами линейной регрессии

Обобщённые линейные модели в Python

Ita Cirovic Donev

Data Science Consultant

Цели курса

  • Изучить основы GLM
  • Обучать GLM
  • Интерпретировать результаты модели
  • Оценивать качество модели
  • Вычислять прогнозы
  • Глава 1: GLM как расширение линейных моделей
  • Глава 2: Биномиальная (логистическая) регрессия
  • Глава 3: Регрессия Пуассона
  • Глава 4: Многомерная логистическая регрессия
Обобщённые линейные модели в Python

Повторение линейных моделей

Диаграмма рассеяния: опыт работы и зарплата.

$\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}$

Обобщённые линейные модели в Python

Повторение линейных моделей

Диаграмма рассеяния: опыт работы и зарплата.

$\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$

где:
$\color{#00A388}y$ — зависимая переменная (отклик)

Обобщённые линейные модели в Python

Повторение линейных моделей

Диаграмма рассеяния: опыт работы и зарплата.

$\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}$

где:
$y$ — зависимая переменная (отклик)
$\color{#FF6138}x$ — объясняющая переменная (вход)

Обобщённые линейные модели в Python

Повторение линейных моделей

Диаграмма рассеяния: опыт работы и зарплата.

$\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}$

где:
$y$ — зависимая переменная (отклик)
$x$ — объясняющая переменная (вход)
$\color{#007AFF}{\beta}$ — параметры модели
$\color{#007AFF}{\beta_0}$ — свободный член
$\color{#007AFF}{\beta_1}$ — наклон

Обобщённые линейные модели в Python

Повторение линейных моделей

Диаграмма рассеяния: опыт работы и зарплата.

$\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}$

где:
$y$ — зависимая переменная (отклик)
$x$ — объясняющая переменная (вход)
$\color{#007AFF}{\beta}$ — параметры модели
$\color{#007AFF}{\beta_0}$ — свободный член
$\color{#007AFF}{\beta_1}$ — наклон
$\color{#B12BFF}{\epsilon}$ — случайная ошибка

Обобщённые линейные модели в Python

ЛИНЕЙНАЯ МОДЕЛЬ - ols()

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

ОБОБЩЁННАЯ ЛИНЕЙНАЯ МОДЕЛЬ - glm()

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm(formula = 'y ~ X', 
            data = my_data,
            family = sm.families.____).fit()
Обобщённые линейные модели в Python

Допущения линейных моделей

Линейная подгонка к данным об опыте работы и зарплате.

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

Функция регрессии

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

Допущения

  • Линейность по параметрам
  • Ошибки независимы и нормально распределены
  • Постоянство дисперсии
Обобщённые линейные модели в Python

Что если...?

  • Отклик бинарный или счётный $\rightarrow \color{red}{\text{NOT continuous}}$

Гистограмма непрерывной, бинарной и пуассоновской случайной величины.

  • Дисперсия $y$ непостоянна $\rightarrow \color{red}{\text{depends on the mean}}$
Обобщённые линейные модели в Python

Набор данных — гнездование подковообразных крабов

Название переменной Описание
sat Количество краб-спутников в гнезде
y Есть ли хотя бы один краб-спутник в гнезде; 0/1
weight Масса самки краба в кг
width Ширина самки краба в см
color 1 — светло-средний, 2 — средний, 3 — тёмно-средний, 4 — тёмный
spine 1 — оба в норме, 2 — один изношен или сломан, 3 — оба изношены или сломаны
1 A. Agresti, An Introduction to Categorical Data Analysis, 2007.
Обобщённые линейные модели в Python

Линейная модель и бинарный отклик

 

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

y ~ weight

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

Обобщённые линейные модели в Python

Линейная модель и бинарный отклик

Диаграмма рассеяния: масса самки краба и отклик (наличие хотя бы одного краба-спутника).

Обобщённые линейные модели в Python

Линейная модель и бинарный отклик

Линейная подгонка к данным: масса самки краба и отклик (наличие хотя бы одного краба-спутника).

Обобщённые линейные модели в Python

Линейная модель и бинарный отклик

Считывание значения вероятности для линейной модели: масса самки краба и отклик (наличие хотя бы одного краба-спутника).

Обобщённые линейные модели в Python

Линейная модель и бинарные данные

Добавление подгонки GLM (биномиальной) к линейной: масса самки краба и отклик (наличие хотя бы одного краба-спутника).

Обобщённые линейные модели в Python

Линейная модель и бинарные данные

Считывание значения вероятности для GLM (биномиальной): масса самки краба и отклик (наличие хотя бы одного краба-спутника).

Обобщённые линейные модели в Python

От вероятностей к классам

Разделение выходных данных модели по заданному пороговому значению вероятности.

Обобщённые линейные модели в Python

Давайте потренируемся!

Обобщённые линейные модели в Python

Preparing Video For Download...