Voting Theory with Representation Triangles and Cubes

Alexander Tabarrok
Department of Economics
Ball State University
Muncie, Indiana, 47306
Email: 00ATTabarrok@BSU.Edu

Introduction

Voting seems straightforward but on closer inspection even simple voting rules have mysterious and odd properties which often challenge our conception of democracy.  Some of these paradoxes have bothered social scientists for hundreds of years but until recently little theory existed which explained why and when paradoxes might be expected to occur.  In his book, "The Geometry of Voting," the mathematician Donald Saari has shed considerable light on why voting 'paradoxes' occur and how they can be predicted.  The package voting.m uses Mathematica's capabilities to implement many of the functions described in Saari's book "The Geometry of Voting," Springer-Verlag, 1994.  The package allows us to experiment with positional voting systems, pairwise voting, approval voting and cumulative voting.  In this article I will focus on positional and pairwise voting, other package capabilities are explained at length in the electronic supplement.

To load the Voting.m package place it in a directory which you know is on Mathematica's search path.  Voting.m also needs a number of standard  packages which will be loaded automatically.  The non-standard package  VertexEnum is also used in some functions.  The VertexEnum package can be downloaded  from Wolfram Research's MathSource web site at http://www.mathsource.com/.  When you have downloaded the package rename it VertexEnumeration and place it in the standard package directory Geometry.  Open the package in a text editor and change the BeginPackage["VertexEnum`"] command to BeginPackage["Geometry`VertexEnumeration`"].  Finally, to avoid some error messages, search for the phrase "\dev\null" and replace it with the phrase "Null".   If you are using Windows 3.1 you will have to shorten the package title to VertexEn as above and also in the BeginPackage command in voting.m  When evaluating the following command using MMA 3.0 a message will appear indicating that CrossProduct is now autoloaded you can ignore this message.

<<Voting.m

This package is Copyright 1997, Alexander Tabarrok.  If you use this package in academic work please cite, Tabarrok, Alexander. Voting Theory with Mathematica - Computer Software, Ball State University, 1997.  Thank you.

The voting package works predominantly with elections where there are three or more candidates or policy options labeled C1,C2,C3.  There are as many voters as we like but every voter is assumed to have strict, complete, and transitive preferences.  This means that for any two candidates voters prefer one candidate or the other (we ignore ties) and, letting > indicate 'is preferred to', if C1 > C2 and C2 > C3 then C1 > C3.  Thus, if a voter prefers chocolate to strawberry ice cream and strawberry to vanilla then she must also prefer chocolate to vanilla.  (One of the most famous paradoxes of voting shows that groups do not necessarily have transitive preferences.)  These assumptions imply that every voter is one of six possible types which can be shown using the command VoterTypes[].

VoterTypes[]

The above indicates that at present there are 0 voters of type one, 0 of type two and so forth.  To define some voters we write a list aprofile = {p1, p2, p3, p4, p5, p6} where p1 is the number of voters of type one, p2 the number of voters of type two and so forth.  We call aprofile a profile vector.  For example:

aprofile = {1, 2, 3, 4, 5, 6}

Now evaluate VoterTypes[aprofile].

VoterTypes[aprofile]

Voter types returns the proportion of voters of each type.  There are twenty one voters in all so .047 are of type one, .142 are of type three, etc.

There are many different types of voting schemes.  We will analyze positional voting systems first.  Plurality rule, for example, assigns one point to a voter's top ranked candidate and zero points to a voter's second and third ranked candidates.  The Borda count, named after the eighteenth century French mathematician Jean Charles Borda assigns two points to a voter's top ranked candidate, 1 point to a second ranked candidate and zero points to the least favored candidate.  (So when the voters enter the voting booth they write down the three candidates from most to least favored and the registrars tally the points.)  Using a normalization it is not to hard to show that every possible positional vote scheme can be represented by a single number s ϵ [0, (1/2)].■1   Using this normalization 0 corresponds to plurality rule, the Borda count corresponds with s = (1/3) and anti-plurality rule is represented by s = (1/2).  Anti-plurality rule assigns 1 point to each of a voter's top-two ranked candidates, this is equivalent to assigning a vote of negative one to the least favored candidate and choosing the candidate with the least negative votes (hence the name anti-plurality rule).

Using the normalization we can represent every positional voting system by the following matrix:

The Standardized Positional Vote Matrix

