係数の解釈

Pythonで学ぶ一般化線形モデル

Ita Cirovic Donev

Data Science Consultant

モデルの係数

当てはめたモデルの統計サマリー(coef列を強調)。

Pythonで学ぶ一般化線形モデル

係数 beta

  • $\beta > 0 \rightarrow$ 上昇カーブ

ヒ素とswitchのロジスティック当てはめ。

  • $\beta < 0 \rightarrow$ 下降カーブ

distance100とswitchのロジスティック当てはめ。

Pythonで学ぶ一般化線形モデル

線形 vs ロジスティック

線形モデル

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

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

重さが1増えるごとに

  • $\text{\color{#B21AB4}{推定確率}}$ は0.32増加

ロジットモデル

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

$log(odds) = -3.69 + \color{#228FF5}{1.8}*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 $$

  • 重さが1増えると、サテライトカニのオッズは $\color{blue}{\exp(1.815) = 6.14}$ 倍になる

Pythonで学ぶ一般化線形モデル

対数オッズの解釈

  • カニのモデル y ~ weight $$ log(\frac{\mu}{1-\mu}) = \color{blue}{-3.6947} + 1.8151*weight $$

  • 重さが1増えると、サテライトカニのオッズは $\exp(1.8151) = 6.14$ 倍になる

  • 切片 $\color{blue}{-3.6947}$ は基準の対数オッズを表す
    • $\color{blue}{\exp(-3.6947)=0.0248}$ は $weight = 0$ のときのオッズ
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で学ぶ一般化線形モデル

Ayo berlatih!

Pythonで学ぶ一般化線形モデル

Preparing Video For Download...