Fraud Patterns in Absentee Ballots? What The Data Really Says

Trump supporters have presented numerous pieces of evidence that allegedly show how the Democrats rigged the elections. Debunking them isn’t always straightforward.

The sorry state that the GOP has fallen into is nowhere more evident than in their current attempt to prove that the recent election, which the incumbent president Donald Trump lost to Joe Biden, has been manipulated by sinister forces to secure the desired outcome. Many of the claims they have made along the way are mutually exclusive and/or easily refuted (see here, here, here, here and here, for but a small sample of such refutations). A large share of them feeds on the narrative of a ‘deep state’ conspiracy theory, according to which a hybrid association of top public officials and industry players have colluded to suppress the voice and the will of the people. Against this backdrop, it is even harder to take serious the already extraordinary claim that the main election in one of the world’s most stable (and arguably most important) democracies, under heavy surveillance from all kinds of stakeholders, has been decisively manipulated. In fact, I wouldn’t ordinarily investigate such claims under similar circumstances, given how extremely unlikely their truth is a priori.

The general case against election fraud is straightforward:

Mass voter fraud should be relatively easy to detect, even if it might be difficult to prove. Since we elect presidents through the electoral college, political operatives trying to nefariously produce a victory would focus on states critical to an electoral college majority. Thus, if fraud were behind President-elect Joe Biden’s win, we should expect to see significantly higher turnout increases in key states when compared to the nation as a whole. Furthermore, we should expect to see higher turnout increases within those states in Democratic areas than in Republican areas, since those regions are places where Democrats are more likely to be able to hide any stolen votes. Finally, we should expect to see significantly larger shifts in voter margins toward the Democrats from other, previous elections as the fraud alters the area’s normal voting patterns.

None of this is the case, and a few fabricated or misleading videos shouldn’t change the conclusion. Even the somewhat more sophisticated attempts (e.g. the claim that Biden’s distribution of votes violates Benford’s Law, and thus hints at election fraud) weren’t so hard to refute. There was, however, one analysis, sent to me by a friend, that caught me a bit off guard, and I admit it took me a few days of thinking, searching and digging into the data myself to understand what was going on here. Read for yourself:

The basic claim is something like the following: When looking at the share of Democrats-to-Republican votes per analyzed batch (this is important!), we see a lot of messy data points at first (in-person voting, with a wild mix of demographies) that stabilizes over time as volunteers turn towards counting the absentee ballots. Since those mailed-in ballots are reasonably shuffled, we should expect to see them oscillating around a fixed value. However, some contested states (e.g. Wisconsin, Pennsylvania) show a clear trend towards a higher share of Democrat votes over time. From which the author concludes that political operatives, upon realizing they might lose the state, gradually injected fake additional Democrat votes into these ballot batches.

Example for alleged fraudulent patterns in votes data from Pennsylvania.
Expected pattern (left) and pattern hinting at manipulated ballots (right), according to the author.

Plausibility checks

Does this sound like a reasonable inference? I hope you agree with me that it doesn’t, but try looking through the thread yourself and see if you can spot what goes wrong. The interesting thing for me was that, while I was certain that something was fishy about this analysis (a bit more on the meta level later), I couldn’t really point out the one thing that would bring the whole edifice down. Sure, there were a lot of unfounded (or at least unjustified) assumptions, such as

  • the initial data points represent in-person voting, while subsequent ones stand for absentee ballots (How do we know? Is this the same for every state?)
  • that absentee ballots should be distributed uniformly after shuffling (they aren’t)
  • that Republican voters tend to be further away from polling centers (so that we expect a drift in favor of them, instead towards the Democrats)
  • delivering ballots is the same as accepting new ballots (no!),

that are central to the analysis. But even though support for these assumptions was not provided, they didn’t sound completely unreasonable (Democrats are notoriously more popular in urban areas, for example). Moreover, questioning assumptions is a common technique in all of social science, so stopping there felt a little unsatisfactory.

Instead, I decided to accept them for the moment and see what other anomalies I could spot. Before working with the data directly, however, I felt that I couldn’t really get to the core of the matter. The fact that only the presidential race — and not the House and Senate races, in which the Republicans did better than previously — came under such intense scrutiny by proponents of the election fraud hypothesis is a telltale sign. The selection of states for which the graphs were displayed made we wonder if some states that didn’t fit the narrative as neatly as the others were left out deliberately; the same goes for the somewhat arbitrary cutoffs for the timestamps — why not show the whole x-axis?

The graph from Pennsylvania I display above is almost to neat to be credible: Wouldn’t we expect to see at least a little bit of oscillation around the mean ratio? It seems almost too stable and reminded me of the frequent confusion that exists with respect to random data:

Left: True random distribution, which includes cluster. Right: Structured distribution

