This is the website of Abulsme Noibatno Itramne (also known as Sam Minter). Posts here are rare these days. For current stuff, follow me on Mastodon



April 2024

Election Graphs 2020 is live!

So, I mentioned a while ago that I wouldn’t be posting here regularly about developments over on my site Election Graphs. And I won’t. But I did want to mention that although I’m about four months later than I had wanted to be, and I haven’t yet made some of the changes and additions I have been thinking about, Election Graphs 2020 is now live and up to date with the sixteen 2020 state polls that have already been released, and I’ll be continuing to update it as new polls are released.

Recent highlights:

  • 2019-01-27: Polling Averages vs Reality – The first in a six-part series looking at how polling averages compared to actual election results in the last three election cycles. (Links to the other five posts in the series are in the first post.)
  • 2019-03-03: The 2020 Starting Line – A post looking at the average state by state election results for the past five cycles (2000-2016) to try to define what the “starting line” for the 2020 race looks like. This places each state where it would be based on this nearly 20-year history.
  • 2019-03-08: The First 2020 Polls – The kick off for actually looking at real polls for 2020, pitting various Democrats against Trump. The main theme so far… based on the very limited polling so far, Biden does better against Trump than the other four of the five “best polled” Democrats. (That would be Warren, O’Rourke, Sanders, and Harris.)

At this point, as new polls come in, I’ll be updating the Election Graphs Electoral College 2020 page regularly as new polls come in, and when there are notable changes, I’ll be doing blog posts on the main Election Graphs page.

That kind of stuff is now over there, not here, so if you want it, you either need to be checking itself, subscribe to it with an RSS reader (RSS link), follow @ElectionGraphs on Twitter, or like and follow Election Graphs on Facebook.

Hope to see some of you over there!

Stuff over at Election Graphs

This week I’ll finally be doing some election geek posts over at with some analysis of the difference between the final state poll averages I had in 2008-2016 and the actual election results.

I just posted the first one a few minutes ago.

That kind of stuff is now over there, not here, so if you want it, you either need to be checking itself, subscribe to it with an RSS reader (RSS link), follow @ElectionGraphs on Twitter, or follow Election Graphs on Facebook.

This is still analysis of old stuff. New stuff for 2020 will be coming soon, but not quite yet. I will probably post again here once that actually starts. But if you want my “election stuff” follow one of the above…

One preview graph from the first of this series of posts…

Brandy didn’t win this time

Maybe she didn’t win her race this time… but I’m pretty sure she isn’t done with public service of one sort or another. Like her Facebook page to keep up with her in the future!

I Voted For My Wife!

Just finished filling out my ballot. I got to vote for my wife!

We will be dropping all three ballots from our family off at our closest drop box very soon.

If any of you actually live in Snohomish County Fire District 1 (map below) and haven’t voted yet, there is still time! Ballots need to be postmarked today, or in a drop box by 8 PM this evening. My wife and I thank you for your vote!

Voters’ Pamphlets and Ballots Dropped – Vote Brandy!

The official voters’ pamphlets dropped a few days ago for the local primary elections on August 1st, two weeks from today. The ballots have been delivered as well. People are already voting.

The above is my wife Brandy’s section of the voter’s pamphlet. I’m very proud of her. She’s been getting lots of very positive reactions at various local events, and we keep hearing from more supporters. Win or lose, this has been a great experience. But of course we want Brandy to win, right? There are five people running for Snohomish County Fire District 1 Commissioner Position 3, and the top two from the primaries move on to the general election.

So if you haven’t yet, it would be great if you took a few minutes to help out by doing a few things… ESPECIALLY if you live in Snohomish County… but even if you don’t.

  • Like and share her Facebook page
  • Visit her website
  • Donate to her campaign!
  • If you have something to say or ask about the campaign, leave a message on her Facebook page as well
  • And finally, of course, if you actually live in Snohomish County Fire District 1 (map below), VOTE for Brandy!

Don’t wait, do it now! :-)

Thanks all!

And here is that map. Fire District 1 is actually three discontinuous pieces. Odd. But there you go. The areas surrounded by blue lines are all in Fire District 1. I think. :-)

Trends in the 2017 Special Elections

It has been a couple days since the GA-6 and SC-5 election results, and there are other things in the news now, but I have still been frustrated by a lot of the spin about these races. Specifically, I’ve heard both Republicans and Democrats framing everything about how the Democrats have now lost four in a row, they are showing they can’t win, they are in trouble, they have to change their approach entirely to ever hope to win, etc. Republicans are of course crowing about their victories, but I’ve also heard Sanders-wing Democrats trying to make a case about how the results show that their wing of the party does better and the more centrist Democrats are doomed. Most of this is nonsense. As is my wont, I made a chart showing another way to look at things.

