You Voted for Whom? My R Shiny App on the Demographics of Party Misalignment in the 2016 Election.

Posted on May 29, 2018


In this post I introduce my first interactive R Shiny appĀ investigating demographic differences in the 2016 general election results.

Given concurrent Congressional and Presidential races in the 2016 election, I can segment out districts into 4 groups based on the party of the winner in each race. I then study demographic features of each group to understand what is differentiating districts that voted along party lines versus those that were split between parties - districts that will be heavily contested in the 2018 midterms.



Demonstrated R Skills:

See my code on githubĀ here.

Theory: Party Misalignment -Ā National vs. Local levels

Political parties are amorphous and during a Presidential election, varies ideologies compete in primaries to represent each party in the general election. While the parties then unify around the primary winner, that candidate will not substantially represent a portion of their party's supporters.Ā 

Sometimes that discrepancy between voters' ideal candidates and the party's choice of candidate is so large that they are persuaded to vote instead for the opposing party's chosen candidate and are thus disloyal to their identified party.

The 2016 Presidential election delivered highly oppositional races within both the Republican and Democratic primaries and the general election. Virtually no one saw Donald Trump's hostile takeover of the Republican Party or believed Hilary Clinton would face a tough primary against Bernie Sanders. Therefore many voters who felt loyal to their local party's Congressional candidate felt 'misaligned' to their party's Presidential candidate.

Majority Vote winners in Congressional and Presidential elections in each Congressional District:

Democrat Republican
Trump Ā  Ā  Ā  Ā 9 Ā  Ā  Ā  217
Hilary Ā  Ā  183 Ā  Ā  Ā  Ā 23


This party misalignment occurred in 35 of the country's 435 districts, and the party of the majority winning presidential candidate differed from the party of the elected Congressional representative.

Of these 35 districts, 23 majority voted in favor of both a Republican Congressperson and Hilary Clinton, and 12 voted in favor of both a Democratic Congressperson and Donald Trump.


Demographic Analysis - Overview

Ideological beliefs are highly related to demographic traits.

Thus, the second part of this analysis utilizes the U.S. Census Bureau's 2016 American Community Survey (ASC) to break down party misalignmentĀ  along 3 demographic variables.

  • Household Income
  • Education
  • Race/EthnicityĀ 

The ACS data displays the % of the population of each district at each level of the variables included.

For each variable, I provide a visualization of the mean and variance breakdown across party misidentification. To experience the full interactivity of the graphics, check out my R Shiny app.

Data used for this analysis comes from three sources:

Demographic Analysis - Income

Mean breakdown of household income brackets across party identification.

Distribution of mean household income:


  • Clinton Democrat districts are on average wealthier and have a higher variance than Trump Republican districts.
  • Clinton Republican districts tend to be among the wealthiest.
  • Districts with the lowest mean incomes appear the most polarized in their Presidential voting margins.

Demographic Analysis - Education

Mean breakdown of education level across all districts in voting group:


Distribution for each education level (interactive choice in R shiny):


  • Clinton Democrat districts have on average both more highly educated and more non-educated populations than Trump Republican districts.
  • Trump Democrat districts resemble Trump Republican districts in having majority populations with high school degrees.
  • Clinton Republican districts are on average the most highly educated.

Demographic Analysis - Race/Ethnicity

Mean breakdown of racial/ethnic identification for each factor of party alignment.

Distribution for each racial/ethnic groupĀ (interactive choice in R shiny) :


  • Trump Republican districts are on average significantly more white than Clinton Democrat districts.
  • Trump Democrat districts are the most white on average, and greatly resemble Trump Republican districts.
  • Clinton Republican districts have the highest means of latino-identifying members, resemblingĀ Clinton Democrat districts. They are otherwise differ from Clinton Democrat districts in being more white and less black-identifying.


Certain demographic differences stand out across district alignment.

Clinton RepublicanĀ Ā districtsĀ mirror the more affluentĀ Clinton DemocratĀ districts in being:

  • higher income
  • higher educated
  • higher (especially Latino) non-white population

Trump DemocratĀ districts mirror the averageĀ Trump RepublicanĀ districts in being:

  • lower/middle income
  • lower/middle educated
  • very high white population

The misaligned districts' demographics prefered Presidential candidates 'lost' their party's primary. Based on these results, one can imagine a very different result had the Republican candidate been Marco Rubio and the Democrat been Bernie Sanders.

While Trump's forceful ideology was not expected in 2016, he now holds significant sway over the Republican party looking toward to the upcoming 2018 Congressional midterm election. TheseĀ  'misaligned' districts will be battleground targets for Congressional candidates of the opposing parties. Whether or not these candidates are successful will indicate just how successful the extent to which the national party schema has been 'Trumpified'.

Future Work

Build upon theory on Misalignment

  • Evaluate quantitatively whether districts who had greater support for candidates who lostĀ  in the primaries were more likely to be mis-aligned in the general election.
  • Further analysis to include not just districts with opposite party winners, but that also switch sides entirely during the election.

Analyze over time relationship between demographic variables and political outcomes

  • Instead of examining demographic breakdown only in 2016 election, look backward to compare Party results in Congressional/Demograhic changes in 2016
  • Use inferential analysis to see if changes in party alignment during the unexpected 2016 election were statistically significant relative to past years

About Author

Franklin Dickinson

Business Strategist. Creative Technologist. Critical Thinker. Current fellow at NYC Data Science Academy, utilizing R, Python, machine learning, and big data to test intuitions and drive insights.
View all posts by Franklin Dickinson >

Leave a Comment

No comments found.

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 2020 Revenue 3-points agriculture air quality airbnb airline alcohol Alex Baransky algorithm alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus ames dataset ames housing dataset apartment rent API Application artist aws bank loans beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep boston safety Bundles cake recipe California Cancer Research capstone car price Career Career Day citibike classic cars classpass clustering Coding Course Demo Course Report covid 19 credit credit card crime frequency crops D3.js data data analysis Data Analyst data analytics data for tripadvisor reviews data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization database Deep Learning Demo Day Discount disney dplyr drug data e-commerce economy employee employee burnout employer networking environment feature engineering Finance Financial Data Science fitness studio Flask flight delay gbm Get Hired ggplot2 googleVis H20 Hadoop hallmark holiday movie happiness healthcare frauds higgs boson Hiring hiring partner events Hiring Partners hotels housing housing data housing predictions housing price hy-vee Income Industry Experts Injuries Instructor Blog Instructor Interview insurance italki Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter las vegas airport lasso regression Lead Data Scienctist Lead Data Scientist leaflet league linear regression Logistic Regression machine learning Maps market matplotlib Medical Research Meet the team meetup methal health miami beach movie music Napoli NBA netflix Networking neural network Neural networks New Courses NHL nlp NYC NYC Data Science nyc data science academy NYC Open Data nyc property NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time performance phoenix pollutants Portfolio Development precision measurement prediction Prework Programming public safety PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R Data Analysis R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn seafood type Selenium sentiment analysis sentiment classification Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau teachers team team performance TensorFlow Testimonial tf-idf Top Data Science Bootcamp Top manufacturing companies Transfers tweets twitter videos visualization wallstreet wallstreetbets web scraping Weekend Course What to expect whiskey whiskeyadvocate wildfire word cloud word2vec XGBoost yelp youtube trending ZORI