The purpose of this study was to validate the correlational
relationship between race+class zero-sum and linked fate.
We targeted white working class folks and wanted to see if their zs
beliefs map onto to their perceived linked fate with either upper class
white people (if they have more racial zero-sum beliefs or working class
non white people (if they have more class zero-sum beliefs).
First, let’s see how many people entered the survey and did not pass
the initial eligibility block.
We filtered on race (for white people) and on income (lower than 100k)
and ses (anything other than upper class) and education (masters and
above).
df_cbzs %>%
filter(elg == 0) %>%
group_by(race,
income,
ses,
edu) %>%
summarise(N = n()) %>%
ungroup() %>%
kbl() %>%
kable_styling(bootstrap_options = "hover",
full_width = F,
position = "left")
race | income | ses | edu | N |
---|---|---|---|---|
Hispanic, Latino, or Spanish origin | $20,001-$40,000 | Lower Middle Class | 4yearColl | 1 |
Hispanic, Latino, or Spanish origin | $20,001-$40,000 | Middle Class | 4yearColl | 1 |
Hispanic, Latino, or Spanish origin | $40,001-$60,000 | Middle Class | MA | 1 |
Hispanic, Latino, or Spanish origin | $60,001-$80,000 | Middle Class | 2yearColl | 1 |
Hispanic, Latino, or Spanish origin | $100,001-$120,000 | Middle Class | 4yearColl | 1 |
Other (please specify) | $80,001-$100,000 | Middle Class | 4yearColl | 1 |
White | $20,001-$40,000 | Lower Middle Class | MA | 1 |
White | $20,001-$40,000 | Middle Class | MA | 1 |
White | $20,001-$40,000 | Upper Class | 4yearColl | 1 |
White | $60,001-$80,000 | Middle Class | MA | 1 |
White | $100,001-$120,000 | Upper Middle Class | 4yearColl | 1 |
White | $120,001-$140,000 | Middle Class | 4yearColl | 1 |
White | $160,001-$180,000 | Upper Middle Class | 4yearColl | 1 |
ok cool. 13 people didn’t pass the eligibility criteria and were routed
out of the survey. that leaves us with 200 eligible participants.
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 |
---|---|---|
White | 193 | 96.5 |
multiracial | 7 | 3.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 | 81 | 40.5 |
other | 1 | 0.5 |
woman | 118 | 59.0 |
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 |
---|---|
40.3 | 13.53 |
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 | 80 | 40.0 |
2yearColl | 41 | 20.5 |
4yearColl | 78 | 39.0 |
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 | 42 | 21 |
Lower Middle Class | 96 | 48 |
Middle Class | 56 | 28 |
Upper Middle Class | 6 | 3 |
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 | 67 | 33.5 |
Independent | 61 | 30.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 | 80 | 40.0 |
Donald Trump | 66 | 33.0 |
I did not vote | 45 | 22.5 |
Third-party candidate | 9 | 4.5 |
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 |
---|---|---|
Donald Trump | 80 | 40.0 |
Joe Biden | 74 | 37.0 |
I will not vote | 21 | 10.5 |
Robert F. Kennedy Jr. | 15 | 7.5 |
Cornel West | 5 | 2.5 |
Other | 5 | 2.5 |
df_cbzs_elg %>%
ggplot(aes(x = zs_class)) +
geom_density(fill = "lightblue",
color = "black") +
scale_x_continuous(breaks = seq(1,7,1),
limits = c(1,7)) +
ylab("density") +
geom_vline(xintercept = mean(df_cbzs_elg$zs_class,na.rm = T),
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"),
axis.title.x = element_text(color = "black",
face = "bold"))
df_cbzs_elg %>%
ggplot(aes(x = zs_race)) +
geom_density(fill = "lightblue",
color = "black") +
scale_x_continuous(breaks = seq(1,7,1),
limits = c(1,7)) +
ylab("density") +
geom_vline(xintercept = mean(df_cbzs_elg$zs_race,na.rm = T),
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"),
axis.title.x = element_text(color = "black",
face = "bold"))
Please indicate your agreement, as a white working class
person, with the following statements.
1. Issues that affect me also affect white working class people
2. What happens to white working class people in this country will have
something to do with what happens to me
3. White working class people and me share a common destiny
4. Progress for white working class people also means progress for
me
alpha = 0.85
df_cbzs_elg %>%
ggplot(aes(x = lnktfate_wwc)) +
geom_density(fill = "lightblue",
color = "black") +
scale_x_continuous(breaks = seq(1,7,1),
limits = c(1,7)) +
ylab("density") +
geom_vline(xintercept = mean(df_cbzs_elg$lnktfate_wwc,na.rm = T),
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"),
axis.title.x = element_text(color = "black",
face = "bold"))
Please indicate your agreement, as a white working class
person, with the following statements.
1. Issues that affect me also affect white upper class people
2. What happens to white upper class people in this country will have
something to do with what happens to me
3. White upper class people and me share a common destiny
4. Progress for white upper class people also means progress for
me
alpha = 0.89
df_cbzs_elg %>%
ggplot(aes(x = lnktfate_wuc)) +
geom_density(fill = "lightblue",
color = "black") +
scale_x_continuous(breaks = seq(1,7,1),
limits = c(1,7)) +
ylab("density") +
geom_vline(xintercept = mean(df_cbzs_elg$lnktfate_wuc,na.rm = T),
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"),
axis.title.x = element_text(color = "black",
face = "bold"))
Please indicate your agreement, as a white working class
person, with the following statements.
1. Issues that affect me also affect non-white working class
people
2. What happens to non-white working class people in this country will
have something to do with what happens to me
3. Non-white working class people and me share a common destiny
4. Progress for non-white working class people also means progress for
me
alpha = 0.88
df_cbzs_elg %>%
ggplot(aes(x = lnktfate_nwwc)) +
geom_density(fill = "lightblue",
color = "black") +
scale_x_continuous(breaks = seq(1,7,1),
limits = c(1,7)) +
ylab("density") +
geom_vline(xintercept = mean(df_cbzs_elg$lnktfate_nwwc,na.rm = T),
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"),
axis.title.x = element_text(color = "black",
face = "bold"))
Please indicate your agreement, as a white working class
person, with the following statements.
1. Issues that affect me also affect non-white upper class people
2. What happens to non-white upper class people in this country will
have something to do with what happens to me
3. Non-white upper class people and me share a common destiny
4. Progress for non-white upper class people also means progress for
me
alpha = 0.88
df_cbzs_elg %>%
ggplot(aes(x = lnktfate_nwuc)) +
geom_density(fill = "lightblue",
color = "black") +
scale_x_continuous(breaks = seq(1,7,1),
limits = c(1,7)) +
ylab("density") +
geom_vline(xintercept = mean(df_cbzs_elg$lnktfate_nwuc,na.rm = T),
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"),
axis.title.x = element_text(color = "black",
face = "bold"))
df_cbzs_elg <- df_cbzs_elg %>%
mutate(income_num = as.numeric(income),
edu_num = as.numeric(edu),
ses_num = as.numeric(ses))
df_cbzs_elg %>%
dplyr::select(zs_class:lnktfate_nwuc,ideo_con:ideo_prog,income_num:ses_num) %>%
corPlot(upper = TRUE,stars = TRUE,xsrt = 270)
I like what I’m seeing! A few notes.
1. Class ZS is doing exactly what we want it to do. positive correlation
with working class linked fate (both white and non-white) and negative
correlations with upper class linked fate. That’s great.
2. Race ZS is also doing what we want it to do: Positively correlated
with white upper class linked fate and negatively correlated with
non-white working class linked fate.
3. Despite being filtered for, we still see meaningful correlations with
SES, and in the direction you’d expect. So, that’s cool. I bet our
effects are stronger for lower SES.
m1 <- lm(lnktfate_wuc ~ zs_race,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 2.62 | [2.25, 3.00] | 13.86 | 198 | < .001 |
Zs race | 0.31 | [0.19, 0.43] | 5.09 | 198 | < .001 |
m1 <- lm(lnktfate_wuc ~ zs_race + ideo_con,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 2.25 | [1.81, 2.69] | 10.06 | 190 | < .001 |
Zs race | 0.26 | [0.13, 0.38] | 4.00 | 190 | < .001 |
Ideo con | 0.14 | [0.05, 0.23] | 3.10 | 190 | .002 |
m1 <- lm(lnktfate_wuc ~ zs_race + ideo_con + lnktfate_wwc,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 1.77 | [0.52, 3.02] | 2.79 | 189 | .006 |
Zs race | 0.26 | [0.13, 0.39] | 4.02 | 189 | < .001 |
Ideo con | 0.14 | [0.05, 0.23] | 3.09 | 189 | .002 |
Lnktfate wwc | 0.08 | [-0.12, 0.29] | 0.81 | 189 | .418 |
m1 <- lm(lnktfate_wuc ~ zs_race + ideo_con + lnktfate_wwc + lnktfate_nwwc,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 1.40 | [0.00, 2.81] | 1.97 | 188 | .050 |
Zs race | 0.28 | [0.15, 0.42] | 4.16 | 188 | < .001 |
Ideo con | 0.15 | [0.06, 0.24] | 3.22 | 188 | .002 |
Lnktfate wwc | 0.04 | [-0.18, 0.26] | 0.38 | 188 | .702 |
Lnktfate nwwc | 0.10 | [-0.08, 0.28] | 1.10 | 188 | .272 |
m1 <- lm(lnktfate_wuc ~ zs_race*zs_class,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 4.60 | [3.53, 5.66] | 8.50 | 196 | < .001 |
Zs race | 0.34 | [-0.03, 0.71] | 1.80 | 196 | .074 |
Zs class | -0.38 | [-0.58, -0.18] | -3.83 | 196 | < .001 |
Zs race \(\times\) Zs class | -0.01 | [-0.08, 0.06] | -0.33 | 196 | .744 |
interact_plot(m1,
pred = "zs_class",
modx = "zs_race",
interval = T)
class zs just takes over. that’s cool. If you believe the rich are
gaining at your expense, you have nothing in common with upper class
white people, even if you have racial zero-sum beliefs.
m1 <- lm(lnktfate_wuc ~ zs_race*zs_class + lnktfate_wwc,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 3.61 | [2.24, 4.98] | 5.20 | 195 | < .001 |
Zs race | 0.32 | [-0.05, 0.69] | 1.73 | 195 | .086 |
Zs class | -0.41 | [-0.60, -0.21] | -4.10 | 195 | < .001 |
Lnktfate wwc | 0.20 | [0.02, 0.37] | 2.22 | 195 | .028 |
Zs race \(\times\) Zs class | -0.01 | [-0.08, 0.06] | -0.22 | 195 | .827 |
interact_plot(m1,
pred = "zs_class",
modx = "zs_race",
interval = T)
m1 <- lm(lnktfate_nwwc ~ zs_class,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 4.08 | [3.53, 4.63] | 14.62 | 198 | < .001 |
Zs class | 0.17 | [0.06, 0.27] | 3.14 | 198 | .002 |
m1 <- lm(lnktfate_nwwc ~ zs_class + ideo_con,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 4.66 | [3.87, 5.45] | 11.62 | 190 | < .001 |
Zs class | 0.12 | [0.01, 0.24] | 2.09 | 190 | .038 |
Ideo con | -0.08 | [-0.17, 0.00] | -1.98 | 190 | .049 |
m1 <- lm(lnktfate_nwwc ~ zs_class + lnktfate_wwc,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 1.83 | [0.82, 2.84] | 3.57 | 197 | < .001 |
Zs class | 0.13 | [0.03, 0.23] | 2.56 | 197 | .011 |
Lnktfate wwc | 0.44 | [0.27, 0.61] | 5.11 | 197 | < .001 |
m1 <- lm(lnktfate_nwwc ~ zs_class + lnktfate_wwc + lnktfate_wuc,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 1.86 | [0.69, 3.03] | 3.13 | 196 | .002 |
Zs class | 0.13 | [0.01, 0.24] | 2.17 | 196 | .031 |
Lnktfate wwc | 0.44 | [0.27, 0.61] | 5.06 | 196 | < .001 |
Lnktfate wuc | -0.01 | [-0.13, 0.12] | -0.10 | 196 | .919 |
m1 <- lm(lnktfate_nwwc ~ zs_class*zs_race,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 3.94 | [2.95, 4.94] | 7.83 | 196 | < .001 |
Zs class | 0.33 | [0.15, 0.52] | 3.62 | 196 | < .001 |
Zs race | 0.13 | [-0.21, 0.47] | 0.75 | 196 | .457 |
Zs class \(\times\) Zs race | -0.08 | [-0.14, -0.02] | -2.43 | 196 | .016 |
interact_plot(m1,
pred = "zs_class",
modx = "zs_race",
interval = T)
oh this is cool. These are the racial divides obstacles to class solidarity. If you’re high on race zs, it doesn’t matter how much you believe that the rich are gaining at your expense. If you’re low on race zs, it matters a lot.
m1 <- lm(lnktfate_nwwc ~ zs_class*zs_race + lnktfate_wwc,data = df_cbzs_elg)
apa_lm <- apa_print(m1)
apa_table(
apa_lm$table,
placement = "H"
)
Predictor | \(b\) | 95% CI | \(t\) | \(\mathit{df}\) | \(p\) |
---|---|---|---|---|---|
Intercept | 1.88 | [0.67, 3.09] | 3.07 | 195 | .002 |
Zs class | 0.28 | [0.11, 0.45] | 3.21 | 195 | .002 |
Zs race | 0.10 | [-0.23, 0.42] | 0.58 | 195 | .560 |
Lnktfate wwc | 0.42 | [0.26, 0.57] | 5.27 | 195 | < .001 |
Zs class \(\times\) Zs race | -0.07 | [-0.13, -0.01] | -2.32 | 195 | .021 |
interact_plot(m1,
pred = "zs_class",
modx = "zs_race",
interval = T)