(({{, abc, acb, cab, cba, bca, bac}, {a, 1 - s, 1 - s, s, 0, 0, s}, {b, s, 0, 0, s, 1 - s, 1 - s}, {c, 0, s, 1 - s, 1 - s, s, 0}}))

The vote matrix can be read in two ways. Reading down a particular column we see the number of points given to each candidate from a voter with the ranking indicated by that column. A voter with ranking cba, for example, gives points of 0, s, and 1-s to candidates a, b, and c  respectively. Reading across the rows we see where a candidate's votes come from. Candidate b, for example, gets s votes from each voter of type abc or cba, zero points from each voter of type acb or cab and 1-s points from each voter of type bca or bac.  Note that s indicates the weight placed on a voter's second ranking.  Plurality rule, s = 0, counts second rankings for nothing.  The Borda Count, s = (1/3), counts second rankings for half as much as first rankings, and anti-plurality rule, s = (1/2), counts second rankings as highly as first rankings.

The standardized positional vote system can therefore be written as:

The Standardized Positional Voting System
(({{1 - s, 1 - s, s, 0, 0, s}, {s, 0, 0, s, 1 - s, 1 - s}, {0, s, 1 - s, 1 - s, s, 0}}))(({{p1}, {p2}, {p3}, {p4}, {p5}, {p6}}))=(({{p1 + p2 + (-p1 - p2 + p3 + p6)*s}, {p6 + p5 + (p4 - p5 + p1 - p6)*s}, {p3 + p4 + (p2 - p3 - p4 + p5)*s}}))

Multiplying the vote matrix by the profile vector gives us the vote outcome on the right hand side.  The voting package always converts profile vectors into proportions so the right hand side will give us the share of the vote going to candidates a, b, and c, respectively.■2

Given a profile vector and a voting system, s, the function PositionalVoteTally calculates the voting outcome.  For example, the outcome when aprofile = {1, 2, 3, 4, 5, 6} and the voting system is plurality rule is given by:

PositionalVoteTally[aprofile, 0]

The vote tallies are given in proportions from highest to lowest.  The above indicates, for example, that C2 wins the election with 11/21 = 52.3  % of the vote.  C3 comes in second with 1/3 = 33  % of the vote and C1 comes in last with 1/7 = 14.2  % of the vote.

As another example let aprofile = {0, 0.39, 0,  .244, 0.3, 0} and compare the results of plurality rule with the Borda count.  (This is a normalized profile vector which indicates that 39% of the voters are of type 2 etc.)

aprofile = {0, 0.39, 0,  .244, 0.3, 0}

PositionalVoteTally[aprofile, 0]

PositionalVoteTally[aprofile, (1/3)]

Notice that plurality rule ranks the candidates C1 > C2 > C3 but the Borda Count ranks them in the completely opposite manner C3 > C2 > C1.  This is quite disturbing!  It's not surprising, of course, that the voting rule changes the outcome somewhat but we might have hoped that given the same preferences different voting schemes would give approximately the same outcomes.  Now we are stuck in the difficult position of having to decide which outcome is better or more democratic.  Do the voter's think C3 is the best candidate or the worst candidate?  How can the results of any voting scheme be considered 'correct' or 'good' if some other voting scheme which appears equally legitimate gives entirely different results?

So far we have looked at only two voting systems, plurality rule and the Borda count.  But why stop there?  Why not also examine a system which gives the top candidate 20 points the second ranked candidate 6 points and the bottom ranked candidate 3 points?  Using the normalization this corresponds to s =  .15.

PositionalVoteTally[aprofile, 0.15]

Yet another ranking!  If all that matters is the winner of the election, the s = 0.15 system gives the same results as plurality rule but often the ranking of second and third placed candidates also matters.  In many contests, such as the Miss USA Pageant or the World BodyBuilding Championship, the second placed candidate receives a larger prize than the third placed candidate and may replace the winner if the winner is disqualified.  In politics, not all elections are all or nothing affairs.  A candidate ranked second in the New Hampshire Presidential primary could go on to eventually win the election while a third ranked candidate might find his campaign funds quickly declining as supporters jumped ship to 'stronger' candidates.  In Russian Presidential elections, French Parliamentary elections, and many state and local elections in the United States the top n (often 2) candidates go into a second round 'runoff' election if the top candidate receives less than x percent (usually 50%) of the vote.  In each of these cases the entire ranking matters and thus acb is a significantly different outcome than abc.

