マクロ政治データ分析実習

第12回 交互作用

(そん)  財泫(じぇひょん)

関西大学総合情報学部

2023-12-21

授業開始前に

すぐに実習できるように準備しておきましょう。

  1. JDCat分析ツールを起動しておいてください。
  2. 本日授業用のプロジェクトを作成するか、既存のプロジェクトを開いてください。
  3. LMSから実習用データをダウンロードしておいてください。
  4. ダウンロードしてデータをプロジェクト・フォルダーにアップロードしてください。
    • プロジェクト・フォルダー内にDataフォルダーを作成し、そこにアップロードしましょう。
  5. 実習用コードを入力するスクリプト、またはQuarto(or R Markdown)ファイルを開き、以下のコードを入力&実行してください(コピペ可)。
library(tidyverse)
library(summarytools)
library(marginaleffects)

jes_df <- read_csv("Data/JES6_W1_2.csv")
  • トラブルが生じた場合、速やかにTAを読んでください。
  • 時間に余裕があれば、スライド内のコードも書いておきましょう。

交互作用とは

交互作用とは

主な説明変数(\(X\))と応答変数(\(Y\))の関係において、\(X\)\(Y\)に与える影響がその他の変数(\(Z\))の影響を受ける場合

  • \(Z\)調整変数 (moderation variable; moderator)と呼ばれる。
    • 調整変数はダミー変数でも、連続変数でも可能
    • \(X\)\(Y\)に与える影響は\(Z\)によって変わる。
  • 例)\(Z=1\)の場合、\(X\)が1上がると\(Y\)は2上がるが、\(Z=2\)の場合、\(X\)が1上がると\(Y\)は5上がる。
    • \(\Rightarrow\) \(Z\)の値によって\(X \rightarrow Y\)の効果(傾き)が変わる。

回帰分析における交互作用

説明変数、調整変数、交差項を投入した回帰モデル

\[ \hat{Y} = \alpha + \beta_1 X + \beta_2 Z + \beta_3 X \cdot Z \]

  • 交差項 (interaction term)
    • 説明変数に調整変数をかけた変数 ( \(X \cdot Z\) )
  • 変数\(X\)\(Y\)に与える効果は\(\beta_1\)? \(\leftarrow\) 間違い
    • 回帰式において\(X\)\(\beta_3\)にも登場する。
    • 式を変形すると…

\[ \hat{Y} = \alpha + (\beta_1 + \beta_3 Z) X + \beta_2 Z \]

  • 変数\(X\)\(Y\)に与える効果は \(\beta_1 + \beta_3 Z\)
    • \(\Rightarrow\) 変数\(X\)\(Y\)に与える影響は\(Z\)の影響を受ける。

調整変数がダミー変数の場合

