The Fraud Of Dr. Shiva Ayyadurai: Oakland County, Michigan

Election Fraud in Michigan? Nope, just being misleading with data.

Naim Kabir
4 min readNov 15, 2020

A few days ago, Dr. Shiva Ayyadurai posted a video that claimed to prove election fraud in Michigan. He is wrong, and I’ll show you how using data from Oakland County, Michigan. My code and data sources are public and replicable — and everything I write is open for comment and discussion.

Previously, I posted a detailed takedown of how his analysis was a mathematical parlor trick — which he uses to generate a “suspicious” result that’s supposed to prove that Biden stole 60,000+ votes from Trump.

According to Ayyadurai, this downward sloping line is proof that Biden stole votes from Trump. He is incorrect.

But many people aren’t convinced by theory or abstraction, so I figured the best proof would be to play that parlor trick myself: this time “proving” that Trump stole votes from Biden. To be clear, this isn’t a proof of anything. It’s a trick.

To demonstrate this, I will use election data from Oakland County, Michigan.

Recap of Ayyadurai’s Thesis

Before we do any work, let’s recap what Ayyadurai is doing.

The dataset Ayyadurai works with contains:

  • Precinct-level % of Republican voters among straight-ticket voters.
  • Precinct-level % of Trump votes among split-ticket voters. These are what he calls “Individual Candidate Voters”, people who did not select a party’s “straight-ticket” option on their ballot.

The main quantity Ayyadurai is concerned with is: the % of Trump votes among split-ticket voters MINUS the % of Republicans among straight-ticket votes in a precinct.

He finds it very suspicious that the quantity that he’s plotting has a negative slope, and sees that as evidence that there is foul play. He accuses Michigan of using the Dominion voting machine’s weighted race feature to do this, creating a linear pattern which he notes as suspicious and telling of algorithmic tampering.

Ayyadurai’s “smoking gun”. It’s… not.

What I’ll show you is that you’d get that same negative slope if you flip the Party in question and instead use:

  • Precinct-level % of Democrat voters among straight-ticket voters.
  • Precinct-level % of Biden votes among split-ticket voters.

Getting Data

To grab the data, I visited the Oakland County site and went to the unofficial election results for November, which routed me to this data source. Here I downloaded their XML data and got to work formatting it into something workable.

Great, now we can obtain those quantities we care about:

  • Precinct-level % of Democrat voters among straight-ticket voters.
  • Precinct-level % of Biden votes among split-ticket voters.

An important note is: to isolate split-ticket vote counts towards Presidential candidates, you have to subtract the straight-ticket votes towards them. This isn’t perfect since straight-ticket voters can “defect” — but Ayyadurai assumes that straight-ticket voters all vote for their Presidential candidate in his video, so I’ll do the same.

The Parlor Trick

Let’s now plot the quantities Ayyadurai does. On the Y-axis is a difference: the % split-ticket votes for Biden MINUS the % straight-ticket Democrat votes. On the X-axis: just the % straight-ticket Democrat votes.

A negative slope — what do you know. Does that mean Trump was stealing votes from Biden?

Of course not. It just means Ayyadurai’s a hack.

The Parlor Trick, In Reverse

Just so you can see my code is consistent with what Ayyadurai’s doing, here I plot the same quantities, in favor of Trump. So that’d be exactly what he prescribes here:

I do that below:

Also a negative slope.

By design. For details on how this result is pretty much inevitable regardless of your dataset, dig into my previous work.

TL;DR: Ayyadurai says we should expect a flat line in the plots above, and there is only one case that will lead to a flat-line. It would happen only if the slope of the correlation between % of split-ticket votes for Trump and % of straight-ticket Republican votes is exactly 1. We have the data at hand, so I can show you that the true slope is actually more like 0.6.

Since the slope of that trend-line isn’t ≥1, we’d always expect a negative slope in Ayyadurai’s plots. If it were > 1, then we’d expect a positive slope in Ayyadurai’s plots — which is still not evidence of fraud. It’s just… how lines work.

Don’t let this dude fool you — he thinks we’re all rubes to be used for his own personal gain. Buck him off.



Naim Kabir

Engineer. Focused on experimentation, causal inference, and good software design.