If the vote-in ballots are shuffled, we should see some variation, akin to the picture on the left. Instead, we get an almost perfect line plus some extreme outliers (that the author doesn’t bother to explain). And while we’re at it: Is it obvious why the Democrat’s relative share would consistently rise with every new batch? None of this seems to bother him (or her?); you can admire his chutzpa as he boldly proclaims: “This pattern proves fraud and is a verifiable timestamp of when each fraudulent action occurred.”

A first look at the data

You might understand my frustration with this — it’s definitely weird, but you cannot quite point out exactly what where things go wrong. It was this frustration that made me download the data myself and see what was happening. A first idea was to look at the shares of each party (Republican, Democrat and third parties, which I grouped together for obvious reasons), instead of just the D/R ratio. The ratio, after all, cannot tell me if it rose because Democrats got more votes, or Republicans less, or both.

I’ve uploaded everything that I created in the process, including a Jupyter notebook that should allow anyone familiar with Python to play around with the graphs themselves and check results for all the states I won’t show here. There’s ample documentation, so it shouldn’t be too hard to follow my reasoning, although there’s certainly room for code improvement.

The data is based on an API that scrapes the New York Times’ election coverage. It’s worth mentioning that the script provided by the author of this theory really only fills a few columns in a .csv file; no explanation is given how the graphs were generated. Which makes it a lot harder to reproduce them! Worse yet, even generation method is faulty, always putting the third party share to exactly zero. You’ll see in my repo that I adapted the script to fix this problem.

First thing we notice is that the file thus generated doesn’t actually give us the vote shares per batch, but only the overall share. So let’s check this first, for the case of Pennsylvania that we already saw above:

Pennsylvania cumulative votes

The same thing, but only for the D/R ratio (both graphs use the same timeline):

Noisy at first, the shares eventually stabilize, just as you would expect it for a cumulative graph. You can also see that there are still data points coming on November 13, which does make you wonder why many of the graphs he provides us with display only a day or two. We can zoom in a bit to have the same period for the time axis, but it won’t change much: The picture looks suspiciously similar to the one shown above, give or take a few outliers. My first thought was that whoever plotted this must have been hopelessly confused, mistaking the cumulative vote share for the share per batch — after all, only the former was generated by his script!

However, trying to confirm this for some other states made it clear that this wasn’t what was going on; I couldn’t reproduce too many of the outliers. Another hypothesis I had — maybe the third party share could help explain some of the patterns? — had to be thrown out as well, because their share of votes remains remarkably stable in state after state. Fortunately, it is in principle possible to calculate the share per batch if we know the size of the batch (which we can easily get from the data) and the share of all votes at each timestamp — all this is described in the Jupyter notebook. I say in principle because, as we’ll see in a few instants, this is exactly where things went wrong, and so spectacularly wrong it’s hard to suspect anything but malice behind it.

How the Democrats won Wisconsin

You’ve maybe seen a similar graph to this one already; it has become a potent meme on certain corners of the internet:

Wisconsin presidential election, cumulative votes per party

See this nefarious jump, when all of a sudden the Democrats overtake the Republicans, and hold this lead until the end? According to the fraud narrative, this is when the illegal ballots were added to the count, and we can prove this because the D/R ratio also jumps up at the same time and then stays on this plateau:

Here’s my recreation of this graph, as above with the share per party, rather than just the ratio, but the story looks similar:

Wisconsin batch shares.

Now, it is clear that it’s impossible to explain this mysterious uptick just from the data — there definitely was a huge batch that contained a lot of Democrat votes and helped them take the lead. What we can say, however, is that the explanation given by the author (the D/R ratio for all following batches being systematically shifted towards the Democrats) is almost certainly wrong.

A first hint is the number of votes per batch (displayed in the second graph) for the segments when the shares are relatively stable and seem even to form a trendline. Almost without exception, this happens when the number of votes is low — why should that be? Wouldn’t we rather expect the exact opposite — batches with more votes would be closer to a ‘balanced’ distribution, whereas smaller batches would show significant fluctuations. Think of it this way: If you flip a coin 10 times, you should not be too surprised if head shows up 8 time. But flip the same coin 1000 times and get 80% heads?

Pennsylvania demonstrates this pattern even more vividly:

Same as above, but for Pennsylvania.

And what about Ohio? Here we see the same suspicious shift of the D/R ratio — only that this time, it’s in favor of the Republicans! Did they also cheat? [I know the author has this explanation with the rural vote arriving later, but then we should observe similar things in other (red) states as well, which we don’t. Also, as I’ll show below, Democrats won the ‘absentee vote’ in Ohio by a large margin, so how can mail-in votes explain this pattern?]

Ohio batch shares.

Rounding errors