It would be interesting to see the election outcome for every possible method of positional voting.  We can do this using the representation triangle and the procedure line.

The Representation Triangle and the Procedure Line

PlotPL[]

The representation triangle is used to show all possible voting outcomes.   The x coordinate of any point in the triangle tells us the proportion of the vote going to C1.  The y coordinate tells us the proportion of the vote going to C2.  Since proportions must sum to one we can easily calculate C3 vote share as, C3 = 1 - C1 - C2.  Notice, for example, that the origin is labelled C3, this is because if C1 = 0 and C2 = 0, C3 = 1 (C3 wins by unanimous vote).  
	The representation triangle is split into the six possible strict voting outcomes (ties occur at the borders of the regions).  Region 1, for example, covers the entire area where C1 > C2 > C3.  To see this more clearly consider the 45 degree line which runs from the origin to the triangle's hypoteneuse.  Along this line C1 = C2 so all points to the right or below the line have C1 > C2 and all points to left or above the line have C2 > C1.   Similarly, along the line from the C2 vertex to the midpoint of C3 - C1, C1 = C3.  All points above or to the right of this line thus have coordinates such that C1 > C3.  Finally, the line from the C1 vertex to the midpont of C3 - C2 indicates all the points where C2 = C3.  Points above or to the right of this line have C2 > C3.  The region where C1 > C2 and C1 > C3 and C2 > C3 is thus Region 1.  (As a quick reminder of which regions mean what we can always jump back to the top of this notebook or simply reenter VoterTypes[].)
     The function PlotPL[aprofile] will plot all possible positional voting election outcomes for the profile aprofile, ie. it will plot the election outcome as s ranges from 0 to 1/2.  The plurality vote outcome is indicated with a red point, the Borda Count outcome with a green point and the anti-plurality vote with a blue point.  (PL, by the way, stands for Procedure Line.)

PlotPL[aprofile]

From above we know that given aprofile = {0, 0.39, 0,  .244, 0.3, 0} and s = 0 (plurality rule) the outcome is in Region 1, the exact outcome is indicated by the red point.  The Borda count outcome (s = (1/3)) is indicated with a green point and the left most point in blue is the anti-plurality (s = (1/2)) outcome.  The pointsizes are optimized for a hi-res monitor.  If they appear too small or to big PlotPL[profile,size,options] also takes a size option in the second slot.  Default pointsize is .025.  PlotPL[profile,.0105] will print smaller points, for example.
	Notice that the procedure line goes through regions 1,2,3, and 4 plus it intersects three boundaries so this single profile can lead to 7 different outcomes in all.  Obviously a single profile can generate a lot of different outcomes depending on the voting system!  This problem gets much worse as the number of candidates increases.  Saari (1992) shows that with only 10 candidates a single profile can generate over 3 million strict rankings and over 8 million rankings including ties!

What we have just shown is that with the single profile, aprofile = {0, 0.39, 0,  .244, 0.3, 0}, the voting outcome can range from C1 > C2 > C3 to C1 > C3 > C2 to C3 > C1 > C2 and even C3 > C2 > C1!  Which of these is the best outcome?  Which of these is the most democratic outcome?   The answers to these questions are not obvious.  Regardless of our answers to these questions our results show that any theory of democracy which speaks of a "will of the majority" is incoherent.  How can the majority be said to have a will when the same preferences may generate the ranking C1 > C2 > C3 or the reverse ranking C3 > C2 > C1?  When there are ten candidates, a single profile may generate over 8 million rankings which of these rankings represents the majority's will?

The following command generates 10 random voter profiles and their respective procedure lines.■3

Show[simpleplot, Table[PlotPLLines[Table[Random[], {6}],  .02], {10}], 
      RTriangle, PlotRange -> All]

Random plots are always different of course but in the typical run of 10 plots it is often the case that most procedure lines cross at least one boundary and many cross more than one.  Thus,  most profiles result in more than one outcome when the voting system changes.  In fact, using Monte Carlo methods with Mathematica or analytically using the normal function as an approximation (Saari and Tataru, 1997) it's possible to show that as the number of voters gets large (say 100 or more) the probability of a single profile generating i different outcomes is:

Probability of a Single Profile Generating i Outcomes

(({{No . of Different Outcomes, Probability}, {7, .06}, {5, .19}, {3, .44}, {1, .31}}))

