超越線性迴歸

Generalized Linear Models in Python

Ita Cirovic Donev

Data Science Consultant

課程目標

  • 認識 GLM 基礎元件
  • 訓練 GLM
  • 解讀模型結果
  • 評估模型效能
  • 計算預測值
  • 第 1 章:GLM 如何擴充線性模型
  • 第 2 章:二項(邏輯斯)迴歸
  • 第 3 章:Poisson 迴歸
  • 第 4 章:多變量邏輯斯迴歸
Generalized Linear Models in 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}$

Generalized Linear Models in 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$

where:
$\color{#00A388}y$ - 反應變數(輸出)

Generalized Linear Models in 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}$

where:
$y$ - 反應變數(輸出)
$\color{#FF6138}x$ - 解釋變數(輸入)

Generalized Linear Models in 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}$

where:
$y$ - 反應變數(輸出)
$x$ - 解釋變數(輸入)
$\color{#007AFF}{\beta}$ - 模型參數
$\color{#007AFF}{\beta_0}$ - 截距
$\color{#007AFF}{\beta_1}$ - 斜率

Generalized Linear Models in 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}$

where:
$y$ - 反應變數(輸出)
$x$ - 解釋變數(輸入)
$\color{#007AFF}{\beta}$ - 模型參數
$\color{#007AFF}{\beta_0}$ - 截距
$\color{#007AFF}{\beta_1}$ - 斜率
$\color{#B12BFF}{\epsilon}$ - 隨機誤差

Generalized Linear Models in Python

LINEAR MODEL - ols()

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

GENERALIZED LINEAR MODEL - glm()

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm(formula = 'y ~ X', 
            data = my_data,
            family = sm.families.____).fit()
Generalized Linear Models in Python

線性模型的假設

以線性方式擬合工作年資與薪資資料。

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

迴歸函式

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

假設

  • 參數線性
  • 誤差彼此獨立且為常態分佈
  • 變異數恆定
Generalized Linear Models in Python

如果……會怎樣?

  • 反應為二元或計數型 $\rightarrow \color{red}{\text{非連續型}}$

連續、二元與 Poisson 隨機變數的分布圖。

  • $y$ 的變異數不恆定 $\rightarrow \color{red}{\text{依賴平均數}}$
Generalized Linear Models in Python

資料集-鱟的築巢行為

Variable Name Description
sat 巢中共生的雄蟹(satellite)數量
y 巢中是否至少有一隻共生雄蟹;0/1
weight 雌蟹重量(kg)
width 雌蟹寬度(cm)
color 1 - 淺中、2 - 中等、3 - 深中、4 - 深色
spine 1 - 兩側良好、2 - 一側磨損或斷裂、3 - 兩側磨損或斷裂
1 A. Agresti, An Introduction to Categorical Data Analysis, 2007.
Generalized Linear Models in Python

線性模型與二元反應

 

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

y ~ weight

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

Generalized Linear Models in Python

線性模型與二元反應

雌蟹重量與反應(至少一隻共生雄蟹)的散佈圖。

Generalized Linear Models in Python

線性模型與二元反應

以線性方式擬合雌蟹重量與反應(至少一隻共生雄蟹)的資料。

Generalized Linear Models in Python

線性模型與二元反應

讀取線性模型下雌蟹重量與反應(至少一隻共生雄蟹)的機率值。

Generalized Linear Models in Python

線性模型與二元資料

在雌蟹重量與反應資料上,將 GLM(二項)擬合加入線性擬合的比較。

Generalized Linear Models in Python

線性模型與二元資料

讀取 GLM(二項)模型下雌蟹重量與反應(至少一隻共生雄蟹)的機率值。

Generalized Linear Models in Python

由機率轉為類別

依機率臨界值劃分模型輸出。

Generalized Linear Models in Python

一起來練習吧!

Generalized Linear Models in Python

Preparing Video For Download...