knitr::opts_chunk$set(message = FALSE, warning = FALSE)

PREP

Data & Libraries

library(psych)
library(tidyverse)
library(lme4)
library(lmerTest)
library(sjPlot)

d <- read.csv("election-study-allwaves_numeric.csv", na.strings = c("-98","-99","98","99","", NA))

Wave Timing

Wave 1: October 30, 2024 - November 6, 2024

Wave 2: November 6, 2024 - November 7, 2024

Wave 3: December 8, 2024 - December 10, 2024

Wave 4: July 15, 2025 - August 8, 2025

Variable Details

PO: policy opinions
1 - EV subsidies
2 - Require utilities draw more from clean energy
3 - Beef tax
4 - Clean energy subsidies to businesses
5 - Locate & deport illegal immigrants
6 - Use E-Verify system (anti-illegal immigrant policy)
7 - Make asylum laws more generous
8 - Establish sanctuary cities

PA: personal actions
1 - Buy EV
2 - Install solar panels
3 - Eat less beef
4 - Invest in clean energy stocks
5 - Move to a "lower illegal immigrant" city
6 - Boycott businesses that employ illegal immigrants
7 - Volunteer for migrant housing org
8 - Avoid buying from businesses with financial ties to federal immigration enforcement agencies

CD: Charitable donations
1 - Nature Conservancy
2 - Sierra Club
3 - ACC (conservative pro-environment org)
4 - Red Cross
5 - United We Dream (pro-immigrant org)
6 - Global Refuge (religious pro-immigrant org)
7 - Border Patrol Foundation

Change variables
- IllegalImmigrationChange: Should the United States government be doing more, less, or about the same amount to reduce the number of migrants entering the country illegally?
- MigrantsChange: Should the United States government be doing more, less, or about the same amount to help undocumented immigrants thrive and gain pathways to citizenship?
- EnvironmentChange: Should the United States government be doing more, less, or about the same amount to protect the environment?
- ClimateChange: Should the United States government be doing more, less, or about the same amount to address climate change?

Other variables
- Filibuster: In the U.S. Senate, the filibuster can prevent bills from passing unless they can get 60 votes out of 100. This means that some bills cannot pass, despite being supported by a majority of Senators (51 or more). Do you oppose or support the filibuster?
- DividedGovt: Divided government means that the President comes from one party, while the other party controls either the House, the Senate, or both. Divided government tends to make it harder to pass policies. Is divided government a good thing or a bad thing, in your opinion?
- PoliticalEase: How easy do you think it is for the President of the United States to pass his or her agenda?
- StaffReview: Sometimes Presidential and/or Congressional policies are slowed down by budget analyses and regulatory reviews that administrative staff members conduct. 
Is it a good thing or a bad thing that administrative reviews can slow down policy implementation, in your opinion?


- PresSatisfied: If you belong to a political party, how satisfied or unsatisfied are you with your party’s choice of nominee for President of the United States in the 2024 election?

Variable construction

## Creating factor measure of party with leaners combined
d$party_factor <- NA
d$party_factor[d$party == 2 | d$partyClose == 1] <- "Democrat"
d$party_factor[d$party == 1 | d$partyClose == 2] <- "Republican"
d$party_factor[d$partyClose == 3] <- "Independent"


## Ideology
d$ideo_factor <- NA
d$ideo_factor[d$Ideology == 2 | d$Ideology == 1] <- "Liberal"
d$ideo_factor[d$Ideology == -2 | d$Ideology == -1] <- "Conservative"
d$ideo_factor[d$Ideology == 0] <- "Moderate"

d$ideo_factor <- factor(d$ideo_factor, levels = c("Liberal", "Moderate", "Conservative"))

d$presVote <- recode_factor(d$PresPreference, 
                            `1` = "Harris",
                            `2` = "Trump",
                            `3` = "Other")

ANALYSES

analysis prep

d$pDem_Rep <- NA
d$pDem_Rep[d$party_factor == "Democrat"] <- -1/2
d$pDem_Rep[d$party_factor == "Independent"] <- 0
d$pDem_Rep[d$party_factor == "Republican"] <- 1/2

d$pInd_Party <- NA
d$pInd_Party[d$party_factor == "Democrat"] <- 1/3
d$pInd_Party[d$party_factor == "Independent"] <- -2/3
d$pInd_Party[d$party_factor == "Republican"] <- 1/3

# Wave
## contrast
d$lin.wave <- NA
d$lin.wave[d$wave == 1] <- -1/2
d$lin.wave[d$wave == 2] <- -1/4
d$lin.wave[d$wave == 3] <- 1/4
d$lin.wave[d$wave == 4] <- 1/2
  
d$quad.wave <- NA
d$quad.wave[d$wave == 1] <- 1/4
d$quad.wave[d$wave == 2] <- -1/4
d$quad.wave[d$wave == 3] <- -1/4
d$quad.wave[d$wave == 4] <- 1/4

d$cub.wave <- NA
d$cub.wave[d$wave == 1] <- -1/4
d$cub.wave[d$wave == 2] <- 1/2
d$cub.wave[d$wave == 3] <- -1/2
d$cub.wave[d$wave == 4] <- 1/4

## wave 4
d$wave4_1 <- NA
d$wave4_1[d$wave == 1] <- 1
d$wave4_1[d$wave == 2] <- 0
d$wave4_1[d$wave == 3] <- 0
d$wave4_1[d$wave == 4] <- 0
  
d$wave4_2 <- NA
d$wave4_2[d$wave == 1] <- 0
d$wave4_2[d$wave == 2] <- 1
d$wave4_2[d$wave == 3] <- 0
d$wave4_2[d$wave == 4] <- 0

d$wave4_3 <- NA
d$wave4_3[d$wave == 1] <- 0
d$wave4_3[d$wave == 2] <- 0
d$wave4_3[d$wave == 3] <- 1
d$wave4_3[d$wave == 4] <- 0


# presvote

## contrast codes
d$pHar_Tru <- NA
d$pHar_Tru[d$presVote == "Harris"] <- -1/2
d$pHar_Tru[d$presVote == "Other"] <- 0
d$pHar_Tru[d$presVote == "Trump"] <- 1/2

d$pOth_Party <- NA
d$pOth_Party[d$presVote == "Harris"] <- 1/3
d$pOth_Party[d$presVote == "Other"] <- -2/3
d$pOth_Party[d$presVote == "Trump"] <- 1/3

## dummy codes
d$pHar_Tru.d <- NA
d$pHar_Tru.d[d$presVote == "Harris"] <- 0
d$pHar_Tru.d[d$presVote == "Other"] <- 0
d$pHar_Tru.d[d$presVote == "Trump"] <- 1

d$pHar_Oth.d <- NA
d$pHar_Oth.d[d$presVote == "Harris"] <- 0
d$pHar_Oth.d[d$presVote == "Other"] <- 1
d$pHar_Oth.d[d$presVote == "Trump"] <- 0


d$pTru_Har.d <- NA
d$pTru_Har.d[d$presVote == "Harris"] <- 1
d$pTru_Har.d[d$presVote == "Other"] <- 0
d$pTru_Har.d[d$presVote == "Trump"] <- 0

d$pTru_Oth.d <- NA
d$pTru_Oth.d[d$presVote == "Harris"] <- 0
d$pTru_Oth.d[d$presVote == "Other"] <- 1
d$pTru_Oth.d[d$presVote == "Trump"] <- 0


d$pOth_Tru.d <- NA
d$pOth_Tru.d[d$presVote == "Harris"] <- 0
d$pOth_Tru.d[d$presVote == "Other"] <- 0
d$pOth_Tru.d[d$presVote == "Trump"] <- 1

d$pOth_Har.d <- NA
d$pOth_Har.d[d$presVote == "Harris"] <- 1
d$pOth_Har.d[d$presVote == "Other"] <- 0
d$pOth_Har.d[d$presVote == "Trump"] <- 0

Government & Process opinions

Political ease

ggplot(d[!is.na(d$presVote),],
       aes(x = factor(presVote),
           y = PoliticalEase,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) +
  coord_cartesian(ylim = c(-1,1)) +
  scale_fill_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Political Ease") +
  facet_grid(~wave.plot)

tab_model(lm(PoliticalEase ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave), data = d), show.stat = T)
  Political Ease
Predictors Estimates CI Statistic p
(Intercept) -0.02 -0.08 – 0.04 -0.73 0.468
pHar Tru -0.05 -0.14 – 0.05 -0.94 0.349
pOth Party 0.10 -0.06 – 0.26 1.20 0.232
lin wave 0.59 0.44 – 0.74 7.72 <0.001
quad wave 0.12 -0.12 – 0.36 0.97 0.330
cub wave 0.46 0.30 – 0.61 5.63 <0.001
pHar Tru × lin wave -0.98 -1.23 – -0.74 -7.82 <0.001
pHar Tru × quad wave -0.51 -0.90 – -0.12 -2.58 0.010
pHar Tru × cub wave -0.50 -0.75 – -0.26 -4.01 <0.001
pOth Party × lin wave -0.15 -0.55 – 0.24 -0.76 0.447
pOth Party × quad wave -0.35 -1.00 – 0.30 -1.06 0.287
pOth Party × cub wave -0.16 -0.58 – 0.27 -0.71 0.475
Observations 5068
R2 / R2 adjusted 0.040 / 0.038

Satisfied w/ Presidential Nominee

ggplot(d[!is.na(d$presVote),],
       aes(x = factor(presVote),
           y = PresSatisfied,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) +
  scale_fill_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Satisfaction with party's presidential nominee") +
  facet_grid(~wave.plot)

tab_model(lm(PresSatisfied ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave), data = d), show.stat = T)
  Pres Satisfied
