[EM] STV is nonmontonic 24% of vote negated
Craig Carey
research at ijs.co.nz
Wed Oct 18 14:04:33 PDT 2000
The Alternative Vote will reverse the intent of 24.98% of voters'
votes. It negates their intent.
An instance making this practical: a mayor or politician campaigns for
themselves. That person's support rises by 24.98% of the total vote.
The Alternative Vote will make that gain, cause a loss.
[1] [2]
+----------------------+
| AB 14992 7498 | ab
| BC 7503 7503 | bc
| CA 7505 14999 | ca
+----------------------+
Alternate Vote, STV: C B
IFPP: A C
FPTP: A C
(ab+bc): 15001
(bc+ca): 15008
Total Votes: 30000 30000
1/3 Quota: 10000 10000
24.98% of the votes held in ballot papers (AB) are
remarked as (CA), causing C to change from a winner to a
loser. I.e. this alteration occurred:
(7494:AB{C+)-(7494:CA{B+)
What happened to B seems doubtful but it is allowed by my P1 rule.
What happened to C is not OK under my P1.
Both FPTP and the IFFP method are monotonic so no example of this
sort can be found for them.
I haven't finished checking out the 3 candidate 1 winner STV
simplex.
This example shows that the Alternative Vote and STV elects the wrong
winners. The methods seem to be unfair.
---
This particular example locally maximises the percentage of votes that
were shifted, subject to the papers leaving one paper and going to only
one other. Another thing that could be done, is to attempt to make
maximally negative the weight that seems to be being used by the method.
Some methods, like Borda [and STV with its transfer values] actually
have weights so we can know that they are positive.
Does anybody want to post in the (negative) weight that is being used in
the example above?.
Many people knew that STV was unfair all along. Certainly it is not
made fair by publishing pamphlets and websites saying it is.
Below is REDLOG code I wrote to find this example on 19 Oct 2000.
######################################################################
This algorithm has a fairly good speed when it is finding a problem
but it can be very slow when rlqe or rlqea can't find a monotonicity
violation. I provide this for the CVD.
%---------------------------------------------------------------------
% 18..19 Oct-2000 %%%%%
load_package rl; % REDLOG and REDUCE 3.6
rlset ofsf;
procedure faces(q); begin
% faces (a<=b and a<=c and (2*a<=b+c)) = {2*a - b - c,a - b,a - c}
% should not return faces for <> & =.
scalar q,f1,f2;
f1 := second rlifstruct(q,facesv);
return foreach f2 in f1 collect rhs f2;
end;
procedure surf(p); begin
% surf(a<b and a<c and c<>d and d<=e and a+c<b+d) =
% a-b+c-d = 0 or a-b = 0 or a-c = 0 or c-d = 0 or d-e = 0
scalar p,q,r; % this is not quite right, e.g. (a=0)and(...)
r := false; q := faces(p);
for k:=1:length(q) do %if 'true = rlqe rlex (p and 0<>part(q,k)) then
r := r or (0 = part(q,k));
return rlsimpl r;
end;
procedure nsurf(q); begin return not surf(q); end;
procedure w31_1(a0,b0,c0, ab,ac, bc,ba, ca,cb); begin
scalar Tbca,Tcba;
scalar a,b,c; a:=a0+ab+ac; b:=b0+bc+ba; c:=c0+ca+cb;
Tbca := (c+bc<a+ba);
Tcba := (b+cb<a+ca);
return (b<a)and(b<c)and Tbca or (c<b)and(c<a)and Tcba;
end;
procedure w31_2(a0,b0,c0, ab,ac, bc,ba, ca,cb); begin
scalar Tacb,Tcab;
scalar a,b,c; a:=a0+ab+ac; b:=b0+bc+ba; c:=c0+ca+cb;
Tacb := (c+ac<b+ab);
Tcab := (a+ca<b+cb);
return (a<b)and(a<c)and Tacb or (c<a)and(c<b)and Tcab;
end;
procedure w31_3(a0,b0,c0, ab,ac, bc,ba, ca,cb); begin
scalar Tabc,Tbac;
scalar a,b,c; a:=a0+ab+ac; b:=b0+bc+ba; c:=c0+ca+cb;
Tabc := (b+ab<c+ac);
Tbac := (a+ba<c+bc);
return (a<c)and(a<b)and Tabc or (b<a)and(b<c)and Tbac;
end;
uv3 := (0<=a0)and(0<=b0)and(0<=c0)and
(0<=ab)and(0<=ac)and
(0<=ba)and (0<=bc)and
(0<=ca)and(0<=cb);
off rounded; precision 8;
procedure ty3(mlb,mub); begin
scalar j,k, ret2, iter,len,s1;
clear x, a0,b0,c0, ab,ac, bc,ba, ca,cb;
len:=9; extrap := 3;
array xlb(9,9),xub(9,9);
hga := w31_3(a0,b0,c0, ab,ac, bc,ba, ca,cb);
huv := uv3 and (a0+b0+c0+ab+ac+bc+ba+ca+cb = 10000);
s1 := {a0,b0,c0, ab,ac, bc,ba, ca,cb};
iter := 1;
AGAIN: ;
write "iter = ",iter;
for j:=1:length(s1) do begin
for k:=1:length(s1) do begin
if (part(s1,j) member {c0,ac,bc,ca,cb})
and not (j=k)
and 0 <= xub(j,k)
and j=8 and k=4 % try this one
then begin
if iter = 1 then mnk := mlb % binary search
else mnk := min(extrap*xlb(j,k), (xlb(j,k) + xub(j,k))/2);
s3 := {part(s1,j)=part(s1,j)+x, part(s1,k)=part(s1,k)-x};
s4 := {part(s1,j)+x, part(s1,k)-x};
write iter," entering ",{{j,k, xlb(j,k),xub(j,k)}, mnk, s3, s4};
ret2 := hg ({j,k, xlb(j,k),xub(j,k)}, mnk, s3, s4);
goto EXIT;
write iter," leaving ",{{j,k, xlb(j,k),xub(j,k)}, mnk, s3, s4};
if 2 = ret2 then begin % found solution
xlb(j,k) := mnk;
if iter = 1 then xub(j,k) := mub;
end else begin
if iter = 1 then xub(j,k) := -1
else xub(j,k) := mnk;
end;
end; end; end; iter := iter+1;
goto AGAIN;
EXIT: ;
end;
% Find a monotonicity violation wrt. C greater that (mnk/100)%
% C wins ("hga") and adding votes ("x") makes C lose ("sub(s,hga)").
procedure hg(u,mnk,s,s4); begin % globals hga, huv
scalar ret,hh,h3,test;
% write "->hg:",{"mnk=",mnk, u,mnk,"s=",s,s4,"huv=",huv,"hga=",hga};
off rounded;
hh := rlsimpl (rlsimpl(huv and sub(s,huv)) and mnk<=x and
hga and not sub(s,hga)
and nsurf(sub(s,hga))); % need the nsurf
if 1 = 1 then begin % added
s8:={
a0 = 0
,ab = 14992/3
,ac = 0
,b0 = 0
,ba = 0
,bc = 2501
,c0 = 7505/3
,ca = 0
,cb = 0
,x = 2498
};
hh := rlsimpl sub(s8,hh);
end;
hh := rlex hh;
h3 := rlqe rlsimpl hh; test := h3; h3a := 0;
% h3 := rlqea rlsimpl hh; test := part(part(h3,1),1); h3a := 1;
if 'true = test then begin
write u," YES ",{"mnk=",mnk,u,h3,s4,hh};
if 0=h3a then begin write "MORE... rlqea =";
on rounded;
write rlqea rlsimpl hh;
off rounded;
write rlqea rlsimpl hh;
end;
ret := 2;
end else begin
write u," NO ",{"mnk=",mnk,u,h3,s4,hh};
ret := 1;
end;
return ret;
end;
ty3(1667,2501);
%---------------------------------------------------------------------
% untested code to found the 4 candidate monotonicity violations
uv4 :=
(0<=a0)and(0<=b0)and(0<=c0)and(0<=d0)and
(0<=ab0)and(0<=ac0)and(0<=ad0)and
... [unfinished. Maybe I can get the votes negated upto 38%.]
IFPP defined: http://www.ijs.co.nz/ifpp.htm
G. A. Craig Carey
Auckland
New Zealand.
More information about the Election-Methods
mailing list