The data in this analysis was obtained via YouGov Blue and Data For Progress prior to the 2018 US Midterm elections (dated October 22, 2018). We will be exploring individual and state-level ideological trends, and how these may play a role in impacting voter preferences and turnout.

library(tidyverse)
library(knitr)
library(kableExtra)

data <- read.csv(data.path)
kable.format <- c("hover","condensed","striped")

Data Structure and Selected Variables


Prior to beginning our analysis, we’ll first observe the demographic profile of the sample.
This dataset contains survey information from 3215 respondents.

Gender Demographics


It is worth noting that the gender variable in this survey contained only binary Male/Female options. This introduces some degree of bias into the sample as it may not be fully representative of the population; nonbinary respondents, for example, would be unable to provide accurate demographic information.

gender count percentage.of.sample
Female 1756 0.55
Male 1459 0.45


We observe that Female respondents account for a slight majority of the sample at 55%. Overall, this sample is gender balanced.

Racial Demographics


race count percentage.of.sample
White 2607 0.81
Black or African-American 264 0.08
Hispanic or Latinx 164 0.05
Mixed Race 69 0.02
Other 53 0.02
Asian or Asian-American 37 0.01
Native American 19 0.01
Middle Eastern 2 0.00


At first glance the racial demographics of this sample appear hugely skewed - 81% White, with no other racial group consisting of more than 10% of the sample. However, this sample is approximately representative of the U.S. racial demographics as of July 2018 (Data Available Here).

Ideological Demographics


ideo5 count percentage.of.sample
Conservative 780 0.24
Moderate 760 0.24
Liberal 598 0.19
Very Liberal 498 0.15
Very Conservative 492 0.15
Not Sure 87 0.03


We observe a fairly balanced sample on the grounds of political ideology. Ideological positions closer to center - Conservative, Moderate, and Liberal - are well represented here, with more polar ideologies being less represented (albeit only slightly). Notably, 3% of this sample is self-reported Not Sure regarding their political ideology. For the purposes of this analysis we’ll exclude non-ideological respondents, as we’re most interested in respondents who report a political opinion one way or another.


Removing these observations leaves us with 3128 respondents in the dataset.
Lastly, let’s observe gender- and racial-splits as a factor of political ideology.



We observe that women outnumber men in Very Liberal, Liberal, and Moderate ideological categories, while men outnumber women on the conservative end of the spectrum. Notably, Very Conservative respondents were nearly split 50/50 on gender.

race VL L M C VC sum.Liberal sum.Conservative
Mixed Race 0.2647059 0.2058824 0.2500000 0.1617647 0.1176471 0.4705882 0.2794118
Other 0.2307692 0.0769231 0.1538462 0.3653846 0.1730769 0.3076923 0.5384615
Black or African-American 0.2118644 0.2796610 0.3686441 0.1101695 0.0296610 0.4915254 0.1398305
Hispanic or Latinx 0.1923077 0.2179487 0.3205128 0.1794872 0.0897436 0.4102564 0.2692308
Asian or Asian-American 0.1666667 0.2500000 0.4444444 0.0555556 0.0833333 0.4166667 0.1388889
White 0.1488281 0.1828125 0.2246094 0.2695312 0.1742188 0.3316406 0.4437500
Native American 0.0555556 0.1666667 0.3888889 0.1666667 0.2222222 0.2222222 0.3888889
Middle Eastern 0.0000000 0.0000000 0.0000000 0.5000000 0.5000000 0.0000000 1.0000000



This table shows the breakdown of ideology by each racial group. Several trends here are worth noting:

  • A majority of White participants in this sample self-reported Moderate to Very Conservative ideology. This may skew the results of our analysis slightly

  • Nearly half of the Black respondents in this sample reported being left of center; only 13.98% of Black respondents reported being right of center

  • Mixed-Race respondents were largely left of center (n = 68), while “Other” participants were massively right of center (n = 52)

For good measure, let’s factor out White respondents to obtain a clearer image of the minority distribution in this sample.


Fear of Social Change


Pew Research Center predicts that the U.S. will become a “majority-minority” nation by 2043; in other words, White Americans will no longer make up a majority of the racial demographics in the country (Link to Research). Contemporary moral psychology research indicates that social conservatism is accompanied by an implicit preference for a clear social hierarchy (see Graham, Haidt, and Nosek, 2009 for review).

Data for Progress included this ideological trend in their initial survey - several questions began with “As you may know, Census projections show that by 2043 African Americans, Latinos, Asians, and other mixed racial and ethnic groups will together be a majority of the population. Thinking about the likely impact of this coming demographic change, how much do you agree or disagree with each of these statements?” Let’s now segment the initial data set to include some of the more relevant ideological questions.

