So I noticed a discrepancy while reproducing these statistically. Vote-for-1 tends to be too high, and Vote-for-(n-1) tends to be too low:
fptp has same problem Effectiveness,_1000_voters,_100000_iterations.png
(Vote-for-(n-1) is essentially Anti-plurality voting. )
These should be the same, according to him:
It is interesting to observe that the vote-for-k and vote-for-(n-k) voting systems are equally effective.
Plotting just those two, it seems to just be a consequence of Weber calculating for infinite voters vs me simulating finite numbers of voters:
10 voters, 100,000 iterations:
Effectiveness,_10_voters,_100000_iterations.png
100 voters, 100,000 iterations:
Effectiveness,_100_voters,_100000_iterations.png
1,000 voters, 100,000 iterations:
Effectiveness,_1000_voters,_100000_iterations.png
100,000 voters, 100,000 iterations (took 3 hours):
Effectiveness,_100000_voters,_100000_iterations.png
(Standard and Vote-for-1 are the same thing, but implemented differently, so I was plotting both to make sure there wasn't a bug in one.)
I don't really understand why this happens, but good to keep in mind that number of voters does matter in these kinds of simulations.