カテゴリ変数と交互作用項

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

Ita Cirovic Donev

Data Science Consultant

カテゴリ変数

  • 単純な二値変数
    • Yes, No
  • 名義変数
    • 色: red, green, blue
  • 順序変数
    • 学歴水準: Education1, Education2,...,Education4
Pythonで学ぶ一般化線形モデル

共分散分析

  • 説明変数

    • $x_1$: カテゴリ(二値)
    • $x_2$: 連続
  • ロジスティックモデル $$ \text{logit}(y=1|X)=\beta_0 + \beta_1x_1 + \beta_2x_2 $$

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

共分散分析

  • 説明変数
    • $x_1$: カテゴリ(二値)
    • $x_2$: 連続
  • ロジスティックモデル $$ \text{logit}(y=1|\color{red}{X})=\beta_0 + \beta_1\color{red}{x_1} + \beta_2\color{red}{x_2} $$
Pythonで学ぶ一般化線形モデル

共分散分析

  • 説明変数
    • $x_1$: カテゴリ(二値)
    • $x_2$: 連続
  • ロジスティックモデル $$ \text{logit}(y=1|X)=\beta_0 + \beta_1\color{red}{x_1} + \beta_2x_2 $$

  • $x_1=0$ のとき $$ \text{logit}(y=1|\color{red}{x_1=0},x_2)=\beta_0 + \color{red}{0} + \beta_2x_2 $$

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

共分散分析

  • 説明変数
    • $x_1$: カテゴリ(二値)
    • $x_2$: 連続
  • ロジスティックモデル $$ \text{logit}(y=1|X)=\beta_0 + \beta_1\color{red}{x_1} + \beta_2x_2 $$

  • $x_1=0$ のとき $$ \text{logit}(y=1|x_1=0,x_2)=\beta_0 + 0 + \beta_2x_2 $$

  • $x_1=1$ のとき $$ \text{logit}(y=1|\color{red}{x_1=1},x_2)=\beta_0 + \color{red}{\beta_1} + \beta_2x_2 $$ $$ \text{logit}(y=1|\color{red}{x_1=1},x_2)=(\beta_0 + \color{red}{\beta_1}) + \beta_2x_2 $$

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

前提

交互作用なし(平行な直線)の可視化。

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

前提

交互作用なしモデルでの切片差の強調。

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

前提

交互作用なしモデル

非平行な直線により交互作用項が必要なモデル。

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

交互作用

  • 傾きが異なる → 交互作用 の存在
  • $x_1$ の効果は $x_2$ の水準に依存(逆も同様)
  • 交互作用を許すロジスティックモデル $$ \text{logit}(y=1|X)=\beta_0 + \beta_1x_1 + \beta_2x_2 + \color{red}{\beta_3x_1x_2} $$
Pythonで学ぶ一般化線形モデル

交互作用

  • 傾きが異なる → 交互作用 の存在
  • $x_1$ の効果は $x_2$ の水準に依存(逆も同様)
  • 交互作用を許すロジスティックモデル $$ \text{logit}(y=1|X)=\beta_0 + \beta_1x_1 + \beta_2x_2 + \beta_3x_1x_2 $$

  • $x_1=0$ のとき $$ \text{logit}(y=1|\color{red}{x_1=0},x_2)=\beta_0 + \color{red}{0} + \beta_2x_2 + \color{red}{0} $$

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

交互作用

  • 傾きが異なる → 交互作用 の存在
  • $x_1$ の効果は $x_2$ の水準に依存(逆も同様)
  • 交互作用を許すロジスティックモデル $$ \text{logit}(y=1|X)=\beta_0 + \beta_1x_1 + \beta_2x_2 + \beta_3x_1x_2 $$

  • $x_1=0$ のとき $$ \text{logit}(y=1|x_1=0,x_2)=\beta_0 + \beta_2x_2 $$

  • $x_1=1$ のとき $$ \text{logit}(y=1|\color{red}{x_1=1},x_2)=\beta_0 + \color{red}{\beta_1} + \beta_2x_2 + \color{red}{\beta_3}x_2 $$ $$ \text{logit}(y=1|\color{red}{x_1=1},x_2)=(\beta_0 + \color{red}{\beta_1}) + (\beta_2 + \color{red}{\beta_3})x_2 $$

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

交互作用

  • 傾きが異なる → 交互作用 の存在
  • $x_1$ の効果は $x_2$ の水準に依存(逆も同様)
  • 交互作用を許すロジスティックモデル $$ \text{logit}(y=1|X)=\beta_0 + \beta_1x_1 + \beta_2x_2 + \beta_3x_1x_2 $$

  • $x_1=0$ のとき $$ \text{logit}(y=1|x_1=0,x_2)=\color{red}{\beta_0} + \color{red}{\beta_2}x_2 $$

  • $x_1=1$ のとき $$ \text{logit}(y=1|x_1=1,x_2)=\beta_0 + \beta_1 + \beta_2x_2 + \beta_3x_2 $$ $$ \text{logit}(y=1|x_1=1,x_2)=\color{red}{(\beta_0 + \beta_1)} + \color{red}{(\beta_2 + \beta_3)}x_2 $$

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

交互作用の可視化

交互作用項ありのモデル(非平行な直線)の図示。

交互作用により:

  • $x_1$ ごとに切片と傾きが異なる
  • $\beta_1$: 2つの切片の差
  • $\beta_3$: 2つの傾きの差
Pythonで学ぶ一般化線形モデル

交互作用の種類

  • 二値 × 二値
  • 二値 × カテゴリ
  • 二値 × 連続
  • 連続 × カテゴリ
  • 連続 × 連続
  • カテゴリ × カテゴリ
  • 2変数を超える交互作用
Pythonで学ぶ一般化線形モデル

練習しましょう!

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

Preparing Video For Download...