Now, to be fair, history has shown that drawing ANY conclusion from House special elections is dangerous. Special elections are special. And it is a long way until the 2018 elections still. The world in November 2018 is going to look a lot different than the world in June 2017. And we only have four data points. So take ANY conclusion based on this data with a huge grain of salt.

A bunch of the analysis I’ve seen has compared the House special election results to the 2016 PRESIDENTIAL results too. Huh? Why would you do that? Apples and oranges. Compare House races to House races instead. Now, even there, there are critical differences. Presence or absence of incumbents for instance. Lower turn out in special elections. All sorts of things. But at least compare the same kind of race.

In any case, when you do compare congressional race to congressional race, here are the numbers for the four special elections that had a Republican running against a Democrat. (I’m ignoring here the special election in California’s 34th that had two Democrats running against each other.)

  • Kansas’s 4th
    • 2016: Democrat 29.6%, Republican 60.7% -> Margin 31.1%
    • 2017: Democrat 45.7%, Republican 52.5% -> Margin 6.8%
    • Shift: 24.3% more Democratic
  • Montana’s At-Large
    • 2016: Democrat 40.5%, Republican 56.2% -> Margin 15.7%
    • 2017: Democrat 44.1%, Republican 50.2% -> Margin 6.1%
    • Shift: 9.6% more Democratic
  • Georgia’s 6th (numbers as of election night)
    • 2016: Democrat 38.3%, Republican 61.7% -> Margin 23.4%
    • 2017: Democrat 48.1%, Republican 51.9% -> Margin 3.8%
    • Shift: 19.6% more Democratic
  • South Carolina’s 5th (numbers as of election night)
    • 2016: Democrat 38.7%, Republican 59.2% -> Margin 20.5%
    • 2017: Democrat 47.9%, Republican 51.1% -> Margin 3.2%
    • Shift: 17.3% more Democratic

These shifts are large. 9.6% to 24.3% more Democratic depending on the district. The average of these four is a 17.7% move toward the Democrats.

Now, in real life, there are lots of factors in Congressional races. In real life districts will do all sorts of different things in 2018. But lets look at a simplified model for a minute. What if all 435 districts got 17.7% bluer? We get the chart below.

The blue line shows the election margins in all 435 districts based on the 2016 results, ordered from the most Democratic district to the most Republican district. Republican districts are positive, Democratic districts are negative. The place where the line crosses the X-axis is the number of Democrats in the House, currently 194. It takes 218 to control the House.

The red dots are the four special elections we have had. They are displaced downward from the blue line since the Democrats did better in the special elections than they did in 2016. The amount they are shifted downward represents the shift in the margin from 2016 to 2017.

The orange line is where we would be if all districts moved like the average of these four special elections. Again, we know this won’t happen exactly for any number of reasons, but this is to illustrate the degree of shift these four special elections represent.

With this amount of movement in the margins on the individual races, you end up with a 55 seat swing in the House, resulting in a Congress with 249 Democrats to 186 Republicans. That would be a substantial majority.

But you don’t even need that 17.7% shift. A 12.5% shift would be enough to just barely squeak by with a 218 seat majority. So, no, a Montana At-Large sized 9.5% shift would not be enough to give the Democrats the majority. But if they match the shift in any of the other three districts, the Democrats win the House.

Now, that may not happen. There are lots of reasons why that may not happen. But all the comments about how because they lost these four races the Democrats are doomed, or that they have to change their whole strategy to win, or that the Democratic brand is toxic, or anything of the sort… those takes are all just ridiculous on their face. What we’ve seen in these four races are massive movements toward the Democrats compared to just seven months ago… enough to show that a 12.5% movement, which might have seemed out of reach right after the November elections, is actually well within reach.

If Republicans want to protect themselves, they need to recognize the danger, and CHANGE their approach, and start defending their close districts differently, not just keep saying that “the Democrats keep losing!”. What the Republicans are doing is NOT working. Yes, they held these seats, but all these races were much closer than they “should have been”, and they had to put in a lot of resources to hold things even there. What they are doing is NOT working. Yes, the “Ha! Ha! We won!” act is fun, and it is nice to win and gloat about it, but if they are serious about holding the House, they need to be realistic about this as well.

Meanwhile, if Democrats want to capitalize on the trends, they need to be confident and be proud of these huge gains, not get paralyzed by self doubt and calls to change everything just because a 20% shift wasn’t quite enough to win Georgia’s 6th. It was a 20% shift!! That is HUGE! The fact that these districts went from places where Democrats lost by 16% to 31% to districts that Democrats lost by 3% to 7% shows that they should be pushing and competing hard in any district they lost by less than 25%, maybe even 30%. KS-4 showed it is possible for them to generate moves that size. They should attempt it.

May 2017 Update: A look at Trump favorability vs job approval

Back in March I took a look comparing Trump’s favorability rating (% saying they have a favorable opinion minus % saying they have an unfavorable opinion) to his net job approval (% approving of his job performance minus % disapproving of his job performance). This was interesting because these two ways of measuring Trump’s popularity were not really moving together.