調整変数\(Z\)が0、または1の値のみをとるダミー変数の場合(\(Z \in \{0, 1\}\)

\[ \hat{Y} = \alpha + \beta_1 X + \beta_2 Z + \beta_3 X \cdot Z \]

  • 調整変数(\(Z\))が0か1かによって、\(X\)\(Y\)に与える影響が変化する。
  • \(Z = 0\)の場合:\(\hat{Y} = \alpha + \beta_1 X + \beta_2 Z\)
    • \(X\)\(Y\) に与える影響は\(\beta_1\)
  • \(Z = 1\)の場合:\(\hat{Y} = \alpha + \beta_1 X + \beta_2 Z + \beta_3 X = \alpha + (\beta_1 + \beta_3) X + \beta_2 Z\)
    • \(X\)\(Y\)に与える影響は\(\beta_1 + \beta_3\)

調整変数がダミー変数の場合

以下のモデルの場合…

\[ \begin{align} \hat{Y} & = 3 + 2 X + 1 Z + 3 X \cdot Z \\ & = 3 + (2 + 3Z) X + 1 Z \end{align} \]

  • \(X\)の係数は\(2 + 3Z\)
  • \(Z = 0\)なら… (赤)
    • \(X\)が1上がると、\(Y\)は2上がる。
    • \(\hat{Y} = 3 + 2X + 1Z\)であるため
  • \(Z = 1\)なら… (青)
    • \(X\)が1上がると、\(Y\)は5上がる。
    • \(\hat{Y} = 3 + 5X + 1Z\)であるため
  • \(\Rightarrow\) \(Z\)の値に応じて\(X\)の傾きが変化する。

調整変数が連続変数の場合

調整変数\(Z\)が無数の値をとる連続変数の場合

\[ \hat{Y} = \alpha + \beta_1 X + \beta_2 Z + \beta_3 X \cdot Z \]

  • 調整変数(\(Z\))の値によって、\(X\)\(Y\)に与える影響が変化する。
  • \(Z\)が1の場合:\(\hat{Y} = \alpha + \beta_1 X + \beta_2 Z + \beta_3 X \cdot 1 = \alpha + (\beta_1 + \beta_3) X + \beta_2 Z\)
    • \(X\)\(Y\)に与える影響は\(\beta_1 + 1\beta_3\)
  • \(Z\)が2.5の場合:\(\hat{Y} = \alpha + \beta_1 X + \beta_2 Z + \beta_3 2.5 \cdot X = \alpha + (\beta_1 + 2.5\beta_3) X + \beta_2 Z\)
    • \(X\)\(Y\)に与える影響は\(\beta_1 + 2.5\beta_3\)
  • \(Z\)が6の場合:\(\hat{Y} = \alpha + \beta_1 X + \beta_2 Z + \beta_3 6 \cdot X = \alpha + (\beta_1 + 6\beta_3) X + \beta_2 Z\)
    • \(X\)\(Y\)に与える影響は\(\beta_1 + 6\beta_3\)
  • 無数のケースがあり得る。

調整変数が連続変数の場合

以下のモデルの場合…

\[ \begin{align} \hat{Y} & = 2 + 3 X + 2 Z - 1 X \cdot Z \\ & = 2 + (3 - 1Z) X + 2 Z \end{align} \]

  • \(X\)の係数は\(3 - Z\)
  • \(Z = -1\)なら\(X\)の係数は\(3 - (-1) = 4\)(赤)
    • \(X\)が1上がると、\(Y\)は4上がる。
    • \(\hat{Y} = 2 + 4X + 2Z\)であるため
  • \(Z = 2\)なら\(X\)の係数は\(3 - 2 = 1\)(緑)
    • \(X\)が1上がると、\(Y\)は1上がる。
    • \(\hat{Y} = 2 + 1X + 2Z\)であるため
  • \(Z = 3.5\)なら\(X\)の係数は\(3 - 3.5 = -0.5\)(青)
    • \(X\)が1上がると、\(Y\)は0.5下がる。
    • \(\hat{Y} = 2 - 0.5 X + 2Z\)であるため

交差項を入れた回帰分析

実習用データ

library(tidyverse)
jes_df <- read_csv("Data/JES6_W1_2.csv")

jes_df
# A tibble: 3,000 × 6
   TempKyosan Female   Age Satisfaction Interest Ideology
        <dbl>  <dbl> <dbl>        <dbl>    <dbl>    <dbl>
 1         20      1    69            4        4        9
 2         20      1    47            1        1        7
 3          0      1    37            3        3       11
 4          0      0    51            4        3       11
 5         20      0    38            2        3        7
 6          0      0    71            5        4       11
 7         10      0    47            3        3        9
 8          0      0    71            4        4       11
 9         25      0    75            3        4        9
10         40      1    66            2        3        6
# ℹ 2,990 more rows

実習用データの概要

変数 説明 備考
TempKyosan 日本共産党に対する感情温度 高いほど好感
Female 女性ダミー 0: 男性 / 1: 女性
Age 回答者の年齢
Satisfaction 政治満足度 高いほど満足
Interest 回答者の政治関心 高いほど関心あり
Ideology 回答者のイデオロギー 高いほど保守的

記述統計量

今回のデータはすべて連続変数扱いとなるため、前処理は不要

  • 名目変数もダミー変数になると連続変数と同じ扱いでOK
jes_df |>
  descr(stats = c("mean", "sd", "min", "max", "n.valid"),
        transpose = TRUE, order = "p")
Descriptive Statistics  
jes_df  
N: 3000  

                      Mean   Std.Dev     Min      Max   N.Valid
------------------ ------- --------- ------- -------- ---------
        TempKyosan   26.88     24.95    0.00   100.00   3000.00
            Female    0.50      0.50    0.00     1.00   3000.00
               Age   47.34     15.63   18.00    75.00   3000.00
      Satisfaction    2.45      1.08    1.00     5.00   3000.00
          Interest    2.74      0.83    1.00     4.00   3000.00
          Ideology    6.34      2.10    1.00    11.00   3000.00

問題設定

 政治満足度が共産党に対する感情温度に与える影響を調べたい。ただし、この影響は一定ではなく、性別や年齢によって異なるかも知れない。政治満足度が共産党に対する感情温度に与える影響の不均一性を調べるためにはどうすれば良いだろうか。仮説検定に使用する有意水準は5%とする(\(\alpha = 0.05\))。

モデル1

  • 応答変数:共産党に対する感情温度(TempKoysan
  • 主な説明変数:政治満足度(Satisfaction
  • 調整変数:女性ダミーFemale\(\leftarrow\) ダミー変数(二値変数)
  • 統制変数:政治関心(Interest)、イデオロギー(Ideology)、年齢(Age

モデル2

  • 応答変数:共産党に対する感情温度(TempKoysan
  • 主な説明変数:政治満足度(Satisfaction
  • 調整変数:年齢Age\(\leftarrow\) 連続変数
  • 統制変数:政治関心(Interest)、イデオロギー(Ideology)、女性ダミー(Female

調整変数がダミー変数の場合(モデル1)

政治満足度(= 説明変数)が共産党に対する感情温度(= 応答変数)に与える影響は性別(= 調整変数)によって変わる。

調整変数がダミー変数の場合の回帰式(モデル1)

\[ \widehat{\mbox{TempKyosan}} = \alpha + \beta_1 \mbox{Satisfaction} + \beta_2 \mbox{Female} + \beta_3 \mbox{Interest} + \beta_4 \mbox{Ideology} + \beta_5 \mbox{Age} + \beta_6 (\mbox{Satisfaction} \cdot \mbox{Female}) \]

調整変数が連続変数の場合(モデル2)

政治満足度(= 説明変数)が共産党に対する感情温度(= 応答変数)に与える影響は年齢(= 調整変数)によって変わる。

調整変数が連続変数の場合の回帰式(モデル2)

\[ \widehat{\mbox{TempKyosan}} = \alpha + \beta_1 \mbox{Satisfaction} + \beta_2 \mbox{Age} + \beta_3 \mbox{Interest} + \beta_4 \mbox{Ideology} + \beta_5 \mbox{Female} + \beta_6 (\mbox{Satisfaction} \cdot \mbox{Age}) \]

交差項を入れた回帰分析の推定方法

lm()内の回帰式(formula)に2つの変数を*でつなぐだけ

  • A * Bは説明変数としてABA\(\times\)Bが同時に投入することを意味する。
fit1 <- lm(TempKyosan ~ Satisfaction * Female + Interest + Ideology + Age, data = jes_df)
fit2 <- lm(TempKyosan ~ Satisfaction * Age + Interest + Ideology + Female + Age, data = jes_df)


summary(fit1)
係数 標準誤差 t値 p値
切片 49.275 2.587 19.047 < 0.001
政治満足度 −4.732 0.561 −8.429 < 0.001
女性 2.752 2.186 1.259 0.208
政治関心 0.217 0.571 0.381 0.703
イデオロギー −1.887 0.214 −8.815 < 0.001
年齢 −0.040 0.030 −1.347 0.178
政治満足度 * 女性 0.902 0.817 1.104 0.270
summary(fit2)
係数 標準誤差 t値 p値
切片 28.250 4.164 6.784 < 0.001
政治満足度 3.308 1.354 2.442 0.015
年齢 0.357 0.073 4.877 < 0.001
政治関心 −0.118 0.570 −0.207 0.836
イデオロギー −1.690 0.215 −7.845 < 0.001
女性 5.061 0.888 5.698 < 0.001
政治満足度 * 年齢 −0.157 0.026 −5.920 < 0.001

調整変数がダミー変数の場合(fit1

  • 推定結果
    • 共産に対する感情温度の予測値 = 49.28 - 4.73 \(\times\) 政治満足度 + 2.75 \(\times\) 女性ダミー + 0.22 \(\times\) 政治関心 - 1.89 \(\times\) イデオロギー - 0.04 \(\times\) 年齢 + 0.90 \(\times\) 政治満足度 \(\times\) 女性ダミー
    • 共産に対する感情温度の予測値 = 49.28 - (4.73 - 0.90 \(\times\) 女性ダミー) \(\times\) 政治満足度 + 2.75 \(\times\) 女性ダミー + 0.22 \(\times\) 政治関心 - 1.89 \(\times\) イデオロギー - 0.04 \(\times\) 年齢


  • 政治満足度が共産感情温度に与える影響:-(4.73 - 0.90 \(\times\) 女性ダミーの値)
    • 男性の場合(女性ダミーの値 = 0):-(4.73 - 0.90 \(\times\) 0) = -4.73
      • 男性の場合、政治満足度が1単位上がると、共産に対する感情温度は約4.73度下がる。
    • 女性の場合(女性ダミーの値 = 1):-(4.73 - 0.90 \(\times\) 1) = -3.83
      • 女性の場合、政治満足度が1単位上がると、共産に対する感情温度は約3.83度下がる。
    • \(\rightarrow\) 政治満足度が共産に対する感情温度に与える影響は性別によって変わる。

調整変数がダミー変数の場合(fit1

fit1_pred <- predictions(fit1, newdata = datagrid(Satisfaction = 1:5, 
                                                  Female       = 0:1))
fit1_pred |> 
  mutate(Female = if_else(Female == 1, "女性", "男性")) |>
  ggplot() +
  geom_pointrange(aes(x = Satisfaction, y = estimate,
                      ymin = conf.low, ymax = conf.high, color = Female),
                  position = position_dodge2(0.5)) +
  labs(x = "政治満足度", y = "共産感情温度の予測値と95%信頼区間 (度)",
       fill = "", color = "") +
  theme_bw() +
  theme(legend.position = "bottom")

調整変数が連続変数の場合(fit2

  • 推定結果
    • 共産に対する感情温度の予測値 = 28.25 + 3.31 \(\times\) 政治満足度 + 0.37 \(\times\) 年齢 - 0.12 \(\times\) 政治関心 - 1.69 \(\times\) イデオロギー + 5.06 \(\times\) 女性ダミー - 0.16 \(\times\) 政治満足度 \(\times\) 年齢
    • 共産に対する感情温度の予測値 = 28.25 + (3.31 - 0.16 \(\times\) 年齢) \(\times\) 政治満足度 + 0.37 \(\times\) 年齢 - 0.12 \(\times\) 政治関心 - 1.69 \(\times\) イデオロギー + 5.06 \(\times\) 女性ダミー


  • 政治満足度が共産感情温度に与える影響 = (3.31 - 0.16 \(\times\) 年齢の値)
    • 20歳の場合(Ageの値 = 20):3.31 - 0.16 \(\times\) 20 = 0.11
      • 20歳の場合、政治満足度が1単位上がると、共産に対する感情温度は約0.11度上がる。
    • 40歳の場合(Ageの値 = 40):3.31 - 0.16 \(\times\) 40 = -3.09
      • 40歳の場合、政治満足度が1単位上がると、共産に対する感情温度は約3.09度下がる。
    • 60歳の場合(Ageの値 = 60):3.31 - 0.16 \(\times\) 60 = -6.29
      • 60歳の場合、政治満足度が1単位上がると、共産に対する感情温度は約6.29度下がる。
    • \(\rightarrow\) 政治満足度が共産に対する感情温度に与える影響は年齢によって変わる。

調整変数が連続変数の場合 (fit2)

fit2_pred <- predictions(fit2, newdata = datagrid(Satisfaction = 1:5, 
                                                  Age          = c(20, 40, 60)))
fit2_pred |> 
  mutate(Age = factor(Age, levels = c(20, 40, 60),
                      labels = c("20歳", "40歳", "60歳"))) |>
  ggplot(aes(x = Satisfaction)) +
  geom_ribbon(aes(y = estimate, ymin = conf.low, ymax = conf.high,
                  fill = Age), alpha = 0.3) +
  geom_line(aes(y = estimate, color = Age), linewidth = 1) +
  labs(x = "政治満足度", y = "共産感情温度の予測値と95%信頼区間 (度)",
       fill = "", color = "") +
  theme_bw() +
  theme(legend.position = "bottom")

交差項の解釈と限界効果

交互作用をどう報告するか

交互作用: 説明変数が応答変数に与える影響は調整変数の値によって変わる

  • \(X\)\(Y\)に与える影響の統計的有意性を検定する際に用いられる検定統計量は「\(X\)の係数 / \(X\)の標準誤差」であるが、ここでの\(X\)の係数と標準誤差は\(Z\)の値によって変わる。
    • \(\Rightarrow\) \(Z\)の値によって\(X\)\(Y\)に与える影響の統計的有意性は変わる。
  • 調整変数の値ごとに、説明変数が応答変数に与える影響(= 限界効果; marginal effects)と95%信頼区間を図示する。
    • 仮説検定に使用する有意水準(\(\alpha\))が0.1なら90%信頼区間、0.01なら99%信頼区間を使用

{marginaleffect}パッケージを用いた限界効果の計算

{marginaleffect}パッケージのslopes()関数

slopes(回帰オブジェクト名, variables = "説明変数名", 
       newdata = datagrid(調整変数名 = 調整変数の値))
  • variablesには説明変数名を指定する(変数名は"で囲むこと)
  • fit1の場合:調整変数(Female)の値が0と1の場合の限界効果
    • datagrid(Female = c(0, 1))、またはdatagrid(Female = 0:1)
  • fit2の場合:調整変数(Age)の値が18、19、20、…、75の場合の限界効果
    • datagrid(Age = 18:75)
  • 限界効果はestimate列、\(p\)値はp.value列、95%信頼区間はconf.low(下限)とconf.high(上限)
  • 仮説検定に使用する有意水準(\(\alpha\))が0.1なconf_level = 0.9、0.01ならconf_level = 0.99を追加

調整変数がダミー変数の場合 (fit1)

性別と関係なく、政治満足度は共産感情温度に負の影響を与える。

fit1_ame <- slopes(fit1, variables = "Satisfaction", 
                   newdata = datagrid(Female = c(0, 1)))

fit1_ame

         Term Female Estimate Std. Error     z Pr(>|z|)    S 2.5 % 97.5 %
 Satisfaction      0    -4.73      0.561 -8.43   <0.001 54.7 -5.83  -3.63
 Satisfaction      1    -3.83      0.611 -6.27   <0.001 31.3 -5.03  -2.63

Columns: rowid, term, estimate, std.error, statistic, p.value, s.value, conf.low, conf.high, Female, predicted_lo, predicted_hi, predicted, TempKyosan, Satisfaction, Interest, Ideology, Age 
Type:  response 
  • Femaleの値が0の場合
    • Satisfactionが1単位上がるとTempKyosanは約-4.73度下がり、\(\alpha = 0.05\)の水準で統計的に有意である。
  • Femaleの値が1の場合
    • Satisfactionが1単位上がるとTempKyosanは約-3.83度下がり、\(\alpha = 0.05\)の水準で統計的に有意である。

調整変数が連続変数の場合(fit2

fit2_ame <- slopes(fit2, variables = "Satisfaction", 
                   newdata = datagrid(Age = 18:75))

fit2_ame

         Term Age Estimate Std. Error        z Pr(>|z|)   S  2.5 % 97.5 %
 Satisfaction  18   0.4860      0.913   0.5323    0.595 0.8  -1.30   2.28
 Satisfaction  19   0.3292      0.890   0.3700    0.711 0.5  -1.42   2.07
 Satisfaction  20   0.1725      0.866   0.1992    0.842 0.2  -1.53   1.87
 Satisfaction  21   0.0157      0.843   0.0186    0.985 0.0  -1.64   1.67
 Satisfaction  22  -0.1411      0.820  -0.1720    0.863 0.2  -1.75   1.47
--- 48 rows omitted. See ?avg_slopes and ?print.marginaleffects --- 
 Satisfaction  71  -7.8227      0.724 -10.8071   <0.001 88.0  -9.24  -6.40
 Satisfaction  72  -7.9795      0.746 -10.7029   <0.001 86.4  -9.44  -6.52
 Satisfaction  73  -8.1362      0.768 -10.5965   <0.001 84.7  -9.64  -6.63
 Satisfaction  74  -8.2930      0.791 -10.4875   <0.001 83.1  -9.84  -6.74
 Satisfaction  75  -8.4498      0.813 -10.3960   <0.001 81.7 -10.04  -6.86
Columns: rowid, term, estimate, std.error, statistic, p.value, s.value, conf.low, conf.high, Age, predicted_lo, predicted_hi, predicted, TempKyosan, Satisfaction, Interest, Ideology, Female 
Type:  response 
  • Ageが18の場合、SatisfactionTempKyosanに影響を与えているとは言えない(\(p \geq 0.05\)のため)。
  • Ageが19の場合、SatisfactionTempKyosanに影響を与えているとは言えない(\(p \geq 0.05\)のため)。
  • …(省略)…
  • Ageが75の場合、Satisfactionが1単位上がるとTempKyosanは約-8.4度下がり、\(\alpha = 0.05\)の水準で統計的に有意である。

省略された行の表示

print()内にtopn = Infを追加する。

print(fit2_ame, topn = Inf)

         Term Age Estimate Std. Error        z Pr(>|z|)     S  2.5 %  97.5 %
 Satisfaction  18   0.4860      0.913   0.5323  0.59453   0.8  -1.30  2.2756
 Satisfaction  19   0.3292      0.890   0.3700  0.71142   0.5  -1.42  2.0736
 Satisfaction  20   0.1725      0.866   0.1992  0.84214   0.2  -1.53  1.8700
 Satisfaction  21   0.0157      0.843   0.0186  0.98513   0.0  -1.64  1.6681
 Satisfaction  22  -0.1411      0.820  -0.1720  0.86345   0.2  -1.75  1.4664
 Satisfaction  23  -0.2978      0.797  -0.3735  0.70878   0.5  -1.86  1.2650
 Satisfaction  24  -0.4546      0.775  -0.5866  0.55747   0.8  -1.97  1.0643
 Satisfaction  25  -0.6114      0.753  -0.8121  0.41676   1.3  -2.09  0.8642
 Satisfaction  26  -0.7681      0.731  -1.0506  0.29346   1.8  -2.20  0.6649
 Satisfaction  27  -0.9249      0.709  -1.3038  0.19230   2.4  -2.32  0.4655
 Satisfaction  28  -1.0817      0.688  -1.5718  0.11599   3.1  -2.43  0.2671
 Satisfaction  29  -1.2384      0.667  -1.8567  0.06336   4.0  -2.55  0.0689
 Satisfaction  30  -1.3952      0.646  -2.1589  0.03086   5.0  -2.66 -0.1286
 Satisfaction  31  -1.5520      0.627  -2.4754  0.01331   6.2  -2.78 -0.3232
 Satisfaction  32  -1.7087      0.608  -2.8102  0.00495   7.7  -2.90 -0.5170
 Satisfaction  33  -1.8655      0.588  -3.1710  0.00152   9.4  -3.02 -0.7124
 Satisfaction  34  -2.0223      0.570  -3.5507  < 0.001  11.3  -3.14 -0.9060
 Satisfaction  35  -2.1790      0.552  -3.9465  < 0.001  13.6  -3.26 -1.0969
 Satisfaction  36  -2.3358      0.535  -4.3637  < 0.001  16.3  -3.38 -1.2867
 Satisfaction  37  -2.4926      0.519  -4.8017  < 0.001  19.3  -3.51 -1.4752
 Satisfaction  38  -2.6493      0.504  -5.2573  < 0.001  22.7  -3.64 -1.6616
 Satisfaction  39  -2.8061      0.490  -5.7325  < 0.001  26.6  -3.77 -1.8467
 Satisfaction  40  -2.9629      0.476  -6.2219  < 0.001  30.9  -3.90 -2.0295
 Satisfaction  41  -3.1196      0.464  -6.7230  < 0.001  35.7  -4.03 -2.2102
 Satisfaction  42  -3.2764      0.453  -7.2319  < 0.001  40.9  -4.16 -2.3885
 Satisfaction  43  -3.4332      0.443  -7.7476  < 0.001  46.6  -4.30 -2.5647
 Satisfaction  44  -3.5900      0.435  -8.2483  < 0.001  52.5  -4.44 -2.7369
 Satisfaction  45  -3.7467      0.428  -8.7458  < 0.001  58.6  -4.59 -2.9071
 Satisfaction  46  -3.9035      0.424  -9.2165  < 0.001  64.8  -4.73 -3.0734
 Satisfaction  47  -4.0603      0.420  -9.6765  < 0.001  71.2  -4.88 -3.2379
 Satisfaction  48  -4.2170      0.418 -10.0965  < 0.001  77.2  -5.04 -3.3984
 Satisfaction  49  -4.3738      0.417 -10.4787  < 0.001  82.9  -5.19 -3.5557
 Satisfaction  50  -4.5306      0.419 -10.8114  < 0.001  88.1  -5.35 -3.7092
 Satisfaction  51  -4.6873      0.422 -11.1103  < 0.001  92.9  -5.51 -3.8604
 Satisfaction  52  -4.8441      0.427 -11.3534  < 0.001  96.8  -5.68 -4.0078
 Satisfaction  53  -5.0009      0.433 -11.5539  < 0.001 100.2  -5.85 -4.1525
 Satisfaction  54  -5.1576      0.441 -11.7037  < 0.001 102.7  -6.02 -4.2939
 Satisfaction  55  -5.3144      0.450 -11.8161  < 0.001 104.6  -6.20 -4.4329
 Satisfaction  56  -5.4712      0.461 -11.8789  < 0.001 105.7  -6.37 -4.5685
 Satisfaction  57  -5.6279      0.472 -11.9191  < 0.001 106.4  -6.55 -4.7025
 Satisfaction  58  -5.7847      0.485 -11.9240  < 0.001 106.5  -6.74 -4.8339
 Satisfaction  59  -5.9415      0.499 -11.9041  < 0.001 106.1  -6.92 -4.9632
 Satisfaction  60  -6.0982      0.514 -11.8646  < 0.001 105.4  -7.11 -5.0908
 Satisfaction  61  -6.2550      0.530 -11.7955  < 0.001 104.3  -7.29 -5.2157
 Satisfaction  62  -6.4118      0.547 -11.7245  < 0.001 103.0  -7.48 -5.3399
 Satisfaction  63  -6.5685      0.564 -11.6421  < 0.001 101.6  -7.67 -5.4627
 Satisfaction  64  -6.7253      0.582 -11.5471  < 0.001 100.0  -7.87 -5.5838
 Satisfaction  65  -6.8821      0.601 -11.4468  < 0.001  98.4  -8.06 -5.7037
 Satisfaction  66  -7.0388      0.620 -11.3461  < 0.001  96.7  -8.25 -5.8229
 Satisfaction  67  -7.1956      0.640 -11.2416  < 0.001  95.0  -8.45 -5.9411
 Satisfaction  68  -7.3524      0.661 -11.1268  < 0.001  93.1  -8.65 -6.0573
 Satisfaction  69  -7.5092      0.682 -11.0140  < 0.001  91.3  -8.85 -6.1729
 Satisfaction  70  -7.6659      0.702 -10.9129  < 0.001  89.7  -9.04 -6.2891
 Satisfaction  71  -7.8227      0.724 -10.8071  < 0.001  88.0  -9.24 -6.4040
 Satisfaction  72  -7.9795      0.746 -10.7029  < 0.001  86.4  -9.44 -6.5182
 Satisfaction  73  -8.1362      0.768 -10.5965  < 0.001  84.7  -9.64 -6.6313
 Satisfaction  74  -8.2930      0.791 -10.4875  < 0.001  83.1  -9.84 -6.7432
 Satisfaction  75  -8.4498      0.813 -10.3960  < 0.001  81.7 -10.04 -6.8567

Columns: rowid, term, estimate, std.error, statistic, p.value, s.value, conf.low, conf.high, Age, predicted_lo, predicted_hi, predicted, TempKyosan, Satisfaction, Interest, Ideology, Female 
Type:  response 
  • 30歳未満の場合、政治満足度(Satisfaction)は共産感情温度(TempKyosan)に影響を与えるとは言えない。
  • 30歳以上の場合のみ、政治満足度は共産感情温度に負の影響を与える。

限界効果の可視化と解釈

可視化

  • 調整変数の値が…
    • 少数の場合(10個以内)はpoint-rangeプロット(ここではfit1_ame
    • 多数の場合(11個以上)はリボン+折れ線グラフを使用(ここではfit2_ame
  • \(y = 0\)の水平線を追加すると解釈しやすくなる。
    • geom_hline(yintercept = 0)レイヤーを追加

解釈

  • 解釈の際は具体的な数値(ここだとfit1_amefit2_ame)と図両方を見る必要がある。
    • とりわけ、調整変数(\(Z\))が連続変数の場合、「\(Z\)がいくらになれば限界効果が統計的に有意になるか」などを判断するために、具体的な数値を見る必要がある。
  • 95%信頼区間内に0が含まれていれば、説明変数は応答変数に影響を与えるとは言えないと解釈
  • 0が95%信頼区間外にあれば、説明変数は応答変数に影響を与えると解釈可能

fit1_ameの例

print(fit1_ame)

         Term Female Estimate Std. Error     z Pr(>|z|)    S 2.5 % 97.5 %
 Satisfaction      0    -4.73      0.561 -8.43   <0.001 54.7 -5.83  -3.63
 Satisfaction      1    -3.83      0.611 -6.27   <0.001 31.3 -5.03  -2.63

Columns: rowid, term, estimate, std.error, statistic, p.value, s.value, conf.low, conf.high, Female, predicted_lo, predicted_hi, predicted, TempKyosan, Satisfaction, Interest, Ideology, Age 
Type:  response 
fit1_ame |>
  ggplot() +
  geom_hline(yintercept = 0) +
  geom_pointrange(aes(x = Female, y = estimate, 
                      ymin = conf.low, ymax = conf.high),
                  size = 1, linewidth = 1) +
  scale_x_continuous(breaks = 0:1,
                     labels = c("男性", "女性")) +
  labs(x = "性別", y = "政治満足度の平均限界効果と95%信頼区間") +
  theme_bw(base_size = 12)

fit1_ameの中身と図、両方を見て解釈する。

  • 男女関係なく、政治満足度と共産党に対する感情温度の間には統計的に有意な負の関係が見られる。つまり、政治満足度が高い回答者ほど、共産党に対する感情温度は低い傾向がある。たとえば、男性は政治満足度が1単位上がると、共産党に対する感情温度は約4.73度低くなり、女性のそれは約3.83度である。

fit2_ameの例

print(fit2_ame, topn = Inf)

         Term Age Estimate Std. Error        z Pr(>|z|)     S  2.5 %  97.5 %
 Satisfaction  18   0.4860      0.913   0.5323  0.59453   0.8  -1.30  2.2756
 Satisfaction  19   0.3292      0.890   0.3700  0.71142   0.5  -1.42  2.0736
 Satisfaction  20   0.1725      0.866   0.1992  0.84214   0.2  -1.53  1.8700
 Satisfaction  21   0.0157      0.843   0.0186  0.98513   0.0  -1.64  1.6681
 Satisfaction  22  -0.1411      0.820  -0.1720  0.86345   0.2  -1.75  1.4664
 Satisfaction  23  -0.2978      0.797  -0.3735  0.70878   0.5  -1.86  1.2650
 Satisfaction  24  -0.4546      0.775  -0.5866  0.55747   0.8  -1.97  1.0643
 Satisfaction  25  -0.6114      0.753  -0.8121  0.41676   1.3  -2.09  0.8642
 Satisfaction  26  -0.7681      0.731  -1.0506  0.29346   1.8  -2.20  0.6649
 Satisfaction  27  -0.9249      0.709  -1.3038  0.19230   2.4  -2.32  0.4655
 Satisfaction  28  -1.0817      0.688  -1.5718  0.11599   3.1  -2.43  0.2671
 Satisfaction  29  -1.2384      0.667  -1.8567  0.06336   4.0  -2.55  0.0689
 Satisfaction  30  -1.3952      0.646  -2.1589  0.03086   5.0  -2.66 -0.1286
 Satisfaction  31  -1.5520      0.627  -2.4754  0.01331   6.2  -2.78 -0.3232
 Satisfaction  32  -1.7087      0.608  -2.8102  0.00495   7.7  -2.90 -0.5170
 Satisfaction  33  -1.8655      0.588  -3.1710  0.00152   9.4  -3.02 -0.7124
 Satisfaction  34  -2.0223      0.570  -3.5507  < 0.001  11.3  -3.14 -0.9060
 Satisfaction  35  -2.1790      0.552  -3.9465  < 0.001  13.6  -3.26 -1.0969
 Satisfaction  36  -2.3358      0.535  -4.3637  < 0.001  16.3  -3.38 -1.2867
 Satisfaction  37  -2.4926      0.519  -4.8017  < 0.001  19.3  -3.51 -1.4752
 Satisfaction  38  -2.6493      0.504  -5.2573  < 0.001  22.7  -3.64 -1.6616
 Satisfaction  39  -2.8061      0.490  -5.7325  < 0.001  26.6  -3.77 -1.8467
 Satisfaction  40  -2.9629      0.476  -6.2219  < 0.001  30.9  -3.90 -2.0295
 Satisfaction  41  -3.1196      0.464  -6.7230  < 0.001  35.7  -4.03 -2.2102
 Satisfaction  42  -3.2764      0.453  -7.2319  < 0.001  40.9  -4.16 -2.3885
 Satisfaction  43  -3.4332      0.443  -7.7476  < 0.001  46.6  -4.30 -2.5647
 Satisfaction  44  -3.5900      0.435  -8.2483  < 0.001  52.5  -4.44 -2.7369
 Satisfaction  45  -3.7467      0.428  -8.7458  < 0.001  58.6  -4.59 -2.9071
 Satisfaction  46  -3.9035      0.424  -9.2165  < 0.001  64.8  -4.73 -3.0734
 Satisfaction  47  -4.0603      0.420  -9.6765  < 0.001  71.2  -4.88 -3.2379
 Satisfaction  48  -4.2170      0.418 -10.0965  < 0.001  77.2  -5.04 -3.3984
 Satisfaction  49  -4.3738      0.417 -10.4787  < 0.001  82.9  -5.19 -3.5557
 Satisfaction  50  -4.5306      0.419 -10.8114  < 0.001  88.1  -5.35 -3.7092
 Satisfaction  51  -4.6873      0.422 -11.1103  < 0.001  92.9  -5.51 -3.8604
 Satisfaction  52  -4.8441      0.427 -11.3534  < 0.001  96.8  -5.68 -4.0078
 Satisfaction  53  -5.0009      0.433 -11.5539  < 0.001 100.2  -5.85 -4.1525
 Satisfaction  54  -5.1576      0.441 -11.7037  < 0.001 102.7  -6.02 -4.2939
 Satisfaction  55  -5.3144      0.450 -11.8161  < 0.001 104.6  -6.20 -4.4329
 Satisfaction  56  -5.4712      0.461 -11.8789  < 0.001 105.7  -6.37 -4.5685
 Satisfaction  57  -5.6279      0.472 -11.9191  < 0.001 106.4  -6.55 -4.7025
 Satisfaction  58  -5.7847      0.485 -11.9240  < 0.001 106.5  -6.74 -4.8339
 Satisfaction  59  -5.9415      0.499 -11.9041  < 0.001 106.1  -6.92 -4.9632
 Satisfaction  60  -6.0982      0.514 -11.8646  < 0.001 105.4  -7.11 -5.0908
 Satisfaction  61  -6.2550      0.530 -11.7955  < 0.001 104.3  -7.29 -5.2157
 Satisfaction  62  -6.4118      0.547 -11.7245  < 0.001 103.0  -7.48 -5.3399
 Satisfaction  63  -6.5685      0.564 -11.6421  < 0.001 101.6  -7.67 -5.4627
 Satisfaction  64  -6.7253      0.582 -11.5471  < 0.001 100.0  -7.87 -5.5838
 Satisfaction  65  -6.8821      0.601 -11.4468  < 0.001  98.4  -8.06 -5.7037
 Satisfaction  66  -7.0388      0.620 -11.3461  < 0.001  96.7  -8.25 -5.8229
 Satisfaction  67  -7.1956      0.640 -11.2416  < 0.001  95.0  -8.45 -5.9411
 Satisfaction  68  -7.3524      0.661 -11.1268  < 0.001  93.1  -8.65 -6.0573
 Satisfaction  69  -7.5092      0.682 -11.0140  < 0.001  91.3  -8.85 -6.1729
 Satisfaction  70  -7.6659      0.702 -10.9129  < 0.001  89.7  -9.04 -6.2891
 Satisfaction  71  -7.8227      0.724 -10.8071  < 0.001  88.0  -9.24 -6.4040
 Satisfaction  72  -7.9795      0.746 -10.7029  < 0.001  86.4  -9.44 -6.5182
 Satisfaction  73  -8.1362      0.768 -10.5965  < 0.001  84.7  -9.64 -6.6313
 Satisfaction  74  -8.2930      0.791 -10.4875  < 0.001  83.1  -9.84 -6.7432
 Satisfaction  75  -8.4498      0.813 -10.3960  < 0.001  81.7 -10.04 -6.8567

Columns: rowid, term, estimate, std.error, statistic, p.value, s.value, conf.low, conf.high, Age, predicted_lo, predicted_hi, predicted, TempKyosan, Satisfaction, Interest, Ideology, Female 
Type:  response 
fit2_ame |>
  ggplot(aes(x = Age)) +
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), fill = "gray80") +
  geom_hline(yintercept = 0) +
  geom_line(aes(y = estimate), linewidth = 1) +
  labs(x = "年齢", y = "政治満足度が共産感情温度に\n与える影響と95%信頼区間") +
  scale_x_continuous(breaks = c(18, 20, 30, 40, 50, 60, 70, 75),
                     labels = c(18, 20, 30, 40, 50, 60, 70, 75)) +
  theme_bw(base_size = 12)

fit2_ameの中身と図、両方を見て解釈する。

  • 18歳以上、29歳以下の回答者の場合、政治満足度と共産党に対する感情温度の間には関係があるとは言えない。
  • 一方、30歳以上の回答者の場合、政治満足度と共産党に対する感情温度の間には統計的に有意な負の関係が見られる。つまり、30歳以上回答者の場合、政治満足度が高いほど、共産党に対する感情温度は低い傾向がある。たとえば、30歳の回答者は政治満足度が1単位上がると、共産党に対する感情温度は約1.395度低くなり、60歳のそれは約6.098度である。