2024 US Presidential Election Model

Python
Stats
Dataviz
Published

December 31, 2023

Modified

February 28, 2024

There are a lot of election models out there - fivethirtyeight, The Cook Political Report, and Decision Desk to name a few. So what am I doing here?

The Problem

Well, it may be the start of a tradition at this point since I did one last presidential election and I thought it actually performed quite well (election was close; my latest simulations also close). But, in the end, I created this because I felt like I was blindly trusting other’s models without understanding them. Many election model builders claim to use demographic patterns, previous election results, economic considerations, polls, etc.. But, beside polling numbers, what data exactly are they using and where does it come from? Also, what do their models actually look like? Ideally, I would want enough information to recreate the model myself to see what they actually did, but that information isn’t available.

What I did

My goal was to create a model that is based exclusively on recent quality polling, and that’s it! No mysterious variables thrown into already complex models; no sensitive consumer data that feels like violations of privacy; and, no blindly trusting an invisible methodology where you can’t possibly recreate the model. Since I finished data science school within the last four years, I decided to take a more rigourous approach than last time which I write about here and code up here. Overall, the purpose is to give an educated guess of what would happen if the election were held each day. I also just like this kinda thing 😂.

Note

The charts below are part of an automated data pipeline that updates each day until the election. So check back soon! You can see when the charts were last updated by looking at the Date Modified information at the top of the webpage.


Now for the model…

This first figure represents today’s simulation data. Everyday, I simulate the election 50,000 times and visualize the distribution of electoral votes below. The percentage in the graph title below is the probability Trump will win the election if the election were held today.

Caution

These charts are designed to be viewed on Desktop. They may look a bit weird if viewing from a mobile device. For example, the choropleth map will look small, but you still can hover each chart for more info!

Note

See how the histogram is more spikey than smooth? This is because some outcomes with even 1 EC point difference can be more likely given how state groupings naturally divide out.

Tip

Notice that you still see both candidates win some simulations. Even though one outcome may be more likely, don’t count the other out!

In the figure below, you can see the probability Trump will win each state if the election were held today.

Tip

Watch states like Georgia and Arizona closely which had unexpected results last election. Also, keep an eye on light colored states where the winner is more uncertain!

Note

Districts from States using the congressional district method are not included on the map, but they are included in the model!

This last graph is a daily tracker of the percent of election simulations won over time by candidate. You can view how the win probabilities change as the election cycle churns on.

Note

To get a sense of the spread of win percentages each day, I take 1000 samples of the simulations (n=100) and record the 2.5 and 97.5 percentile of the sample means. This is by no means a perfect measure for a confidence interval, but should provide a sense of possible win percentages day by day.

Thanks for viewing this post! Check back soon for more updates. You can see when the data was last modified at the top. Feel free to share thoughts, comments, or your predictions below.