American Government and Politics

The Divided (But Not More Predictable) Electorate: A Machine Learning Analysis of Voting in American Presidential Elections

Seo-young Silvia Kim American University
,
Jan Zilinsky New York University

Abstract

Political parties are increasingly homogeneous both ideologically and demographically. With increased party-line voting, a natural corollary of sorting is that membership in demographic groups should be increasingly prognostic of vote choice. We argue that predictability of voting decisions is a useful quantity of interest for testing hypotheses from the literature on partisan and demographic sorting. Contrary to expectations, we find that demographic sorting has not produced a very predictable electorate. Tree-based machine learning models, trained on demographic labels from public opinion surveys between 1952 and 2020, predict only 63.5% of out-of-sample vote choices correctly on average. Moreover, demographics have not grown more predictive over time, while partisanship has. Partisanship's diagnosticity has risen in absolute terms, and its relative dominance over ideology has been stable for the last seven decades. Additional data about voters can still yield superior predictions, but its added value decreases over time as partisanship's predictive power grows.

Version notes

New model specifications were added.

Content

Thumbnail image of ML_voting_APSA.pdf
cloud_download

Supplementary weblinks

GitHub Repository
Publicly available code.

Comments

Log in or register with APSA to comment open_in_new
Comments are not moderated before they are posted, but they can be removed by the site moderators if they are found to be in contravention of our Commenting Policy open_in_new – please read this policy before you post. Comments should be used for scholarly discussion of the content in question. You can find more information about how to use the commenting feature here open_in_new .
This site is protected by reCAPTCHA and the Google Privacy Policy open_in_new and Terms of Service open_in_new apply.