I’ve updated those charts through today. (Once again using data for the smoothed trends.) Here is what we have:

Net job approval is much more volatile than favorability rating. This makes sense. People are basically answering, “How do I think Trump is doing RIGHT NOW?” vs “How do I like Trump overall?”. Both have been trending down… down meaning worse for Trump… with the job approval swings looking much more impressive than the slow gradual decline for favorability.

I actually think the favorability number is the more critical one to look at though. Job approval going down just means Trump had a bad week or two. It can easily bounce back if the next week goes better. Favorability going down though probably means people who voted for Trump are actually losing faith in him. They are not just saying he didn’t do great recently, they are saying they no longer like him. Big difference. And that has been slowly heading down since the beginning of February, and seems to have accelerated since the second half of April.

Favorability swings can be reversed too of course, it just seems harder to move than job approval. Having said that, these charts are extended back before the election for a reason. Note the huge swing upward in Trump’s favorability that started a couple weeks before the election and peaked in December. That was a big move in Trump’s direction. A big part of that was just an election bump and people “giving him a chance”, or giving him a boost simply for being President Elect. But it just shows that the right events can move things a lot pretty quickly.

And it shows that Trump has still not come anywhere close to losing all of the additional people who started thinking more favorably about him during that time period. Some of them, sure, but he is still looking a lot better now than he was right before the election. To all the folks hoping for Congressional Republicans to turn on Trump, I’m thinking you have to see the blue line above break the October low before you start seeing any of that sort of thing happen.

But we shall see. :-)

A look at Trump favorability vs job approval

With all the hype today about the latest Gallup poll showing Trump’s job approval rating hitting a new low, I thought I’d look at the polls a little further. First of all, the usual advice… never look at single polls, look at averages. So look at job approval trendlines rather than just looking at the Gallup trend. Also though, I’ve been looking at favorability trendlines as well as job approval, because it goes back prior to Inauguration Day. And in both cases, I prefer looking at the “net” numbers (positive ratings minus negative ratings). So time to make my own graphs based on Pollster’s trend lines:

I’ve gone all the way back to the beginning of October to show the last inflection point prior to the election. Trump’s favorability reversed direction and started improving around the middle of October after bottoming out at -25.4%. (Bottoming out for that time period anyway, he was worse than -30% at a couple times prior to winning the nomination.) Roughly speaking this last pre-election reversal came somewhere between the 2nd and 3rd debate.

Then after he won the election the improvement in his favorability accelerated dramatically, moving to by far the best levels he had ever seen. Presumably this comes from people just feeling more positively about him simply because he won the election. Since December 1st, Trump’s net favorability has stayed in a very narrow 1.8% band from -5.6% at the best, to -7.4% at the worst. For all intents and purposes, Trump’s favorability has been flat for over three months now. Now, it has never been positive, but it has not been getting worse for Trump… or better. Just flat.

As of inauguration day though, there was an additional measure. Job Approval. This actually started out positive, with more people approving of Trump’s performance in the job than disapproving. But this didn’t last long. Aside from a slight bump toward the end of February, the trend has been down. The longer Trump has been President, the lower his net job approval is going. It will be interesting to see how far this trend continues.

The favorability line has been the line I have watched more, leaving me with the impression that the public is so polarized that virtually nobody is changing their mind (in either direction) about Trump. But the job approval numbers tell a different story. This number is indeed shifting, and shifting away from Trump dramatically. Why the difference?

Well, of course, these are different sorts of questions. Favorability essentially measures how the public feels about a person in general. How much they “like” them. Job approval specifically measures how people think the person is doing in the job. It is very possible for someone to feel favorable about Trump (that is, they like him), while still thinking he is doing a bad job.

That is exactly what we seem to be seeing. Quite a few people are shifting toward thinking that they don’t approve of how Trump is actually performing in the job of President… but they still aren’t at the point where they will say they don’t like him.*

My gut feel is that while the job approval number is important, the real signal of a change in Trump’s political fortunes will be if the favorability numbers start to drop as well. We haven’t seen that yet. In fact he is still doing quite a bit better than he was right before the election. But surely if job approval keeps falling, at some point favorability will too… right?

(Meanwhile, I noticed another curiosity, which is that even while all this other stuff has been going on, ever since last summer… so well before the election… right track / wrong track numbers have been been moving dramatically toward right track… although wrong track does still win… What is up with that?)

*This is also where looking at separate trend lines on job approval for approve and disapprove rather than just the net value is interesting despite my preference for the net, because it looks like approve numbers are flat, while disapprove numbers are growing, which means that it isn’t so much people shifting from approve to disapprove, as folks who were undecided picking a side… the disapprove side. But I don’t think this changes the overall picture I’ve described.


Electoral College: The Actual Presidential Vote