fear <- data %>% 
                select(state, ideo5, CUSTOMS, SPEAK, ENRICH, SERVICES, 
                       JOBS, fear_of_demographic_change_scaled, fear_of_demographic_change_raw,
                       PATH, BORDER, DEPORT, SOCIALDOMINANCE_PRIORITIES, SOCIALDOMINANCE_SUPERIOR, 
                       SOCIALDOMINANCE_NOTPUSH, SOCIALDOMINANCE_EQUALIDEAL,
                       POP_2, ICE, GREENJOB, PUBLICGEN, FREECOLL, M4A, pid3,
                       educ2, educ4, age5)

Individual Ideology


fear %>% 
        ggplot(aes(x = fear_of_demographic_change_raw)) +
        geom_histogram(color = 'white', binwidth = 1) +
        labs(x = "Fear of Demographic Change Distributed Scores", y = "") +
        theme_minimal()


We observe a high count of score '0' on this measure. It’s possible that this is driven by ideology, but considering the number of social conservatives in this sample it’s somewhat unexpected. We’ll need to verify that this observation is driven by genuine responses, and not by error. Since the fear_of_demographic_change variable is a composite sume of ENRICH, SERVICES, and JOBS, we’ll observe how participants responded to these questions in particular. We’ll also filter out Liberal respondents for the time being, as a score of 0 on this measure is ideologically plausible.

fear %>% 
        filter(fear_of_demographic_change_raw == 0) %>%
        filter(ideo5 != "Very Liberal" & ideo5 != "Liberal") %>% 
        select(ideo5, state, fear_of_demographic_change_raw, ENRICH, SERVICES, JOBS) %>% 
        head(20) %>% 
        kable() %>% 
        kable_styling(kable.format)
ideo5 state fear_of_demographic_change_raw ENRICH SERVICES JOBS
Moderate Georgia 0 1 5 5
Very Conservative North Carolina 0 NA NA NA
Moderate Ohio 0 1 5 5
Moderate North Carolina 0 1 5 5
Conservative California 0 1 5 5
Moderate Oregon 0 1 5 5
Moderate Oklahoma 0 1 5 5
Moderate Michigan 0 1 5 5
Conservative Virginia 0 1 5 5
Moderate Ohio 0 1 5 5
Moderate Wisconsin 0 1 5 5
Moderate Florida 0 6 6 6
Very Conservative Florida 0 6 6 6
Moderate Oregon 0 1 5 5
Moderate Massachusetts 0 6 6 6
Conservative Texas 0 1 6 6
Moderate Ohio 0 1 5 5
Moderate Florida 0 1 5 5
Moderate Massachusetts 0 1 5 5
Moderate Pennsylvania 0 1 5 5
fear %>%
        filter(fear_of_demographic_change_raw == 0) %>%
        filter(ideo5 != "Very Liberal" & ideo5 != "Liberal") %>%
        filter(ENRICH != 6 & SERVICES != 6 & JOBS != 6) %>% 
        group_by(ideo5) %>% 
        summarise(count = n()) %>%
        arrange(desc(count)) %>% 
        kable() %>% 
        kable_styling(kable.format)
ideo5 count
Moderate 63
Conservative 6
Very Conservative 2

Two key takeaways here:

  • Scores of 6 (“Not Sure”) on any of these measures yields a score of 0 on the composite fear measure
  • Moderates and Conservatives are much more likely to buck ideological trends than Very Conservative participants are


We’ll clean the data accordingly by removing scores of 6 on these measures, as they’ll skew the observed fear of demographic change.

fear <- fear %>% 
        filter(ENRICH != 6 & JOBS != 6 & SERVICES != 6)

paste(nrow(fear), " Respondents Remaining")
## [1] "2928  Respondents Remaining"


These results are intuitive, and support our hypothesis. We see group means increasing at each level of the ideological spectrum (from left to right - Liberal to Conservative). However, the range of scores in the Very Conservative subset is still rather abnormal. This is likely due to the integrity of the data, let’s investigate further.

fear %>% 
        filter(ideo5 == "Very Conservative" & fear_of_demographic_change_raw == 0) %>%
        select(ideo5, JOBS, SERVICES, ENRICH, fear_of_demographic_change_raw) %>% 
        head() %>% 
        kable() %>% kable_styling(kable.format)
ideo5 JOBS SERVICES ENRICH fear_of_demographic_change_raw
Very Conservative 5 5 1 0
Very Conservative 5 5 1 0