The table contains no probabilities of even numbers of outcomes ocurring because an even number of outcomes requires at least one tie and the probability of a tie vote goes to zero as the number of voters increases.

Many non-obvious theorems about voting follow from from the fact that the procedure line is linear and is bracketed by the plurality and anti-plurality voting systems.  Some examples: If both the plurality and anti-plurality rankings are the same then all positional vote systems give the same rankings.  A single profile can give rise to at most 4 different strict rankings or 7 different rankings including rankings with ties.  If a profile gives rise to an all-tied vote under any system then at most the profile gives rise to two different strict rankings.  You can probably find other theorems like these simply by thinking about ways in which straight lines can be placed within the RTriangle.  Or see Saari (1994) for more examples.

Some Machiavellian Musings

A modern Machiavelli has a number of different strategies he can pursue in order to win an election.  First, he can estimate the voter profile and plot the procedure line.  If he is going to lose the election under the current electoral system perhaps there is a different electoral system under which he will win.   Such Machiavellianism is not uncommon.  In 1986, for example, Francois Mitterand arranged a change in the French electoral system in order to benefit his party.  In an effort to lessen the impact of black voters, many cities in the American South adjusted the geographic basis of their electoral systems shortly after the Civil Rights Act was passed.   And the Greek electoral system has changed in almost every election since World War II!  
	A second strategy is to find a profile such that the candidate will win under the current electoral system and then try to move voters towards that profile.  Suppose, for example, that we wanted to find all the voter profiles such that under plurality rule the outcome was { .42,  .3,  .28}.  This problem is easily solved using Mathematica's Solve function.  The function, f, is the core function underlying PositionalVoteTally it computes the vote tally and returns it in the form {C1,C2,C3}.

genericprofile={p1,p2,p3,p4,p5,p6}

sol=Solve[f[genericprofile,0]=={.42,.3,.28}]

Any solution to this system gives a profile vector such that under plurality rule that profile gives the outcome {.42,.3,.28}.

aprofile=Flatten[genericprofile/.sol/.{p6->0,p2->0,p4->0}]

PositionalVoteTally[aprofile,0]

aprofile=Flatten[genericprofile/.sol/.{p6->0.1,p2->.1,p4->0.28}]

PositionalVoteTally[aprofile,0]

Profile space is convex which implies that another way of representing solutions to the above system is to enumerate the vertexes of the relevant profile space.  AllProfiles1 solves the above system and then calls the VertexEnumeration package to find the vertexes or extreme points of the solution set.  AllProfiles1 can take several minutes to run, especially on slower systems.

someprofiles = AllProfiles1[{ .42,  .3,  .28}, 0]

Any of the above profiles or any linear combination of the above profiles such that the coeficients sum to one will result in the outcome { .42,  .3,  .28} when the voting system is plurality rule.  For example:

someprofiles[[1]]

PositionalVoteTally[
      someprofiles[[1]], 0]

PositionalVoteTally[
      someprofiles[[4]], 0]

mix = 
      someprofiles[[6]]/3 + someprofiles[[2]]/3 + 
        someprofiles[[7]]/3

PositionalVoteTally[mix, 0]

Even though all the profiles have the same plurality rule outcome they have very different outcomes under different voting systems.  The following two commands plot the procedure line for each of the profile vertexes.  Mixes of vertexes produce further procedure lines.

Show[simpleplot, 
      Table[PlotPLLines[
          someprofiles[[i]],  .03 ], {
          i, 1, 8}], RTriangle]

Of course, a Machiavelli may be more interested in the ordinal outcome rather than in a particular numerical outcome.  In other words, so long as Machiavelli comes in first place he doesn't care how many votes he gets.  Thus, suppose Machiavelli is C1 and suppose the voting system in use is the Borda Count then Machiavelli is interested in finding all profiles such that the outcome is in regions 1 or 2 when the voting system s=1/3.  
	Remarkably, we can find this set of profiles because of some properties of convex spaces and linear mappings.  A linear mapping maps a convex space into another convex space.  Profile space is convex, positional voting systems are linear, and as a result outcome space is convex (as we can see - triangles are convex!).   This process also works in reverse.  First, we find the vertices of the outcome space we are interested in (regions 1 and 2).  Second, we find all the profiles which lead to these outcome vertices.  Third, since profile space is convex and elections are linear mappings we know that any interior point in outcome space is the result of a combination of the profile vertices.  An example of this procedure is given in the electronic supplements.