The Electoral College voted on Monday December 19th. There were faithless electors this year, so the final results differed from the “earned” results reported in my “Final Forecast and Election Night Updates” post.

Despite the hopes of groups like the Hamilton Electors, the number of Republican faithless electors was nowhere near the 37 that would have been needed to send the election to the House. Only 2 Republican electors actually abandoned Trump. In fact, not only was the goal of stopping Trump not achieved, but the efforts backfired completely. In the end there were more Democratic defectors than Republican defectors, so Trump’s margin actually increased from a 74 electoral vote win to a 77 electoral vote win. Not quite what those campaigning for electors to vote independently were hoping for.

Lets look at the details of the final counts.

The last state called was Michigan on November 28th. The “earned” electoral vote based on the states won and lost at that point was:

  • Donald Trump 306
  • Hillary Clinton 232

When the electoral college voted, there were 7 faithless electors. 5 of these were Democratic and 2 were Republican. This was the largest number of faithless electors since 1872 when 63 electors pledged to Horace Greeley did not vote for him… because he had died between the November election and the December electoral college vote. Not counting 1872, since perhaps one shouldn’t count not voting for a dead candidate, this was the largest number of faithless electors ever.

The 7 faithless electors voted for a variety of different candidates, making the official totals:

  • Donald Trump 304
  • Hillary Clinton 227
  • Colin Powell 3
  • John Kasich 1
  • Ron Paul 1
  • Bernie Sanders 1
  • Faith Spotted Eagle 1

An additional 3 Democratic electors attempted to be faithless, but were thwarted by state laws and procedures in Maine, Minnesota, and Colorado. It is possible some or all 3 of these electors may end up filing lawsuits over this. If lawsuits actually happen and are all successful (which we obviously can not say at this point), Clinton would lose 3 additional electoral votes, Sanders would gain 2, and Kasich would gain 1. If this were to happen, Trump’s winning margin would increase further to 80 electoral votes.

Normally, we think of the Vice Presidential race as locked with the Presidential race as part of “tickets”, but in fact as far as the electoral college is concerned, these are actually two separate votes, and the faithless electors also split their choices for Vice President. The Vice Presidential results were:

  • Mike Pence 305
  • Tim Kaine 227
  • Elizabeth Warren 2
  • Maria Cantwell 1
  • Susan Collins 1
  • Carly Fiorina 1
  • Winona LaDuke 1

And with that, absent any minor adjustments from potential lawsuits by the three foiled Democratic faithless electors, or Congress doing something unexpected on January 6th, the 2016 electoral results are set.

Donald Trump wins.

Donald Trump August 19, 2015

Photo by Michael Vadon [CC BY-SA 2.0], via Wikimedia Commons

Electoral College: Post Mortem

It took almost 20 days, but the last state, Michigan, was finally called for Trump on Monday November 28th.

The final results of Election 2016 are now known:

Clinton 232 Trump 306, a 74 electoral vote win for Trump.

(That is absent faithless electors or something completely unexpected coming out of recounts of course.)

(UPDATE 2016-12-20 19:27 UTC: The electoral college has actually voted, and there were 7 faithless electors. The final count was Trump 304, Clinton 227, Others 7. This is a 77 electoral vote margin for Trump. For details, see my post titled “The Actual Presidential Vote“.)

This site’s final update predicted that the result would be somewhere between a 210 electoral vote win for Clinton and a 66 electoral vote win for Trump, with the “expected” result being an 8 electoral vote win for Clinton.

Obviously I was wrong. Not just on the winner, but the result didn’t even come in within the “range of the reasonably possible” that I listed. A range which had seemed overly broad before the election. A 66 electoral vote win for Trump (or a 210 electoral vote win for Clinton) seemed like a complete fantasy. Yet Trump exceeded that margin.

Having said that, the “expected result” was actually closer than almost all electoral vote trackers out there. So I actually did about as well as could have been done given the raw data that was available. So the raw output of my model on Election Graphs was pretty good. Perhaps I could have picked a bit wider window for the “swing” states than 5%, but 5% was generally reasonable. Although of course I wish I had gotten everything exactly right like I did in 2012, I am happy with how my model performed. I may make tweaks for 2020, but I will not dramatically change what I do with the model itself in 2020.

I do fault myself however for some of how I interpreted that data in my analysis posts, most critically I concentrated too much on the “Expected Case” and the “Tipping Point” metrics, and not enough on the full range of variation between the best cases. Like most electoral college trackers, this led me to minimize the chances of Trump’s win because “he has never led the race and isn’t ahead now” while essentially ignoring the fact that while that was true, he spent most of the last 100 days close enough that a systematic polling error or significant movement in the last few days could erase Clinton’s lead. Both seem to have happened. My model was spitting out the “Trump Best Case” the whole time, but for the most part, I downplayed the best cases. That was a mistake.

Lets dig in and look at the details.

