Ratings Proportional Method (IRNRP)

49 views
Skip to first unread message

Brian Olson

unread,
Dec 30, 2016, 4:57:06 PM12/30/16
to electio...@googlegroups.com
Kevin Bass' work on rethinking STV encouraged me to dig out my old proportional method and dust it off.
Kevin outlines two trial elections that many formulations of STV will produce an unsatisfying outcome for.


My system gets those two tests right, and I think has some other good qualities worth discussing.

I call my system "Instant Runoff Normalized Ratings, Proportional" (IRNRP). If you've been following this discussion forum for enough years, you may have heard me talk about the single-winner variant.

STV/IRV ignore useful information.
Because they only look at the currently-top-ranked choice on each ballot, we get the classic IRV failure mode of not electing a com
promise candidate where there's good 2nd-choice support but less 1st-choice support.

IRNRP looks at the whole ballot. Like most ratings based method, it operates on summing up the ratings for each choice across all voters.

There are probably discontinuities/non-monotonic regions, but they are probably smaller. In Ka Ping Yee style election space diagrams, the single winner IRNR has much smaller discontinuous zones than IRV. I haven't ported my IRNRP implementation to C for the fast simulation framework to generate such a diagram, and those things are messier in multi-winner situation, but it could be on the TODO list.

Also, given the recent talk of sharing programs, I've implemented it in about 100 lines of Python:


Read the source, or my prose version of the algorithm:

    Given a set of votes that are ratings from voters across some
    choices (higher rating better), elect several choices in proportion to
    their support in the voters.

    At any time a single vote is 'normalized' by dividing it by the
    sum of absolute values of its component ratings. The sum of
    absolute values of the ratings of the normalized vote should be
    1.0

    Each competing choice starts off with a 'weight' of 1.0

    Add up the votes, for each vote:
      Multiply each rating by the global weight for that chioice
      Normalize to 1.0 the sum of absolute values of ratings
      Add up these weighted-then-normalized votes

    A choice is considered elected if it has greater than the quota of:
    ((number of active voters) / ((number of seats to elect) + 1))

    If a sufficient number of choices are elected, we're done.

    The weight of each elected choice shall be decreased so that it
    receives less surplus vote but still greater vote than the needed
    quota to win. This may be repeated several times, doing a recount
    as above to integrate the new weights and the re-normalized votes
    which result.

    If adjusting the weights of the winners does not move enough
    surplus vote to elect a full set of winners, whichever choice has
    the least vote shall have its weight set to 0.0 and thus be
    disqualified. Re-count with re-normalized votes accounting for
    this choice having been removed from consideration.

    A voter can become 'inactive' and not counted in the total number
    of voters if all of the non-zero rated choices on their ballot
    have become disqualified.


If you check out the source:

You can run the two tests with commands like this:

python3 python/countvotes.py --html=/tmp/a.html - --enable-repeat  --seats=3<<EOF
*12 a=9&b=8
*7 b=9&a=8
*9 r=9&s=8
*8 s=9&r=8
EOF

python3 python/countvotes.py --html=/tmp/b.html - --enable-repeat  --seats=5<<EOF
*690 a=9&b=8&c=7&d=6&e=5&v=4&w=3&x=2&y=1&z=0.5
*310 v=10&w=9&x=8&y=7&z=6&a=5&b=4&c=3&d=2&e=1
EOF

parker friedland

unread,
Mar 6, 2017, 8:52:15 AM3/6/17
to The Center for Election Science
This method can be improved. To prevent voters from casting strategically week ballots and to prevent strategic voters and to prevent strategic voters from taking advantage of ordinals by grading candidates the minimum amount needed to distinguish two candidates on their ballot, every ratting that is closer to the maximum amount of stars that one can give to a candidate should be counted as 1 approval vote for that candidate, and each ratting that is closer to the minimum amount of stars should not be counted.

This method would be called Instant Runoff Optimized Normalized Rattings Proportional.

parker friedland

unread,
Mar 6, 2017, 9:01:33 AM3/6/17
to The Center for Election Science
This is called Instant Runoff Optimized Normalized Ratings Proportional not because it's faster to calculate the winner, but because it allows voters to still cast strategically optimal ballots without having to be as dishonest.

Brian Olson

unread,
Mar 6, 2017, 10:21:57 AM3/6/17
to electio...@googlegroups.com
The intent of re-normalzing at each step internally is to incentivize honest ballots where the system automatically applies a full force ballot to the available chioces. I don't think that thresholding a vote into an approval vote instead of a normalized score vote would improve the representation for any one voter or for the global utility maximization, but I suppose it might be worth a simulation pass.

I have implementation and simulator here if you're curious:


--
You received this message because you are subscribed to the Google Groups "The Center for Election Science" group.
To unsubscribe from this group and stop receiving emails from it, send an email to electionscience+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages