Sample files for Meek's method tabulation
Here are three sample files that you can display in your web browser and then copy-paste their contents into the tabulation web page's input area. For each input file, there is also a link to the expected tabulation results, shown with full precision to nine decimal places. You can also download these files to your computer and import them into the tabulation web page by clicking / tapping on the "Read File" button.
- The built-in sample election contest and its expected results. This sample file has what is displayed initially in the input area and is what can be restored by clicking / tapping on the "Show Sample Input" button. It elects 3 out of 6 candidates in 5 rounds from 100 ballots in 7 ballot groups.
- An election contest with 10 candidates and 500 ballots electing 5 winners and its expected results. Each ballot is listed individually.
- An election contest with 30 candidates and 5000 ballots electing 15 winners and its expected results. Each ballot is listed individually. This contest is large enough that when run in the background, the tabulation takes enough time that the progress bar is observable as more than just a quick, sub-second flash.
There is also a vote_by_vote.csv file for a demo ElectionBuddy contest with these results as published by ElectionBuddy. That contest has 20 listed candidates, 3 write-in candidates, and 350 ballots to elect 10 winners.
To independently tabulate results for that election, first download the above vote_by_vote ballot file to your computer. Then from this project's tabulation web page:
- Click / tap on the "Show Sample Input" button to have a known starting point.
- Change the random seed value to "xyz5" from "xyz".
- Change the "nbrSeatsToFill" value to 10 from 3.
- Change the "maxRankingLevels" value to 20 from 6.
- Click / tap on the "Read File" button and select the downloaded file.
- Click / tap the "OK" button to accept the suggested candidate IDs.
The data in the input area should now have this converted data. Click / tap on the "Count Votes" button to produce these results at full precision. Those results rounded to two decimal places also match the published Election Buddy results.
The ballots reflect an electorate that is mostly divided into two factions. The names of the candidates have been conveniently chosen to alphabetically correlate with those two factions. The first faction comprises 40% of the voters. Those voters mostly prefer the eight candidates with names beginning with A-H, so Amari Atkins to Helen Hurst, over any of the other candidates.
The second faction comprises the other 60% of voters. Those voters mostly prefer any of the other candidates over the eight candidates preferred by the first faction. The candidates preferred by the second faction have names that begin with I-T, so Ivan Ishutin to Talia Turner, plus the three write-in candidates whose names begin with W.
When electing 10 candidates, we see that the results do provide proportional representation: the winners included 4 candidates preferred by the first faction and 6 candidates preferred by the second faction.
It should be noted that Briana Brock, a candidate preferred by the first faction, was the last candidate to be defeated, the apparent runner up. It is a common misunderstanding to assign more significance to that status than it deserves.
To use this demo contest to perform a vacancy re-tabulation, let's suppose that Otto Osborn has resigned. To set the parameters for the re-tabulation, copy the list of elected candidate IDs from the elected results to the value for "protected" candidates. Then remove Otto's candidate ID from that list and add it to the value for "excluded" candidates, as a delimiter-first string using a space as the delimiter. The excluded and protected parameters should now look like this:
- ,"excluded": " OttOsb"
- ,"protected": ["AmaAtk", "CarCas", "FraFly", "GunGar", "KaiKer", "MarMen", "NalNol", "OttOsb", "QueQua", "TalTur"]
Now click / tap on the "Count Votes" button, which will produce these vacancy re-tabulation results.
Note that the results Status table shows which candidates were protected or excluded. Note also that Laura Logan was elected to fill the vacancy, not Briana Brock. In this case, electing Briana would have not respected the preferences of the faction that lost representation, and would have been a result that is inconsistent with the principles of fair, proportional representation.