Warning in advance, the remainder of this post is likely only to be of interest to “data geek” type folks. If that isn’t you, feel free to stop now… or just skip down to the “thank you” section at the end. If you are the data geek type, dive in with me to a lengthy discussion of the details and what lessons they may provide for 2020.

If you prefer listening to reading, or just want to hear about this in another way, I also discussed much of what I am now including in the post mortem in the November 11th episode of the Curmudgeon’s Corner podcast.

How did I do state by state?

In terms of individual states (and congressional districts), I of course did not match my 2012 record of getting 56 right out of 56. I ended up getting 5 wrong:

  • Expected Strong Clinton: Wisconsin went for Trump instead of Clinton
  • Expected Weak Clinton: Michigan went for Trump instead of Clinton
  • Expected Weak Clinton: Maine CD2 went for Trump instead of Clinton
  • Expected Weak Clinton: Pennsylvania went for Trump instead of Clinton
  • Expected Weak Trump: Nevada went for Clinton instead of Trump

So there were 4 places where I erred toward Clinton and 1 where I erred toward Trump.

Of these, four were in the “weak” category, with margins in my averages of 2.6% or less. They were in my too close to call categories, and while I would have liked to have gotten more right, my model did indeed say they could easily go either way.

The only big surprise here was Wisconsin. The polling average had Clinton up by 7.1%, but Trump won anyway. There is nothing to say there other than the polling was way off in Wisconsin. Way off. I’m sure much will be written about why that was the case.

A state that I hadn’t even classified as a swing state going the opposite direction as expected is obviously how the final result was able to end up completely outside of the expected range. Wisconsin going for Trump was simply not contemplated. All the other states that went for Trump were within the range of options this site identified as plausible.

Of course, there were other states that I did not get wrong, but the margin was still off by more than expected. That is a different kind of analysis that I won’t do today.

How did I do on the overall result?

Looking at the over all electoral college result, lets compare with where some of the other sites had the race at the end:

  • Clinton 323 Trump 215 (108 EV Clinton margin) – Daily Kos
  • Clinton 323 Trump 215 (108 EV Clinton margin) – Huffington Post
  • Clinton 323 Trump 215 (108 EV Clinton margin) – Roth
  • Clinton 323 Trump 215 (108 EV Clinton margin) – PollyVote
  • Clinton 322 Trump 216 (106 EV Clinton margin) – New York Times
  • Clinton 322 Trump 216 (106 EV Clinton margin) – Sabato
  • Clinton 307 Trump 231 (76 EV Clinton margin) – Princeton Election Consortium
  • Clinton 306 Trump 232 (74 EV Clinton margin) – Election Betting Odds
  • Clinton 302 Trump 235 (67 EV Clinton margin) – FiveThirtyEight
  • Clinton 276 Trump 262 (14 EV Clinton margin) – HorsesAss
  • Clinton 273 Trump 265 (8 EV Clinton margin) – Election Graphs
  • Clinton 272 Trump 266 (6 EV Clinton margin) – Real Clear Politics
  • Clinton 232 Trump 306 (74 EV Trump margin) – Actual result

First of all, I guess I am permitted to toot my own horn a bit. While I did not predict a Clinton victory, I came closer to the final result than all but one of the outlets above. That is something, right?


That over with, I was still quite a ways off.

I should also point out that the above is ONLY due to changes added with polls that came out on the day before election day. My very last update on election day itself had the 8 EV Clinton margin. But the update before that, on Sunday, had me at 108 electoral votes, right there with so many others. Indeed, because I had been in broad agreement with so many other outlets, and my final update caused me to deviate quite a bit, I included caveats in my last update basically saying I didn’t believe it, there were probably outliers impacting the data, and my Sunday numbers were probably better.

Which brings me to the lessons of this post mortem…


Trust my own method and data

Now, frankly, the swing on the last day may well have just been dumb luck. Random noise happening to go in the right direction. But it also could have been an indicator of the actual movement. Right or wrong, given I had been using a fixed methodology all election season, I should have stuck with it fully. After the election, if I was wrong, I could and should use that to learn for the next election cycle. But I started making excuses because I was not matching all the other election trackers. I should not have done this, I should have taken the results I was seeing seriously, and should have based my commentary on that.

My final update had an 8 EV Clinton win with a tipping point of only 1.6% in Pennsylvania. Only that one single state needed to flip in order for Trump to win. My final update did mention that Trump had made it tight again. I summed it up like this:

Maine CD2, Pennsylvania, Nevada, North Carolina, Florida, and Iowa are all within 2% at the moment. They could still go either way based on the current averages. That is enough to swing the election.

So, as has been the case for awhile, a Trump win would be surprising, but should not be shocking. Trump has a path.

Without looking at all the other forecasts and making excuses for why I was different, this should have read more like:

Maine CD2, Pennsylvania, Nevada, North Carolina, Florida, and Iowa are all within 2% at the moment. They could still go either way based on the current averages. That is enough to swing the election. Even more states are within 5%, and they could easily flip as well.

