A crude voting simulation

I decided to perform a fairly crude voting simulation to compare different ranked methods.

The simulation was performed as follows: An individual was a point on the unit sphere in N-dimensional Euclidean space (I chose N = 3). The agreement of two individuals is their dot product. A number of candidates (I chose 6) were drawn uniformly at random on this sphere. 500 more individuals were then drawn, again uniformly at random, and vote for candidates in order of how much they agree with them.

My question was this: With what frequency would various voting systems produce the same answer?

Systems I implemented were First Past The Post, Alternative Vote, Random Ballot (Pick a random voter, use their top choice), Random Ranked Pair (pick two random candidates, pick the one the majority of voters preferred), and random Condorcet (pick a random generalized Condorcet winner)

I ran 2000 simulations of this. Here are the agreement stats:

AV FPTP RandomBallot RandomCondorcet RandomRankedPair
AV 100.00% 44.80% 22.50% 41.30% 24.60%
FPTP 44.80% 100.00% 25.50% 29.60% 18.35%
RandomBallot 22.50% 25.50% 100.00% 19.05% 17.05%
RandomCondorcet 41.30% 29.60% 19.05% 100.00% 27.70%
RandomRankedPair 24.60% 18.35% 17.05% 27.70% 100.00%

Here is the same simulation run with the number of dimensions increased to 6:

AV FPTP RandomBallot RandomCondorcet RandomRankedPair
AV 100.00% 43.75% 20.95% 42.10% 24.00%
FPTP 43.75% 100.00% 23.75% 29.60% 19.90%
RandomBallot 20.95% 23.75% 100.00% 19.45% 17.05%
RandomCondorcet 42.10% 29.60% 19.45% 100.00% 25.50%
RandomRankedPair 24.00% 19.90% 17.05% 25.50% 100.00%

And here it is decreased to 2:

AV FPTP RandomBallot RandomCondorcet RandomRankedPair
AV 100.00% 46.80% 25.60% 47.10% 20.90%
FPTP 46.80% 100.00% 29.50% 33.25% 17.55%
RandomBallot 25.60% 29.50% 100.00% 20.45% 16.10%
RandomCondorcet 47.10% 33.25% 20.45% 100.00% 26.00%
RandomRankedPair 20.90% 17.55% 16.10% 26.00% 100.00%

I don’t really have anything interesting to say about these results other than “Huh. Different voting systems sure do produce different results, don’t they?”. It’s perhaps mildly interesting that AV is about as close to random condorcet as it is to FPTP, but I’m not sure that’s really significant. I’m mostly just posting this because I believe in publishing null results.

Here’s the code if you want to have a play with it. Advance warning: A work of finely crafted engineering it ain’t.

Update: One slightly interesting result from this. I modified it to add my condorcet variant on AV into the mix to see how it would do. It agrees with stock AV about 48% of the time and with “random condorcet winner” about 71% of the time. This suggests that most of the time we’ve got a unique condorcet winner here and AV isn’t picking it. To test this I decided to look at the distribution of the number of condorcet winners:

Number of condorcet winners Number of runs
1 1299
2 50
3 79
4 101
5 149
6 322

Which is about right. About 65% of the time there’s a unique Condorcet winner, and Condorcet-AV agrees with a random Condorcet winner some fraction of the rest of the time.

This entry was posted in Uncategorized on by .