Python 中的广义线性模型
Ita Cirovic Donev
Data Science Consultant

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

$\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$ - 响应变量(输出)

$\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$ - 解释变量(输入)

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

$\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}$ - 随机误差
线性模型 - 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()

$$ \normalsize{{\text{salary} = \color{blue}{25790} + \color{blue}{9449}\times\text{experience}}} $$
回归函数
$\normalsize{E[y] = \mu = \beta_0 + \beta_1x_1}$
假设

| 变量名 | 说明 |
|---|---|
sat |
巢中存在的卫星蟹数量 |
y |
巢中至少有一只卫星蟹;0/1 |
weight |
雌蟹体重(kg) |
width |
雌蟹体宽(cm) |
color |
1 - 浅中,2 - 中等,3 - 深中,4 - 深色 |
spine |
1 - 两侧良好,2 - 一侧磨损/断裂,3 - 两侧磨损/断裂 |
$\text{satellite crab} \sim \text{female crab weight}$
y ~ weight
$P(\text{有卫星蟹})=P(y=1)$






Python 中的广义线性模型