Pairwise Voting and the Condorcet Paradox

Imagine how odd it would seem if someone told you that they preferred Apples to Bananas and Bananas to Coconuts but Coconuts to Apples. If an individual had these preferences an economist would call him or her irrational because these preferences violate the transitivity axiom which says that if A > B and B > C then A > C so we can write A > B > C.  (Where > means 'is preferred to').  Economists typically require that any representation of a person's preferences obey the transitivity axiom. They do so not simply because the axiom makes sense but also because if the axiom is violated people can be made to behave in ways that harm their own interests.■4

The most famous voting paradox was made famous by the Marquis de Condorcet (1785), a rival of Jean Charles Borda whose Borda count was discussed earlier. Condorcet discovered that even if every individual has transitive preferences, the decisions of a group made using majority rule can be intransitive. Speaking loosely, groups can have irrational preferences. If there are only two issues then majority rule works just fine but suppose that  we must choose between three or more issues. One method of making this choice is by pairwise comparisons each using majority rule. If our options are C1, C2, C3 then a good rule for choice might be to choose that option which beats any other option in pairwise majority rule voting.  Condorcet showed that such an option might not exist. Or, as we now say, majority rule can fail to produce a Condorcet winner. The following example illustrates the paradox.

An example:  Suppose Smith,Jones, and West have the following preferences.

Smith   C1 > C2 > C3
Jones   C3 > C1 > C2
West    C2 > C3 > C1

	In a vote of C1 v C2, Smith and Jones vote for C1, West alone votes for C2 so C1 > C2.  Now vote C2 v C3, Smith and West vote for C2, Jones votes for C3 so C2 > C3,   Finally, consider C3 v C1.  If groups behaved like rational individuals we could conclude from C1 > C2 and C2 > C3 that C1 > C3 but what does happen?  Smith votes for C1 but Jones and West vote for C3 so C3 > C1.  Thus we have C1 > C2, C2 > C3 but C3 > C1.   Voting theorists have found the potential absence of a Condorcet winner to be highly disturbing.

Some of the procedures in the voting.m package help us to understand how and why the Condorcet paradox occurs.

The function BinaryVotes takes a profile vector and returns the ordinal rankings and the numerical vote tally for the pairwise votes C1 v C2, C2 v C3, and C3 v C1.  The numerical votes are expressed as (% voting for C1 - % voting for C2).  So a 1 in the C1 v C2 vote means 100% of the voters voted for C1 and 0% voted for C2.  0 means the vote was a tie and say -1/3 means that 1/3 more voters voted for C2 than C1 so C2 > C1.  As always we can get some idea of the usage of a function by typing ?FunctionName

aprofile = {1, 0, 0, 0, 0, 0}

BinaryVotes[aprofile]

Note that the the -1 in the third position indicates that in the C3 v C1 vote C3 gets 0% of the vote and C1 gets 100% which indicates an ordinal outcome of C1 > C3.

Now we will once again take advantage of convexity.  Profile space is convex and the majority rule procedure is a linear mapping into outcome space which will therefore also be convex.  What this means is that vertices in profile space will correspond to vertices in outcome space.  We already know for example that one vertice in outcome space is {1, 1, -1}.  We can find the others by repeated application of BinaryVotes.  For example:

BinaryVotes[{0, 1, 0, 0, 0, 0}]

The Representation Cube

If we continue on in this fashion and then plot and join the vertices we will discover the shape of outcome space, which Saari (1994) calls the Representation Cube.  The command PlotBV[P,size,opts] plots the RCube where P is the voter profile.

PlotBV[aprofile]

Note that the cube has three axes.  The x axis indicates the C1 v C2 vote.  The y axis the C2 v C3 vote and the z axis the C3 v C1 vote.  The Representation Cube is the 'outcome space' of  the pairwise vote function.  The blue point in the bottom, right, back corner, for example, represents the pairwise votes generated by aprofile, C1 > C2, C2 > C3, C1 > C3.

Now let's plot a dozen outcomes with random preferences.

Show[RCube, Table[BinaryPoint[Table[Random[], {6}]], {12}], RCubeOpts]

Notice that the RCube is not actually a cube.  Instead areas associated with the {1, 1, 1} and {-1, -1, -1} vertices are chopped off.  Click on this footnote to see why.■5

