Re: Preliminary Droop-fit proportionality results
Etjon Basha via Election-Methods <[email protected]> Sun, 31 May 2026 19:33:51 +1000
| Newsgroups | gmane.politics.election-methods |
|---|---|
| Message-ID | <CA+EJN6SmfK_k3fWgL=crRGguYPhSRoAcGZCPGLMLOQW5fWnXyw@mail.gmail.com> |
--===============8472898130164075731== Content-Type: multipart/alternative; boundary="0000000000004d11a3065319c7af" --0000000000004d11a3065319c7af Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thank you for sharing these Kristofer, Always a pleasure to see one's biases reinforced by independent sources, with such a total Warren/Meek STV victory over Schultze. If only Warren had outdone Meek, this would have been perfect. Best regards, Etjon The only thing th On Sun, 31 May 2026, 1:31=E2=80=AFam Kristofer Munsterhjelm via Election-Me= thods, < [email protected]> wrote: > So I implemented a quick version of a spatial Droop proportionality > measure: > > The voters are drawn from a standard normal over a 1D opinion space, and > the candidates are drawn either from the same standard normal or a > uniform distribution (odd iterations use one, even iterations use the > other).[1] Each voter ranks the candidates in distance (and rates them > according to negative distance). > > The "ideal" kth candidate is the k/(s+1)th quantile of the (drawn) voter > distribution; the error is then the square root of the sum of squares > between each ideal kth candidate and the kth candidate actually elected > (in order from leftmost to rightmost). > > So, for instance, if it's a two-candidate election and the voters' > quantiles are -0.43 and +0.43, and method X elects candidates who are at > -0.27 and +0.34 respectively. Then the error for method X in that > election is the Euclidean distance between (-0.43, 0.43) and (-0.27, > 0.34) ~=3D 0.184.[2] > > I then calculated the VSE over this measure with 4096 voters, 10 > candidates, and different numbers of seats. Here are some results with > some comments afterwards. > > Note that a bad result (low VSE) only gives an indication that the > method doesn't select candidates close to the Droop quantiles, but not > *why*. It doesn't distinguish between that happening because the method > has a different notion of proportionality, or because it has no such > notion and is all over the place. > > (I'd like to implement something that determines what that notion of > proportionality is if there is one. But I should read Ryan's post more > thoroughly before I do that.) > > 2 seats: > Name VSE > Log-penalty voting -1.47 > Random ballots 0.29 > Isoelastic (r=3D1) 0.32 > Isoelastic (r=3D10) 0.37 > Schulze STV 0.45 > SNTV 0.46 > QPQ (0.01) 0.47 > Psi voting (delta=3D0) 0.52 > Psi voting (Sainte-Lagu=C3=AB) 0.55 > Psi voting (d'Hondt) 0.56 > QPQ (Sainte-Lagu=C3=AB) 0.59 > Isoelastic (r=3D2) 0.64 > (Bloc) Normalized 0-20 Range 0.65 > (Bloc) Borda 0.68 > PSC-CLE 0.72 > QPQ (d'Hondt) 0.79 > Meek/Warren STV 0.80 > STV 0.80 > STV-ME(Schulze) 0.80 > Harmonic voting (delta=3D0.02) 0.80 > Harmonic voting (d'Hondt) 0.87 > Harmonic voting (Sainte-Lagu=C3=AB) 0.93 > > 5 seats: > Name VSE > Log-penalty voting -1.36 > Isoelastic (r=3D10) -0.30 > Schulze STV 0.21 > QPQ (0.01) 0.32 > Isoelastic (r=3D1) 0.36 > Psi voting (delta=3D0) 0.39 > Random ballots 0.38 > Psi voting (Sainte-Lagu=C3=AB) 0.40 > Psi voting (d'Hondt) 0.41 > (Bloc) Normalized 0-20 Range 0.44 > Isoelastic (r=3D2) 0.44 > (Bloc) Borda 0.49 > Harmonic voting (delta=3D0.02) 0.59 > SNTV 0.67 > Harmonic voting (d'Hondt) 0.76 > PSC-CLE 0.81 > QPQ (Sainte-Lagu=C3=AB) 0.83 > Harmonic voting (Sainte-Lagu=C3=AB) 0.89 > STV 0.94 > QPQ (d'Hondt) 0.94 > Meek/Warren STV 0.94 > STV-ME(Schulze) 0.96 > > 9 seats: > Name VSE > Log-penalty voting -0.70 > Schulze STV 0.00 > Isoelastic (r=3D10) 0.10 > Isoelastic (r=3D1) 0.19 > Random ballots 0.41 > SNTV 0.57 > Harmonic voting (delta=3D0.02) 0.57 > QPQ (0.01) 0.57 > Isoelastic (r=3D2) 0.71 > (Bloc) Normalized 0-20 Range 0.71 > (Bloc) Borda 0.81 > Psi voting (d'Hondt) 0.82 > Psi voting (Sainte-Lagu=C3=AB) 0.82 > Psi voting (delta=3D0) 0.83 > Harmonic voting (d'Hondt) 0.90 > QPQ (Sainte-Lagu=C3=AB) 0.91 > PSC-CLE 0.92 > Harmonic voting (Sainte-Lagu=C3=AB) 0.95 > STV 0.98 > STV-ME(Schulze) 0.98 > QPQ (d'Hondt) 0.998 > Meek/Warren STV 0.998 > > ("Random ballots" is the method where one repeatedly picks a random > voter and elects their favorite continuing candidate.) > > The most surprising part, to me, is the bad fit of Schulze STV and how > little IRV's problems seem to generalize to STV, at least by this > measure. It's also a bit surprising that for most tunable methods, > d'Hondt does better than Sainte-Lagu=C3=AB, but for Harmonic the opposite= is > true. > > Harmonic seems to do better than Psi, just as it did in the my earlier > simulations. > > In retrospect, it's not that surprising that Harmonic is beaten by > ranked methods because it doesn't optimize the same thing (just like > single-winner Range has a different objective than majority rule). > > If I were to guess, I'd imagine that there is some kind of property > that, if passed, leads to good performance here; and STV passes its due > to the way it works, but Schulze STV doesn't because it was designed > primarily to be strategy-resistant. But that's just a guess. > > -km > > [1] My point with doing this was to penalize methods that just make > assumptions about the voter distribution from the candidate distribution > or vice versa. > > [2] Ideally, the error measure should be designed to generalize to > something like the Sainte-Lagu=C3=AB index in the party list case, but I = just > chose something easy and broadly reasonable here. > ---- > Election-Methods mailing list - see https://electorama.com/em for list > info > --0000000000004d11a3065319c7af Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"auto">Thank you for sharing these Kristofer,<div dir=3D"auto"><= br></div><div dir=3D"auto">Always a pleasure to see one's biases reinfo= rced by independent sources, with such a total Warren/Meek STV victory over= Schultze. If only Warren had outdone Meek, this would have been perfect.</= div><div dir=3D"auto"><br></div><div dir=3D"auto">Best regards,</div><div d= ir=3D"auto"><br></div><div dir=3D"auto">Etjon</div><div dir=3D"auto"><br></= div><div dir=3D"auto">The only thing th</div></div><br><div class=3D"gmail_= quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sun, = 31 May 2026, 1:31=E2=80=AFam Kristofer Munsterhjelm via Election-Methods, &= lt;<a href=3D"mailto:[email protected]">election-method= [email protected]</a>> wrote:<br></div><blockquote class=3D"gmail_q= uote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1e= x">So I implemented a quick version of a spatial Droop proportionality meas= ure:<br> <br> The voters are drawn from a standard normal over a 1D opinion space, and <b= r> the candidates are drawn either from the same standard normal or a <br> uniform distribution (odd iterations use one, even iterations use the <br> other).[1] Each voter ranks the candidates in distance (and rates them <br> according to negative distance).<br> <br> The "ideal" kth candidate is the k/(s+1)th quantile of the (drawn= ) voter <br> distribution; the error is then the square root of the sum of squares <br> between each ideal kth candidate and the kth candidate actually elected <br= > (in order from leftmost to rightmost).<br> <br> So, for instance, if it's a two-candidate election and the voters' = <br> quantiles are -0.43 and +0.43, and method X elects candidates who are at <b= r> -0.27 and +0.34 respectively. Then the error for method X in that <br> election is the Euclidean distance between (-0.43, 0.43) and (-0.27, <br> 0.34) ~=3D 0.184.[2]<br> <br> I then calculated the VSE over this measure with 4096 voters, 10 <br> candidates, and different numbers of seats. Here are some results with <br> some comments afterwards.<br> <br> Note that a bad result (low VSE) only gives an indication that the <br> method doesn't select candidates close to the Droop quantiles, but not = <br> *why*. It doesn't distinguish between that happening because the method= <br> has a different notion of proportionality, or because it has no such <br> notion and is all over the place.<br> <br> (I'd like to implement something that determines what that notion of <b= r> proportionality is if there is one. But I should read Ryan's post more = <br> thoroughly before I do that.)<br> <br> 2 seats:<br> Name=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0VSE<br> Log-penalty voting=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -1.47<br= > Random ballots=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A00.29<br> Isoelastic (r=3D1)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A00.32<br> Isoelastic (r=3D10)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = 0.37<br> Schulze STV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 0.45<br> SNTV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00.46<br> QPQ (0.01)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A00.47<br> Psi voting (delta=3D0)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00.52<= br> Psi voting (Sainte-Lagu=C3=AB)=C2=A0 =C2=A0 =C2=A0 =C2=A0 0.55<br> Psi voting (d'Hondt)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00.5= 6<br> QPQ (Sainte-Lagu=C3=AB)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A00.59<br> Isoelastic (r=3D2)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A00.64<br> (Bloc) Normalized 0-20 Range=C2=A0 =C2=A0 =C2=A00.65<br> (Bloc) Borda=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A00.68<br> PSC-CLE=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 0.72<br> QPQ (d'Hondt)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 0.79<br> Meek/Warren STV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 0.80<br> STV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0.80<br> STV-ME(Schulze)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 0.80<br> Harmonic voting (delta=3D0.02)=C2=A0 =C2=A0 =C2=A00.80<br> Harmonic voting (d'Hondt)=C2=A0 =C2=A0 =C2=A0 =C2=A0 0.87<br> Harmonic voting (Sainte-Lagu=C3=AB)=C2=A0 =C2=A00.93<br> <br> 5 seats:<br> Name=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0VSE<br> Log-penalty voting=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -1.36<br= > Isoelastic (r=3D10)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0-= 0.30<br> Schulze STV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 0.21<br> QPQ (0.01)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A00.32<br> Isoelastic (r=3D1)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A00.36<br> Psi voting (delta=3D0)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00.39<= br> Random ballots=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A00.38<br> Psi voting (Sainte-Lagu=C3=AB)=C2=A0 =C2=A0 =C2=A0 =C2=A0 0.40<br> Psi voting (d'Hondt)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00.4= 1<br> (Bloc) Normalized 0-20 Range=C2=A0 =C2=A0 =C2=A00.44<br> Isoelastic (r=3D2)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A00.44<br> (Bloc) Borda=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A00.49<br> Harmonic voting (delta=3D0.02)=C2=A0 =C2=A0 =C2=A00.59<br> SNTV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00.67<br> Harmonic voting (d'Hondt)=C2=A0 =C2=A0 =C2=A0 =C2=A0 0.76<br> PSC-CLE=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 0.81<br> QPQ (Sainte-Lagu=C3=AB)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A00.83<br> Harmonic voting (Sainte-Lagu=C3=AB)=C2=A0 =C2=A00.89<br> STV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0.94<br> QPQ (d'Hondt)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 0.94<br> Meek/Warren STV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 0.94<br> STV-ME(Schulze)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 0.96<br> <br> 9 seats:<br> Name=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0VSE<br> Log-penalty voting=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -0.70<br= > Schulze STV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 0.00<br> Isoelastic (r=3D10)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = 0.10<br> Isoelastic (r=3D1)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A00.19<br> Random ballots=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A00.41<br> SNTV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00.57<br> Harmonic voting (delta=3D0.02)=C2=A0 =C2=A0 =C2=A00.57<br> QPQ (0.01)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A00.57<br> Isoelastic (r=3D2)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A00.71<br> (Bloc) Normalized 0-20 Range=C2=A0 =C2=A0 =C2=A00.71<br> (Bloc) Borda=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A00.81<br> Psi voting (d'Hondt)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00.8= 2<br> Psi voting (Sainte-Lagu=C3=AB)=C2=A0 =C2=A0 =C2=A0 =C2=A0 0.82<br> Psi voting (delta=3D0)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00.83<= br> Harmonic voting (d'Hondt)=C2=A0 =C2=A0 =C2=A0 =C2=A0 0.90<br> QPQ (Sainte-Lagu=C3=AB)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A00.91<br> PSC-CLE=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 0.92<br> Harmonic voting (Sainte-Lagu=C3=AB)=C2=A0 =C2=A00.95<br> STV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0.98<br> STV-ME(Schulze)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 0.98<br> QPQ (d'Hondt)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 0.998<br> Meek/Warren STV=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 0.998<br> <br> ("Random ballots" is the method where one repeatedly picks a rand= om <br> voter and elects their favorite continuing candidate.)<br> <br> The most surprising part, to me, is the bad fit of Schulze STV and how <br> little IRV's problems seem to generalize to STV, at least by this <br> measure. It's also a bit surprising that for most tunable methods, <br> d'Hondt does better than Sainte-Lagu=C3=AB, but for Harmonic the opposi= te is <br> true.<br> <br> Harmonic seems to do better than Psi, just as it did in the my earlier <br> simulations.<br> <br> In retrospect, it's not that surprising that Harmonic is beaten by <br> ranked methods because it doesn't optimize the same thing (just like <b= r> single-winner Range has a different objective than majority rule).<br> <br> If I were to guess, I'd imagine that there is some kind of property <br= > that, if passed, leads to good performance here; and STV passes its due <br= > to the way it works, but Schulze STV doesn't because it was designed <b= r> primarily to be strategy-resistant. But that's just a guess.<br> <br> -km<br> <br> [1] My point with doing this was to penalize methods that just make <br> assumptions about the voter distribution from the candidate distribution <b= r> or vice versa.<br> <br> [2] Ideally, the error measure should be designed to generalize to <br> something like the Sainte-Lagu=C3=AB index in the party list case, but I ju= st <br> chose something easy and broadly reasonable here.<br> ----<br> Election-Methods mailing list - see <a href=3D"https://electorama.com/em" r= el=3D"noreferrer noreferrer" target=3D"_blank">https://electorama.com/em</a= > for list info<br> </blockquote></div> --0000000000004d11a3065319c7af-- --===============8472898130164075731== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ---- Election-Methods mailing list - see https://electorama.com/em for list info --===============8472898130164075731==--