A tabulator for comparing ranked methods on real ballot data

Shel Kaphan via Election-Methods <[email protected]>
Newsgroups gmane.politics.election-methods
Message-ID <[email protected]>
I've built a free site for tabulating and analyzing ranked-ballot
elections, at https://rcv-lab.org <https://rcv-lab.org/>. It's mine, so treat this as a disclosure
rather than a recommendation. I'm posting here because this list will
find the edge cases faster than anyone, and I'd rather hear about them.

Two things in it are likely to interest this list specifically.

1. (OPTIONALLY): EQUAL RANKINGS, OR: SHARED, WEIGHTED,
RANKED APPROVAL

The cleanest statement of what a ballot is here is a sequence of
approval sets in priority order. The ballot's entire weight goes to the
highest-priority set that still has surviving candidates, divided
equally among the members of that set. When every candidate in a set has
been eliminated, the whole weight moves to the next set down. Candidates
in a lower set receive nothing while any candidate in a higher set is
still standing.

The invariant that matters: at every stage the ballot contributes
exactly one vote, held entirely within a single tier. That is the
answer to the usual objection to equal rankings — this is the
fractional variant, not the whole-vote variant in which a ballot
ranking three candidates equally contributes three votes to a round.

With a single rank the system reduces to weighted approval: one vote
shared among the approved candidates, which is the same tally as
equal-and-even cumulative voting. That case is a first-class method in
the app, listed as "Approval (split vote)". Conventional approval is
implemented on top of it, by scaling each ballot's weight back up by
its approval count — so the shared-vote form is the engine's native
primitive and unweighted approval is the special case that needs extra
work.

This is not Bucklin. In Bucklin a ballot's lower ranks are added while
its higher-ranked candidates are still in the running, so one ballot
can support several candidates at once. Here the weight only ever
occupies one tier at a time. The same rule carries into STV surplus
transfers.

The voting interfaces let voters actually do this, which as far as I
know is unusual — most implementations accept equal rankings only as a
CVR-parsing rule.

2. PAIRWISE ANALYSIS ON EVERY TABULATION

Alongside the count, each election reports a pairwise matrix and the
iterated Smith sets — the Smith set, then the Smith set of the
remainder, and so on — as an ordered partition of the candidates.
Semantics: co-ranked candidates are mutually indifferent; a ballot's
ranked candidates are preferred to every candidate it leaves unranked;
unranked-vs-unranked contributes nothing. Exact pairwise ties merge
tiers so the ordering stays total. Every pairwise result also reports
how many ballots expressed no preference on that pair, which makes
truncation visible rather than assumed.

No completion rule is implemented. When the top tier is a cycle the
site names the members and stops. I'd rather report a cycle than pick
among completion rules that disagree precisely where it matters. I
expect that to be the most arguable decision here, and I'm interested
in the argument.

Otherwise: IRV, STV under Meek or WIGM, Droop or Hare quotas, several
termination and tie-break modes, and single-round methods (plurality,
approval, cumulative) for comparison. Two rule sets can be run against
the same ballots side by side. Ballot data comes in as Google Forms CSV
exports, ES&S spreadsheets, generic CSV, BLT, or NIST CDF. RCTab
interoperation runs both ways: config files are read and written, so a
rule set moves between the two systems intact, with a compatibility
check that flags rules RCTab cannot express — equal ranking among them.
RCTab summary output (the detailed report) is likewise both read and
written, so a count done elsewhere can be visualized here and a count
done here can be taken away. Results can also be cross-checked against a
copy of RCTab running as a service, and cast vote records are
downloadable so anyone can re-run a count independently. The sample
library has real elections (Maine 2018, Portland ME 2015, Minneapolis
Park Board) preloaded.

What I'd most value is being told where the tabulator is wrong —
transfer arithmetic, quota handling, exhaustion accounting, or the
equal-ranking semantics above.

----
Election-Methods mailing list -- [email protected] - see https://electorama.com/em for list info
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.