There are two possible cycles with three candidates,  the by now familiar C1 > C2,  C2 > C3 and C3 > C1 cycle and the reversed or 'negative' cycle C2 > C1, C3 > C2, C1 > C3.  These cycles correspond to regions where the vote outcomes {x, y, z} are all positive or all negative respectively.   Have a look at the RCube, these two regions are quite easy to see, they are the positive and negative quadrants of the (truncated) cube.  Most of these quadrants has been chopped off but significant portions remain!  The cyclic region is the entire positive quadrant but we can get a clearer look at the cyclic region by coloring just the surface portions of these regions.  The cyclic regions are colored red (danger!).

Show[RCube, CyclicRegions, RCubeOpts]

We can also show the cyclic regions by contrast with those regions in which a Condorcet winner exists.  A Condorcet winner is a candidate which beats all other candidates in pairwise voting.  If a Condorcet winner exists there are obvious reasons for thinking that it is the "best" candidate (but these reasons are not always dispositive - see the accompanying electronic supplements or Saari (1994) for more details).  The following command shows the C1 and C2 Condorcet regions.  If shown the C3 Condorcet region would fit in the top front area which leaves two "cubby holes" unaccounted for - these are the cyclic regions.

Show[RCube, CyclicRegions, CondorcetRegionC1, CondorcetRegionC2, 
      RCubeOpts]

Comparing Pairwise and Positional Voting

Suppose that under plurality rule the three candidates are ranked C1 > C2 > C3.  It seems only reasonable that a pairwise vote between C1 and C3 should show C1 > C3.  Saari (1994) gives a good example of why.  Suppose an economics department is about to hire a new member.  There are three candidates and the job committee ranks them C1 > C2 > C3.  The department is about to hire C1 when they learn that C2 has accepted a job elsewhere.  Would it not be odd if the committee reconvened and now chose C3?  The committee would probably find it difficult to explain why C1 was preferred to C3 when C2 was in the running yet C3 is preferred to C1 when C2 is out of the picture! 
	Surprisingly, it turns out that paradoxes like this will occur under any form of positional voting!

The function PosPairCompare[P,s] is used to compare the C1, C2, C3 ranking with the pairwise ranking C1 v C2.

?PosPairCompare

Consider the following profile

aprofile = {0.4, 1, 2,  .5, 2,  .7}

PosPairCompare[aprofile, 0]

The above table indicates that in the pairwise vote C1 wins beats C2 but in the plurality vote C2 wins with almost double the vote of C1.  Exactly the odd outcome discussed in the committee example!

PosPairCompare[aprofile, (1/3)]

It can be shown that the Borda Count minimizes the differences between pairwise and positional voting but in this example the Borda Count and the pairwise vote are still reversed.  If C3 dropped out of the pool for the job described earlier  C1 would move from last place to first place.  The committee still has some explaining to do!

It's worth noting that things only get worse when more candidates or policies are added to the brew.  Suppose, for example, that there are 5 choices initially ranked A > B > C > D > E and let C drop out; it is quite possible that the re-ranking has E > D > B > A!  Indeed if A were now to drop out it's quite possible that the ranking returns to B > D > E, or any other order!

Conclusion

We often interpret the outcome of a vote as if the outcome represented the preferences of the group doing the voting.  We say that Bill Clinton was elected in 1992 because American voters preferred Clinton to either Bush or Perot.  But if asked to vote in two pairwise contests, Bush v. Clinton and Bush v. Perot, Americans might have chosen Bush both times.  Similarly, if the vote system had been other than plurality rule Americans might have chosen Bush or perhaps even Perot.■6 The outcome of an election cannot be used to deduce a group's "preferences."  An election outcome represents the mechanics of the electoral system at least as much as it does the preferences of the voters.  The visual and computational power of Mathematica make it an ideal tool to investigate the conundrums and paradoxes of voting theory.  The commands demonstrated here are only a subset of the total commands available in the voting package. Other commands help to further analyze and compare positional and pairwise voting.  The package also allows us to investigate two multiple vote systems, approval and cumulative voting.  In approval voting a voter gets to cast one vote for as many candidates as she "approves."  In cumulative voting a voter is given as many votes as there are candidates and a voter may cast all of her votes for a single candidate or she may distribute her votes across candidates in any way she sees fit.  Approval and cumulative voting are both used extensively in the United States and are discussed at greater length in the electronic supplements.

References

Saari, Don. 1994. The Geometry of Voting. (New York, Springer-Verlag).