Interesting. It seems as though two participants reported being Very Conservative AND embracing cultural and infrastructural change as a result of the “majority-minority” shift. This defies intuition, but it appears to be valid data. The next facet of this analysis will explore macro-level (statewise) ideological trends; in other words, we’ll see how these individual trends hold up at a broader level.


Statewise Ideology


Next, we’ll group the data by state to determine any regional differences in fear of demographic change. We’ll also create a new variable named state.ideo that will indicate the majority ideology of the respondents in each state.

First, we’ll calculate the fear of demographic change for the sample at large.

grand.mean <- mean(fear$fear_of_demographic_change_raw, na.rm = T)
statewise <- fear %>% 
        group_by(state) %>% 
        summarise(count = n(),
                  mean.fear = mean(fear_of_demographic_change_raw, na.rm = T),
                  fear.difference = mean.fear - grand.mean,
                  dems = sum(ideo5 == "Liberal" | ideo5 == "Very Liberal"),
                  repub = sum(ideo5 == "Conservative" | ideo5 == "Very Conservative")) %>% 
        mutate(state.ideo = ifelse(dems >= repub, "D", "R"))

statewise %>% 
        arrange(desc(count)) %>% 
        head(10) %>% 
        kable %>%  kable_styling(kable.format)
state count mean.fear fear.difference dems repub state.ideo
California 275 4.618182 -0.5194548 120 89 D
Texas 227 5.273128 0.1354911 77 112 R
Florida 222 5.418919 0.2812823 67 85 R
New York 134 4.835821 -0.3018157 58 46 D
Illinois 133 5.511278 0.3736416 50 55 R
North Carolina 133 5.353383 0.2157468 43 61 R
Tennessee 106 5.594340 0.4567030 31 50 R
Virginia 104 4.875000 -0.2626366 41 41 D
Michigan 103 4.611650 -0.5259861 42 36 D
Missouri 87 5.586207 0.4485703 24 43 R

Next, let’s visualize statewise ideological differences in fear of demographic change. This is a measure of each state’s average fear of social change subtracted from the grand (sample-wide) mean.

* States to the right of center have above-average rates of social fear
* States to the left of center have below-average rates of social fear, on average


Here we see a clear and obvious trend - states with a majority of Conservatives (at least in this sample) demonstrate higher average fear of demographic change. Conversely, states with more Liberals than Conservatives generally reported less fear of social change. Let’s now check the distribution of fear scores across all reported states (and Washington D.C.) to assess normality.


This echoes the results we observe above - majority Republican states are distributed higher on the fear scale than majority Democrat states. This distribution also appears approximately normally distributed, which is good news as we move into the statistical analysis of these trends.

Ideological ANOVA


Lastly, let’s observe how these trends stack up analytically. We’ll use a One-Way ANOVA to compare possible main effects and interactions in this data set.

ideo.anova <- aov(data = fear, formula = fear_of_demographic_change_raw ~ ideo5 * state)

kable(broom::tidy(ideo.anova)) %>% kable_styling(kable.format)
term df sumsq meansq statistic p.value
ideo5 4 13323.0510 3330.762757 523.214519 0.0000000
state 50 392.7111 7.854223 1.233785 0.1270204
ideo5:state 189 1267.5333 6.706526 1.053498 0.3001367
Residuals 2684 17086.2369 6.365960 NA NA


There we have it! In interpreting the results of this ANOVA we observe the following:

* There is a significant difference in group means for Political Ideology (p < .0005)
* There is not a significant difference in group means at the state level (p = .127)
* There was a non-significant interaction between State and Political Ideology


This analysis lends empirical support to our hypothesis, such that social conservatives are statistically more apprehensive towards changing U.S. demographics than social liberals. As we discussed in the introduction to this analysis, this apprehension is likely driven by differntial moral foundations - in other words, the ambiguity of Whites’ role in the new social hierarchy likely facilitates a fear response. Liberals tend not to be as affected by this kind of ambiguity, and therefore report a lower rate of fear of social change; for further reading see Craig & Richeson, 2014.


Discussion


With the exception of Very Conservative respondents in this sample, we observe a clear trend in political ideolgy and fear of demographic change. Liberals’ preference for novelty and Conservatives’ preference for hierarchy and social status quo may be responsible for driving this phenomeon, as a manifestation of differential moral foundations.

As for the Very Conservative respondents in this sample, we observe that there may be an overestimation in self-reported political ideology in some cases. Intuitively, we would assume that Very Conservative respondents would have more polar answers than Conservative respondents (i.e., answers closer to the extremes - “Strongly Agree” or “Strongly Disagree”). Instead, we observe results near the middle of the scale (“Neither Agree Or Disagree”). This is less likely to be an ideological trend; rather, it’s likely driven by respondents’ self-identification.