The tipping point is only 1.6% in Pennsylvania. Clinton’s lead in Michigan is also only 2.6%. A small last minute surge too late to be caught in polls, or a small polling error, could easily flip either or both of these states, and thus the election.

Clinton is ahead, she is the expected winner, but since early October things have been trending toward Trump, with only a brief interruption after the third debate and before the Comey letter.

The race is now very close. While Clinton is still favored, the bottom line is there is a reasonable chance this could go either way.

But I did not say that. And the reason was primarily because in that final update, I looked like an outlier, and I therefore didn’t believe what my own model said, specifically in terms of just how close it really was.

Which brings us to the next lesson.

Trust the Uncertainty

For the three election cycles I have done this, I have used a 5% margin as the boundary for what I call the “weak states”. States that you should consider to be too close to call and which could go either way. When justifying this, I have always said something like this:

Obviously 5% is an arbitrary number, which conveniently is a nice round number too, but between possible polling error, and possible last minute swings that happen to close to election day to be reflected in polls, 5% seems reasonable. A 5% last minute swing in response to news events is a bit large, but perfectly possible. Similarly a 5% polling error is a bit large, but possible. And my model only looks at the margin between the two major candidates, it does not explicitly account for the group of undecided voters, they could also possibly swing a result by that much in some cases. 5% seems as good a place to draw this line as any.

While having some sort of empirical way to define this line may be preferable, this election has shown that 5% is indeed pretty reasonable, and there are arguments that it should be even larger. (See Wisconsin again, which Trump won while my average had Clinton ahead by more than 7%.)

With that in mind, lets look at the two main graphs the site provides once again:



For almost all of the last 100 days of the race, we were in the “could go either way” zone. The exceptions were short periods in August, right around the Access Hollywood tape release, and right before the Comey letter. The rest of the time we had a close race.

Yes, Clinton was ahead the whole time. Yes, Trump had never actually led in my model. But we were within my own self-defined “this is close enough we can’t trust this” margin. This was a close race. And yes, there was a “ceiling” for Trump, but that ceiling was within the margin of error for this kind of model.

I let myself think mostly about the center line of the model, and not as much about the “best cases”. At least toward the end of the campaign cycle. I had convinced myself based on looking at other people’s models that my best cases were probably too extreme. Perhaps useful 6 months out to reflect how much things could change over many months, but certainly too wide in the last couple of weeks or days.

But even if I’d set my thresholds at 2% instead of 5%, my last couple of updates would have shown it too close to call. At 3% it would have been my last three updates. This was close by my own definition of close, and my updates minimized that. They should not have.

And Trump was surging, which brings me to my next lesson:

Don’t call the end of trends too soon

On the Sunday before the election my post was titled “Trump Surge Sputtering Out?“. While the next update did indicate Trump had made the race close again, that was the post full of caveats about how I didn’t really believe the data.

The “looks like Trump has topped out” call was indeed premature. There was indeed mixed data. Clinton was improving on some metrics. But all within the realm that could have been noise. The overall trend was still toward Trump. There was no definitive reversal at that point, as the very next update showed, or would have if I had trusted my own data. If I had, I would have said that last update showed that the trend toward Trump had continued, and had made the race once again very close.

The actual flow of the last 100 days seem really to only have a few phases:

  • Before the August Trump campaign shakeup, Trump was in a steady decline
  • After the August shakeup, Trump maintained discipline and made it very close by late September (or possibly he was leading if the same polling errors that existed at the end of the race were present then too).
  • The first debate caused Trump to crater. Clinton’s margin grew rapidly.
  • Trump started recovering almost exactly when the Access Hollywood tapes came out. Far from hurting him, the media pile on about how this was probably the end of Trump’s campaign seems if anything to have rallied people to him.
  • After the third debate, there is evidence that people were starting to move away from Trump again, his “best case” was once again a loss. But this didn’t last long.
  • After the Comey letter the movement toward Trump (or away from Clinton) resumed. This trend continued up until the last pre-election polls.

In between those there was a bunch of movement, and I pointed out some of them as trends. Many were noise. When you are looking at a jaggy signal full of noise, it is hard to determine where to start saying something is a real trend rather than random movement. Maybe even the trends I called out above are illusions. But it is clear I should have been more conservative in calling out trends before they were dramatic enough to know with a decent amount of certainty that they were not just noise.

Don’t assume trends will continue either

Near the bottom of the trend that started with the 1st debate and ended with the Access Hollywood tape I said this on October 14th:

There is no time left for a Trump comeback from behind win from these levels. It would take something massive that would completely reverse everything we know about this race so far. It would be an unprecedented reversal. Impossible? No. Incredibly unlikely? Yes.

A few weeks ago Trump had managed to make this race close. But it was short-lived. Starting with the debate he has been dropping steadily. We don’t yet have signs that we have hit bottom either. There have been new negative stories about Trump almost every day. Further drops would not be surprising.

