Eligibility

total_n = nrow(df_cbzs)

Total N = 200

Preregistered exclusions:

  • check_1: select somewhat disagree
  • check_2: bot-check
elg_n = nrow(df_cbzs_elg)

df_cbzs %>% 
  group_by(att_1,att_2) %>% 
  summarise(N = n()) %>% 
  ungroup() %>% 
  mutate(Perc = round(100*(N/sum(N)),2)) %>% 
  ungroup() %>% 
  arrange(desc(Perc)) %>% 
  kbl() %>% 
  kable_styling(bootstrap_options = "hover",
                full_width = F,
                position = "left")
## `summarise()` has grouped output by 'att_1'. You can override using the
## `.groups` argument.
att_1 att_2 N Perc
1 1 193 96.5
1 0 7 3.5

Eligible N = 193

Demographics

Gender

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() %>% 
  arrange(desc(Perc)) %>% 
  kbl() %>% 
  kable_styling(bootstrap_options = "hover",
                full_width = F,
                position = "left")
gender N Perc
woman 107 55.44
man 84 43.52
other 2 1.04

Race

race N Perc
White 184 95.34
multiracial 9 4.66

Age

Mean age: 42.83.

Income

median_income_num <- df_cbzs_elg %>% 
  mutate(income_num = as.numeric(income)) %>% 
  summarise(median = median(income_num, na.rm = TRUE)) %>% 
  pull(median)

df_cbzs_elg %>% 
  ggplot(aes(x = income)) +
  geom_bar() +
  geom_vline(xintercept = median_income_num, 
             color = "lightblue", linetype = "dashed") +
  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()

Education

edu N Perc
noHS 1 0.52
GED 52 26.94
2yearColl 19 9.84
4yearColl 88 45.60
MA 24 12.44
PHD 7 3.63
NA 2 1.04

SES

ses N Perc
Lower Class 15 7.77
Lower Middle Class 73 37.82
Middle Class 89 46.11
Upper Middle Class 15 7.77
Upper Class 1 0.52

Working-class identification

To what extent do you identify as working-class? (0 = Not at All Working-Class; 50 = Moderately Working-Class; 100 = Very Strongly Working-Class)

