<div dir="ltr">There's been some discussion on the Election Science Forum about different methods for doing PR with 0 to 5 score ballots.<br><br><a href="https://forum.electionscience.org/t/wolf-committee-results/519/90">https://forum.electionscience.org/t/wolf-committee-results/519/90</a><br><div><br></div><div>One of the methods discussed there is called Sequential Monroe Voting.</div><div><br></div><div><a href="https://electowiki.org/wiki/Sequential_Monroe_voting">https://electowiki.org/wiki/Sequential_Monroe_voting</a><br></div><div><br></div><div>The motivation behind this method is a paper by B. Monroe back in the '90s, but the gist of it is that each candidate is measured by their total score within only the top quota of votes, and then one quota of weight is removed from ballots that score the winner at or above the quota threshold rating.<br><br>Parker Friedland's original statement of the method rescales ballots strictly above the threshold rating to zero, and for that portion of the quota-weight still remaining, reweights the at-threshold rating ballots accordingly.<br><br></div><div>While this technique follows the motives of Monroe's paper, I feel that it gives voters an incentive to give lower ratings to popular candidates in their faction.  But reweighting all ballots with a uniform factor (as in ER-Bucklin quota threshold approval PR) takes no account of the strength of support.<br><br>As a compromise, I propose the following:</div><div><br></div><div>Given, for a given candidate,</div><div><br></div><div>S[r] = weighted total of ballots giving candidate a score of r</div><div><br></div><div>TS[r] = maxscore * S[maxscore] + ... + r * S[r], the total score down to rating r</div><div><br></div><div>TA[r] = S[maxscore] + ... + S[r], the total approval from max down to rating r</div><div><br></div><div>R = maximum r at which TA[r] is >= quota</div><div><br></div><div>Then if maxscore * quota <= TS[R], reweight each ballot scoring the seat winner at rate r >= R using the following factor:</div><div><br></div><div>Factor[r] = 1.0 - r * maxscore * quota / TS[R]</div><div><br></div><div>Otherwise, set M to maxscore, Q to quota, and TT to TS[R].</div><div><br></div><div>Factor[1 to Maxscore] initialized to 1.0</div><div><br></div><div>for r = Maxscore to R in descending order,</div><div>    if M * Q > T,</div><div>        Factor[r] = 0.0</div><div>        M = r - 1</div><div>        TT = TT - M * TS[r]</div><div>        Q = Q - TS[r]</div><div>     else:</div><div>         Factor[r] = 1.0 - r * M * Q / TT</div><div><br></div><div>When the quota is a small enough fraction of the seat winner's normalized score, ballots are reweighted in direct proportion to the score at and above R. But if the top quota score is too small, ballots with high rates above R are deweighted completely, until the remaining portion to deweight is small enough for proportional reweighting again.</div><div><br></div><div>Just to clarify, it is important to understand that TS[R] is not the same as Sequential Monroe Voting's top quota score -- the latter is defined as </div><div><br></div><div>TopQuotaScore = TS[R] - R * (TA[R] - quota)</div><div><br>Using this reweighting strategy, I wrote some code to implement Sequential Monroe Voting. For comparison, I combined this method with Score Sorted Margins, using SMV's top quota score as the seeding and marginal metric.</div><div><br></div><div>You can find this code as ssmpr.py in <a href="https://github.com/dodecatheon/approva-sorted-margins/">https://github.com/dodecatheon/approva-sorted-margins/</a></div><div><br></div><div>Either SMV or SSM is Droop proportional when using the Hagenbach-Bischoff quota (Total votes / Num seats - 1), though I think the Hare quota is preferable.</div></div>