Predictors Estimates CI Statistic p
(Intercept) 0.43 0.35 – 0.50 11.31 <0.001
pHar Tru 1.14 1.03 – 1.25 20.12 <0.001
pOth Party 1.97 1.77 – 2.17 19.18 <0.001
lin wave -0.22 -0.40 – -0.03 -2.33 0.020
quad wave -0.23 -0.53 – 0.07 -1.52 0.128
cub wave -0.02 -0.22 – 0.17 -0.23 0.819
pHar Tru × lin wave 1.25 0.98 – 1.53 8.82 <0.001
pHar Tru × quad wave -1.02 -1.47 – -0.58 -4.52 <0.001
pHar Tru × cub wave 0.61 0.33 – 0.89 4.25 <0.001
pOth Party × lin wave -0.21 -0.69 – 0.28 -0.83 0.405
pOth Party × quad wave 0.27 -0.53 – 1.08 0.67 0.503
pOth Party × cub wave -0.55 -1.08 – -0.02 -2.02 0.043
Observations 4586
R2 / R2 adjusted 0.166 / 0.164

Effects

  • Trump supporters more satisfied with party’s nominee than Harris voters collapsing across wave
  • Satisfaction with nominee decreases from wave 1 to wave 4, collapsing across vote choice
  • Satisfaction decreased more for Harris voters than for Trump voters (b = 1.25, p < .001)

Moderator: Illegal Immigration change

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = IllegalImmChange,
           y = PresSatisfied,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  scale_x_continuous(breaks = seq(-3,3,1)) +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  scale_color_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Should the US be doing less or more about illegal immigration?") +
  ylab("Satisfaction with party's presidential nominee") +
  facet_grid(~wave.plot)

tab_model(lm(PresSatisfied ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * illImmchg.c, data = d), show.stat = T)
  Pres Satisfied
Predictors Estimates CI Statistic p
(Intercept) 0.39 0.31 – 0.47 9.76 <0.001
pHar Tru 1.01 0.89 – 1.13 16.69 <0.001
pOth Party 1.83 1.62 – 2.05 16.97 <0.001
lin wave -0.14 -0.34 – 0.06 -1.39 0.163
quad wave -0.20 -0.51 – 0.12 -1.24 0.216
cub wave 0.03 -0.17 – 0.23 0.32 0.752
illImmchg c 0.09 0.05 – 0.14 4.02 <0.001
pHar Tru × lin wave 1.42 1.11 – 1.72 9.14 <0.001
pHar Tru × quad wave -1.03 -1.50 – -0.55 -4.23 <0.001
pHar Tru × cub wave 0.56 0.26 – 0.86 3.70 <0.001
pOth Party × lin wave -0.24 -0.77 – 0.29 -0.90 0.370
pOth Party × quad wave 0.24 -0.61 – 1.08 0.55 0.585
pOth Party × cub wave -0.68 -1.22 – -0.13 -2.44 0.015
pHar Tru × illImmchg c 0.31 0.24 – 0.38 8.68 <0.001
pOth Party × illImmchg c 0.05 -0.07 – 0.17 0.81 0.418
lin wave × illImmchg c 0.00 -0.11 – 0.11 0.06 0.952
quad wave × illImmchg c 0.08 -0.11 – 0.26 0.83 0.406
cub wave × illImmchg c 0.18 0.06 – 0.30 2.96 0.003
(pHar Tru × lin wave) ×
illImmchg c
0.07 -0.11 – 0.24 0.73 0.468
(pHar Tru × quad wave) ×
illImmchg c
0.05 -0.23 – 0.33 0.34 0.733
(pHar Tru × cub wave) ×
illImmchg c
0.04 -0.14 – 0.22 0.45 0.649
(pOth Party × lin wave) ×
illImmchg c
-0.01 -0.30 – 0.28 -0.08 0.937
(pOth Party × quad wave)
× illImmchg c
0.11 -0.38 – 0.60 0.43 0.665
(pOth Party × cub wave) ×
illImmchg c
-0.18 -0.51 – 0.15 -1.08 0.278
Observations 4582
R2 / R2 adjusted 0.188 / 0.183

Effects

  • Difference between Harris & Trump supporters in nominee satisfaction moderated by illegal immigration view
    • Trump supporters had consistent positive association between satisfaction with party nominee and doing more about illegal immigration; effect was strongly positive collapsing across waves (b = .27, p < .001)
    • Harris supporters had slight negative and then eventual non-association between illegal immigration view and satisfaction with party nominee; effect of illegal immigration change was marginally negative for Harris supporters, collapsing across wave (p = .07)

Moderator: Environmental Importance

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = enviroImport,
           y = PresSatisfied,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  scale_x_continuous(breaks = seq(1,5,1)) +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  scale_color_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Environmental Importance") +
  ylab("Satisfaction with party's presidential nominee") +
  facet_grid(~wave.plot)

tab_model(lm(PresSatisfied ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * enviroImport.c, data = d), show.stat = T)
  Pres Satisfied
Predictors Estimates CI Statistic p
(Intercept) 0.39 0.32 – 0.47 10.14 <0.001
pHar Tru 1.24 1.12 – 1.35 20.73 <0.001
pOth Party 1.92 1.72 – 2.13 18.54 <0.001
lin wave -0.18 -0.36 – 0.00 -1.91 0.056
quad wave -0.15 -0.46 – 0.15 -1.00 0.316
cub wave -0.03 -0.22 – 0.17 -0.26 0.798
enviroImport c 0.03 -0.03 – 0.09 0.92 0.360
pHar Tru × lin wave 1.13 0.84 – 1.42 7.55 <0.001
pHar Tru × quad wave -1.22 -1.68 – -0.75 -5.10 <0.001
pHar Tru × cub wave 0.63 0.33 – 0.93 4.16 <0.001
pOth Party × lin wave -0.09 -0.58 – 0.40 -0.36 0.720
pOth Party × quad wave 0.32 -0.49 – 1.13 0.77 0.439
pOth Party × cub wave -0.54 -1.08 – -0.01 -1.98 0.047
pHar Tru × enviroImport c -0.26 -0.36 – -0.15 -4.95 <0.001
pOth Party × enviroImport
c
0.24 0.07 – 0.41 2.72 0.006
lin wave × enviroImport c -0.09 -0.25 – 0.07 -1.13 0.257
quad wave × enviroImport
c
-0.21 -0.47 – 0.04 -1.63 0.104
cub wave × enviroImport c 0.08 -0.09 – 0.24 0.93 0.351
(pHar Tru × lin wave) ×
enviroImport c
0.34 0.09 – 0.60 2.63 0.009
(pHar Tru × quad wave) ×
enviroImport c
0.41 0.01 – 0.82 2.00 0.046
(pHar Tru × cub wave) ×
enviroImport c
-0.07 -0.33 – 0.18 -0.57 0.572
(pOth Party × lin wave) ×
enviroImport c
-0.23 -0.65 – 0.19 -1.08 0.282
(pOth Party × quad wave)
× enviroImport c
-0.15 -0.84 – 0.53 -0.44 0.660
(pOth Party × cub wave) ×
enviroImport c
-0.10 -0.54 – 0.35 -0.44 0.662
Observations 4584
R2 / R2 adjusted 0.177 / 0.173

Effects

  • Environmental importance on its own did not predict satisfaction with party’s nominee choice.

Moderation

  • Environmental importance moderated the vote choice x wave interaction
    • Environmental importance was decreasingly predictive of nominee satisfaction for Harris supporters (b = -0.34, p = .001)
    • positively predicted satisfaction with nominee in wave 1 for Harris voters (b = .48, p < .001), but not in wave 4 (p = .75)
    • Trump voters were unaffected by environmental importance collapsing across wave (p = .54)

Moderator: Party Identity

knitr::kable(table(d$presVote, d$party_factor))
Democrat Independent Republican
Harris 1732 234 152
Trump 162 219 1976
Other 91 216 65
d$presVote.plot <- recode_factor(d$presVote, "Harris" = "Harris Voters", "Trump" = "Trump Voters")

