第11回 ロジスティック回帰分析
関西大学総合情報学部
2024-12-05
すぐに実習できるように準備しておきましょう。
Data
フォルダーを作成し、そこにアップロードしましょう。# A tibble: 2,555 × 6
Voted Female Age Educ Knowledge Ideology
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0 1 44 3 3 5
2 0 0 57 3 4 8
3 0 1 28 2 3 4
4 0 0 50 4 1 3
5 0 1 23 2 5 7
6 0 1 32 4 1 5
7 1 0 38 4 5 10
8 1 0 23 4 4 7
9 1 0 47 4 5 5
10 1 0 48 2 5 6
# ℹ 2,545 more rows
変数名 | 説明 |
---|---|
Voted | 2019参院選の投票参加 (0:棄権 / 1:投票) |
Female | 女性ダミー (0: 男性 / 1: 女性) |
Age | 回答者の年齢 |
Educ | 回答者の学歴(1: 中卒以下; 2: 高卒; 3: 短大卒; 4: 大卒以上) |
Knowledge | 回答者の主観的な政治知識 (高いほど知識あり) |
Ideology | 回答者のイデオロギー(0:革新〜5:中道〜10:保守) |
有権者の投票参加を規定する要因を調べたい。投票所に足を運ぶには予め投票先を決めておく必要があろう。しかし、数多い選択肢(候補者、政党)の中から自分の望みを実現してくれそうな選択肢を見つけることは簡単な作業ではない。政治に関する知識があれば、比較的簡単に見つかるため、投票参加しやすいと考えられる。一方、そうでない有権者は自分にとっても最適な選択肢を見つけることを諦め、棄権するだろう。これは本当だろうか。
Voted
)
Knowledge
)Female
)、年齢(Age
)、学歴(Educ
)、イデオロギー(Ideology
)Descriptive Statistics
df
N: 2555
Mean Std.Dev Min Max N.Valid
--------------- ------- --------- ------- ------- ---------
Voted 0.71 0.45 0.00 1.00 2555.00
Female 0.46 0.50 0.00 1.00 2555.00
Age 50.91 15.69 18.00 86.00 2555.00
Educ 3.21 0.90 1.00 4.00 2555.00
Knowledge 3.95 1.12 1.00 5.00 2555.00
Ideology 5.40 2.16 0.00 10.00 2555.00
バイナリー変数を応答変数とする線形回帰モデル:線形確率モデル (linear probability model;LPM)
係数 | 標準誤差 | 検定統計量 | p値 | |
---|---|---|---|---|
切片 | −0.109 | 0.056 | −1.959 | 0.050 |
主観的な政治知識 | 0.119 | 0.008 | 15.359 | < 0.001 |
女性ダミー | −0.055 | 0.017 | −3.213 | 0.001 |
年齢 | 0.005 | 0.001 | 8.408 | < 0.001 |
学歴 | 0.036 | 0.010 | 3.714 | < 0.001 |
イデオロギー | 0.004 | 0.004 | 1.054 | 0.292 |
主観的政治知識が5、男性、86歳、教育水準が4、イデオロギーが10の回答者がいる場合、投票に参加する確率の予測値は?
# -0.1093644 + 0.1186971 * 5 - 0.0549171 * 0 + 0.0046902 * 86 + 0.0357970 * 4 + 0.0040744 * 10
lm_fit |>
predictions(newdata = datagrid(Knowledge = 5,
Female = 0,
Age = 86,
Educ = 4,
Ideology = 10))
Knowledge Female Age Educ Ideology Estimate Std. Error z Pr(>|z|) S 2.5 % 97.5 %
5 0 86 4 10 1.07 0.0306 35 <0.001 887.0 1.01 1.13
Type: response
Columns: rowid, estimate, std.error, statistic, p.value, s.value, conf.low, conf.high, Knowledge, Female, Age, Educ, Ideology, Voted
\[ \mbox{logistic}(x) = \frac{1}{1 + e^{-x}} \]
ロジスティック関数の\(x\)の部分が回帰式となる回帰分析
\[ \mbox{Pr}(y = 1) = \frac{1}{1 + e^{-(\alpha + \beta_1 X_1 + \beta_2 X_2 + ...)}} \]
ロジスティック回帰分析は線形予測子内の\(\alpha\)、\(\beta_1\)、…を推定する手法
glm()
関数を使用
lm()
関数とほぼ同じ書き方であるが、family
引数を指定する必要がある。
family = gaussian("identity")
にするとlm()
と同じ結果が得られる。実装例
\[ \mbox{Pr}(\mbox{Voted} = 1) = \frac{1}{1 + e^{-(\alpha + \beta_1 \mbox{Knowledge} + \beta_2 \mbox{Female} + \beta_3 \mbox{Age} + \beta_4 \mbox{Educ} + \beta_5 \mbox{Ideology})}} \]
係数 | 標準誤差 | 検定統計量 | p値 | |
---|---|---|---|---|
切片 | −3.306 | 0.320 | −10.315 | < 0.001 |
主観的な政治知識 | 0.593 | 0.043 | 13.808 | < 0.001 |
女性ダミー | −0.316 | 0.096 | −3.282 | 0.001 |
年齢 | 0.027 | 0.003 | 8.284 | < 0.001 |
学歴 | 0.208 | 0.054 | 3.835 | < 0.001 |
イデオロギー | 0.024 | 0.023 | 1.061 | 0.289 |
係数 | 標準誤差 | 検定統計量 | p値 | |
---|---|---|---|---|
切片 | −3.306 | 0.320 | −10.315 | < 0.001 |
主観的な政治知識 | 0.593 | 0.043 | 13.808 | < 0.001 |
女性ダミー | −0.316 | 0.096 | −3.282 | 0.001 |
年齢 | 0.027 | 0.003 | 8.284 | < 0.001 |
学歴 | 0.208 | 0.054 | 3.835 | < 0.001 |
イデオロギー | 0.024 | 0.023 | 1.061 | 0.289 |
Knowledge
= 3)、女性(Female
= 1)、20歳(Age
= 20)、学歴が大卒(Educ
= 4)、イデオロギーが中道(Ideology
= 5)の場合の投票参加の予測確率(Intercept) Knowledge Female Age Educ Ideology
-3.30579506 0.59290164 -0.31596873 0.02650943 0.20827008 0.02391612
# 線形予測子の計算(1)
fit1_coef[1] + fit1_coef[2] * 3 + fit1_coef[3] * 1 + fit1_coef[4] * 20 + fit1_coef[5] * 4 + fit1_coef[6] * 5
(Intercept)
-0.3602094
[1] -0.3602094
[1] 0.4109089
{marginaleffects}パッケージのpredictions()
関数の利用
newdata
で指定されなかった説明変数は平均値に固定される。
先ほどの手計算(?)の結果を{marginaleffects}のpredictions()
関数で再現
# 主観的政治知識が3 (Knowledge = 3)、女性 (Female = 1)、20歳 (Age = 20)、学歴が大卒 (Educ = 4)、
# イデオロギーが中道 (Ideology = 5)の場合の投票参加の予測確率
predictions(fit1,
newdata = datagrid(Knowledge = 3,
Female = 1,
Age = 20,
Educ = 4,
Ideology = 5))
Knowledge Female Age Educ Ideology Estimate Pr(>|z|) S 2.5 % 97.5 %
3 1 20 4 5 0.411 0.00285 8.5 0.355 0.469
Type: invlink(link)
Columns: rowid, estimate, p.value, s.value, conf.low, conf.high, Knowledge, Female, Age, Educ, Ideology, Voted
Estimate
列の値が予測確率: 0.411(約41%)
estimate
(第10回参照)Knowledge
が1〜5の場合の投票参加確率の予測値
Knowledge Estimate Pr(>|z|) S 2.5 % 97.5 % Female Age Educ Ideology
1 0.362 <0.001 15.1 0.303 0.425 0 50.9 3.21 5.4
2 0.507 0.789 0.3 0.458 0.556 0 50.9 3.21 5.4
3 0.650 <0.001 53.3 0.616 0.683 0 50.9 3.21 5.4
4 0.771 <0.001 229.6 0.746 0.794 0 50.9 3.21 5.4
5 0.859 <0.001 315.9 0.837 0.878 0 50.9 3.21 5.4
Type: invlink(link)
Columns: rowid, estimate, p.value, s.value, conf.low, conf.high, Female, Age, Educ, Ideology, Knowledge, Voted
Knowledge
がVoted
に与える影響は一定ではない。
Knowledge
の値が1の場合: 投票に参加する確率は32.94%Knowledge
の値が2の場合: 投票に参加する確率は47.05% (14.11%p増加)Knowledge
の値が3の場合: 投票に参加する確率は61.65% (14.60%p増加)Knowledge
の値が4の場合: 投票に参加する確率は74.42% (12.77%p増加)Knowledge
の値が5の場合: 投票に参加する確率は84.03% (9.61%p増加)geom_line()
)とリボン (geom_ribbon()
)を使用する。4分の1ルール (divide by 4 rule)