We’re no longer really talking about who will win this election. Clinton will win this election. The only question is by how much.

Now, it WAS the biggest comeback in the history of American presidential races in terms of how different the outcome was compared to polling at that time given how little time was left. And I had caveats that it wasn’t impossible. But still, that last paragraph completely dismissing the possibility of a Trump comeback was flat out wrong. It was clearly putting way too much stock in the trend at that moment, and not taking into consideration how little it would take to put Trump’s best case back into the win column.

Indeed, at the time of the comment we’d just seen polls move just about 6% in Clinton’s direction in just a couple of weeks, showing that rapid movement in the polls was very possible. There was plenty of volatility. Plenty of room for movement. A 6% move in the opposite direction in the 26 remaining days should not have been dismissed out of hand.

Save the “it is over” comments until it is actually over. Things can change a lot in just a small amount of time if the right things happen in the course of a campaign. And they did.

Other lessons

I think those were the main lessons, but there were a few others too that will also inform my choices going forward for 2020.

  • Showing polls at their mid-point: This cycle I used the midpoint of the time in the field of polls for both determining which polls to include in an average, and showing them on the state detail graphs. This means that if there is a change caused by a news event, the change should be CENTERED on the event rather than START at the event. It means that the movement caused by an event often starts on the chart prior to the event itself. How much so depends on the lengths of the polls that were in the field at the time. Although there are good reasons I thought this was better, it ended up being confusing, even for me. Several times during the cycle I said things like “but this change started before event X”. Some of those (but not all) were just me misreading the graph because of this confusion. Putting all polls at their end date would ensure that any influence from an event would always only show on the part of the charts after that event. (There are down sides to this as well, but it might be better on balance.)
  • Third Parties: Although he faded in the last weeks, for awhile McMullin was getting lots of individual polls showing him in 2nd place, or even 1st place in Utah. Johnson came in 2nd in two other individual polls in some states earlier in the cycle as well. The way my site is currently structured, it does not deal properly with 3rd party candidates who are actually doing strongly enough to have a shot at 2nd place or better. I had a high level plan in my head (but nowhere else) for how to revamp my site to deal with this situation, but by the time McMullin surged it was too late to implement it. This may or may not end up mattering in 2020, but I should adjust the site so it can handle these situations from the beginning, so if it does arise, I don’t end up scrambling to deal with it.
  • Concentration on the margin: Everything on Election Graphs presents things in terms of the Republican minus Democrat margin. Not only does this break down in the 3rd party case mentioned above, but it also fails to give any way to represent how big the undecided group is and how that might matter. It also can’t differentiate between one candidate gaining, and the other losing ground. Both show up similarly in the margin, but the interpretation for what is happening in the race is different. I think the margin view is very useful, but there is a need to also see the lines for the individual candidates, so I should consider showing that as well.
  • Outliers: There were persistent outliers from some pollsters. The case that comes most easily to mind is Google Consumer Surveys persistently saying that Clinton had not just a lead but a big lead… in Kansas. This was ridiculous, and luckily most of the time there were enough other polls in Kansas to keep me from constantly saying Kansas was a possible Clinton pick up. I only said that a couple times, and each time I noted that I didn’t believe it. But it always made Kansas look closer than it really was. Even without the Kansas case, outliers introduced volatility where there wasn’t any in a variety of states, or pushed the average in one direction or another. I need a better way to minimize the impact of outliers. There are a variety of options. I should look into them.
  • Poll Selection: There were a number of cases over the course of the year where there were polls of dubious quality. There was also sometimes a question of “is this a poll, or is it a model?”. Or if a pollster was releasing results selectively to favor one side or the other. This site’s bias is to include as much as possible, so I included almost everything. Next time, I need to have clear written guidelines in advance of what gets included and what does not, and I need to stick to it.
  • Tracking Polls: Because I base my averages (usually) on “the last five polls” once certain outlets started releasing polls daily, they have the power to completely take over the averages, especially in lesser polled states. This time around I countered this by including only one poll per week from these tracking polls. This solution is not ideal though, as I am clearly ignoring data that might be useful. I need to come up with a solution that can properly deal with tracking polls, incorporating the data they provide, while not improperly weighting them vs the one off polls.
  • Data acquisition: My data acquisition process is manual and quite time consuming. It is exhausting physically. I actually kind of enjoy it, but the raw amount of time it consumes, especially in the last few weeks before the election, are disruptive to the rest of my life and unsustainable. It was hard to keep up. Especially with the proliferation of 50 state polls toward the end. At times I was extremely frustrated when I knew certain polls were released, but I didn’t get them incorporated for a day or two, on occasion even three days. I want to be as up to date as possible, and that requires more automation. I have been reluctant to cede control over poll selection by relying exclusively on the data feeds from one of the big poll trackers that provide an API, but I may have no other option for 2020. (Also, at least for 2016, it seemed that I was up and running with my 2016 poll tracking months before those other trackers had 2016 listings up on their sites, although maybe their APIs were already returning the raw data, I don’t know.)
  • What to include in average: I like the simplicity of “last five polls” (even with the exceptions I carve out for that). But there is an argument that in the early parts of a campaign it includes too much, and in the latter parts too little. Five polls leaves a lot of room for a single poll to have a big influence. In addition to poll selection questions noted above, the question of how to construct the average itself matters. 5 polls? 10 polls? Some sort of weighting that decays over time? For any day just show the average based on polls actually in the field that day? (You’d still need logic to give a value when no polls were in the field.) If I open the door to weighting the polls, do I weight on other things? Sample size? Previous accuracy of the pollster? This would be throwing out the “keep it simple” tenet of Election Graphs. I already added some of this with weighting multiple results from single pollsters. But is there more I could or should do that would improve things without making the math completely inscrutable to all but the most interested? Or is the site already there actually? I’ve had multiple people say they don’t understand the charts at all. Should I even care about keeping it simple? Or should I just feel free to add all the complications I think would improve the result? Or is all that just tinkering around the edges without actually making an improvement, and 5 polls is just fine…
  • Odds: With a race that is close like this one, everybody started looking at the “% chance of winning” not just the expected electoral college results. This is understandable. My model provides absolutely nothing along those lines at the moment. The accurate interpretation of my model would have just been “Sorry, can’t tell you who will win, too close to call!” for most of the last 100 days. To do odds right, I would have to do a real simulation of some sort, like many other people do. But many other people already do that, and do it well. What would I add? I could fake a “percentage chance” based on the model I do have. I could just give what percentage of the “bubble” between the two best cases had each candidate winning. In the case of my final data for this election, that would have shown a 76.1% chance of a Clinton win and a 23.9% chance of a Trump win. That would have put me in between the percentages FiveThirtyEight and ElectionBettingOdds were giving. Of course it would not actually be “odds” in the mathematical sense. It was not calculated in a way that should be called odds. But it is a percentage. And people would probably interpret it as odds. It would also be quite volatile. On the Sunday before the election I would actually have had Trump’s “odds” even higher at 34.8%. A couple weeks earlier I would have had Trump at 0%. People seem to really like having a “% to win” number, I do too. But would putting a number like this just be completely misleading?