ggplot(d[!is.na(d$presVote) & !is.na(d$party_factor) & d$presVote != "Other" & d$party_factor != "Independent",],
       aes(x = factor(party_factor),
           y = PresSatisfied,
           fill = factor(party_factor))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) +
  scale_fill_manual("Party Identity", values = c("dodgerblue","red3")) +
  xlab("Vote Choice") +
  ylab("Satisfaction with own party's 
presidential nominee") +
  facet_grid(presVote.plot~wave.plot)

tab_model(lm(PresSatisfied ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * (pDem_Rep + pInd_Party), data = d), show.stat = T)
  Pres Satisfied
Predictors Estimates CI Statistic p
(Intercept) -0.01 -0.10 – 0.09 -0.14 0.890
pHar Tru 1.18 0.99 – 1.37 12.30 <0.001
pOth Party 1.36 1.11 – 1.60 10.86 <0.001
lin wave -0.13 -0.36 – 0.11 -1.05 0.295
quad wave -0.07 -0.46 – 0.32 -0.35 0.723
cub wave 0.25 -0.01 – 0.51 1.89 0.059
pDem Rep 0.16 -0.09 – 0.41 1.29 0.198
pInd Party 0.26 0.06 – 0.46 2.57 0.010
pHar Tru × lin wave 0.93 0.46 – 1.41 3.88 <0.001
pHar Tru × quad wave -1.30 -2.05 – -0.55 -3.39 0.001
pHar Tru × cub wave 0.56 0.09 – 1.04 2.31 0.021
pOth Party × lin wave 0.05 -0.53 – 0.64 0.17 0.863
pOth Party × quad wave 0.59 -0.39 – 1.57 1.19 0.235
pOth Party × cub wave -0.79 -1.44 – -0.14 -2.37 0.018
pHar Tru × pDem Rep 2.85 2.42 – 3.27 13.15 <0.001
pHar Tru × pInd Party -0.23 -0.66 – 0.19 -1.07 0.284
pOth Party × pDem Rep -0.57 -1.22 – 0.09 -1.70 0.089
pOth Party × pInd Party 0.61 0.14 – 1.08 2.55 0.011
lin wave × pDem Rep 0.41 -0.18 – 1.00 1.36 0.173
lin wave × pInd Party 0.43 -0.07 – 0.92 1.70 0.090
quad wave × pDem Rep -0.55 -1.55 – 0.45 -1.09 0.277
quad wave × pInd Party 0.04 -0.76 – 0.83 0.09 0.926
cub wave × pDem Rep -0.18 -0.85 – 0.49 -0.54 0.589
cub wave × pInd Party 0.35 -0.16 – 0.86 1.35 0.176
(pHar Tru × lin wave) ×
pDem Rep
-1.92 -2.95 – -0.89 -3.65 <0.001
(pHar Tru × lin wave) ×
pInd Party
-0.77 -1.87 – 0.33 -1.37 0.170
(pHar Tru × quad wave) ×
pDem Rep
-1.86 -3.55 – -0.16 -2.14 0.032
(pHar Tru × quad wave) ×
pInd Party
1.29 -0.43 – 3.00 1.47 0.141
(pHar Tru × cub wave) ×
pDem Rep
-1.17 -2.28 – -0.05 -2.05 0.040
(pHar Tru × cub wave) ×
pInd Party
1.35 0.29 – 2.42 2.49 0.013
(pOth Party × lin wave) ×
pDem Rep
0.77 -0.77 – 2.31 0.98 0.327
(pOth Party × lin wave) ×
pInd Party
1.06 -0.08 – 2.20 1.82 0.069
(pOth Party × quad wave)
× pDem Rep
1.54 -1.07 – 4.16 1.16 0.248
(pOth Party × quad wave)
× pInd Party
1.04 -0.83 – 2.91 1.09 0.275
(pOth Party × cub wave) ×
pDem Rep
-0.64 -2.41 – 1.12 -0.72 0.473
(pOth Party × cub wave) ×
pInd Party
-0.32 -1.54 – 0.91 -0.51 0.611
Observations 4425
R2 / R2 adjusted 0.222 / 0.216

Effects

  • Interaction between party identity & vote choice (b = 2.85, p < .001)
  • Party identity x Vote choice moderated by wave (b = -1.92, p < .001)
ggplot(d[!is.na(d$presVote) & !is.na(d$party_factor) & d$presVote != "Other" & d$party_factor != "Independent",]) +
  geom_smooth(method = "lm",
              aes(x = Ideology,
                  y = PresSatisfied,
                  color = party_factor,
                  fill = party_factor),
              fullrange = T) +
  theme_bw() +
  coord_cartesian(ylim = c(-5,4)) +
  scale_y_continuous(breaks = seq(-3,3,1)) +
  scale_fill_manual("Party Identity", values = c("dodgerblue","red3")) +
  scale_color_manual("Party Identity", values = c("dodgerblue","red3")) +
  xlab("Ideology") +
  ylab("Satisfaction with own party's 
presidential nominee") +
  facet_grid(presVote.plot~wave.plot)

tab_model(lm(PresSatisfied ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * (pDem_Rep + pInd_Party) * Ideology, data = d), show.stat = T)
  Pres Satisfied
Predictors Estimates CI Statistic p
(Intercept) -0.11 -0.22 – -0.00 -2.04 0.041
pHar Tru 1.24 1.05 – 1.43 12.79 <0.001
pOth Party 1.36 1.09 – 1.64 9.73 <0.001
lin wave -0.07 -0.32 – 0.19 -0.51 0.610
quad wave -0.10 -0.53 – 0.32 -0.48 0.633
cub wave 0.20 -0.09 – 0.48 1.37 0.171
pDem Rep -0.04 -0.32 – 0.24 -0.26 0.795
pInd Party 0.13 -0.08 – 0.34 1.20 0.230
Ideology 0.01 -0.12 – 0.13 0.12 0.904
pHar Tru × lin wave 1.06 0.58 – 1.54 4.33 <0.001
pHar Tru × quad wave -1.26 -2.02 – -0.50 -3.24 0.001
pHar Tru × cub wave 0.75 0.26 – 1.23 3.03 0.002
pOth Party × lin wave -0.11 -0.76 – 0.53 -0.35 0.729
pOth Party × quad wave 0.31 -0.79 – 1.40 0.55 0.586
pOth Party × cub wave -0.63 -1.37 – 0.10 -1.68 0.093
pHar Tru × pDem Rep 2.54 2.10 – 2.97 11.45 <0.001
pHar Tru × pInd Party -0.23 -0.66 – 0.20 -1.06 0.288
pOth Party × pDem Rep -0.24 -1.00 – 0.51 -0.63 0.527
pOth Party × pInd Party 0.60 0.10 – 1.10 2.34 0.020
lin wave × pDem Rep 0.56 -0.10 – 1.22 1.66 0.097
lin wave × pInd Party 0.43 -0.09 – 0.94 1.63 0.104
quad wave × pDem Rep -0.80 -1.92 – 0.32 -1.40 0.162
quad wave × pInd Party 0.12 -0.72 – 0.95 0.28 0.783
cub wave × pDem Rep -0.24 -1.00 – 0.51 -0.63 0.527
cub wave × pInd Party 0.21 -0.33 – 0.75 0.76 0.450
pHar Tru × Ideology -0.48 -0.71 – -0.25 -4.03 <0.001
pOth Party × Ideology 0.33 0.02 – 0.65 2.08 0.038
lin wave × Ideology 0.35 0.04 – 0.67 2.18 0.029
quad wave × Ideology 0.11 -0.39 – 0.60 0.41 0.679
cub wave × Ideology 0.01 -0.30 – 0.33 0.08 0.938
pDem Rep × Ideology -0.19 -0.49 – 0.12 -1.21 0.228
pInd Party × Ideology -0.32 -0.59 – -0.06 -2.38 0.017
(pHar Tru × lin wave) ×
pDem Rep
-1.33 -2.39 – -0.27 -2.45 0.014
(pHar Tru × lin wave) ×
pInd Party
-0.46 -1.56 – 0.65 -0.81 0.415
(pHar Tru × quad wave) ×
pDem Rep
-1.11 -2.85 – 0.63 -1.25 0.211
(pHar Tru × quad wave) ×
pInd Party
1.08 -0.64 – 2.79 1.23 0.217
(pHar Tru × cub wave) ×
pDem Rep
-0.91 -2.05 – 0.22 -1.58 0.115
(pHar Tru × cub wave) ×
pInd Party
1.63 0.57 – 2.70 3.01 0.003
(pOth Party × lin wave) ×
pDem Rep
0.15 -1.60 – 1.91 0.17 0.863
(pOth Party × lin wave) ×
pInd Party
0.87 -0.35 – 2.09 1.40 0.162
(pOth Party × quad wave)
× pDem Rep
0.61 -2.40 – 3.62 0.40 0.691
(pOth Party × quad wave)
× pInd Party
0.75 -1.26 – 2.77 0.73 0.464
(pOth Party × cub wave) ×
pDem Rep
-0.44 -2.49 – 1.60 -0.43 0.670
(pOth Party × cub wave) ×
pInd Party
-0.08 -1.41 – 1.24 -0.12 0.902
(pHar Tru × lin wave) ×
Ideology
-0.33 -0.92 – 0.25 -1.11 0.267
(pHar Tru × quad wave) ×
Ideology
-0.69 -1.62 – 0.24 -1.45 0.148
(pHar Tru × cub wave) ×
Ideology
-0.05 -0.64 – 0.55 -0.16 0.872
(pOth Party × lin wave) ×
Ideology
0.21 -0.59 – 1.02 0.52 0.606
(pOth Party × quad wave)
× Ideology
0.38 -0.88 – 1.63 0.59 0.555
(pOth Party × cub wave) ×
Ideology
0.17 -0.61 – 0.96 0.44 0.662
(pHar Tru × pDem Rep) ×
Ideology
-0.13 -0.60 – 0.34 -0.54 0.593
(pHar Tru × pInd Party) ×
Ideology
-0.46 -1.03 – 0.10 -1.60 0.109
(pOth Party × pDem Rep) ×
Ideology
0.30 -0.50 – 1.11 0.73 0.463
(pOth Party × pInd Party)
× Ideology
0.54 -0.09 – 1.17 1.69 0.092
(lin wave × pDem Rep) ×
Ideology
0.87 0.11 – 1.63 2.24 0.025
(lin wave × pInd Party) ×
Ideology
0.74 0.05 – 1.42 2.10 0.036
(quad wave × pDem Rep) ×
Ideology
0.74 -0.47 – 1.94 1.20 0.232
(quad wave × pInd Party)
× Ideology
0.34 -0.73 – 1.40 0.62 0.537
(cub wave × pDem Rep) ×
Ideology
-0.09 -0.86 – 0.68 -0.24 0.814
(cub wave × pInd Party) ×
Ideology
0.41 -0.26 – 1.07 1.20 0.230
(pHar Tru × lin wave ×
pDem Rep) × Ideology
-2.22 -3.43 – -1.01 -3.59 <0.001
(pHar Tru × lin wave ×
pInd Party) × Ideology
-0.71 -2.12 – 0.70 -0.99 0.324
(pHar Tru × quad wave ×
pDem Rep) × Ideology
-2.77 -4.66 – -0.88 -2.87 0.004
(pHar Tru × quad wave ×
pInd Party) × Ideology
1.05 -1.22 – 3.32 0.90 0.366
(pHar Tru × cub wave ×
pDem Rep) × Ideology
0.03 -1.15 – 1.21 0.04 0.965
(pHar Tru × cub wave ×
pInd Party) × Ideology
-1.41 -2.87 – 0.06 -1.89 0.059
(pOth Party × lin wave ×
pDem Rep) × Ideology
0.03 -1.99 – 2.05 0.03 0.976
(pOth Party × lin wave ×
pInd Party) × Ideology
-0.42 -2.08 – 1.25 -0.49 0.622
(pOth Party × quad wave ×
pDem Rep) × Ideology
0.55 -2.68 – 3.78 0.33 0.739
(pOth Party × quad wave ×
pInd Party) × Ideology
-1.28 -3.81 – 1.24 -1.00 0.319
(pOth Party × cub wave ×
pDem Rep) × Ideology
1.76 -0.30 – 3.82 1.68 0.094
(pOth Party × cub wave ×
pInd Party) × Ideology
-0.08 -1.61 – 1.45 -0.10 0.921
Observations 4425
R2 / R2 adjusted 0.258 / 0.246

Filibuster

ggplot(d[!is.na(d$presVote),],
       aes(x = factor(presVote),
           y = Filibuster,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) +
  coord_cartesian(ylim = c(-1,1)) +
  scale_fill_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Support for Filibuster Reform") +
  facet_grid(~wave.plot)

tab_model(lm(Filibuster ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave), data = d), show.stat = T)
  Filibuster
Predictors Estimates CI Statistic p
(Intercept) 0.01 -0.05 – 0.07 0.30 0.762
pHar Tru 0.32 0.22 – 0.42 6.51 <0.001
pOth Party 0.27 0.10 – 0.43 3.23 0.001
lin wave 0.26 0.11 – 0.41 3.47 0.001
quad wave -0.04 -0.28 – 0.20 -0.30 0.761
cub wave 0.26 0.10 – 0.42 3.25 0.001
pHar Tru × lin wave -0.62 -0.87 – -0.38 -4.99 <0.001
pHar Tru × quad wave -0.40 -0.79 – -0.02 -2.04 0.042
pHar Tru × cub wave -0.33 -0.58 – -0.08 -2.63 0.008
pOth Party × lin wave 0.03 -0.36 – 0.42 0.15 0.883
pOth Party × quad wave 0.04 -0.60 – 0.69 0.12 0.901
pOth Party × cub wave -0.10 -0.52 – 0.33 -0.44 0.658
Observations 5070
R2 / R2 adjusted 0.027 / 0.025

Effects

  • More support for filibuster reform among Trump supporters than Harris supporters
  • Support for filibuster reform grows over time, collapsing across vote choice
  • Rate of increase in filibuster reform greater for Harris supporters than Trump supporters, from wave 1 to wave 4

Moderator: Political ease

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = PoliticalEase,
           y = Filibuster,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  scale_fill_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  scale_color_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  xlab("Political Ease") +
  ylab("Support for Filibuster Reform") +
  scale_x_continuous(breaks = seq(-3,3,1)) +
  facet_grid(~wave.plot)

tab_model(lm(Filibuster ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * PoliticalEase.c, data = d), show.stat = T)
  Filibuster
Predictors Estimates CI Statistic p
(Intercept) 0.01 -0.05 – 0.08 0.48 0.631
pHar Tru 0.29 0.19 – 0.38 5.78 <0.001
pOth Party 0.27 0.11 – 0.43 3.33 0.001
lin wave 0.16 0.01 – 0.32 2.14 0.032
quad wave -0.01 -0.26 – 0.23 -0.11 0.912
cub wave 0.18 0.03 – 0.34 2.31 0.021
PoliticalEase c 0.21 0.17 – 0.25 10.60 <0.001
pHar Tru × lin wave -0.44 -0.69 – -0.20 -3.50 <0.001
pHar Tru × quad wave -0.47 -0.86 – -0.09 -2.41 0.016
pHar Tru × cub wave -0.24 -0.48 – 0.00 -1.95 0.052
pOth Party × lin wave 0.04 -0.36 – 0.43 0.18 0.860
pOth Party × quad wave 0.19 -0.45 – 0.84 0.59 0.555
pOth Party × cub wave -0.10 -0.52 – 0.32 -0.47 0.637
pHar Tru × PoliticalEase
c
-0.01 -0.06 – 0.05 -0.27 0.790
pOth Party ×
PoliticalEase c
0.03 -0.08 – 0.13 0.52 0.605
lin wave × PoliticalEase
c
-0.03 -0.12 – 0.07 -0.53 0.594
quad wave × PoliticalEase
c
-0.04 -0.20 – 0.11 -0.58 0.565
cub wave × PoliticalEase
c
0.07 -0.03 – 0.17 1.43 0.154
(pHar Tru × lin wave) ×
PoliticalEase c
0.35 0.20 – 0.49 4.80 <0.001
(pHar Tru × quad wave) ×
PoliticalEase c
0.14 -0.08 – 0.37 1.23 0.219
(pHar Tru × cub wave) ×
PoliticalEase c
0.26 0.12 – 0.41 3.60 <0.001
(pOth Party × lin wave) ×
PoliticalEase c
0.03 -0.22 – 0.28 0.21 0.835
(pOth Party × quad wave)
× PoliticalEase c
0.22 -0.20 – 0.63 1.02 0.306
(pOth Party × cub wave) ×
PoliticalEase c
-0.18 -0.46 – 0.10 -1.28 0.202
Observations 5067
R2 / R2 adjusted 0.080 / 0.076

Effects

  • Vote choice x Wave interaction moderated by perception of political ease (b = 0.35, p < .001)
    • Relationship between perception of political ease and support for filibuster reform is positive for both Trump and Harris supporters
    • Relationship becomes steeper (i.e., more strongly positive) for Trump supporters from wave 1 to wave 4 (b = 0.16, p = .001)
    • Relationship becomes less steep (i.e., attenuates slightly) for Harris supporters from wave 1 to wave 4 (b = -0.19, p < .001)

Illegal immigration: Perception of government’s approach

ggplot(d[!is.na(d$presVote),],
       aes(x = factor(presVote),
           y = IllegalImmChange,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Should the Gov't do more or less 
about illegal immigration?") +
  facet_grid(~wave.plot)

tab_model(lm(IllegalImmChange ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave), data = d), show.stat = T)
  Illegal Imm Change
Predictors Estimates CI Statistic p
(Intercept) 1.12 1.06 – 1.17 38.51 <0.001
pHar Tru 1.26 1.17 – 1.35 27.11 <0.001
pOth Party 0.49 0.34 – 0.65 6.40 <0.001
lin wave -0.52 -0.66 – -0.38 -7.27 <0.001
quad wave -0.62 -0.85 – -0.39 -5.36 <0.001
cub wave -0.28 -0.43 – -0.13 -3.68 <0.001
pHar Tru × lin wave 0.01 -0.22 – 0.24 0.12 0.902
pHar Tru × quad wave 0.61 0.25 – 0.98 3.31 0.001
pHar Tru × cub wave 0.14 -0.09 – 0.37 1.18 0.239
pOth Party × lin wave 0.01 -0.36 – 0.37 0.03 0.976
pOth Party × quad wave 0.16 -0.45 – 0.76 0.51 0.612
pOth Party × cub wave -0.06 -0.46 – 0.34 -0.29 0.771
Observations 5068
R2 / R2 adjusted 0.160 / 0.158

Effects

  • Trump supporters higher than Harris supporters (b = 1.26, p < .001)
  • Support decreases over time, collapsing across vote choice (b = -0.52, p < .001)
  • No wave 1 to wave 4 interaction by vote choice (p = .90), indicating that, from wave 1 to wave 4, both Harris and Trump supporters decreased by about the same degree in illegal immigration perception
  • Interaction with quadratic wave, meaning that waves 2 and 3 had differing support than 1 and 4 on average between Harris and Trump supporters (b = 0.61, p = .001)

Moderators

  • No moderation by perceptions of political ease
  • No moderation by support for filibuster reform

Personal Actions

Avoid ICE-affiliated businesses

ggplot(d[!is.na(d$presVote),],
       aes(x = factor(presVote),
           y = PA_8,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) +
  coord_cartesian(ylim = c(-1,1)) +
  scale_fill_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Avoid ICE-affiliated Businesses") +
  facet_grid(~wave.plot)

tab_model(lm(PA_8 ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave), data = d), show.stat = T)
  PA 8
Predictors Estimates CI Statistic p
(Intercept) -0.31 -0.38 – -0.24 -8.21 <0.001
pHar Tru -0.41 -0.52 – -0.29 -6.90 <0.001
pOth Party 0.05 -0.15 – 0.24 0.47 0.639
lin wave 0.05 -0.13 – 0.23 0.53 0.597
quad wave 0.05 -0.25 – 0.34 0.30 0.764
cub wave 0.26 0.06 – 0.45 2.62 0.009
pHar Tru × lin wave -0.86 -1.15 – -0.57 -5.74 <0.001
pHar Tru × quad wave -0.57 -1.04 – -0.11 -2.42 0.016
pHar Tru × cub wave -0.07 -0.36 – 0.23 -0.44 0.660
pOth Party × lin wave 0.34 -0.14 – 0.83 1.40 0.162
pOth Party × quad wave 0.34 -0.45 – 1.13 0.85 0.397
pOth Party × cub wave 0.16 -0.36 – 0.68 0.61 0.539
Observations 4695
R2 / R2 adjusted 0.020 / 0.017

Effects

  • Trump supporters less willing to avoid ICE-supporting businesses than harris supporters (b = -0.41, p < .001)
  • Vote choice x Wave interaction (b = -0.86, p < .001); Harris supporters become more supportive over time

Moderator: Illegal Immigration Change opinion

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = IllegalImmChange,
           y = PA_8,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  scale_x_continuous(breaks = seq(-3,3,1)) +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  scale_color_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Should the US be doing less or more about illegal immigration?") +
  ylab("Avoid ICE-affiliated Businesses") +
  facet_grid(~wave.plot)

tab_model(lm(PA_8 ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * illImmchg.c, data = d), show.stat = T)
  PA 8
Predictors Estimates CI Statistic p
(Intercept) -0.33 -0.41 – -0.25 -8.03 <0.001
pHar Tru -0.30 -0.43 – -0.17 -4.64 <0.001
pOth Party 0.12 -0.10 – 0.33 1.06 0.288
lin wave 0.01 -0.19 – 0.21 0.13 0.897
quad wave -0.01 -0.33 – 0.30 -0.09 0.928
cub wave 0.25 0.04 – 0.45 2.38 0.017
illImmchg c -0.11 -0.16 – -0.06 -4.65 <0.001
pHar Tru × lin wave -0.76 -1.08 – -0.43 -4.59 <0.001
pHar Tru × quad wave -0.46 -0.97 – 0.04 -1.79 0.074
pHar Tru × cub wave -0.06 -0.37 – 0.26 -0.34 0.731
pOth Party × lin wave 0.34 -0.20 – 0.87 1.24 0.214
pOth Party × quad wave 0.30 -0.56 – 1.15 0.68 0.495
pOth Party × cub wave 0.12 -0.43 – 0.66 0.42 0.674
pHar Tru × illImmchg c -0.06 -0.13 – 0.02 -1.45 0.148
pOth Party × illImmchg c 0.06 -0.06 – 0.18 0.96 0.335
lin wave × illImmchg c -0.04 -0.16 – 0.07 -0.75 0.453
quad wave × illImmchg c -0.02 -0.20 – 0.17 -0.18 0.859
cub wave × illImmchg c -0.00 -0.13 – 0.12 -0.07 0.948
(pHar Tru × lin wave) ×
illImmchg c
-0.09 -0.28 – 0.10 -0.92 0.355
(pHar Tru × quad wave) ×
illImmchg c
-0.03 -0.33 – 0.28 -0.16 0.870
(pHar Tru × cub wave) ×
illImmchg c
-0.05 -0.25 – 0.14 -0.54 0.586
(pOth Party × lin wave) ×
illImmchg c
-0.17 -0.47 – 0.12 -1.14 0.254
(pOth Party × quad wave)
× illImmchg c
-0.25 -0.74 – 0.25 -0.98 0.328
(pOth Party × cub wave) ×
illImmchg c
-0.04 -0.36 – 0.29 -0.22 0.822
Observations 4690
R2 / R2 adjusted 0.027 / 0.022

Effects

  • oddly, Vote choice x Wave interaction is not moderated by views on govt’s approach to illegal immigration (p = .36); Harris supporters become more supportive over time regardless of views on illegal immigration crackdown

Moderator: Trump perceptions

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = Trump,
           y = PA_8,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  scale_x_continuous(breaks = seq(1,5,1)) +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  scale_color_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Perceptions of Trump") +
  ylab("Avoid ICE-affiliated Businesses") +
  facet_grid(~wave.plot)

tab_model(lm(PA_8 ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * Trump.c, data = d), show.stat = T)
  PA 8
Predictors Estimates CI Statistic p
(Intercept) -0.24 -0.34 – -0.14 -4.79 <0.001
pHar Tru -0.70 -0.88 – -0.53 -7.90 <0.001
pOth Party 0.05 -0.21 – 0.30 0.35 0.726
lin wave 0.13 -0.11 – 0.38 1.07 0.283
quad wave -0.12 -0.52 – 0.27 -0.61 0.544
cub wave 0.15 -0.11 – 0.40 1.13 0.261
Trump c 0.11 0.04 – 0.18 2.93 0.003
pHar Tru × lin wave -0.58 -1.02 – -0.14 -2.59 0.010
pHar Tru × quad wave -0.00 -0.70 – 0.70 -0.00 1.000
pHar Tru × cub wave 0.02 -0.42 – 0.47 0.11 0.916
pOth Party × lin wave -0.04 -0.67 – 0.59 -0.11 0.909
pOth Party × quad wave 1.14 0.12 – 2.17 2.19 0.028
pOth Party × cub wave 0.14 -0.53 – 0.80 0.40 0.688
pHar Tru × Trump c -0.12 -0.23 – -0.01 -2.14 0.032
pOth Party × Trump c 0.05 -0.15 – 0.24 0.46 0.649
lin wave × Trump c 0.05 -0.13 – 0.23 0.53 0.598
quad wave × Trump c -0.42 -0.72 – -0.13 -2.83 0.005
cub wave × Trump c -0.06 -0.25 – 0.14 -0.56 0.573
(pHar Tru × lin wave) ×
Trump c
0.07 -0.21 – 0.34 0.47 0.640
(pHar Tru × quad wave) ×
Trump c
-0.10 -0.54 – 0.34 -0.45 0.652
(pHar Tru × cub wave) ×
Trump c
0.18 -0.11 – 0.46 1.23 0.220
(pOth Party × lin wave) ×
Trump c
-0.49 -0.96 – -0.01 -2.00 0.045
(pOth Party × quad wave)
× Trump c
0.55 -0.24 – 1.35 1.37 0.171
(pOth Party × cub wave) ×
Trump c
0.10 -0.43 – 0.62 0.36 0.722
Observations 4635
R2 / R2 adjusted 0.028 / 0.023

Effects

  • Perception of Trump positively predicts boycotting ICE businesses (b = 0.11, p = .003)
  • No moderation over time, but vote choice x Trump perception interaction was observed (b = -0.12, p = .032)

Moderator: Musk perceptions

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = Musk,
           y = PA_8,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  scale_x_continuous(breaks = seq(1,5,1)) +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  scale_color_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Perceptions of Musk") +
  ylab("Avoid ICE-affiliated Businesses") +
  facet_grid(~wave.plot)

tab_model(lm(PA_8 ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * Musk.c, data = d), show.stat = T)
  PA 8
Predictors Estimates CI Statistic p
(Intercept) -0.29 -0.38 – -0.20 -6.54 <0.001
pHar Tru -0.47 -0.61 – -0.32 -6.27 <0.001
pOth Party 0.03 -0.20 – 0.26 0.25 0.806
lin wave 0.02 -0.20 – 0.24 0.18 0.859
quad wave -0.14 -0.49 – 0.21 -0.77 0.443
cub wave 0.20 -0.03 – 0.43 1.72 0.085
Musk c 0.02 -0.05 – 0.09 0.62 0.535
pHar Tru × lin wave -0.84 -1.21 – -0.47 -4.50 <0.001
pHar Tru × quad wave -0.39 -0.98 – 0.19 -1.31 0.189
pHar Tru × cub wave -0.06 -0.44 – 0.31 -0.32 0.748
pOth Party × lin wave 0.05 -0.51 – 0.62 0.18 0.859
pOth Party × quad wave 0.38 -0.54 – 1.29 0.80 0.423
pOth Party × cub wave -0.03 -0.62 – 0.57 -0.09 0.928
pHar Tru × Musk c -0.01 -0.11 – 0.10 -0.11 0.915
pOth Party × Musk c 0.05 -0.14 – 0.24 0.49 0.627
lin wave × Musk c 0.06 -0.11 – 0.23 0.67 0.503
quad wave × Musk c -0.23 -0.51 – 0.05 -1.60 0.110
cub wave × Musk c 0.08 -0.11 – 0.26 0.81 0.419
(pHar Tru × lin wave) ×
Musk c
0.33 0.05 – 0.60 2.36 0.018
(pHar Tru × quad wave) ×
Musk c
0.48 0.05 – 0.91 2.19 0.029
(pHar Tru × cub wave) ×
Musk c
0.33 0.06 – 0.60 2.36 0.018
(pOth Party × lin wave) ×
Musk c
-0.14 -0.61 – 0.33 -0.59 0.553
(pOth Party × quad wave)
× Musk c
0.32 -0.45 – 1.08 0.82 0.413
(pOth Party × cub wave) ×
Musk c
-0.12 -0.62 – 0.38 -0.45 0.651
Observations 4506
R2 / R2 adjusted 0.025 / 0.020

Effects

????

  • Perception of does not predict avoiding ICE-affiliated businesses (p = .53)
  • Does moderate the vote choice x wave interaction (b = 0.33, p = .018); also interacts with quadratic & cubic wave, indicating generally unstable relationships over time
  • Relationship between Musk perceptions and anti-ICE businesses becomes more negative over time for Harris supporters and more positive over time for Trump supporters
    • Harris supporters at wave 1: Marginal positive relationship b/w Musk perceptions and anti-ICE businesses (b = 0.16, p = .067)
    • Harris supporters at wave 4: Marginal negative relationship b/w Musk perceptions and anti-ICE businesses (b = -0.16, p = .056)
    • Trump supporters at wave 1: No relationship b/w Musk perceptions and anti-ICE businesses (b = -0.13, p = .14)
    • Trump supporters at wave 4: Positive relationship b/w Musk perceptions and anti-ICE businesses (b = 0.20, p = .018)

EV Intentions

ggplot(d[!is.na(d$presVote),],
       aes(x = factor(presVote),
           y = PA_1,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) +
  coord_cartesian(ylim = c(-1.5, 0)) +
  scale_fill_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Intention to Purchase an EV") +
  facet_grid(~wave.plot)

tab_model(lm(PA_1 ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave), data = d), show.stat = T)
  PA 1
Predictors Estimates CI Statistic p
(Intercept) -0.60 -0.68 – -0.52 -14.53 <0.001
pHar Tru -0.68 -0.81 – -0.55 -10.29 <0.001
pOth Party 0.29 0.08 – 0.51 2.66 0.008
lin wave -0.03 -0.23 – 0.17 -0.31 0.754
quad wave -0.10 -0.43 – 0.22 -0.63 0.532
cub wave 0.11 -0.10 – 0.32 0.98 0.326
pHar Tru × lin wave 0.50 0.18 – 0.83 3.01 0.003
pHar Tru × quad wave -0.44 -0.96 – 0.07 -1.68 0.093
pHar Tru × cub wave 0.31 -0.01 – 0.64 1.88 0.061
pOth Party × lin wave 0.29 -0.24 – 0.81 1.08 0.281
pOth Party × quad wave -0.02 -0.88 – 0.84 -0.04 0.969
pOth Party × cub wave 0.04 -0.52 – 0.60 0.13 0.894
Observations 4690
R2 / R2 adjusted 0.032 / 0.030

Effects

  • Trump supporters less willing to purchase an EV businesses than harris supporters (b = -0.68, p < .001)
  • Vote choice x Wave interaction (b = 0.50, p = .003); Harris supporters become less interested in EVs over time

Moderator: Musk perceptions

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = Musk,
           y = PA_1,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  scale_color_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Perceptions of Elon Musk") +
  ylab("Avoid ICE-affiliated Businesses") +
  facet_grid(~wave.plot)

tab_model(lm(PA_1 ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * Musk.c, data = d), show.stat = T)
  PA 1
Predictors Estimates CI Statistic p
(Intercept) -0.52 -0.61 – -0.42 -10.72 <0.001
pHar Tru -1.09 -1.25 – -0.92 -13.09 <0.001
pOth Party 0.26 0.02 – 0.51 2.09 0.037
lin wave -0.05 -0.29 – 0.18 -0.44 0.662
quad wave 0.02 -0.36 – 0.40 0.10 0.918
cub wave 0.21 -0.04 – 0.45 1.67 0.095
Musk c 0.24 0.17 – 0.32 6.32 <0.001
pHar Tru × lin wave 0.12 -0.29 – 0.53 0.57 0.569
pHar Tru × quad wave -0.68 -1.33 – -0.03 -2.05 0.041
pHar Tru × cub wave 0.27 -0.14 – 0.69 1.30 0.194
pOth Party × lin wave 0.25 -0.36 – 0.86 0.81 0.418
pOth Party × quad wave -0.01 -1.00 – 0.97 -0.03 0.976
pOth Party × cub wave -0.31 -0.96 – 0.33 -0.95 0.341
pHar Tru × Musk c -0.09 -0.21 – 0.03 -1.55 0.122
pOth Party × Musk c 0.03 -0.17 – 0.24 0.32 0.749
lin wave × Musk c 0.23 0.04 – 0.41 2.37 0.018
quad wave × Musk c 0.16 -0.15 – 0.46 1.01 0.312
cub wave × Musk c 0.27 0.07 – 0.47 2.69 0.007
(pHar Tru × lin wave) ×
Musk c
0.11 -0.19 – 0.41 0.71 0.477
(pHar Tru × quad wave) ×
Musk c
-0.09 -0.57 – 0.39 -0.36 0.722
(pHar Tru × cub wave) ×
Musk c
0.07 -0.24 – 0.37 0.44 0.657
(pOth Party × lin wave) ×
Musk c
0.25 -0.24 – 0.75 1.01 0.314
(pOth Party × quad wave)
× Musk c
0.14 -0.67 – 0.96 0.35 0.729
(pOth Party × cub wave) ×
Musk c
-0.52 -1.05 – 0.02 -1.90 0.057
Observations 4496
R2 / R2 adjusted 0.054 / 0.049

Effects

  • Perceptions of Elon Musk positively predict EV intention (b = .24, p < .001)
  • Musk perceptions interact with linear time (b = 0.23, p = .018) but not with vote choice

Eat less beef

ggplot(d[!is.na(d$presVote),],
       aes(x = factor(presVote),
           y = PA_3,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Willingness to eat less beef") +
  facet_grid(~wave.plot)

tab_model(lm(PA_3 ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave), data = d), show.stat = T)
  PA 3
Predictors Estimates CI Statistic p
(Intercept) -0.55 -0.63 – -0.47 -13.98 <0.001
pHar Tru -0.70 -0.82 – -0.58 -11.15 <0.001
pOth Party -0.02 -0.23 – 0.18 -0.21 0.833
lin wave 0.22 0.03 – 0.41 2.26 0.024
quad wave 0.31 -0.00 – 0.62 1.96 0.051
cub wave 0.26 0.06 – 0.46 2.50 0.013
pHar Tru × lin wave 0.44 0.13 – 0.75 2.75 0.006
pHar Tru × quad wave -0.21 -0.70 – 0.28 -0.83 0.404
pHar Tru × cub wave 0.13 -0.18 – 0.44 0.82 0.411
pOth Party × lin wave 0.26 -0.24 – 0.76 1.02 0.307
pOth Party × quad wave -0.33 -1.15 – 0.50 -0.77 0.440
pOth Party × cub wave -0.09 -0.63 – 0.45 -0.32 0.753
Observations 4566
R2 / R2 adjusted 0.038 / 0.036

Moderator: Environmental Importance

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = enviroImport,
           y = PA_3,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  scale_x_continuous(breaks = seq(1,5,1)) +
  coord_cartesian(ylim = c(-2.5,1)) +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  scale_color_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Environmental Importance") +
  ylab("Willingness to eat less beef") +
  facet_grid(~wave.plot)

tab_model(lm(PA_8 ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * enviroImport.c, data = d), show.stat = T)
  PA 8
Predictors Estimates CI Statistic p
(Intercept) -0.26 -0.34 – -0.19 -6.80 <0.001
pHar Tru -0.17 -0.29 – -0.05 -2.77 0.006
pOth Party 0.04 -0.16 – 0.24 0.40 0.688
lin wave 0.11 -0.07 – 0.29 1.17 0.241
quad wave 0.03 -0.27 – 0.33 0.17 0.864
cub wave 0.30 0.10 – 0.49 2.97 0.003
enviroImport c 0.28 0.22 – 0.35 8.95 <0.001
pHar Tru × lin wave -0.70 -1.00 – -0.39 -4.48 <0.001
pHar Tru × quad wave -0.55 -1.03 – -0.07 -2.23 0.026
pHar Tru × cub wave -0.05 -0.35 – 0.26 -0.31 0.755
pOth Party × lin wave 0.30 -0.18 – 0.79 1.22 0.221
pOth Party × quad wave 0.42 -0.38 – 1.22 1.03 0.304
pOth Party × cub wave 0.18 -0.35 – 0.70 0.66 0.512
pHar Tru × enviroImport c 0.28 0.18 – 0.39 5.29 <0.001
pOth Party × enviroImport
c
0.10 -0.06 – 0.26 1.19 0.235
lin wave × enviroImport c 0.17 0.01 – 0.32 2.10 0.035
quad wave × enviroImport
c
-0.02 -0.26 – 0.23 -0.12 0.902
cub wave × enviroImport c 0.09 -0.07 – 0.24 1.06 0.291
(pHar Tru × lin wave) ×
enviroImport c
0.13 -0.13 – 0.40 0.97 0.331
(pHar Tru × quad wave) ×
enviroImport c
-0.20 -0.62 – 0.22 -0.92 0.356
(pHar Tru × cub wave) ×
enviroImport c
0.28 0.01 – 0.54 2.07 0.039
(pOth Party × lin wave) ×
enviroImport c
0.05 -0.36 – 0.45 0.22 0.826
(pOth Party × quad wave)
× enviroImport c
-0.04 -0.69 – 0.61 -0.12 0.906
(pOth Party × cub wave) ×
enviroImport c
0.03 -0.39 – 0.45 0.14 0.890
Observations 4693
R2 / R2 adjusted 0.066 / 0.061

Policy Views

Environmental policies

ggplot(d[!is.na(d$presVote),],
       aes(x = factor(presVote),
           y = PO_enviro,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank()) +
#  coord_cartesian(ylim = c(-3,3)) +
  scale_fill_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Pro-Environment Policies") +
  facet_wrap(~wave.plot)

Moderator: Election importance

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = ElectionImpCountry,
           y = PO_enviro,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
#  coord_cartesian(ylim = c(-3,3)) +
  scale_fill_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Pro-Environment Policies") +
  scale_color_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  scale_x_continuous(breaks = seq(-3,3)) +
  xlab("Election Importance (Country)") +
  ylab("Pro-Environment Policies") +
  facet_wrap(~wave.plot)

tab_model(lm(PO_enviro ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * electimpCty.c, data = d), show.stat = T)
  PO enviro
Predictors Estimates CI Statistic p
(Intercept) 0.04 -0.02 – 0.09 1.36 0.175
pHar Tru -0.79 -0.87 – -0.72 -19.91 <0.001
pOth Party 0.25 0.10 – 0.40 3.25 0.001
lin wave 0.07 -0.06 – 0.20 1.01 0.311
quad wave 0.03 -0.19 – 0.25 0.29 0.771
cub wave 0.03 -0.11 – 0.18 0.41 0.679
electimpCty c 0.04 0.01 – 0.07 2.48 0.013
pHar Tru × lin wave 0.17 -0.03 – 0.37 1.67 0.094
pHar Tru × quad wave -0.13 -0.44 – 0.18 -0.83 0.405
pHar Tru × cub wave 0.19 -0.00 – 0.39 1.92 0.055
pOth Party × lin wave 0.11 -0.25 – 0.47 0.60 0.550
pOth Party × quad wave -0.23 -0.83 – 0.38 -0.74 0.461
pOth Party × cub wave 0.27 -0.13 – 0.67 1.32 0.187
pHar Tru × electimpCty c -0.22 -0.27 – -0.16 -7.80 <0.001
pOth Party × electimpCty
c
0.03 -0.04 – 0.11 0.93 0.351
lin wave × electimpCty c -0.02 -0.09 – 0.05 -0.62 0.535
quad wave × electimpCty c 0.05 -0.07 – 0.16 0.81 0.420
cub wave × electimpCty c 0.02 -0.05 – 0.10 0.63 0.532
(pHar Tru × lin wave) ×
electimpCty c
0.02 -0.12 – 0.16 0.27 0.786
(pHar Tru × quad wave) ×
electimpCty c
0.07 -0.15 – 0.29 0.60 0.548
(pHar Tru × cub wave) ×
electimpCty c
0.01 -0.13 – 0.15 0.21 0.836
(pOth Party × lin wave) ×
electimpCty c
0.00 -0.17 – 0.18 0.05 0.963
(pOth Party × quad wave)
× electimpCty c
-0.14 -0.43 – 0.15 -0.95 0.341
(pOth Party × cub wave) ×
electimpCty c
0.18 -0.01 – 0.37 1.82 0.068
Observations 5068
R2 / R2 adjusted 0.104 / 0.100

Moderator: Trump perceptions

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = Trump,
           y = PO_enviro,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
#  coord_cartesian(ylim = c(-3,3)) +
  scale_fill_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Pro-Environment Policies") +
  scale_color_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  scale_x_continuous(breaks = seq(1,5)) +
  xlab("Perceptions of Trump") +
  ylab("Pro-Environment Policies") +
  facet_wrap(~wave.plot)

tab_model(lm(PO_enviro ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * Trump.c, data = d), show.stat = T)
  PO enviro
Predictors Estimates CI Statistic p
(Intercept) 0.04 -0.03 – 0.10 1.06 0.289
pHar Tru -0.80 -0.92 – -0.68 -13.33 <0.001
pOth Party 0.37 0.20 – 0.53 4.30 <0.001
lin wave 0.14 -0.03 – 0.30 1.65 0.098
quad wave -0.05 -0.31 – 0.21 -0.36 0.722
cub wave 0.02 -0.15 – 0.19 0.27 0.789
Trump c -0.03 -0.08 – 0.02 -1.24 0.214
pHar Tru × lin wave 0.17 -0.12 – 0.47 1.16 0.246
pHar Tru × quad wave -0.32 -0.80 – 0.15 -1.35 0.176
pHar Tru × cub wave 0.08 -0.22 – 0.38 0.52 0.603
pOth Party × lin wave -0.04 -0.44 – 0.37 -0.17 0.863
pOth Party × quad wave 0.08 -0.59 – 0.74 0.22 0.822
pOth Party × cub wave -0.12 -0.56 – 0.31 -0.56 0.574
pHar Tru × Trump c -0.06 -0.13 – 0.02 -1.49 0.137
pOth Party × Trump c 0.08 -0.05 – 0.21 1.18 0.238
lin wave × Trump c 0.09 -0.02 – 0.21 1.56 0.119
quad wave × Trump c 0.05 -0.14 – 0.24 0.53 0.599
cub wave × Trump c 0.10 -0.03 – 0.22 1.52 0.130
(pHar Tru × lin wave) ×
Trump c
-0.09 -0.27 – 0.10 -0.91 0.362
(pHar Tru × quad wave) ×
Trump c
-0.00 -0.30 – 0.29 -0.02 0.982
(pHar Tru × cub wave) ×
Trump c
0.23 0.04 – 0.42 2.41 0.016
(pOth Party × lin wave) ×
Trump c
-0.17 -0.47 – 0.14 -1.07 0.286
(pOth Party × quad wave)
× Trump c
0.13 -0.39 – 0.64 0.49 0.627
(pOth Party × cub wave) ×
Trump c
-0.09 -0.43 – 0.25 -0.51 0.611
Observations 5000
R2 / R2 adjusted 0.092 / 0.088

Person Perceptions

Trump

round(cor(d[,c("Trump_comp","Trump_int","Trump_trust","Trump_like")], use = "pairwise.complete.obs"),2)
##             Trump_comp Trump_int Trump_trust Trump_like
## Trump_comp        1.00      0.90        0.88       0.84
## Trump_int         0.90      1.00        0.85       0.81
## Trump_trust       0.88      0.85        1.00       0.89
## Trump_like        0.84      0.81        0.89       1.00
d$Trump_Warmth <- rowMeans(d[,c("Trump_trust", "Trump_like")],na.rm = T)
d$Trump_Competence <- rowMeans(d[,c("Trump_comp", "Trump_int")],na.rm = T)

cor.test(d$Trump_Warmth, d$Trump_Competence)
## 
##  Pearson's product-moment correlation
## 
## data:  d$Trump_Warmth and d$Trump_Competence
## t = 138.37, df = 5042, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8837917 0.8953044
## sample estimates:
##       cor 
## 0.8896894
ggplot(d[!is.na(d$party_factor),],
       aes(x = factor(party_factor),
           y = Trump,
           fill = factor(party_factor))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
    stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  scale_fill_manual("Party ID", values = c("dodgerblue", "grey42","red3")) +
  xlab("Study Wave") +
  ylab("Trump Perception") +
  facet_wrap(~wave.plot)

d$ideo_factor <- factor(d$ideo_factor, levels = c("Liberal", "Moderate", "Conservative"))

ggplot(d[!is.na(d$ideo_factor),],
       aes(x = factor(ideo_factor),
           y = Trump,
           fill = factor(ideo_factor))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  scale_fill_manual("Ideology", values = c("dodgerblue", "mediumorchid4","red3")) +
  xlab("Study Wave") +
  ylab("Trump Perception") +
  facet_wrap(~wave.plot)

tab_model(lm(Trump ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave), data = d), show.stat = T)
  Trump
Predictors Estimates CI Statistic p
(Intercept) 2.58 2.54 – 2.62 127.20 <0.001
pHar Tru 2.35 2.29 – 2.41 74.24 <0.001
pOth Party 0.71 0.60 – 0.82 13.09 <0.001
lin wave 0.00 -0.09 – 0.10 0.05 0.962
quad wave -0.26 -0.42 – -0.11 -3.26 0.001
cub wave 0.14 0.03 – 0.24 2.59 0.010
pHar Tru × lin wave -0.13 -0.29 – 0.03 -1.63 0.103
pHar Tru × quad wave -0.10 -0.35 – 0.15 -0.76 0.445
pHar Tru × cub wave -0.11 -0.27 – 0.05 -1.36 0.173
pOth Party × lin wave -0.08 -0.33 – 0.18 -0.58 0.560
pOth Party × quad wave 0.01 -0.42 – 0.43 0.03 0.977
pOth Party × cub wave -0.33 -0.61 – -0.05 -2.33 0.020
Observations 5000
R2 / R2 adjusted 0.547 / 0.546

Moderator: Election Importance

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = ElectionImpCountry,
           y = Trump,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  coord_cartesian(ylim = c(1,5)) +
  scale_fill_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Pro-Environment Policies") +
  scale_color_manual("Presidential Vote", values = c("dodgerblue","red3", "grey42")) +
  scale_x_continuous(breaks = seq(-3,3)) +
  xlab("Election Importance (Country)") +
  ylab("Perceptions of Trump")

tab_model(lm(Trump ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * electimpCty.c, data = d), show.stat = T)
  Trump
Predictors Estimates CI Statistic p
(Intercept) 2.58 2.53 – 2.62 116.45 <0.001
pHar Tru 2.31 2.24 – 2.37 74.24 <0.001
pOth Party 0.67 0.55 – 0.79 10.99 <0.001
lin wave -0.06 -0.16 – 0.04 -1.12 0.262
quad wave -0.31 -0.48 – -0.14 -3.49 <0.001
cub wave 0.11 -0.01 – 0.22 1.85 0.064
electimpCty c 0.04 0.02 – 0.06 3.47 0.001
pHar Tru × lin wave -0.02 -0.17 – 0.14 -0.19 0.848
pHar Tru × quad wave -0.08 -0.32 – 0.16 -0.63 0.527
pHar Tru × cub wave -0.04 -0.19 – 0.12 -0.49 0.627
pOth Party × lin wave 0.03 -0.25 – 0.32 0.23 0.817
pOth Party × quad wave 0.30 -0.18 – 0.77 1.21 0.224
pOth Party × cub wave -0.27 -0.59 – 0.05 -1.68 0.093
pHar Tru × electimpCty c 0.38 0.33 – 0.42 17.20 <0.001
pOth Party × electimpCty
c
0.03 -0.03 – 0.08 0.86 0.390
lin wave × electimpCty c -0.00 -0.06 – 0.05 -0.06 0.948
quad wave × electimpCty c -0.09 -0.18 – 0.01 -1.83 0.067
cub wave × electimpCty c 0.01 -0.05 – 0.07 0.21 0.835
(pHar Tru × lin wave) ×
electimpCty c
0.01 -0.10 – 0.12 0.12 0.903
(pHar Tru × quad wave) ×
electimpCty c
0.15 -0.02 – 0.32 1.72 0.086
(pHar Tru × cub wave) ×
electimpCty c
-0.01 -0.12 – 0.10 -0.22 0.824
(pOth Party × lin wave) ×
electimpCty c
0.19 0.06 – 0.33 2.74 0.006
(pOth Party × quad wave)
× electimpCty c
0.19 -0.04 – 0.42 1.59 0.113
(pOth Party × cub wave) ×
electimpCty c
0.12 -0.03 – 0.27 1.53 0.126
Observations 4996
R2 / R2 adjusted 0.575 / 0.573

Effects

  • No moderation by time
  • Election importance predicted perceptions of Trump positively for Trump voters and negatively for Harris voters (b = 0.38, p < .001)

Harris

round(cor(d[,c("Harris_comp","Harris_int","Harris_trust","Harris_like")], use = "pairwise.complete.obs"),2)
##              Harris_comp Harris_int Harris_trust Harris_like
## Harris_comp         1.00       0.91         0.90        0.88
## Harris_int          0.91       1.00         0.86        0.86
## Harris_trust        0.90       0.86         1.00        0.90
## Harris_like         0.88       0.86         0.90        1.00
d$Harris_Warmth <- rowMeans(d[,c("Harris_trust", "Harris_like")],na.rm = T)
d$Harris_Competence <- rowMeans(d[,c("Harris_comp", "Harris_int")],na.rm = T)

cor.test(d$Harris_Warmth, d$Harris_Competence)
## 
##  Pearson's product-moment correlation
## 
## data:  d$Harris_Warmth and d$Harris_Competence
## t = 163.4, df = 4989, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.9134285 0.9221703
## sample estimates:
##       cor 
## 0.9179107
ggplot(d[!is.na(d$party_factor),],
       aes(x = factor(party_factor),
           y = Harris,
           fill = factor(party_factor))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  scale_fill_manual("Party ID", values = c("dodgerblue", "grey42","red3")) +
  xlab("Study Wave") +
  ylab("Harris Perception") +
  facet_wrap(~wave.plot)

ggplot(d[!is.na(d$ideo_factor),],
       aes(x = factor(ideo_factor),
           y = Harris,
           fill = factor(ideo_factor))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  scale_fill_manual("Ideology", values = c("dodgerblue", "mediumorchid4","red3")) +
  xlab("Study Wave") +
  ylab("Harris Perception") +
  facet_wrap(~wave.plot)

Musk

round(cor(d[,c("Musk_comp","Musk_int","Musk_trust","Musk_like")], use = "pairwise.complete.obs"),2)
##            Musk_comp Musk_int Musk_trust Musk_like
## Musk_comp       1.00     0.80       0.74      0.73
## Musk_int        0.80     1.00       0.62      0.62
## Musk_trust      0.74     0.62       1.00      0.87
## Musk_like       0.73     0.62       0.87      1.00
d$Musk_Warmth <- rowMeans(d[,c("Musk_trust", "Musk_like")],na.rm = T)
d$Musk_Competence <- rowMeans(d[,c("Musk_comp", "Musk_int")],na.rm = T)

cor.test(d$Musk_Warmth, d$Musk_Competence)
## 
##  Pearson's product-moment correlation
## 
## data:  d$Musk_Warmth and d$Musk_Competence
## t = 76.609, df = 4867, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.7263628 0.7518420
## sample estimates:
##      cor 
## 0.739367
ggplot(d[!is.na(d$party_factor),],
       aes(x = factor(party_factor),
           y = Musk,
           fill = factor(party_factor))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  scale_fill_manual("Party ID", values = c("dodgerblue", "grey42","red3")) +
  xlab("Study Wave") +
  ylab("Musk Perception") +
  coord_cartesian(ylim = c(0,5)) +
  facet_wrap(~wave.plot)

ggplot(d[!is.na(d$ideo_factor),],
       aes(x = factor(ideo_factor),
           y = Musk,
           fill = factor(ideo_factor))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  scale_fill_manual("Ideology", values = c("dodgerblue", "mediumorchid4","red3")) +
  xlab("Study Wave") +
  ylab("Musk Perception") +
  facet_wrap(~wave.plot)

Warmth and Competence Separately

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = factor(presVote),
           y = Musk_Competence,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Musk Perception (Competence)") +
  coord_cartesian(ylim = c(0,5)) +
  facet_grid(~wave.plot)

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = factor(presVote),
           y = Musk_Warmth,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Musk Perception (Warmth)") +
  coord_cartesian(ylim = c(0,5)) +
  facet_grid(~wave.plot)

Used as Moderators: EV

ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = Musk_Competence,
           y = PA_1,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  scale_color_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Perceptions of Elon Musk (Competence)") +
  ylab("Avoid ICE-affiliated Businesses") +
  facet_grid(~wave.plot)

tab_model(lm(PA_1 ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * Musk_Competence, data = d), show.stat = T)
  PA 1
Predictors Estimates CI Statistic p
(Intercept) -1.02 -1.26 – -0.79 -8.58 <0.001
pHar Tru -0.49 -0.93 – -0.06 -2.24 0.025
pOth Party 0.29 -0.30 – 0.88 0.95 0.340
lin wave -0.53 -1.11 – 0.04 -1.82 0.070
quad wave -0.82 -1.75 – 0.12 -1.71 0.088
cub wave -0.30 -0.91 – 0.31 -0.96 0.335
Musk Competence 0.15 0.08 – 0.21 4.28 <0.001
pHar Tru × lin wave -0.05 -1.11 – 1.02 -0.08 0.934
pHar Tru × quad wave -0.72 -2.45 – 1.01 -0.82 0.413
pHar Tru × cub wave 0.26 -0.86 – 1.38 0.45 0.653
pOth Party × lin wave -0.77 -2.23 – 0.70 -1.03 0.304
pOth Party × quad wave -0.14 -2.52 – 2.24 -0.12 0.908
pOth Party × cub wave 0.97 -0.58 – 2.51 1.23 0.219
pHar Tru × Musk
Competence
-0.12 -0.23 – -0.01 -2.09 0.037
pOth Party × Musk
Competence
-0.00 -0.18 – 0.17 -0.00 0.996
lin wave × Musk
Competence
0.13 -0.03 – 0.30 1.56 0.119
quad wave × Musk
Competence
0.22 -0.05 – 0.48 1.59 0.111
cub wave × Musk
Competence
0.15 -0.02 – 0.32 1.70 0.088
(pHar Tru × lin wave) ×
Musk Competence
0.07 -0.21 – 0.35 0.49 0.626
(pHar Tru × quad wave) ×
Musk Competence
-0.02 -0.47 – 0.42 -0.10 0.919
(pHar Tru × cub wave) ×
Musk Competence
0.02 -0.26 – 0.31 0.17 0.868
(pOth Party × lin wave) ×
Musk Competence
0.31 -0.13 – 0.75 1.38 0.167
(pOth Party × quad wave)
× Musk Competence
0.03 -0.67 – 0.73 0.09 0.928
(pOth Party × cub wave) ×
Musk Competence
-0.36 -0.81 – 0.09 -1.57 0.117
Observations 4475
R2 / R2 adjusted 0.045 / 0.040
ggplot(d[!is.na(d$presVote) & d$presVote != "Other",],
       aes(x = Musk_Warmth,
           y = PA_1,
           fill = factor(presVote))) +
  geom_smooth(method = "lm", aes(color = presVote)) +
  theme_bw() +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  scale_color_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Perceptions of Elon Musk (Warmth)") +
  ylab("Avoid ICE-affiliated Businesses") +
  facet_grid(~wave.plot)

tab_model(lm(PA_1 ~ (pHar_Tru + pOth_Party) * (lin.wave + quad.wave + cub.wave) * Musk_Warmth, data = d), show.stat = T)
  PA 1
Predictors Estimates CI Statistic p
(Intercept) -1.24 -1.43 – -1.05 -12.64 <0.001
pHar Tru -0.94 -1.26 – -0.61 -5.63 <0.001
pOth Party 0.21 -0.29 – 0.71 0.81 0.416
lin wave -0.71 -1.17 – -0.24 -2.99 0.003
quad wave -0.16 -0.93 – 0.61 -0.41 0.683
cub wave -0.57 -1.08 – -0.06 -2.20 0.028
Musk Warmth 0.27 0.19 – 0.34 7.26 <0.001
pHar Tru × lin wave -0.08 -0.88 – 0.72 -0.20 0.843
pHar Tru × quad wave -0.23 -1.53 – 1.08 -0.34 0.735
pHar Tru × cub wave 0.04 -0.81 – 0.89 0.10 0.923
pOth Party × lin wave -0.02 -1.22 – 1.18 -0.04 0.971
pOth Party × quad wave -0.31 -2.32 – 1.70 -0.30 0.764
pOth Party × cub wave 0.98 -0.36 – 2.32 1.44 0.150
pHar Tru × Musk Warmth -0.08 -0.19 – 0.03 -1.39 0.166
pOth Party × Musk Warmth 0.01 -0.18 – 0.20 0.10 0.921
lin wave × Musk Warmth 0.25 0.08 – 0.43 2.84 0.005
quad wave × Musk Warmth 0.08 -0.21 – 0.37 0.55 0.579
cub wave × Musk Warmth 0.28 0.10 – 0.47 2.97 0.003
(pHar Tru × lin wave) ×
Musk Warmth
0.08 -0.19 – 0.35 0.58 0.564
(pHar Tru × quad wave) ×
Musk Warmth
-0.11 -0.54 – 0.33 -0.49 0.626
(pHar Tru × cub wave) ×
Musk Warmth
0.06 -0.21 – 0.34 0.46 0.645
(pOth Party × lin wave) ×
Musk Warmth
0.07 -0.40 – 0.54 0.30 0.765
(pOth Party × quad wave)
× Musk Warmth
0.10 -0.67 – 0.88 0.26 0.792
(pOth Party × cub wave) ×
Musk Warmth
-0.46 -0.98 – 0.05 -1.78 0.076
Observations 4479
R2 / R2 adjusted 0.059 / 0.054

Swift

ggplot(d[!is.na(d$presVote),],
       aes(x = factor(presVote),
           y = Swift,
           fill = factor(presVote))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  scale_fill_manual("Vote Choice", values = c("dodgerblue","red3", "grey42")) +
  xlab("Study Wave") +
  ylab("Swift Perception") +
  facet_grid(~wave.plot)

ggplot(d[!is.na(d$ideo_factor),],
       aes(x = factor(ideo_factor),
           y = Swift,
           fill = factor(ideo_factor))) +
  geom_bar(stat = "summary",
           fun = "mean",
           position = position_dodge(.9)) +
  stat_summary(fun.data = mean_se, 
               geom = "errorbar", 
               position = position_dodge(.9), 
               width=.1, 
               fun.args = list(mult = 1)) +
  theme_bw() +
  scale_fill_manual("Ideology", values = c("dodgerblue", "mediumorchid4","red3")) +
  xlab("Study Wave") +
  ylab("Swift Perception") +
  facet_wrap(~wave.plot)