Init and read data
# select suffix with C
df <- dat |>
select(FZ2,rid,B18__1,H20,
H2性别,教育程度,党员,H14家庭收入,
C1a,C1b,C1c,C1d,C1e,C1f,
C2a,C2b,C2c,C2d,C2e,C2f,
C3a,C3b,C3c,C3d,C3e,C3f
)
df <- df |>
mutate(
PolicyA = rowSums(across(c(C1a, C2a, C3a)), na.rm = TRUE),
PolicyB = rowSums(across(c(C1b, C2b, C3b)), na.rm = TRUE),
PolicyC = rowSums(across(c(C1c, C2c, C3c)), na.rm = TRUE),
PolicyD = rowSums(across(c(C1d, C2d, C3d)), na.rm = TRUE),
PolicyE = rowSums(across(c(C1e, C2e, C3e)), na.rm = TRUE),
PolicyF = rowSums(across(c(C1f, C2f, C3f)), na.rm = TRUE)
)
df <- df |>
select(rid,FZ2,B18__1,H20,
H2性别,教育程度,党员,H14家庭收入,
PolicyA,PolicyB,PolicyC,PolicyD,PolicyE,PolicyF)
df <- df |>
rename(treatment = FZ2,
trust = B18__1,
fear = H20)
# case trust-mean trust
df <- df |>
mutate(trust = trust- mean(trust, na.rm = TRUE))
df_long <- df |>
pivot_longer(
cols = PolicyA:PolicyF,
names_to = "policy",
values_to = "alttitude"
)
df_long <- df_long |>
select(rid,policy,treatment,alttitude,trust,fear,
H2性别,教育程度,党员,H14家庭收入)
df_long <- df_long |>
mutate(
rid = as.factor(rid),
treatment = as.factor(treatment)
)
Base Regression
library(lmtest)
library(sandwich)
library(modelsummary)
fe_model <- lm(alttitude ~ 0 + policy + treatment + + H2性别 + 教育程度 + 党员 + H14家庭收入, data = df_long)
cluster_se <- vcovCL(fe_model, cluster = df_long$rid)
modelsummary(
fe_model,
coef_map = c(
"treatment2" = "Group2",
"treatment3" = "Group3",
"policyPolicyA" = "政策A",
"policyPolicyB" = "政策B",
"policyPolicyC" = "政策C",
"policyPolicyD" = "政策D",
"policyPolicyE" = "政策E",
"policyPolicyF" = "政策F",
"H2性别" = "性别",
"教育程度" = "教育程度",
"党员" = "党员",
"H14家庭收入" = "家庭收入"
),
stars = TRUE,
gof_omit = "AIC|BIC|Log.Lik.",
vcov = cluster_se
)
| |
(1) |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
| Group2 |
0.006 |
|
(0.014) |
| Group3 |
0.073*** |
|
(0.015) |
| 政策A |
1.343*** |
|
(0.050) |
| 政策B |
1.447*** |
|
(0.050) |
| 政策C |
1.276*** |
|
(0.050) |
| 政策D |
1.379*** |
|
(0.050) |
| 政策E |
1.409*** |
|
(0.050) |
| 政策F |
1.347*** |
|
(0.049) |
| 性别 |
-0.014 |
|
(0.012) |
| 教育程度 |
0.004 |
|
(0.007) |
| 党员 |
-0.027+ |
|
(0.017) |
| 家庭收入 |
0.010 |
|
(0.007) |
| Num.Obs. |
13404 |
| R2 |
0.891 |
| R2 Adj. |
0.891 |
| RMSE |
0.48 |
| Std.Errors |
Custom |
interaction
term: trust
m_trust <- lm(alttitude ~ 0 + policy + treatment*trust + H2性别+教育程度 + 党员+H14家庭收入, data = df_long)
cluster_se <- vcovCL(m_trust, cluster = df_long$rid)
modelsummary(
m_trust,
coef_map = c(
"treatment2" = "Group2",
"treatment3" = "Group3",
"trust" = "信任",
"treatment2:trust" = "Group2:信任",
"treatment3:trust" = "Group3:信任",
"policyPolicyA" = "政策A",
"policyPolicyB" = "政策B",
"policyPolicyC" = "政策C",
"policyPolicyD" = "政策D",
"policyPolicyE" = "政策E",
"policyPolicyF" = "政策F",
"H2性别" = "性别",
"教育程度" = "教育程度",
"党员" = "党员",
"H14家庭收入" = "家庭收入"
),
stars = TRUE,
gof_omit = "AIC|BIC|Log.Lik.",
vcov = cluster_se
)
| |
(1) |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
| Group2 |
0.006 |
|
(0.014) |
| Group3 |
0.073*** |
|
(0.015) |
| 信任 |
-0.038** |
|
(0.014) |
| Group2:信任 |
0.035+ |
|
(0.021) |
| Group3:信任 |
0.069** |
|
(0.022) |
| 政策A |
1.341*** |
|
(0.050) |
| 政策B |
1.445*** |
|
(0.050) |
| 政策C |
1.274*** |
|
(0.050) |
| 政策D |
1.377*** |
|
(0.050) |
| 政策E |
1.407*** |
|
(0.050) |
| 政策F |
1.345*** |
|
(0.049) |
| 性别 |
-0.013 |
|
(0.012) |
| 教育程度 |
0.004 |
|
(0.007) |
| 党员 |
-0.028+ |
|
(0.017) |
| 家庭收入 |
0.010 |
|
(0.007) |
| Num.Obs. |
13404 |
| R2 |
0.892 |
| R2 Adj. |
0.891 |
| RMSE |
0.48 |
| Std.Errors |
Custom |
term: fear
# PolicyC 高 对日赔偿
# PolicyF 高 印度
# PolicyB 低 非援
# PolicyE 低 澳大利亚
# 生成sensitivity变量
df_long$sensitivity <- NA
df_long$sensitivity[df_long$policy == "PolicyC" | df_long$policy == "PolicyF"] <- 1
df_long$sensitivity[df_long$policy == "PolicyB" | df_long$policy == "PolicyE"] <- 0
m_fear_alt <- lm(alttitude ~ 0 + treatment*sensitivity + H2性别+教育程度 + 党员+H14家庭收入,
data = df_long)
cluster_se <- vcovCL(m_fear_alt, cluster = df_long$rid)
modelsummary(
m_fear_alt,
coef_map = c(
"treatment2" = "Group2",
"treatment3" = "Group3",
"sensitivity" = "敏感性",
"treatment2:sensitivity" = "Group2:敏感性",
"treatment3:sensitivity" = "Group3:敏感性",
"policyPolicyA" = "政策A",
"policyPolicyB" = "政策B",
"policyPolicyC" = "政策C",
"policyPolicyD" = "政策D",
"policyPolicyE" = "政策E",
"policyPolicyF" = "政策F",
"H2性别" = "性别",
"教育程度" = "教育程度",
"党员" = "党员",
"H14家庭收入" = "家庭收入"
),
stars = TRUE,
gof_omit = "AIC|BIC|Log.Lik.",
vcov = cluster_se
)
| |
(1) |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
| Group2 |
1.427*** |
|
(0.055) |
| Group3 |
1.481*** |
|
(0.055) |
| 敏感性 |
-0.182*** |
|
(0.015) |
| Group2:敏感性 |
0.074*** |
|
(0.021) |
| Group3:敏感性 |
0.128*** |
|
(0.022) |
| 性别 |
-0.003 |
|
(0.013) |
| 教育程度 |
0.006 |
|
(0.007) |
| 党员 |
-0.042* |
|
(0.019) |
| 家庭收入 |
0.011 |
|
(0.008) |
| Num.Obs. |
8936 |
| R2 |
0.892 |
| R2 Adj. |
0.892 |
| RMSE |
0.48 |
| Std.Errors |
Custom |
term: trust and fear
# 创建交互模型,包含trust和fear的交互效应
m_trust_fear_alt <- lm(alttitude ~ 0 + treatment*sensitivity + treatment*trust + H2性别 + 教育程度 + 党员 + H14家庭收入,
data = df_long)
cluster_se <- vcovCL(m_trust_fear_alt, cluster = df_long$rid)
modelsummary(
m_trust_fear_alt,
coef_map = c(
"treatment2" = "Group2",
"treatment3" = "Group3",
"sensitivity" = "敏感性",
"trust" = "信任",
"treatment2:sensitivity" = "Group2:敏感性",
"treatment3:sensitivity" = "Group3:敏感性",
"treatment2:trust" = "Group2:信任",
"treatment3:trust" = "Group3:信任",
"policyPolicyA" = "政策A",
"policyPolicyB" = "政策B",
"policyPolicyC" = "政策C",
"policyPolicyD" = "政策D",
"policyPolicyE" = "政策E",
"policyPolicyF" = "政策F",
"H2性别" = "性别",
"教育程度" = "教育程度",
"党员" = "党员",
"H14家庭收入" = "家庭收入"
),
stars = TRUE,
gof_omit = "AIC|BIC|Log.Lik.",
vcov = cluster_se
)
| |
(1) |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
| Group2 |
1.425*** |
|
(0.055) |
| Group3 |
1.478*** |
|
(0.055) |
| 敏感性 |
-0.182*** |
|
(0.015) |
| 信任 |
-0.024 |
|
(0.016) |
| Group2:敏感性 |
0.074*** |
|
(0.021) |
| Group3:敏感性 |
0.128*** |
|
(0.022) |
| Group2:信任 |
0.015 |
|
(0.023) |
| Group3:信任 |
0.060* |
|
(0.026) |
| 性别 |
-0.002 |
|
(0.013) |
| 教育程度 |
0.006 |
|
(0.007) |
| 党员 |
-0.043* |
|
(0.019) |
| 家庭收入 |
0.012 |
|
(0.008) |
| Num.Obs. |
8936 |
| R2 |
0.892 |
| R2 Adj. |
0.892 |
| RMSE |
0.48 |
| Std.Errors |
Custom |
补充调查
# 读入补充调查数据
supp_data <- read_sav("./data/补充调查数据.sav")
# select suffix with C
supp_data <- supp_data |>
select(FZ2,rid,B8__1,
F2, # 性别
F6, # 教育程度
F7, # 党员
F11,
C1a,C1b,C1c,C1d,C1e,C1f,
C2a,C2b,C2c,C2d,C2e,C2f,
C3a,C3b,C3c,C3d,C3e,C3f
)
supp_data <- supp_data |>
mutate(
PolicyA = rowSums(across(c(C1a, C2a, C3a)), na.rm = TRUE),
PolicyB = rowSums(across(c(C1b, C2b, C3b)), na.rm = TRUE),
PolicyC = rowSums(across(c(C1c, C2c, C3c)), na.rm = TRUE),
PolicyD = rowSums(across(c(C1d, C2d, C3d)), na.rm = TRUE),
PolicyE = rowSums(across(c(C1e, C2e, C3e)), na.rm = TRUE),
PolicyF = rowSums(across(c(C1f, C2f, C3f)), na.rm = TRUE)
)
supp_data <- supp_data |>
select(rid,FZ2,B8__1,
F2,F6,F7,F11,
PolicyA,PolicyB,PolicyC,PolicyD,PolicyE,PolicyF)
supp_data <- supp_data |>
rename(treatment = FZ2,
trust = B8__1)
# case trust-mean trust
supp_data <- supp_data |>
mutate(trust = trust- mean(trust, na.rm = TRUE))
supp_data_long <- supp_data |>
pivot_longer(
cols = PolicyA:PolicyF,
names_to = "policy",
values_to = "alttitude"
)
supp_data_long <- supp_data_long |>
select(rid,policy,treatment,alttitude,trust,
F2,F6,F7,F11)
supp_data_long <- supp_data_long |>
mutate(
rid = as.factor(rid),
treatment = as.factor(treatment)
)
Base Regression
fe_model <- lm(alttitude ~ 0 + policy + treatment + + F2 + F6 + F7 + F11, data = supp_data_long)
cluster_se <- vcovCL(fe_model, cluster = supp_data_long$rid)
modelsummary(
fe_model,
coef_map = c(
"treatment2" = "Group2",
"treatment3" = "Group3",
"policyPolicyA" = "政策A",
"policyPolicyB" = "政策B",
"policyPolicyC" = "政策C",
"policyPolicyD" = "政策D",
"policyPolicyE" = "政策E",
"policyPolicyF" = "政策F",
"F2" = "性别",
"F6" = "教育程度",
"F7" = "党员",
"F11" = "家庭收入"
),
stars = TRUE,
gof_omit = "AIC|BIC|Log.Lik.",
vcov = cluster_se
)
| |
(1) |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
| Group2 |
-0.016 |
|
(0.017) |
| Group3 |
0.040* |
|
(0.018) |
| 政策A |
1.096*** |
|
(0.062) |
| 政策B |
1.554*** |
|
(0.062) |
| 政策C |
1.058*** |
|
(0.061) |
| 政策D |
1.328*** |
|
(0.063) |
| 政策E |
1.182*** |
|
(0.062) |
| 政策F |
1.111*** |
|
(0.061) |
| 性别 |
0.014 |
|
(0.014) |
| 教育程度 |
0.022* |
|
(0.009) |
| 党员 |
0.032 |
|
(0.021) |
| 家庭收入 |
-0.007 |
|
(0.010) |
| Num.Obs. |
6426 |
| R2 |
0.904 |
| R2 Adj. |
0.904 |
| RMSE |
0.45 |
| Std.Errors |
Custom |
interaction
term: trust
m_trust <- lm(alttitude ~ 0 + policy + treatment*trust + F2 + F6 + F7 + F11, data = supp_data_long)
cluster_se <- vcovCL(m_trust, cluster = supp_data_long$rid)
modelsummary(
m_trust,
coef_map = c(
"treatment2" = "Group2",
"treatment3" = "Group3",
"trust" = "信任",
"treatment2:trust" = "Group2:信任",
"treatment3:trust" = "Group3:信任",
"policyPolicyA" = "政策A",
"policyPolicyB" = "政策B",
"policyPolicyC" = "政策C",
"policyPolicyD" = "政策D",
"policyPolicyE" = "政策E",
"policyPolicyF" = "政策F",
"F2" = "性别",
"F6" = "教育程度",
"F7" = "党员",
"F11" = "家庭收入"
),
stars = TRUE,
gof_omit = "AIC|BIC|Log.Lik.",
vcov = cluster_se
)
| |
(1) |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
| Group2 |
-0.015 |
|
(0.017) |
| Group3 |
0.039* |
|
(0.018) |
| 信任 |
0.081*** |
|
(0.018) |
| Group2:信任 |
-0.042 |
|
(0.029) |
| Group3:信任 |
-0.002 |
|
(0.028) |
| 政策A |
1.119*** |
|
(0.062) |
| 政策B |
1.577*** |
|
(0.062) |
| 政策C |
1.081*** |
|
(0.061) |
| 政策D |
1.351*** |
|
(0.063) |
| 政策E |
1.206*** |
|
(0.062) |
| 政策F |
1.135*** |
|
(0.061) |
| 性别 |
0.010 |
|
(0.014) |
| 教育程度 |
0.021* |
|
(0.008) |
| 党员 |
0.022 |
|
(0.021) |
| 家庭收入 |
-0.005 |
|
(0.010) |
| Num.Obs. |
6426 |
| R2 |
0.905 |
| R2 Adj. |
0.905 |
| RMSE |
0.44 |
| Std.Errors |
Custom |
term: fear
# PolicyC 高 对日赔偿
# PolicyF 高 印度
# PolicyB 低 非援
# PolicyE 低 澳大利亚
# 生成sensitivity变量
supp_data_long$sensitivity <- NA
supp_data_long$sensitivity[supp_data_long$policy == "PolicyC" | supp_data_long$policy == "PolicyF"] <- 1
supp_data_long$sensitivity[supp_data_long$policy == "PolicyB" | supp_data_long$policy == "PolicyE"] <- 0
m_fear_alt <- lm(alttitude ~ 0 + treatment*sensitivity + F2 + F6 + F7 + F11,
data = supp_data_long)
cluster_se <- vcovCL(m_fear_alt, cluster = supp_data_long$rid)
modelsummary(
m_fear_alt,
coef_map = c(
"treatment2" = "Group2",
"treatment3" = "Group3",
"sensitivity" = "敏感性",
"treatment2:sensitivity" = "Group2:敏感性",
"treatment3:sensitivity" = "Group3:敏感性",
"policyPolicyA" = "政策A",
"policyPolicyB" = "政策B",
"policyPolicyC" = "政策C",
"policyPolicyD" = "政策D",
"policyPolicyE" = "政策E",
"policyPolicyF" = "政策F",
"F2" = "性别",
"F6" = "教育程度",
"F7" = "党员",
"F11" = "家庭收入"
),
stars = TRUE,
gof_omit = "AIC|BIC|Log.Lik.",
vcov = cluster_se
)
| |
(1) |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
| Group2 |
1.366*** |
|
(0.064) |
| Group3 |
1.359*** |
|
(0.066) |
| 敏感性 |
-0.321*** |
|
(0.021) |
| Group2:敏感性 |
-0.009 |
|
(0.030) |
| Group3:敏感性 |
0.122*** |
|
(0.031) |
| 性别 |
-0.004 |
|
(0.016) |
| 教育程度 |
0.019* |
|
(0.009) |
| 党员 |
0.050* |
|
(0.021) |
| 家庭收入 |
-0.003 |
|
(0.010) |
| Num.Obs. |
4284 |
| R2 |
0.900 |
| R2 Adj. |
0.900 |
| RMSE |
0.46 |
| Std.Errors |
Custom |
term: trust and fear
# 创建交互模型,包含trust和fear的交互效应
m_trust_fear_alt <- lm(alttitude ~ 0 + treatment*sensitivity + treatment*trust + F2 + F6 + F7 + F11,
data = supp_data_long)
cluster_se <- vcovCL(m_trust_fear_alt, cluster = supp_data_long$rid)
modelsummary(
m_trust_fear_alt,
coef_map = c(
"treatment2" = "Group2",
"treatment3" = "Group3",
"sensitivity" = "敏感性",
"trust" = "信任",
"treatment2:sensitivity" = "Group2:敏感性",
"treatment3:sensitivity" = "Group3:敏感性",
"treatment2:trust" = "Group2:信任",
"treatment3:trust" = "Group3:信任",
"policyPolicyA" = "政策A",
"policyPolicyB" = "政策B",
"policyPolicyC" = "政策C",
"policyPolicyD" = "政策D",
"policyPolicyE" = "政策E",
"policyPolicyF" = "政策F",
"F2" = "性别",
"F6" = "教育程度",
"F7" = "党员",
"F11" = "家庭收入"
),
stars = TRUE,
gof_omit = "AIC|BIC|Log.Lik.",
vcov = cluster_se
)
| |
(1) |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
| Group2 |
1.387*** |
|
(0.064) |
| Group3 |
1.378*** |
|
(0.066) |
| 敏感性 |
-0.321*** |
|
(0.021) |
| 信任 |
0.072*** |
|
(0.019) |
| Group2:敏感性 |
-0.009 |
|
(0.030) |
| Group3:敏感性 |
0.122*** |
|
(0.031) |
| Group2:信任 |
-0.042 |
|
(0.029) |
| Group3:信任 |
-0.002 |
|
(0.030) |
| 性别 |
-0.008 |
|
(0.015) |
| 教育程度 |
0.018* |
|
(0.009) |
| 党员 |
0.041* |
|
(0.020) |
| 家庭收入 |
-0.001 |
|
(0.010) |
| Num.Obs. |
4284 |
| R2 |
0.901 |
| R2 Adj. |
0.900 |
| RMSE |
0.46 |
| Std.Errors |
Custom |