We described five policy issues in random order: minimum wage,
housing, healthcare, education, and climate. Within the housing policy,
participants saw one of two messages: neutral description (similar to
the other ones) and zero-sum description.
See materials here
Participants indicated their support for each policy and the extent to
which they see the issue as zero-sum.
Then, they gave their priorities for the policies in percentages (must
sum 100). We’d expect to see greater priority for housing in the
zero-sum condition over the control condition.
df_cbzs_elg %>%
group_by(race) %>%
summarise(N = n()) %>%
ungroup() %>%
mutate(Perc = round(100*(N/sum(N)),2)) %>%
ungroup() %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
race | N | Perc |
---|---|---|
Asian | 11 | 5.5 |
Black or African American | 37 | 18.5 |
Hispanic, Latino, or Spanish origin | 7 | 3.5 |
Middle Eastern or North African | 1 | 0.5 |
Native Hawaiian or Other Pacific Islander | 1 | 0.5 |
White | 132 | 66.0 |
multiracial | 10 | 5.0 |
NA | 1 | 0.5 |
df_cbzs_elg %>%
mutate(gender = ifelse(is.na(gender) | gender == "","other",gender)) %>%
group_by(gender) %>%
summarise(N = n()) %>%
ungroup() %>%
mutate(Perc = round(100*(N/sum(N)),2)) %>%
ungroup() %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
gender | N | Perc |
---|---|---|
man | 105 | 52.5 |
other | 2 | 1.0 |
woman | 93 | 46.5 |
df_cbzs_elg %>%
summarise(age_mean = round(mean(age,na.rm = T),2),
age_sd = round(sd(age,na.rm = T),2)) %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
age_mean | age_sd |
---|---|
37.72 | 12.41 |
df_cbzs_elg %>%
group_by(edu) %>%
summarise(N = n()) %>%
ungroup() %>%
mutate(Perc = round(100*(N/sum(N)),2)) %>%
ungroup() %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
edu | N | Perc |
---|---|---|
noHS | 1 | 0.5 |
GED | 47 | 23.5 |
2yearColl | 22 | 11.0 |
4yearColl | 96 | 48.0 |
MA | 23 | 11.5 |
PHD | 11 | 5.5 |
df_cbzs_elg %>%
group_by(ses) %>%
summarise(N = n()) %>%
ungroup() %>%
mutate(Perc = round(100*(N/sum(N)),2)) %>%
ungroup() %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
ses | N | Perc |
---|---|---|
Lower Class | 15 | 7.5 |
Lower Middle Class | 50 | 25.0 |
Middle Class | 104 | 52.0 |
Upper Middle Class | 29 | 14.5 |
Upper Class | 2 | 1.0 |
Do you see yourself as part of the working class?
df_cbzs_elg %>%
group_by(wrkclass) %>%
summarise(N = n()) %>%
ungroup() %>%
mutate(Perc = round(100*(N/sum(N)),2)) %>%
ungroup() %>%
arrange(desc(N)) %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
wrkclass | N | Perc |
---|---|---|
Yes | 139 | 69.5 |
No | 34 | 17.0 |
Not sure | 26 | 13.0 |
1 | 0.5 |
df_cbzs_elg %>%
ggplot(aes(x = income)) +
geom_bar() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank(),
axis.line = element_line(color = "grey66"),
axis.text.y = element_text(color = "black"),
axis.text.x = element_text(color = "black",
face = "bold"),
axis.title.x = element_blank(),
axis.title.y = element_blank()) +
coord_flip()
Participants were asked about the extent to which they subscribe to the following ideologies on a scale of 1-7 (select NA if unfamiliar): Conservatism, Liberalism, Democratic Socialism, Libertarianism, Progressivism.
means <- df_cbzs_elg %>%
dplyr::select(PID,ideo_con:ideo_prog) %>%
pivot_longer(-PID,
names_to = "ideo",
values_to = "score") %>%
filter(!is.na(score)) %>%
group_by(ideo) %>%
summarise(score = mean(score)) %>%
ungroup()
df_cbzs_elg %>%
dplyr::select(PID,ideo_con:ideo_prog) %>%
pivot_longer(-PID,
names_to = "ideo",
values_to = "score") %>%
filter(!is.na(score)) %>%
ggplot() +
geom_density(aes(x = score), fill = "lightblue") +
scale_x_continuous(limits = c(1,7),
breaks = seq(1,7,1)) +
geom_vline(data = means,mapping = aes(xintercept = score),
color = "black",
linetype = "dashed",
size = 1.1) +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank(),
axis.line = element_line(color = "grey66"),
axis.text.y = element_text(color = "black"),
axis.text.x = element_text(color = "black",
face = "bold")) +
facet_wrap(~ideo,nrow = 2)
df_cbzs_elg %>%
group_by(party_id) %>%
summarise(N = n()) %>%
ungroup() %>%
mutate(Perc = round(100*(N/sum(N)),2)) %>%
ungroup() %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
party_id | N | Perc |
---|---|---|
Democrat | 65 | 32.5 |
Independent | 63 | 31.5 |
Republican | 72 | 36.0 |
df_cbzs_elg %>%
group_by(vote_2020) %>%
summarise(N = n()) %>%
ungroup() %>%
mutate(Perc = round(100*(N/sum(N)),2)) %>%
ungroup() %>%
arrange(desc(N)) %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
vote_2020 | N | Perc |
---|---|---|
Joe Biden | 86 | 43 |
Donald Trump | 70 | 35 |
I did not vote | 38 | 19 |
Third-party candidate | 6 | 3 |
df_cbzs_elg %>%
group_by(vote_2024) %>%
summarise(N = n()) %>%
ungroup() %>%
mutate(Perc = round(100*(N/sum(N)),2)) %>%
ungroup() %>%
arrange(desc(N)) %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
vote_2024 | N | Perc |
---|---|---|
Joe Biden | 76 | 38.0 |
Donald Trump | 75 | 37.5 |
I will not vote | 26 | 13.0 |
Other | 10 | 5.0 |
Robert F. Kennedy Jr. | 9 | 4.5 |
Cornel West | 2 | 1.0 |
Jill Stein | 2 | 1.0 |
To what extent do you oppose or support this policy? (1 = Strongly Oppose to 7 = Strongly Support)
means <- df_cbzs_elg %>%
dplyr::select(PID,minwage_support,housing_support,health_support,edu_support,climate_support) %>%
pivot_longer(-PID,
names_to = "issue",
values_to = "support") %>%
filter(!is.na(support)) %>%
separate(issue,into = c("issue","temp"),sep = "_") %>%
select(-temp) %>%
group_by(issue) %>%
summarise(score = mean(support)) %>%
ungroup()
df_cbzs_elg %>%
dplyr::select(PID,minwage_support,housing_support,health_support,edu_support,climate_support) %>%
pivot_longer(-PID,
names_to = "issue",
values_to = "support") %>%
filter(!is.na(support)) %>%
separate(issue,into = c("issue","temp"),sep = "_") %>%
select(-temp) %>%
ggplot(aes(x = support)) +
geom_histogram(fill = "lightblue",
binwidth = 1) +
scale_x_continuous(limits = c(0,8),
breaks = seq(1,7,1)) +
geom_vline(data = means,mapping = aes(xintercept = score),
color = "black",
linetype = "dashed",
size = 1.1) +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank(),
axis.line = element_line(color = "grey66"),
axis.text.y = element_text(color = "black"),
axis.text.x = element_text(color = "black",
face = "bold")) +
facet_wrap(~issue,nrow = 2)
ok, cool. I think we’ll just have to filter our those who under 4 in support for housing policy.
The need for this policy is driven by one group gaining at another group’s expense (1 = Strongly Disagree to 7 = Strongly Agree)
means <- df_cbzs_elg %>%
dplyr::select(PID,minwage_zs,housing_zs,health_zs,edu_zs,climate_zs) %>%
pivot_longer(-PID,
names_to = "issue",
values_to = "zs") %>%
filter(!is.na(zs)) %>%
separate(issue,into = c("issue","temp"),sep = "_") %>%
select(-temp) %>%
group_by(issue) %>%
summarise(score = mean(zs)) %>%
ungroup()
df_cbzs_elg %>%
dplyr::select(PID,minwage_zs,housing_zs,health_zs,edu_zs,climate_zs) %>%
pivot_longer(-PID,
names_to = "issue",
values_to = "zs") %>%
filter(!is.na(zs)) %>%
separate(issue,into = c("issue","temp"),sep = "_") %>%
select(-temp) %>%
ggplot(aes(x = zs)) +
geom_histogram(fill = "lightblue",
binwidth = 1) +
scale_x_continuous(limits = c(0,8),
breaks = seq(1,7,1)) +
geom_vline(data = means,mapping = aes(xintercept = score),
color = "black",
linetype = "dashed",
size = 1.1) +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank(),
axis.line = element_line(color = "grey66"),
axis.text.y = element_text(color = "black"),
axis.text.x = element_text(color = "black",
face = "bold")) +
facet_wrap(~issue,nrow = 2)
I like it.
Now, we ask you to indicate how important it is to you that each of
the policies gets passed.
To that end, you have a sum of 100 points. Please allocate those points
to the five policies described above based on how important they are to
you.
For example, if all policies are equally important, each of them would
get 20 points. If you think policy X is more important than policy Y,
then policy X would get more points than policy Y.
means <- df_cbzs_elg %>%
dplyr::select(PID,priority_minwage,priority_housing,priority_health,priority_edu,priority_climate) %>%
pivot_longer(-PID,
names_to = "issue",
values_to = "weight",
names_prefix = "priority_") %>%
filter(!is.na(weight)) %>%
group_by(issue) %>%
summarise(weight = mean(weight)) %>%
ungroup()
means %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
issue | weight |
---|---|
climate | 16.12 |
edu | 21.35 |
health | 25.23 |
housing | 19.94 |
minwage | 17.36 |
df_cbzs_elg %>%
dplyr::select(PID,priority_minwage,priority_housing,priority_health,priority_edu,priority_climate) %>%
pivot_longer(-PID,
names_to = "issue",
values_to = "weight",
names_prefix = "priority_") %>%
filter(!is.na(weight)) %>%
ggplot(aes(x = weight)) +
geom_histogram(fill = "lightblue",
binwidth = 1) +
scale_x_continuous(limits = c(-1,101),
breaks = seq(0,100,20)) +
geom_vline(data = means,mapping = aes(xintercept = weight),
color = "black",
linetype = "dashed",
size = 1.1) +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank(),
axis.line = element_line(color = "grey66"),
axis.text.y = element_text(color = "black"),
axis.text.x = element_text(color = "black",
face = "bold")) +
facet_wrap(~issue,nrow = 2)
df_cbzs_elg %>%
group_by(cond) %>%
summarise(mean = mean(housing_zs,na.rm = T),
sd = sd(housing_zs,na.rm = T)) %>%
ungroup() %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
cond | mean | sd |
---|---|---|
ctrl | 3.86 | 1.869587 |
zs | 3.98 | 1.917385 |
oh man. what a bummer.
df_cbzs_elg %>%
group_by(cond) %>%
summarise(mean = mean(housing_support,na.rm = T),
sd = sd(housing_support,na.rm = T)) %>%
ungroup() %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
cond | mean | sd |
---|---|---|
ctrl | 5.20 | 1.814643 |
zs | 5.62 | 1.674406 |
m1 <- t_test(housing_support ~ cond,data = df_cbzs_elg)
m1 %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
.y. | group1 | group2 | n1 | n2 | statistic | df | p |
---|---|---|---|---|---|---|---|
housing_support | ctrl | zs | 100 | 100 | -1.701009 | 196.7328 | 0.0905 |
df_cbzs_elg %>%
ggplot(aes(x = cond,y = housing_support,color = cond,fill = cond)) +
scale_color_manual(values = c("darkred",
"darkblue")) +
scale_fill_manual(values = c("darkred",
"darkblue")) +
geom_violinhalf(position = position_nudge(0.15),
#fill = "gray23",
alpha = 0.4,
size = 1) +
geom_jitter(alpha = 0.6,
size = 1,
position = position_jitter(0.15)) +
stat_summary(fun.data = "mean_cl_boot",
size = 1,
geom = "linerange",
color = "#080807",
position = position_dodge(width = 0.3)) +
stat_summary(fun = "mean",
geom = "point",
size = 3,
position = position_dodge(width = 0.3)) +
stat_summary(fun = "mean",
shape = 1,
geom = "point",
size = 3,
position = position_dodge(width = 0.3),
color = "black") +
scale_x_discrete(expand = c(0.4,0.2)) +
scale_y_continuous(limits = c(1,7)) +
expand_limits(x = 2) +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank(),
axis.line = element_line(color = "grey66"),
axis.text.x = element_text(color = "black",
face = "bold",
size = 12),
axis.text.y = element_text(color = "black",
face = "bold",
size = 12),
axis.title.y = element_text(color = "black",
face = "bold",
size = 12))
Ok.
df_cbzs_elg %>%
group_by(cond) %>%
summarise(mean = mean(priority_housing,na.rm = T),
sd = sd(priority_housing,na.rm = T)) %>%
ungroup() %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
cond | mean | sd |
---|---|---|
ctrl | 20.68 | 13.61660 |
zs | 19.20 | 13.08635 |
m1 <- t_test(priority_housing ~ cond,data = df_cbzs_elg)
m1 %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
.y. | group1 | group2 | n1 | n2 | statistic | df | p |
---|---|---|---|---|---|---|---|
priority_housing | ctrl | zs | 100 | 100 | 0.7836677 | 197.6884 | 0.434 |
df_cbzs_elg %>%
ggplot(aes(x = cond,y = priority_housing,color = cond,fill = cond)) +
scale_color_manual(values = c("darkred",
"darkblue")) +
scale_fill_manual(values = c("darkred",
"darkblue")) +
geom_violinhalf(position = position_nudge(0.15),
#fill = "gray23",
alpha = 0.4,
size = 1) +
geom_jitter(alpha = 0.6,
size = 1,
position = position_jitter(0.15)) +
stat_summary(fun.data = "mean_cl_boot",
size = 1,
geom = "linerange",
color = "#080807",
position = position_dodge(width = 0.3)) +
stat_summary(fun = "mean",
geom = "point",
size = 3,
position = position_dodge(width = 0.3)) +
stat_summary(fun = "mean",
shape = 1,
geom = "point",
size = 3,
position = position_dodge(width = 0.3),
color = "black") +
scale_x_discrete(expand = c(0.4,0.2)) +
#scale_y_continuous(limits = c(1,7)) +
expand_limits(x = 2) +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank(),
axis.line = element_line(color = "grey66"),
axis.text.x = element_text(color = "black",
face = "bold",
size = 12),
axis.text.y = element_text(color = "black",
face = "bold",
size = 12),
axis.title.y = element_text(color = "black",
face = "bold",
size = 12))
this is a big bummer.
Let’s try to exclude those who don’t support this policy.
df_cbzs_elg_excl <- df_cbzs_elg %>%
filter(housing_support > 4)
df_cbzs_elg_excl %>%
group_by(cond) %>%
summarise(mean = mean(priority_housing,na.rm = T),
sd = sd(priority_housing,na.rm = T)) %>%
ungroup() %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
cond | mean | sd |
---|---|---|
ctrl | 23.36111 | 14.35496 |
zs | 20.59259 | 13.05735 |
fuckin hell
m1 <- t_test(priority_housing ~ cond,data = df_cbzs_elg_excl)
m1 %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
.y. | group1 | group2 | n1 | n2 | statistic | df | p |
---|---|---|---|---|---|---|---|
priority_housing | ctrl | zs | 72 | 81 | 1.24224 | 144.4808 | 0.216 |
df_cbzs_elg_excl %>%
ggplot(aes(x = cond,y = priority_housing,color = cond,fill = cond)) +
scale_color_manual(values = c("darkred",
"darkblue")) +
scale_fill_manual(values = c("darkred",
"darkblue")) +
geom_violinhalf(position = position_nudge(0.15),
#fill = "gray23",
alpha = 0.4,
size = 1) +
geom_jitter(alpha = 0.6,
size = 1,
position = position_jitter(0.15)) +
stat_summary(fun.data = "mean_cl_boot",
size = 1,
geom = "linerange",
color = "#080807",
position = position_dodge(width = 0.3)) +
stat_summary(fun = "mean",
geom = "point",
size = 3,
position = position_dodge(width = 0.3)) +
stat_summary(fun = "mean",
shape = 1,
geom = "point",
size = 3,
position = position_dodge(width = 0.3),
color = "black") +
scale_x_discrete(expand = c(0.4,0.2)) +
#scale_y_continuous(limits = c(1,7)) +
expand_limits(x = 2) +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank(),
axis.line = element_line(color = "grey66"),
axis.text.x = element_text(color = "black",
face = "bold",
size = 12),
axis.text.y = element_text(color = "black",
face = "bold",
size = 12),
axis.title.y = element_text(color = "black",
face = "bold",
size = 12))
ugh this is so lame.