df_cbzs_elg %>% 
  ggplot(aes(x = class_id)) +
  geom_histogram(fill = "lightblue",
                 binwidth = 5,
                 color = NA) +
  scale_x_continuous(breaks = seq(0,100,10),
                     limits = c(-10,110)) +
  ylab("count") +
  geom_vline(xintercept = mean(df_cbzs_elg$class_id,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"))

Politics

Political ideology

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",color = NA) +
  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)

Party affiliation

party_id N Perc
Independent 70 36.27
Democrat 63 32.64
Republican 60 31.09

Measures

Class-based Zero-Sum Beliefs

  1. If the upper class becomes richer, this comes at the expense of the working class
  2. If the upper class makes more money, then the working class makes less money
  3. If the upper class does better economically, this does NOT come at the expense of the working class [R]

alpha = 0.91

df_cbzs_elg %>% 
  ggplot(aes(x = zs_class)) +
  geom_density(fill = "lightblue",
                 color = NA) +
  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"))

Race-based Zero-Sum Beliefs: Black

  1. If black people become richer, this comes at the expense of white people
  2. If black people make more money, then white people make less money
  3. If black people do better economically, this does NOT come at the expense of white people [R]

alpha = 0.84

df_cbzs_elg %>% 
  ggplot(aes(x = zs_race_b)) +
  geom_density(fill = "lightblue",
                 color = NA) +
  scale_x_continuous(breaks = seq(1,7,1),
                     limits = c(1,7)) +
  ylab("density") +
  geom_vline(xintercept = mean(df_cbzs_elg$zs_race_b,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"))

Race-based Zero-Sum Beliefs: Asian

  1. If Asian people become richer, this comes at the expense of white people
  2. If Asian people make more money, then white people make less money
  3. If Asian people do better economically, this does NOT come at the expense of white people [R]

alpha = 0.86

df_cbzs_elg %>% 
  ggplot(aes(x = zs_race_a)) +
  geom_density(fill = "lightblue",
                 color = NA) +
  scale_x_continuous(breaks = seq(1,7,1),
                     limits = c(1,7)) +
  ylab("density") +
  geom_vline(xintercept = mean(df_cbzs_elg$zs_race_a,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"))

Race-based Zero-Sum Beliefs: Hispanic

  1. If Hispanic people become richer, this comes at the expense of white people
  2. If Hispanic people make more money, then white people make less money
  3. If Hispanic people do better economically, this does NOT come at the expense of white people [R]

alpha = 0.82

df_cbzs_elg %>% 
  ggplot(aes(x = zs_race_h)) +
  geom_density(fill = "lightblue",
                 color = NA) +
  scale_x_continuous(breaks = seq(1,7,1),
                     limits = c(1,7)) +
  ylab("density") +
  geom_vline(xintercept = mean(df_cbzs_elg$zs_race_h,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"))

Class Solidarity

  1. I feel a sense of solidarity with non-White (e.g., Black, Asian, Hispanic) working class people.
  2. The problems facing White and non-White working class people are similar enough for us to be allies.
  3. What happens to non-White working class communities has something to do with what happens to White working class people.

alpha = 0.66

df_cbzs_elg %>% 
  ggplot(aes(x = crs)) +
  geom_density(fill = "lightblue",
                 color = NA) +
  scale_x_continuous(breaks = seq(1,7,1),
                     limits = c(1,7)) +
  ylab("density") +
  geom_vline(xintercept = mean(df_cbzs_elg$crs,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"))

Support for redistributive policy

Participants saw one of the following policies and indicated their support for it (1 = Strongly Oppose to 7 = Strongly Support)

Minimum wage increase

Congress has not increased the federal minimum wage, currently set at $7.25, since 2009. Some Congresspeople are proposing a policy that would gradually raise the federal minimum wage to $20 an hour by 2028. After 2028, the minimum wage would be adjusted each year to keep pace with growth in the median wage, a measure of wages for typical workers.

Student debt relief

Some Congresspeople are proposing a policy that would help to address the student loan debt crisis by forgiving up to $50,000 in loans per borrower. Approximately 42 million Americans, or about 1 in 6 American adults, owe a cumulative $1.6 trillion in student loans. Student loans are now the second-largest slice of household debt after mortgages, bigger than credit card debt.

Housing

Some Congresspeople are proposing a housing affordability policy that would help ensure that every American has a place to live. The policy would allow for smaller, lower cost homes like duplexes, townhouses, and garden apartments to be built and developed, allowing new nonprofit homes and reducing overall housing prices.

Climate change

Some Congresspeople are proposing a Green New Deal bill which would phase out the use of fossil fuels, with the government providing clean energy jobs for people who can’t find employment in the private sector. All jobs would pay at least $20 an hour, and include healthcare benefits and collective bargaining rights.

df_cbzs_elg %>% 
  ggplot(aes(x = support)) +
  geom_histogram(fill = "lightblue",
                 binwidth = 1,
                 color = NA) +
  scale_x_continuous(breaks = seq(1,7,1),
                     limits = c(0,8)) +
  ylab("count") +
  geom_vline(xintercept = mean(df_cbzs_elg$support,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"))

Linked Fate: Black

  1. What happens to working-class Black people in this country will have something to do with what happens to working-class people of my racial group
  2. Working-class Black people and working-class people from my racial group share a common destiny

r = 0.49

df_cbzs_elg %>% 
  ggplot(aes(x = lf_b)) +
  geom_density(fill = "lightblue",
                 color = NA) +
  scale_x_continuous(breaks = seq(1,7,1),
                     limits = c(1,7)) +
  ylab("density") +
  geom_vline(xintercept = mean(df_cbzs_elg$lf_b,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"))

Linked Fate: Asian

  1. What happens to working-class Asian people in this country will have something to do with what happens to working-class people of my racial group
  2. Working-class Asian people and working-class people from my racial group share a common destiny

r = 0.59

df_cbzs_elg %>% 
  ggplot(aes(x = lf_a)) +
  geom_density(fill = "lightblue",
                 color = NA) +
  scale_x_continuous(breaks = seq(1,7,1),
                     limits = c(1,7)) +
  ylab("density") +
  geom_vline(xintercept = mean(df_cbzs_elg$lf_a,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"))

Linked Fate: Hispanic

  1. What happens to working-class Hispanic people in this country will have something to do with what happens to working-class people of my racial group
  2. Working-class Hispanic people and working-class people from my racial group share a common destiny

r = 0.59

df_cbzs_elg %>% 
  ggplot(aes(x = lf_h)) +
  geom_density(fill = "lightblue",
                 color = NA) +
  scale_x_continuous(breaks = seq(1,7,1),
                     limits = c(1,7)) +
  ylab("density") +
  geom_vline(xintercept = mean(df_cbzs_elg$lf_h,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"))

Similarity

  1. I think I’m very similar to most non-White working class people.
  2. I have a lot in common with the average non-White working class person.

r = 0.86

df_cbzs_elg %>% 
  ggplot(aes(x = similar)) +
  geom_density(fill = "lightblue",
                 color = NA) +
  scale_x_continuous(breaks = seq(1,7,1),
                     limits = c(1,7)) +
  ylab("density") +
  geom_vline(xintercept = mean(df_cbzs_elg$similar,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"))

ZSB: Race - Wilkins measure

  1. When non-white people get jobs, white people lose jobs.
  2. When non-white people get rights, they are taking rights away from white people.
  3. Rights for non-white people mean white people lose out.
  4. As non-white people face less racism, white people end up facing more racism.
  5. Less discrimination against non-white people means more discrimination against white people.
  6. Efforts to reduce discrimination against non-white people have led to increased discrimination against white people.

alpha = 0.94

df_cbzs_elg %>% 
  ggplot(aes(x = zs_race_wilkins)) +
  geom_density(fill = "lightblue",
                 color = NA) +
  scale_x_continuous(breaks = seq(1,7,1),
                     limits = c(1,7)) +
  ylab("density") +
  geom_vline(xintercept = mean(df_cbzs_elg$zs_race_wilkins,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"))

Correlations

Analysis

Mediation Model

Predictor: Class ZSB

Mediator: Cross-race solidarity

Outcome: Support for policy

Bootstraps: 10,000

form.m <- reformulate("zs_class", response = "crs")

form.y <- reformulate(c("zs_class", "crs"), response = "support")

# Fit linear models
m.fit <- lm(form.m, data = df_cbzs_elg)        # a-path
y.fit <- lm(form.y, data = df_cbzs_elg)        # b and c'-paths

# Fit outcome model WITHOUT mediator to get c-path (total effect)
y.fit.total <- lm(
  reformulate("zs_class", response = "support"),
  data = df_cbzs_elg
)

# Mediation analysis with bootstrapping (10,000 sims)
med.fit <- mediation::mediate(
  model.m   = m.fit,
  model.y   = y.fit,
  treat     = "zs_class",
  mediator  = "crs",
  boot      = TRUE,
  sims      = 10000
)

med_tbl <- tibble(
  Effect   = c("ACME (indirect)", "ADE (direct)",
               "Total Effect", "Prop. Mediated"),
  Estimate = c(med.fit$d0,        med.fit$z0,
               med.fit$tau.coef,  med.fit$n0),
  CI.lower = c(med.fit$d0.ci[1],  med.fit$z0.ci[1],
               med.fit$tau.ci[1], med.fit$n0.ci[1]),
  CI.upper = c(med.fit$d0.ci[2],  med.fit$z0.ci[2],
               med.fit$tau.ci[2], med.fit$n0.ci[2]),
  p.value  = c(med.fit$d0.p,      med.fit$z0.p,
               med.fit$tau.p,     med.fit$n0.p)
)

kbl(med_tbl) %>% 
  kable_styling(bootstrap_options = "hover",
                full_width = F,
                position = "left")
Effect Estimate CI.lower CI.upper p.value
ACME (indirect) 0.0492645 -0.0075436 0.1192509 0.0888
ADE (direct) 0.3070470 0.1400034 0.4729324 0.0002
Total Effect 0.3563115 0.1999013 0.5106287 0.0000
Prop. Mediated 0.1382624 -0.0217287 0.3912559 0.0888
# Helper to generate significance stars
p_stars <- function(p) {
  if (p < .001) return("***")
  if (p < .01)  return("**")
  if (p < .05)  return("*")
  return("")
}

# Extract coefficients & p-values
a_coef   <- coef(m.fit)["zs_class"]
a_p      <- summary(m.fit)$coefficients["zs_class", "Pr(>|t|)"]

b_coef   <- coef(y.fit)["crs"]
b_p      <- summary(y.fit)$coefficients["crs", "Pr(>|t|)"]

cprime   <- coef(y.fit)["zs_class"]
cprime_p <- summary(y.fit)$coefficients["zs_class", "Pr(>|t|)"]

c_total  <- coef(y.fit.total)["zs_class"]
c_total_p <- summary(y.fit.total)$coefficients["zs_class", "Pr(>|t|)"]

# Paste coefficient + stars
a_label      <- paste0("a = ", round(a_coef, 3), p_stars(a_p))
b_label      <- paste0("b = ", round(b_coef, 3), p_stars(b_p))
cprime_label <- paste0("c' = ", round(cprime, 3), p_stars(cprime_p))
c_label      <- paste0("c = ", round(c_total, 3), p_stars(c_total_p))

# Plot
ggplot() +
  xlim(0, 3) + ylim(0, 2) +

  # Nodes
  annotate("text", x = 0.5, y = 1,   label = "zs_class", fontface = "bold") +
  annotate("text", x = 1.5, y = 1,   label = "crs",     fontface = "bold") +
  annotate("text", x = 2.5, y = 1,   label = "support",  fontface = "bold") +

  # a-path (X → M)
  annotate("segment",
           x = 0.7, xend = 1.3, y = 1, yend = 1,
           arrow = arrow(length = unit(0.20, "cm"))) +
  annotate("text", x = 1.0, y = 1.15, label = a_label) +

  # b-path (M → Y)
  annotate("segment",
           x = 1.7, xend = 2.3, y = 1, yend = 1,
           arrow = arrow(length = unit(0.20, "cm"))) +
  annotate("text", x = 2.0, y = 1.15, label = b_label) +

  # c'-path (direct effect)
  annotate("segment",
           x = 0.5, xend = 2.5, y = 0.9, yend = 0.9,
           arrow = arrow(length = unit(0.20, "cm"))) +
  annotate("text", x = 1.5, y = 0.75, label = cprime_label) +

  # c-path (total effect, dashed)
  annotate("segment",
           x = 0.5, xend = 2.5, y = 1.1, yend = 1.1,
           linetype = "dashed",
           arrow = arrow(length = unit(0.20, "cm"))) +
  annotate("text", x = 1.5, y = 1.25, label = c_label) +
  theme_void()

Linear Model 1

Predictor: Class ZSB

Moderator: Race ZSB: Black

Outcome: Cross-Race Solidarity

m1 <- lm(crs ~ zs_class*zs_race_b,data = df_cbzs_elg)

eta_table <- eta_squared(m1)
etas_for_table <- c(NA,eta_table$Eta2)
apa_lm <- apa_print(m1)
table_for_print <- apa_lm$table %>% 
  mutate(eta2 = round(etas_for_table,3))
 
kbl(table_for_print) %>% 
  kable_styling(bootstrap_options = "hover",
                full_width = F,
                position = "left")
term estimate conf.int statistic df p.value eta2
Intercept 5.09 [4.21, 5.97] 11.42 189 < .001 NA
Zs class 0.18 [0.02, 0.35] 2.23 189 .027 0.134
Zs race b -0.43 [-0.81, -0.04] -2.20 189 .029 0.121
Zs class \(\times\) Zs race b 0.03 [-0.04, 0.10] 0.82 189 .415 0.004
interact_plot(m1,
              pred = "zs_class",
              modx = "zs_race_b",
              interval = T)

Linear Model 2

Predictor: Class ZSB

Moderator: Race ZSB: Asian

Outcome: Cross-Race Solidarity

m1 <- lm(crs ~ zs_class*zs_race_a,data = df_cbzs_elg)

eta_table <- eta_squared(m1)
etas_for_table <- c(NA,eta_table$Eta2)
apa_lm <- apa_print(m1)
table_for_print <- apa_lm$table %>% 
  mutate(eta2 = round(etas_for_table,3))
 
kbl(table_for_print) %>% 
  kable_styling(bootstrap_options = "hover",
                full_width = F,
                position = "left")
term estimate conf.int statistic df p.value eta2
Intercept 5.11 [4.22, 5.99] 11.35 189 < .001 NA
Zs class 0.15 [-0.01, 0.32] 1.83 189 .069 0.128
Zs race a -0.42 [-0.79, -0.06] -2.28 189 .024 0.071
Zs class \(\times\) Zs race a 0.04 [-0.03, 0.11] 1.22 189 .226 0.008
interact_plot(m1,
              pred = "zs_class",
              modx = "zs_race_a",
              interval = T)

Linear Model 3

Predictor: Class ZSB

Moderator: Race ZSB: Hispanic

Outcome: Cross-Race Solidarity

m1 <- lm(crs ~ zs_class*zs_race_h,data = df_cbzs_elg)

eta_table <- eta_squared(m1)
etas_for_table <- c(NA,eta_table$Eta2)
apa_lm <- apa_print(m1)
table_for_print <- apa_lm$table %>% 
  mutate(eta2 = round(etas_for_table,3))
 
kbl(table_for_print) %>% 
  kable_styling(bootstrap_options = "hover",
                full_width = F,
                position = "left")
term estimate conf.int statistic df p.value eta2
Intercept 5.10 [4.23, 5.96] 11.61 189 < .001 NA
Zs class 0.18 [0.02, 0.34] 2.20 189 .029 0.133
Zs race h -0.40 [-0.77, -0.04] -2.19 189 .030 0.116
Zs class \(\times\) Zs race h 0.03 [-0.04, 0.10] 0.77 189 .445 0.003
interact_plot(m1,
              pred = "zs_class",
              modx = "zs_race_h",
              interval = T)

Linear Model 4

Predictor: Class ZSB

Moderator: Race ZSB: Black

Outcome: Linked fate: Black

m1 <- lm(lf_b ~ zs_class*zs_race_b,data = df_cbzs_elg)

eta_table <- eta_squared(m1)
etas_for_table <- c(NA,eta_table$Eta2)
apa_lm <- apa_print(m1)
table_for_print <- apa_lm$table %>% 
  mutate(eta2 = round(etas_for_table,3))
 
kbl(table_for_print) %>% 
  kable_styling(bootstrap_options = "hover",
                full_width = F,
                position = "left")
term estimate conf.int statistic df p.value eta2
Intercept 4.50 [3.36, 5.64] 7.80 189 < .001 NA
Zs class 0.18 [-0.03, 0.39] 1.71 189 .089 0.045
Zs race b -0.14 [-0.64, 0.35] -0.56 189 .575 0.031
Zs class \(\times\) Zs race b -0.01 [-0.10, 0.09] -0.13 189 .898 0.000
interact_plot(m1,
              pred = "zs_class",
              modx = "zs_race_b",
              interval = T)

Linear Model 5

Predictor: Class ZSB

Moderator: Race ZSB: Asian

Outcome: Linked fate: Asian

m1 <- lm(lf_a ~ zs_class*zs_race_a,data = df_cbzs_elg)

eta_table <- eta_squared(m1)
etas_for_table <- c(NA,eta_table$Eta2)
apa_lm <- apa_print(m1)
table_for_print <- apa_lm$table %>% 
  mutate(eta2 = round(etas_for_table,3))
 
kbl(table_for_print) %>% 
  kable_styling(bootstrap_options = "hover",
                full_width = F,
                position = "left")
term estimate conf.int statistic df p.value eta2
Intercept 4.86 [3.71, 6.01] 8.31 189 < .001 NA
Zs class 0.09 [-0.13, 0.30] 0.80 189 .424 0.061
Zs race a -0.42 [-0.90, 0.05] -1.76 189 .080 0.016
Zs class \(\times\) Zs race a 0.06 [-0.03, 0.15] 1.30 189 .196 0.009
interact_plot(m1,
              pred = "zs_class",
              modx = "zs_race_a",
              interval = T)

Linear Model 6

Predictor: Class ZSB

Moderator: Race ZSB: Hispanic

Outcome: Linked fate: Hispanic

m1 <- lm(lf_h ~ zs_class*zs_race_h,data = df_cbzs_elg)

eta_table <- eta_squared(m1)
etas_for_table <- c(NA,eta_table$Eta2)
apa_lm <- apa_print(m1)
table_for_print <- apa_lm$table %>% 
  mutate(eta2 = round(etas_for_table,3))
 
kbl(table_for_print) %>% 
  kable_styling(bootstrap_options = "hover",
                full_width = F,
                position = "left")
term estimate conf.int statistic df p.value eta2
Intercept 5.26 [4.10, 6.43] 8.89 189 < .001 NA
Zs class 0.01 [-0.20, 0.23] 0.14 189 .893 0.039
Zs race h -0.50 [-0.99, -0.01] -2.03 189 .044 0.016
Zs class \(\times\) Zs race h 0.07 [-0.02, 0.17] 1.58 189 .116 0.013
interact_plot(m1,
              pred = "zs_class",
              modx = "zs_race_h",
              interval = T)

Linear Model 7

Predictor: Class ZSB

Moderator: Race ZSB Wilkins

Outcome: Cross-Race Class Solidarity

m1 <- lm(crs ~ zs_class*zs_race_wilkins,data = df_cbzs_elg)

eta_table <- eta_squared(m1)
etas_for_table <- c(NA,eta_table$Eta2)
apa_lm <- apa_print(m1)
table_for_print <- apa_lm$table %>% 
  mutate(eta2 = round(etas_for_table,3))
 
kbl(table_for_print) %>% 
  kable_styling(bootstrap_options = "hover",
                full_width = F,
                position = "left")
term estimate conf.int statistic df p.value eta2
Intercept 5.01 [4.07, 5.96] 10.47 189 < .001 NA
Zs class 0.19 [0.02, 0.36] 2.17 189 .031 0.132
Zs race wilkins -0.26 [-0.60, 0.08] -1.51 189 .133 0.106
Zs class \(\times\) Zs race wilkins 0.00 [-0.06, 0.07] 0.06 189 .952 0.000
interact_plot(m1,
              pred = "zs_class",
              modx = "zs_race_wilkins",
              interval = T)