このページに対応するRmdファイル:GitHub
Miller, Saunders, and Farhart (AJPS 2016) [Open access]
Question. イデオロギーに動機付けられた陰謀論(例:保守派が好む陰謀論)を支持するのはどのような人々か?
この論文では政治的な要因に焦点を当てサーベイデータを用いた実証分析を行う.
分析プログラム(Stata, .do)とデータ(Stata, .dta)は Creative Commons CC0 ライセンスで配布されている.
授業の履修者は Moodle から Miller2016_MTurk.dta (元ファイル:MTurk.dta)をダウンロード可能.
注:MTurk (Mechanical Turk) はAmazonが提供するクラウドソーシングサービスで,オンライン調査(アンケート)などが可能.
意欲のある履修者向けの宿題(提出不要):論文で使用しているもう一方のデータセット (American National Election Study, ANES) で以下と同様の分析をする.
setwd("c://ws_stat")
library(tidyverse)
cons <- haven::read_dta("Miller2016_MTurk.dta")
# str(cons)
主な変数:
Conservative
: dummy variable for self-identified as
conservativeconspiracy1
: Conspiracy: Obama was not born in the
U.S.conspiracy3
: Conspiracy: Government knew about 9/11
prior to attackscon_index_rep2
: Conservative conspiracy indexcon_index_dem4
: Liberal conspiracy indexnegdemindex
: -1 × (Liberal conspiracy index)polknow_alt
: political knowledge index
(例:ロシアの大統領の名前を正答できるか)trust_comb
: trust index
(連邦政府やメディアが正しいことを行っていると信頼するか)summary(cons[, c("con_index_rep2", "polknow_alt", "trust_comb")])
## con_index_rep2 polknow_alt trust_comb
## Min. :0.00000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.08333 1st Qu.:0.4286 1st Qu.:0.2500
## Median :0.25000 Median :0.6429 Median :0.4167
## Mean :0.28333 Mean :0.5995 Mean :0.3857
## 3rd Qu.:0.41667 3rd Qu.:0.7857 3rd Qu.:0.5000
## Max. :1.00000 Max. :1.0000 Max. :1.0000
## NA's :93 NA's :136
table(cons$Conservative) # frequency distribution table
##
## 0 1
## 1514 689
table(cons$conspiracy1)
##
## 0 0.333333343267441 0.666666686534882 1
## 1797 670 357 158
table(cons$conspiracy3)
##
## 0 0.333333343267441 0.666666686534882 1
## 622 1080 892 363
summary(cons$age)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 18.00 25.00 30.00 34.29 41.00 81.00 261
table(cons$female)
##
## 0 1
## 1190 1633
注:Stata では .
が欠損値を表すが,read_dta
で読み込むと NA
として認識される.
.dta ファイルに含まれていた変数のラベルは以下のように確認できる(ただし,ラベルが長すぎてRに読み込む際に途中で切れてしまっている).
attr(cons$Conservative, "label")
## [1] "Conservative Dummy without Moderates: Recode of ideo7"
attr(cons$con_index_rep2, "label")
## [1] "Conservative Conspiracy Index (Avg of conspiracy1 conspiracy2 conspiracy7 conspi"
諸事情により(交互作用項の効果を描画するため)ラベルを短くしておく.
attr(cons$Conservative, "label") <- "Self-identified Ideology"
attr(cons$con_index_rep2, "label") <- "Conservative Conspiracy Index"
attr(cons$con_index_dem4, "label") <- "Liberal Conspiracy Index"
保守派はリベラル派よりも「保守層が好む陰謀論」を支持し,その逆にリベラル派は保守派よりも「リベラル層が好む陰謀論」を支持する.
ポイントはその程度の差. 保守派とリベラル派の「保守派が好む陰謀論」の支持率の差が大きく,保守派とリベラル派の「リベラル派が好む陰謀論」の支持率の差が小さいなら,仮説1は支持される.
conservative_conspiracy
:
「保守層が好む陰謀論」の支持率の平均 ― 保守派 vs. リベラル派
liberal_conspiracy
:
「リベラル層が好む陰謀論」の支持率の平均 ― 保守派 vs. リベラル派
cons %>%
group_by(Conservative) %>%
summarise(conservative_conspiracy = mean(con_index_rep2, na.rm = TRUE),
liberal_conspiracy = mean(con_index_dem4, na.rm = TRUE))
## # A tibble: 3 × 3
## Conservative conservative_conspiracy liberal_conspiracy
## <dbl+lbl> <dbl> <dbl>
## 1 0 [Liberal] 0.188 0.500
## 2 1 [Conservative] 0.447 0.334
## 3 NA 0.323 0.470
合成されたインデックスの差は,「保守派が好む陰謀論」では 0.19 - 0.45 = -0.26,「リベラル派が好む陰謀論」では 0.50 - 0.33 = 0.17 なので,仮説1とは整合している.
Stata:
ttest conspiracy1, by(Conservative) level(95) unequal
etc.
保守派とリベラル派の「保守派が好む陰謀論」の支持率の差の検定.
t.test(conspiracy1 ~ Conservative, data = cons) # Obama
##
## Welch Two Sample t-test
##
## data: conspiracy1 by Conservative
## t = -22.968, df = 958.13, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -0.3345162 -0.2818512
## sample estimates:
## mean in group 0 mean in group 1
## 0.09259259 0.40077633
t.test(con_index_rep2 ~ Conservative, data = cons) # index
##
## Welch Two Sample t-test
##
## data: con_index_rep2 by Conservative
## t = -29.458, df = 1109.9, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -0.2767355 -0.2421732
## sample estimates:
## mean in group 0 mean in group 1
## 0.1877800 0.4472344
保守派とリベラル派の「リベラル派が好む陰謀論」の支持率の差の検定.
t.test(conspiracy3 ~ Conservative, data = cons) # 9/11
##
## Welch Two Sample t-test
##
## data: conspiracy3 by Conservative
## t = 0.84234, df = 1224.1, p-value = 0.3998
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -0.01682104 0.04213250
## sample estimates:
## mean in group 0 mean in group 1
## 0.4337084 0.4210526
t.test(con_index_dem4 ~ Conservative, data = cons) # index
##
## Welch Two Sample t-test
##
## data: con_index_dem4 by Conservative
## t = 16.925, df = 1103.4, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## 0.1467243 0.1852054
## sample estimates:
## mean in group 0 mean in group 1
## 0.4997430 0.3337781
個人属性(年齢,性別,人種,所得,政治に関する知識,etc.)を制御したもとで,保守派かどうかが「保守派が好む陰謀論」に与える影響と,保守派かどうかが「リベラル派が好む陰謀論」に与える影響の大きさを比べる.
要するに次のようなイメージ:
影響の大きさは回帰式の回帰係数として定量化する.
\[ \mbox{Conservative conspiracy} = \beta_0 + \beta_1 \mbox{Self-identified as conservative} + \beta_2 \mbox{Political knowledge} + \beta_3 \mbox{Trust} + \cdots \]
Stata: reg con_index_rep2 Conservative polknow_alt ...
etc.
lm_cons <- lm(con_index_rep2 ~ Conservative + polknow_alt + trust_comb + extraversion + agreeableness + conscientiousness + emostab + openness + auth + efficacy + needcog_comb + needeval_comb_alt + ideo_extr + fed_power + religiosity + educ_alt + income + female + age_alt + latino + white, data = cons)
# summary(lm_cons)
lm_lib <- lm(con_index_dem4 ~ Conservative + polknow_alt + trust_comb + extraversion + agreeableness + conscientiousness + emostab + openness + auth + efficacy + needcog_comb + needeval_comb_alt + ideo_extr + fed_power + religiosity + educ_alt + income + female + age_alt + latino + white, data = cons)
# summary(lm_lib)
推定結果(一部の変数のみ)をまとめて表示する.
# install.packages("huxtable")
library(huxtable)
huxtable::huxreg("Crv. Conspiracy" = lm_cons, "Lib. Conspiracy" = lm_lib,
coefs = c("Conservative", "female", "age_alt", "educ_alt", "income"),
statistics = c("N" = "nobs", "Adj. R2" = "adj.r.squared"))
Crv. Conspiracy | Lib. Conspiracy | |
---|---|---|
Conservative | 0.208 *** | -0.177 *** |
(0.009) | (0.010) | |
female | 0.013 | 0.003 |
(0.008) | (0.009) | |
age_alt | 0.022 | 0.060 ** |
(0.020) | (0.022) | |
educ_alt | -0.054 *** | -0.023 |
(0.014) | (0.015) | |
income | 0.016 | -0.058 *** |
(0.013) | (0.014) | |
N | 1951 | 1951 |
Adj. R2 | 0.443 | 0.276 |
*** p < 0.001; ** p < 0.01; * p < 0.05. |
Conservative
ダミーの回帰係数の絶対値は,「保守派が好む陰謀論」をアウトカムとした場合の方が大きい.
注:論文では Seemingly Unrelated Regression
と呼ばれる分析手法を用いて Conservative
ダミーの回帰係数の大きさを統計的に比較している.
懸念:教育や所得など bad control となっている可能性のある変数がコントロールに含まれる.
イデオロギーと知識の交互作用項(交差項)を導入する.
\[ \mbox{Conservative conspiracy} = \beta_0 + \beta_1 \mbox{Self-identified as conservative} + \beta_2 \mbox{Political knowledge} \\ + \beta_3 \mbox{Self-identified as conservative} \times \mbox{Political knowledge} + \beta_4 \mbox{Trust} + \cdots \]
Stata:
reg con_index_rep2 i.Conservative##c.polknow_alt trust_comb ...
etc.
w*z
で「w + z + w×z」が説明変数として加えられる.
w:z
は「w×z」に対応する. つまり w*z
と
w + z + w:z
は同じ.
lm_cons_h2 <- lm(con_index_rep2 ~ Conservative + polknow_alt + Conservative:polknow_alt + trust_comb + extraversion + agreeableness + conscientiousness + emostab + openness + auth + efficacy + needcog_comb + needeval_comb_alt + ideo_extr + fed_power + religiosity + educ_alt + income + female + age_alt + latino + white, data = cons)
# summary(lm_cons_h2)
lm_lib_h2 <- lm(con_index_dem4 ~ Conservative + polknow_alt + Conservative:polknow_alt + trust_comb + extraversion + agreeableness + conscientiousness + emostab + openness + auth + efficacy + needcog_comb + needeval_comb_alt + ideo_extr + fed_power + religiosity + educ_alt + income + female + age_alt + latino + white, data = cons)
# summary(lm_lib_h2)
推定結果(一部の変数のみ)をまとめて表示する.
huxtable::huxreg("Crv. Conspiracy" = lm_cons_h2, "Lib. Conspiracy" = lm_lib_h2,
coefs = c("Conservative", "polknow_alt", "Conservative:polknow_alt"),
statistics = c("N" = "nobs", "Adj. R2" = "adj.r.squared"))
Crv. Conspiracy | Lib. Conspiracy | |
---|---|---|
Conservative | -0.030 | -0.018 |
(0.027) | (0.030) | |
polknow_alt | -0.296 *** | -0.042 |
(0.024) | (0.027) | |
Conservative:polknow_alt | 0.362 *** | -0.241 *** |
(0.038) | (0.043) | |
N | 1951 | 1951 |
Adj. R2 | 0.468 | 0.287 |
*** p < 0.001; ** p < 0.01; * p < 0.05. |
この分析において重要な部分は次の箇所:
\[ \mbox{Conservative conspiracy} = - 0.030 (\mbox{Self-id Cons.}) - 0.296 (\mbox{knowledge}) + \\ 0.362 (\mbox{Self-id Cons.} \times \mbox{knowledge}) + \cdots \]
上の部分(\(\cdots\) より前の部分)に限定すれば,アウトカム変数は次のように予測される.
Knowledge | Self-id Conservative (Self-id Cons. = 1) |
Self-id Liberal (Self-id Cons. = 0) |
---|---|---|
0 | \(-0.030 \cdot 1 - 0.296 \cdot 0 + 0.362 \cdot 1 \cdot 0 \\ = -0.030\) | \(-0.030 \cdot 0 - 0.296 \cdot 0 + 0.362 \cdot 0 \cdot 0 \\ = 0\) |
0.5 | \(-0.030 \cdot 1 - 0.296 \cdot 0.5 + 0.362 \cdot 1 \cdot 0.5 \\ = 0.003\) | \(-0.030 \cdot 0 - 0.296 \cdot 0.5 + 0.362 \cdot 0 \cdot 0.5 \\ = -0.148\) |
1 | \(-0.030 \cdot 1 - 0.296 \cdot 1 + 0.362 \cdot 1 \cdot 1 \\ = 0.036\) | \(-0.030 \cdot 0 - 0.296 \cdot 1 + 0.362 \cdot 0 \cdot 1 \\ = - 0.296\) |
要するに,(客観的に測定される)政治的知識が高い人はそうでない人と比べて保守的陰謀論に陥る可能性がどのように異なるかは,自認するイデオロギーによって変わる.
以上を踏まえて,知識によってイデオロギーの効果がどのように異なるかを可視化する(Figure 1).
Stata: marginsplot
ect.
# install.packages("sjPlot")
library(sjPlot)
plot_model(model = lm_cons_h2, type = "pred", terms = c("polknow_alt", "Conservative"), ci.lvl = 0.95)
plot_model(model = lm_lib_h2, type = "pred", terms = c("polknow_alt", "Conservative"), ci.lvl = 0.95)
知識が豊富なほどイデオロギーに一貫した陰謀論をより支持する現象は,保守層でのみ確認される.
注:論文のFigure 1とは信頼区間が僅かに異なる.
注意事項
本演習では省略するが,3要因の交互作用項を用いることで分析する.
Stata:
reg con_index_rep2 i.Conservative##c.trust_comb##c.polknow_alt ...
etc.
R:
lm_cons_h3 <- lm(con_index_rep2 ~ Conservative*polknow_alt*trust_comb + extraversion + agreeableness + conscientiousness + emostab + openness + auth + efficacy + needcog_comb + needeval_comb_alt + ideo_extr + fed_power + religiosity + educ_alt + income + female + age_alt + latino + white, data = cons)
summary(lm_cons_h3)
.