Saari, Don. and Maria M. Tataru. 1997. "The Likelihood of Dubious Election Outcomes," manuscript, Northwestern University.

Tabarrok, Alexander. 1997. "Fundamentals of Voting Theory Illustrated with the 1992 Election or Why the Libertarian Party should favor Approval Voting." manuscript, Ball State University.

EndNotes

1) Suppose we give 20 points to the top ranked candidate, 6 to the middle ranked candidate and 3 to the bottom ranked candidate, (20, 6, 3).  To find the normalized voting vector subtract the last entry from all other entries to arrive at (17, 3, 0), since the relative assignment of points has not changed the relative election outcome will not change either.  Now divide all entries by the sum of the entries (20) to arrive at (17/20, 3/20, 0).   This method will transform any voting vector into an equivalent normalized voting vector where the entries always sum to one and are written (1 - s, s, 0).  In this case s = 3/20 or 0.15.  Thus, if we are interested in a voting system which assigns the points 20, 6, 3 we can use the normalized voting scheme s = 0.15.   See Saari (1994) for more information on normalized voting vectors.■Rtn

2) The expressions for vote shares are linear functions of s.  It follows that we can write any positional vote system as a combination of plurality and anti-plurality rule.  To conform with the notation in Saari (1994) the core vote tallying function is implemented as \(TraditionalForm
      \`f[P_, \ s_]\  := \ 
        \((1\  - \ 2\ s)\)\ P . Wp\  + \ 2\ s\ P . Wap\) where P is the profile vector and Wp and Wap are the plurality and anti-plurality vote matrices respectively. ■Rtn

3) Table[Random[], {6}] generates six random numbers in a list.  PlotPLLines is like PlotPL except that it does not actually show the PL instead it generates a Graphic.  PlotPLLines is useful when, as here, we wish to draw a number of PLs and then plot them all in one diagram.  The second argument in PlotPLLines, 0.02, is an optional parameter indicating the size of the points.  We make this smaller than the default of .025 in order to see the procedure lines more clearly.   PlotPLLines also colors the plurality and anti-plurality outcomes only, not the Borda Count.   The outer Table command Table[PlotPL..., {10}] tells Mathematica to evaluate the PlotPLLines function ten times and place the results in a list.  simpleplot generates the X,Y axis, RTriangle adds the RTriangle regions and boundary lines.■Rtn

4) Suppose Joe has the  preferences Apples>Bananas, Bananas>Coconuts and Coconuts>Apples then Joe can be Dutch booked or money pumped. Imagine that we own a coconut, a banana, and an apple and we sell Joe the coconut for $1. Joe prefers bananas to coconuts so he will willing give us back the coconut and a little bit of money, say ten cents, in return for the Banana. Joe also prefers apples to bananas so he will willing give us back the banana and a little bit of money, say 10 cents, in return for the apple. But Joe likes coconuts more than apples so he will give us the apple back plus say 10 cents in return for the coconut. But we are now back where we began except Joe is 30 cents poorer and we are 30 cents richer. By repeating the process we can use Joe as a money pump and take from him all of his wealth. Non-transitive preferences can be very costly!■Rtn

5) If a group unanimously prefers C1 to C2 then we know every individual in that group prefers C1 to C2.  A vote outcome of {1, 1, 1} means that the group unanimously prefers C1 to C2, C2 to C3 and C3 to C1 but this must mean, contrary to our assumption, that every individual in the group has the intransitive preferences C1 > C2 ,C2 > C3 but C3 > C1  The truncated parts of the cube represent those outcomes which could only occur if some voters had intransitive preferences.  In the example of the paradox given earlier, the vote tally was {1/3, 1/3, 1/3}.   What happens in the Condorcet paradox is that on each vote *different* groups of agents form a majority.  The different groupings occur in just such a way that the composite outcome mimics the outcome which would occur if every individual had an identical set of irrational preferences even though each voter in fact has rational (transitive) preferences.  The moral of the story?  A group of light things is not necessarily light, and a group of rational agents is not necessarily rational.■Rtn

6) The analysis in the text shows that these outcomes are possible.  In Tabarrok (1997), I examine the 1992 election closely and find that in fact (all else equal) Clinton would have beat both Bush and Perot in pairwise elections and would have won under any positional voting system although either Bush or Perot could have won if either approval or cumulative voting had been used.■Rtn