One problem with the API is it seems to contain some errors in the data. For example, the total number of votes per party should never go down, unless there was a mistake that was later corrected — but these erroneous time stamps aren’t removed from the API, so we’re left to guess what to do with them. This means that some batches will actually contain a negative number of votes. Worse yet, some timestamps are so screwed up that the share of the vote per batch would sometimes exceed 100%, sometimes being 10 times as high as that. Obviously, that doesn’t make any sense, and my (arguably suboptimal) choice was to simply restrict the y axis to the ‘allowed’ values between 0 and 1.

Example for faulty data: What’s happening in Virginia?

But that’s not the worst thing, as outliers are few. What really takes the cake is the way that batch shares are calculated. As I said above, it’s in principle straightforward, but, as this thread helped me to see, you need decently precise estimates of the share of the total vote to make the inference. Alas, the NYT API only gives us the first (!) digit — say, 30.4% — when we’re talking about several million votes cast! Now, if a given batch is rather small compared to the votes already counted, it might mean — and often does — that the global share won’t noticeably change. And since we only get information about the global share directly, there’s no way for us to infer how the batch is split.

To make things a little more concrete, let’s say we have only two candidates, and a million votes are already counted, exactly half of which go to each candidate. Now a new batch arrives with 100 votes; however they might be distributed, the updated share for each candidate will still be 50.0% because of rounding. What our formula does, however — and what the author most definitely did as well — is just to assume that the vote for this batch was split exactly according to the cumulative share. Thus, every time we have a new timestamp with an unchanged global share of the votes, we’ll add a new batch data point with exactly this split. Scroll up again and compare the trendlines from the cumulative share with those from the batch share (which supposedly point at fraud) for Pennsylvania — notice how similar they are?

It becomes even more obvious once you color the timestamps where the global vote share didn’t change differently from the rest:

Once you take this into account, everything starts making a lot more sense, and the whole theory of mail-in fraud, so confidently espoused by the anonymous author, collapses. So confident was he in his conclusions that he didn’t even bother doing some sanity checks, such as: Was there indeed a significantly higher number of mail-in votes for the Democrats in critical states? I did not compare it to the last election, but even just looking at this election, there are some things that are very hard to square with the mail-in fraud thesis: For example, in Ohio, as explained above, Democrats lost the state but carried the absentee vote, just like in Florida. Hawaii, by contrast, shows the opposite pattern.

But such things do not bother people who already decided months before the election that it would definitely be rigged if their candidate loses.

Postscript

You may very well wonder why I bothered to write all of this up. After all, the error — if indeed an error it was — was quite elementary, and there were many, many red flags that should have warned me to waste my time on the topic. Starting with the fact that all of this appeared on Twitter, from an anonymous author, crediting yet another anonymous data scientist (although I now understand why this person didn’t want to see their name attached to such a shabby analysis), the tweets went from unfounded assumptions to sweeping generalizations and concluded — as if to let everyone know that you can’t take any of this seriously — with the infamous Epstein hashtag. Surely, you will say, if there was anything to this theory, the Republican Party could do better than promoting it this way? And you’d be right — I knew I was going down a rabbit hole.

Part of the reason why I got invested in this is an unhealthy sense of curiosity; I couldn’t figure out what was wrong with it and wanted to find out. Another part are sunken cost — I’ve already wasted a lot of time on it and still didn’t have a convincing answer. But there’s another aspect: These tweets were shared far and wide, and, lacking a definite refutation, will continue to linger in people’s mind and feed the narrative of a rigged election. I have little hopes that the author will — should he come across this — admit he was wrong and apologize. He’ll probably just throw a host of similar but unrelated claims at me, which I neither have the time nor the motivation to debunk. And thus, the theory is believed to be ‘confirmed’— and the sheer magnitude of Republican voters willing to buy into it is shocking.

One last point: There is similarity between people who promote the narrative of the rigged election and those who, say, claim that climate change is total bogus. Both are much better informed about the subject than the average person, and many of them argue their case in very sophisticated ways. But what I learned here, despite the seemingly ‘scientific’ approach (graphs and formula and so on), they ignore or violate many of science’s core integrity principles. It’s not just that they fail to publish them in respectable journals , but that they make it deliberately hard to follow their reasoning: Assumptions aren’t clearly marked as such, the boundary between facts and opinion is blurred, sources are often not provided, potential caveats and contradicting evidence aren’t presented and so forth. This is particularly inexcusable in the case we just analyzed — what prevented them from sharing their code and explaining exactly how the graphs were generated, so that other can easily replicate them? The data is publicly available and so are the tools to manipulate it. Unless this minimal standard is met, they shouldn’t ask to be taken seriously.

Le bonheur et l'absurde sont deux fils de la même terre.