系数解读

Python 中的广义线性模型

Ita Cirovic Donev

Data Science Consultant

模型系数

拟合模型的统计汇总,突出显示 coef 列。

Python 中的广义线性模型

系数 beta

  • $\beta > 0 \rightarrow$ 上升曲线

砷含量与开关的逻辑拟合。

  • $\beta < 0 \rightarrow$ 下降曲线

distance100 与开关的逻辑拟合。

Python 中的广义线性模型

线性 vs 逻辑

线性模型

glm('y ~ weight', 
    data = crab, 
    family = sm.families.Gaussian())

$\mu = -0.14 + \color{#B21AB4}{0.32}*weight$

weight 每增加 1 个单位

  • $\text{\color{#B21AB4}{估计概率}}$ 增加 0.32

Logit 模型

glm('y ~ weight', 
    data = crab, 
    family = sm.families.Binomial())

$log(odds) = -3.69 + \color{#228FF5}{1.8}*weight$

weight 每增加 1 个单位

  • $\text{\color{#228FF5}{log(odds)}}$ 增加 1.8
Python 中的广义线性模型

对数胜算解读

  • 逻辑回归模型 $$ log(\frac{\mu}{1-\mu}) = \beta_0 + \beta_1x_1 $$

  • 将 $x$ 增加 1 个单位 $$ log(\frac{\mu}{1-\mu}) = \beta_0 + \beta_1\color{blue}{(x_1+1)} $$

Python 中的广义线性模型

对数胜算解读

  • 逻辑回归模型 $$ log(\frac{\mu}{1-\mu}) = \beta_0 + \beta_1x_1 $$

  • 将 $x$ 增加 1 个单位 $$ log(\frac{\mu}{1-\mu}) = \beta_0 + \beta_1\color{blue}{(x_1+1)} = \beta_0 + \color{blue}{\beta_1x_1+\beta_1} $$

  • 取指数 $$ (\frac{\mu}{1-\mu}) = \color{red}{\exp(\beta_0 + \beta_1x_1)}\color{blue}{\exp(\beta_1)} $$

结论 $\rightarrow$ $\color{red}{\text{胜算}}$ 将被 $\color{blue}{\exp(\beta_1)}$ 相乘

Python 中的广义线性模型

对数胜算解读

  • 螃蟹模型 y ~ weight $$ log(\frac{\mu}{1-\mu}) = -3.6947 + \color{blue}{1.815}*weight $$

  • weight 每增加 1 个单位,卫星蟹的胜算被 $\color{blue}{\exp(1.815) = 6.14}$ 相乘

Python 中的广义线性模型

对数胜算解读

  • 螃蟹模型 y ~ weight $$ log(\frac{\mu}{1-\mu}) = \color{blue}{-3.6947} + 1.8151*weight $$

  • weight 每增加 1 个单位,卫星蟹的胜算被 $\exp(1.8151) = 6.14$ 相乘

  • 截距系数 $\color{blue}{-3.6947}$ 表示基线对数胜算
    • 当 $weight = 0$ 时,胜算为 $\color{blue}{\exp(-3.6947)=0.0248}$。
Python 中的广义线性模型

概率 vs 逻辑拟合

学习时长与是否通过测试的散点图及逻辑回归拟合。

Python 中的广义线性模型

概率 vs 逻辑拟合

给定逻辑拟合与自变量取值时,概率的小变化指示。

Python 中的广义线性模型

概率 vs 逻辑拟合

给定逻辑拟合与自变量取值时,概率的大变化指示。

  • 斜率 $\rightarrow \beta \times \mu(1-\mu)$
Python 中的广义线性模型

概率 vs 逻辑拟合

给定逻辑拟合与自变量取值时,概率的最大变化指示。

  • 斜率 $\rightarrow \beta \times \mu(1-\mu)$
Python 中的广义线性模型

计算估计概率的变化量

# Choose x (weight) and extract model coefficients
x = 1.5
intercept, slope = model_GLM.params
# Compute estimated probability
est_prob = np.exp(intercept + slope * x)/(1 + np.exp(intercept + slope * x))
0.2744
# Compute incremental change in estimated probability given x
ic_prob = slope * est_prob * (1 - est_prob)
0.3614
Python 中的广义线性模型

各 x 的概率变化率

$logit = -3.6947 + 1.8151*weight$

Python 中的广义线性模型

Passons à la pratique !

Python 中的广义线性模型

Preparing Video For Download...