It would have been nice to get 56/56 again. But none of the election trackers that I follow did, and my final results were actually better than all but one of them. So on the whole, I think 2016 came off about as good as it could have given that everybody shared the same underlying data. From what I understand, even Trump’s internal polling predicted he would lose, and his win was a surprise to his own team.

So I did pretty well, and I had fun. And really, I do it because it is fun for me. This site does not make me money, it costs me money. And time. Lots of time. So it is important that I have fun with it, and I did.

Thank You

But also thank you to all the people out there who have been following me.

This site does not have the traffic of the “big guys” of course, but there were still a bunch of you out there.

Page views for the site (including both proper and where these blog posts live) peaked at 23,097 on November 8th (UTC). Unique visitors peaked on November 9th (UTC) at 11,268. And although a few have dropped off since the election, we peaked at 2,334 likes on the Facebook page, 215 followers of the low-volume summary only @ElectionGraphs twitter account, and 405 followers of the @ElecCollPolls twitter account that tweeted out every single new poll as I added them. There were even six people who donated money to the cause through my tip jar in the time since I added it a number of months ago.

A few of you have also made it over to the current events podcast Curmudgeon’s Corner podcast which I do with my cohost Ivan. If you haven’t, check it out. It is more of an opinionated discussion rather than the kind of straight “here are the facts” kind of analysis here, but we think it is fun and interesting too.

These numbers are big for me, but very small compared to the professionals who do this, or even some of the other amateurs.

None the less, while of course there have been trolls saying my analysis was bought and paid for by Clinton or that the numbers were made up, or whatever, there have also been quite a few people who have written in or left comments to say they really appreciate the site, or who have engaged with me in substantive discussion on the analysis or methods. I really appreciate this positive engagement.

I am so glad that the site was useful and interesting to you in this election season. It makes the time and effort I spent much more rewarding than if I was simply putting this out there and nobody was looking.

And of course thank you to my wife Brandy, daughter Amy, and son Alex for putting up with the many, many hours of my time that this has taken up over the last two years, and especially the last 9 months, that I probably should have been spending with them. I appreciate it so much.

One last time to everybody… Thank you!

There will probably be one last post in December after the electoral college meets to report on the actual official results, including faithless electors if there are any. And maybe a post looking at actual state margins vs the last polling averages in each state sometime before that.

But other than those, Election Graphs will now go dormant for awhile. We’ll see you again for real once we start seeing polls for 2020!

1,436.7 days until polls close on Election day 2020. Stay tuned!