A Guide to an STV Database
Contents
1 Introduction
2 The system
3 The two main tables
4 Using the database
4.1 Using the election data information
4.2 Using the result information
4.3 Using both tables
5 Programs used
6 Related information
7 Likely extensions
8 Problem areas
9 Acknowledgments
A Installation on you own machine
1 Introduction
This Guide is for a small database concerned with
Preferential
voting, as used in Single Transferable Vote elections. Given an
example election in which a number of seats is contested between
several candidates, the preferential votes can be counted in a number
of ways. The Republic of Ireland, Malta, the Church of England and
Northern Ireland all use STV but with slightly different counting
rules. This database is designed to aid in the analysis and research
into such systems.
There are two ways of using this database. You can access the
database via the Web at
https://phpmyadmin-s.sourceforge.net (you
will then get a login page to which you need to give the user name s91982ro aand password stv),
or you can download the content of the database from the same site and
then set it up on your own computer using MySql. This manual is
designed for either situation, but the emphasis is on the Internet
version. On the SourceForge system, after logging in, select the data
base
s91982_stvdb.
The SourceForge system has a number of limitations. It is set up to
restrict the maximum number of joins. Some of the examples below
have a command before the main query of:
SET MAX_JOIN_SIZE =4294967295;
This need not be included if you are using MySQL on your own computer.
The database is free and it is hoped that others will contribute to the
information within it.
As an example of the type of problems the database is designed to
resolve, David Hill reports an election (to elect 2 from A ... F) for
which:
| Elects AD | Elects AC |
| ERS 97 | ERS 76 |
| ERS 72 | Sequential STV |
| Meek | Church of England |
| Northern Ireland | General Medical Council |
| Methodists | Gazeley's Exhaustive STV |
| Warren | Woodall's QPQ |
| New Zealand | |
However, if B, E, and F are withdrawn, all methods elect AC.
It is easy to locate this and similar cases to this as we will
demonstrate later.
2 The system
The database is really a component of a bigger system, as it merely
acts as a repository of properties of some preferential voting data
and the application of counting rules to that data.
In fact, the database is currently just two MySql tables: one of those
storing properties of the preferential election data and the other the
results of running counting rules on the data. At this stage, no
attempt has been made to check the material other than via the use of
MySql - all the examples here use MySql. Users not familiar with
MySql will probably need to consult the user manual (but you may well
be able to manage by using and adapting the examples given here).
For the election data, there are seven categories denoted by a single
letter. In alphabetical order they are:
- C:
- The capacity tests, which are mainly machine generated,
to demonstrate the capacity to handle large elections.
- F:
- The full-disclosure tests. These are from actual STV
elections in which the full details are available. This implies
that the candidate names are those of real people, etc. Currently,
there are very few in this class.
- M:
- The mock tests. These are like real elections, many
modelled on Irish result sheets, which are all machine
generated. Data in this class have been used to explore the likely
behaviour from changing an election rule.
- R:
- These are the real tests, collected from actual STV
elections. However, the full details are not available - the
source is not available. Some details of the type of election is
typically available.
- S:
- These are the semi-real elections. They are based on
real elections, but are not strictly appropriate for the real (or
full disclosure) categories above. A typical example are the
Eurovision Song Contest, since they use a points system, but that
can be transliterated into preferential voting. Another example
are elections in which equality of preference was used.
- T:
- These are the test category and arise over special cases in
the logic of at least one STV counting rule. This set is large and
complex which implies that an SQL search facility is very
useful.
(There is another class D which is not used in this database.)
Purists will state that the class is a property of the data which
should be stored separately in the database, rather than being part of
the data itself. However, the current scheme works and predates the
MySql database.
An individual election is denoted by one of the letters above followed
by three digits. The actual data file for the election is like:
C012.BLT. From a logical analysis point of view, the T class
is the most useful, but from the point of view of what might happen in
real elections, all the others are most useful. The term
election is used here even though for the T class no such
election took place.
3 The two main tables
If you go to the Internet site
http://stv.sourceforge.net/,
log in to the database, and then select Databases, you will see on the
column on the left, the two tables: BLT_info and Result.
Select BLT_info which then produces a screen full of a small part of
the contents. Then select the left-most item at the top of the screen
marked Structure. It is the structure of the two tables which is
important (the entire contents is too large to be immediately
useful). This table records the main characteristics of the ballot
data from more than 700 elections.
You will now see a list of the items in the table as follows:
-
ID:
- The four characters denoting the name of the election,
such as C012 an example in the capacity class.
- Title:
- A string of up to 50 characters giving the title of
the election.
- Candidates:
- An integer giving the number of candidates.
- Seats:
- An integer giving the number of seats.
- Votes:
- An integer giving the number of valid votes.
- Invalid_votes:
- An integer giving the number of invalid
votes. (This is only meaningful for real elections and for testing
counting software.)
- Total_Prefs:
- An integer giving the total number of
preferences from all the votes.
- Withdrawn_Candidates:
- The data files have a facility for
withdrawing a candidate before the actual election count. This is
not used often and hence this integer is usually zero.
- Zero_First:
- This is the number of candidates who have no first
preferences. Like the previous field, this is usually zero.
- No_Support:
- This is the number of candidates (usually zero)
for which no preference has been expressed in the votes.
- Largest_Pile:
- The BLT file format allows for a pile of
papers with the same preferences to be recorded together. This is
very useful for constructing test cases with a large number of
votes. If the value is 1, then this facility is effectively not
used for that BLT file.
- Smith_Set:
- The set of candidates ranked higher that any
member outside that set (see [5]). For those data sets
which do not exhibit a Condorcet paradox, this set consists of a
single candidate. (A Condorcet analysis could be regarded as a type
of STV `election', but this is not quite right since the size of
the set is determined by the data, not the number to elect.) This
value is recorded as a text string using the number of each
candidate. Hence [1,3] would imply that the first and
third candidates were ranked higher than any other, but that
neither candidate 1 nor 3 were ranked higher than the other.
- Single_Prefs:
- This gives the number of votes for which only
a single preference is given.
- Source:
- A text string giving the source (if known). This
might be a URL for information from the Internet.
- Comment:
- A string recording information which might be
useful and is not otherwise available.
- Extra_Doc:
- This is recorded as Y if extra documentation is
available, and as N otherwise. This additional information is
recorded at the end of the BLT file. This is needed when a one or
two sentences in the Comment field is not sufficient.
The other main table gives the results of applying a number of
election rules to the ballot data. Selecting the table Result and then
Structure (as before) one can see the fields of the table which are as
follows:
- ID:
- The four character identifier of the election as in the
other table.
- Rule:
- String giving the identification of the rule being used.
- Elected:
- The set of those elected by the rule above recorded
as per Smith_Set field in BLT_info.
- Stages:
- Number of stages (assumes the rule has stages!).
- Random:
- Number of random choices made, often 0.
- First:
- Number whose first preference votes greater than or equal to the quota (can
be one more than those elected).
- Tie_Break:
- This is for the form of tie-breaking undertaken:
'S' sequential, 'R' random in repeatable fashion, 'T' random in
non-repeatable fashion.
- Program:
- A string giving the program (with version) and
relevant options.
The fields of these two tables are used extensively to find
interesting election examples.
4 Using the database
It is now easy to make simple lists of the all the elections in order
of votes, say. We give more interesting example below.
Some examples now appear of the MySql input (in
red)
and output (in
green). You can paste the input into
your own system or the Web system to try out using the database.
On the Web, select the third item in the top row marked SQL, and then
paste the example into the SQL window and clicking on Go.
4.1 Using the election data information
One important aspect is the total number of elections in the six
classes noted above. This can be found by:
SELECT LEFT(X.ID, 1) AS "Class", SUM(X.Votes) AS "Total votes",
SUM(X.Candidates) AS "Total candidates", SUM(X.Seats) AS "Total seats",
SUM(X.Total_Prefs) AS "Total Preferences", COUNT(*) AS "Number in class"
FROM BLT_info X
GROUP BY LEFT(X.ID, 1);
With the Web version of the database, the results look slightly
different as they are tabulated without using monospaced fonts.
The result of this is:
+-------+-------------+------------------+-------------+-------------------+-----------------+
| Class | Total votes | Total candidates | Total seats | Total Preferences | Number in class |
+-------+-------------+------------------+-------------+-------------------+-----------------+
| C | 9844664 | 919 | 206 | 48635283 | 23 |
| F | 2790567 | 1182 | 299 | 7154306 | 72 |
| M | 13428201 | 4940 | 1631 | 68078691 | 385 |
| R | 45311 | 1269 | 494 | 276363 | 119 |
| S | 204049 | 1102 | 285 | 343927 | 49 |
| T | 2658466 | 1414 | 788 | 5783467 | 192 |
+-------+-------------+------------------+-------------+-------------------+-----------------+
6 rows in set (0.02 sec)
The number in the full disclosure class (F) is small enough to list
the key aspects:
SELECT X.ID, X.Title, X.Votes, X.Seats, X.Candidates
FROM BLT_info X
WHERE LEFT(X.ID, 1) = 'F'
ORDER BY X.Votes;
giving:
+------+----------------------------------------------------+---------+-------+------------+
| ID | Title | Votes | Seats | Candidates |
+------+----------------------------------------------------+---------+-------+------------+
| F072 | Stanford Sophomore Class Presidents 2001 | 1022 | 1 | 8 |
| F035 | New Zealand, Taieri Subdivision, 2004 | 1716 | 2 | 4 |
| F034 | New Zealand, Otago Peninsula Community Board, 2004 | 1789 | 6 | 8 |
| F032 | New Zealand, Saddle Hill Community Board, 2004 | 2005 | 6 | 9 |
| F033 | New Zealand, Chalmers Community Board, 2004 | 2036 | 6 | 8 |
| F012 | ASUCD Senate Fall Election, 2003 | 2447 | 6 | 16 |
| F028 | New Zealand, Porirua City, Western Ward, 2004 | 2631 | 3 | 11 |
| F031 | New Zealand, Waikouaiti Coast-Chalmers Ward, 2004 | 3320 | 1 | 4 |
| F070 | ASUCD Senate - Fall 2004 | 3584 | 6 | 20 |
| F069 | ASUCD Winter 2005 Senate Election | 3718 | 8 | 23 |
| F038 | ASUCD Winter 2005 Senate Election | 3718 | 8 | 23 |
| F025 | New Zealand, Porirua City, Eastern Ward, 2004 | 3782 | 5 | 10 |
| F013 | ASUCD Winter 2004 Presidential Election | 4029 | 1 | 3 |
| F014 | ASUCD Senate Winter 2004 | 4068 | 6 | 14 |
| F071 | ASSU President 2001 | 4075 | 1 | 7 |
| F050 | ASUC 2002 Student Advocate Election (UC Berkeley) | 4357 | 1 | 12 |
| F068 | ASUC 2005 Student Advocate Election (UC Berkeley) | 4528 | 1 | 6 |
| F044 | ASUC 2001 Student Advocate Election (UC Berkeley) | 4669 | 1 | 2 |
| F036 | New Zealand, Mosgiel Subdivision, 2004 | 4741 | 4 | 6 |
| F062 | ASUC 2004 Student Advocate Election (UC Berkeley) | 4890 | 1 | 5 |
| F056 | ASUC 2003 Student Advocate Election (UC Berkeley) | 5059 | 1 | 2 |
| F022 | New Zealand, Dunedin City, Cargill Ward, 2004 | 5210 | 3 | 10 |
| F039 | ASUC 2001 Academic VP Election (UC Berkeley) | 5656 | 1 | 5 |
| F041 | ASUC 2001 External VP Election (UC Berkeley) | 5808 | 1 | 6 |
| F057 | ASUC 2004 Academic VP Election (UC Berkeley) | 5851 | 1 | 3 |
| F063 | ASUC 2005 Academic VP Election (UC Berkeley) | 5884 | 1 | 5 |
| F065 | ASUC 2005 External VP Election (UC Berkeley) | 5927 | 1 | 5 |
| F046 | ASUC 2002 Executive VP Election (UC Berkeley) | 6046 | 1 | 8 |
| F040 | ASUC 2001 Executive VP Election (UC Berkeley) | 6057 | 1 | 9 |
| F064 | ASUC 2005 Executive VP Election (UC Berkeley) | 6156 | 1 | 4 |
| F045 | ASUC 2002 Academic VP Election (UC Berkeley) | 6175 | 1 | 4 |
| F047 | ASUC 2002 External VP Election (UC Berkeley) | 6207 | 1 | 6 |
| F059 | ASUC 2004 External VP Election (UC Berkeley) | 6220 | 1 | 4 |
| F027 | New Zealand, Porirua City, Northern Ward, 2004 | 6288 | 5 | 8 |
| F066 | ASUC 2005 President Election (UC Berkeley) | 6426 | 1 | 6 |
| F058 | ASUC 2004 Executive VP Election (UC Berkeley) | 6444 | 1 | 5 |
| F042 | ASUC 2001 President Election (UC Berkeley) | 6679 | 1 | 9 |
| F043 | ASUC 2001 Senator Election (UC Berkeley) | 6885 | 20 | 111 |
| F067 | ASUC 2005 Senator Election (UC Berkeley) | 6916 | 20 | 99 |
| F060 | ASUC 2004 President Election (UC Berkeley) | 6968 | 1 | 9 |
| F051 | ASUC 2003 Academic VP Election (UC Berkeley) | 7140 | 1 | 4 |
| F053 | ASUC 2003 External VP Election (UC Berkeley) | 7144 | 1 | 4 |
| F061 | ASUC 2004 Senator Election (UC Berkeley) | 7181 | 20 | 81 |
| F052 | ASUC 2003 Executive VP Election (UC Berkeley) | 7359 | 1 | 4 |
| F048 | ASUC 2002 President Election (UC Berkeley) | 7567 | 1 | 11 |
| F054 | ASUC 2003 President Election (UC Berkeley) | 7984 | 1 | 5 |
| F049 | ASUC 2002 Senator Election (UC Berkeley) | 8080 | 20 | 109 |
| F055 | ASUC 2003 Senator Election (UC Berkeley) | 8418 | 20 | 99 |
| F023 | New Zealand, Dunedin City, Hills Ward, 2004 | 9844 | 3 | 7 |
| F026 | New Zealand, Porirua City, Mayoralty, 2004 | 13099 | 1 | 6 |
| F024 | New Zealand, South Dunedin Ward, 2004 | 14113 | 4 | 12 |
| F010 | Cambridge, MA 1997 School Committee Election | 16386 | 6 | 14 |
| F006 | Cambridge, MA 2001 School Committee Election | 16489 | 6 | 16 |
| F009 | Cambridge, MA 1997 City Council Election | 16879 | 9 | 28 |
| F005 | Cambridge, MA 2001 City Council Election | 17126 | 9 | 28 |
| F011 | Cambridge, MA 1999 School Committee Election | 17961 | 6 | 19 |
| F008 | Cambridge, MA 2003 School Committee Election | 18698 | 6 | 14 |
| F004 | Cambridge, MA 1999 City Council Election | 18777 | 9 | 29 |
| F007 | Cambridge, MA 2003 City Council Election | 20080 | 9 | 29 |
| F021 | San Francisco City Supervisor District 11, 2004 | 23176 | 1 | 8 |
| F020 | San Francisco City Supervisor District 9, 2004 | 24868 | 1 | 7 |
| F017 | San Francisco City Supervisor District 3, 2004 | 25905 | 1 | 4 |
| F015 | San Francisco City Supervisor District 1, 2004 | 28787 | 1 | 7 |
| F002 | Dublin West 2002 (E:53780, D:17th May 2002) | 29988 | 3 | 9 |
| F019 | San Francisco City Supervisor District 7, 2004 | 31639 | 1 | 13 |
| F016 | San Francisco City Supervisor District 2, 2004 | 34488 | 1 | 5 |
| F018 | San Francisco City Supervisor District 5, 2004 | 35109 | 1 | 22 |
| F001 | Dublin North 2002 (E:72353, D:17th May 2002) | 43942 | 4 | 12 |
| F037 | New Zealand, Dunedin Mayor, 2004 | 45720 | 1 | 6 |
| F003 | Meath 2002 (E:108717, D:17th May 2002) | 64081 | 5 | 14 |
| F030 | New Zealand, Canterbury District Health Board, 200 | 108866 | 7 | 29 |
| F029 | London Mayoral election, 2004 | 1863686 | 1 | 10 |
+------+----------------------------------------------------+---------+-------+------------+
72 rows in set (0.00 sec)
In some Australian STV elections, all possible preferences must be
given. We can find out how many such elections there are by:
SELECT X.ID, X.Votes, X.Candidates, X.Total_Prefs
FROM Blt_info X
WHERE X.Votes * X.Candidates = X.Total_Prefs;
The result of this is:
+------+-------+------------+-------------+
| ID | Votes | Candidates | Total_Prefs |
+------+-------+------------+-------------+
| S046 | 48 | 13 | 624 |
| T032 | 30 | 4 | 120 |
| T033 | 60 | 4 | 240 |
| T088 | 12 | 6 | 72 |
| T094 | 50 | 6 | 300 |
| T096 | 494 | 7 | 3458 |
| T103 | 100 | 4 | 400 |
| T104 | 105 | 4 | 420 |
| T105 | 1610 | 4 | 6440 |
| T149 | 2000 | 35 | 70000 |
+------+-------+------------+-------------+
10 rows in set (0.00 sec)
Hence there is only one election of this type, other than logical test
cases (the T class).
A more interesting example is to see how many elections have more than
one member in the Smith set. We have do this by finding if this field
contains a comma (we exclude the T class to reduce the output):
SELECT ID, Smith_Set
FROM BLT_info
WHERE INSTR(Smith_Set, ',') <> 0
AND LEFT(ID, 1) <> 'T';
The result of this is:
+------+---------------------------------------------------------------+
| ID | Smith_Set |
+------+---------------------------------------------------------------+
| C002 | [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] |
| F067 | [1,2,7,19,38,43,46,49,52,57,67,71,75,78,79,86,94] |
| M001 | [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21] |
| M016 | [1,2,4,5,8] |
| M026 | [1,2,3,4] |
| M033 | [1,2,4,5] |
| M041 | [1,2,6] |
| M044 | [1,2,5,6,9] |
| M045 | [1,2,4] |
| M046 | [1,2,3,4] |
| M052 | [1,2,3,4] |
| M057 | [1,4,7] |
| M067 | [1,2,3,4,5] |
| M074 | [1,2,3] |
| M079 | [1,4,5] |
| M081 | [1,2,4] |
| M083 | [1,2,4,5,6] |
| M085 | [1,4,6] |
| M104 | [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23] |
| M105 | [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18] |
| M114 | [1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18] |
| M141 | [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20] |
| M145 | [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24] |
| M373 | [1,2,4,16] |
| R018 | [9,11,13,20] |
| R031 | [1,2,4] |
| R060 | [6,7] |
| R116 | [1,6] |
| S002 | [2,12,15] |
| S004 | [2,4,6,10,12] |
| S008 | [1,2,3,4,5,6] |
| S014 | [3,4,5,7,8,9,11,12,15,19,20,21,22] |
| S025 | [2,11,15] |
| S031 | [1,3,4,7,8,9,10,11,13,14,16,17,19] |
| S032 | [12,13,17] |
| S039 | [4,11] |
| S041 | [4,7,8,9,11,17,18] |
| S046 | [3,6,8] |
+------+---------------------------------------------------------------+
38 rows in set (0.00 sec)
4.2 Using the result information
The number of results for each rule is easily found:
SELECT X.Rule, COUNT(*) AS "Results available"
FROM Result X
GROUP BY X.Rule;
+--------------+-------------------+
| Rule | Results available |
+--------------+-------------------+
| BCSTV | 832 |
| Borda | 832 |
| Bucklin | 123 |
| CambridgeSTV | 555 |
| CofESTV | 771 |
| Condorcet | 123 |
| Coombs | 798 |
| ERS76STV | 743 |
| ERS97STV | 832 |
| IRV | 810 |
| MeekSTV | 832 |
| NIrelandSTV | 832 |
| QPQe | 793 |
| QPQr | 793 |
| SNTV | 802 |
| SuppVote | 123 |
| WarrenSTV | 832 |
| XXvote | 776 |
+--------------+-------------------+
18 rows in set (0.06 sec)
Those rules ending in `STV' satisfy the conventional requirements to be regarded as a Single
Transferable Vote counting rule.
The details of these election rules are as follows:
- BCSTV:
- Counting rules proposed for use in the Canadian
province of British Columbia in 2005. See
http://www.citizensassembly.bc.ca/public
for more information.
- Borda:
- With the Borda count, if there eight candidates
competing, then a candidate gets seven points for every first
ranking, six points for every second ranking, and so on. If a
candidate is not ranked on a ballot then he gets no points. When
more than one candidate is to be elected, the Borda count provides
some degree of proportionality, but not as well as STV methods.
- Bucklin:
- With the Bucklin system, if a candidate receives a
majority of first choices, then she is elected. Otherwise, if a
candidate is first or second on a majority of ballots, then she is
elected. This process is repeated for higher choices as necessary.
- CambridgeSTV:
- Counting rules used by the City of Cambridge,
Massachusetts, since 1941. See
http://www.ci.cambridge.ma.us/ Election/
for more information.
- CofESTV:
- The counting rules used by the Church of England (which allows
the use of constraints).
- Condorcet:
- Condorcet elects the candidate who wins all
pairwise competitions against the other candidates. Sometimes a
cycle will occur where no Condorcet winner exists. In this
instance, other techniques are necessary to break the cycle. The
city of Marquette, Michigan used Condorcet voting in the early
20th century.
- Coombs:
- Coombs is like IRV (see below), but with one difference: the
candidate with the most last rankings is eliminated at each round.
- ERS76STV:
- The rules published by the Electoral Reform Society,
but now superseded by the next rule.
- ERS97STV:
- The current rules published by the Electoral Reform
Society, see [1].
- IRV:
- A counting rule more commonly used to elect one
candidate, but which can also be used to obtain proportional
representation. At each round, the candidate with the fewest
number of votes is eliminated. This is also known as the
Alternative Vote. (Conventional STV is the same as AV when electing
a single candidate.)
- MeekSTV:
- The counting due to Brian Meek, see [4]. Used
is several elections and being used in New Zealand.
- NIrelandSTV:
- The counting rules used for local elections in
Northern Ireland. See
http://www.electoralofficeni.gov.uk/faq/PRFAQs.asp
for more information.
- QPQe:
- A counting rules devised by Douglas Woodall, see
[2]. This variant does not restart on an exclusion.
- QPQr:
- A counting rules devised by Douglas Woodall, see
[2]. This variant restarts on an exclusion and is thought
to be a possible substitute for conventional STV.
- SNTV:
- Single Non-Transferable Vote. Only the first
preferences count - just included for comparison purposes.
- SuppVote:
- A simpler form of IRV. The voter can rank only
two candidates and all but the top two candidates are eliminated
after the first round. See
http://www.londonelects.org.uk/mayor/
for more information
- WarrenSTV:
- The rule due to Hugh Warren, see [3]. It
is not thought to have been used in real elections.
- XXvote:
- A counting rule added here for comparative purposes
only. Only the first n preferences are used where n is the
number of seats. All these are regarded as a single X vote. Hence
the order of the first two preferences (in an election for two
seats) is ignored.
We can find those cases in which Warren and ERS76 elect different
candidates, but excluding the logical tests (class T) and those in
which a random choice was made:
SET MAX_JOIN_SIZE =4294967295;
SELECT X.ID, X.Elected AS "Elected by Warren", Y.Elected AS "Elected by ERS76"
FROM Result X, Result Y
WHERE X.ID = Y.ID
AND LEFT(X.ID,1) <> 'T'
AND X.Rule = "WarrenSTV"
AND X.Random = 0
AND Y.Rule = "ERS76STV"
AND Y.Random = 0
AND X.Elected <> Y.Elected
ORDER BY X.ID;
+------+------------------------------------------+-------------------------------------------+
| ID | Elected by Warren | Elected by ERS76 |
+------+------------------------------------------+-------------------------------------------+
| F006 | [4,5,7,8,9,10] | [4,5,6,7,8,9] |
| M005 | [1,2,5] | [1,2,4] |
| M010 | [1,3,4,5] | [1,2,4,5] |
| M019 | [1,4,8,9] | [1,5,8,9] |
| M028 | [1,3,6,7,8] | [1,2,3,6,7] |
| M051 | [1,3,4,5] | [1,2,4,5] |
| M059 | [1,4,5,7] | [1,2,4,5] |
| M060 | [1,4,7] | [1,4,5] |
| M066 | [1,2,5] | [1,2,4] |
| M070 | [1,2,6,7,8] | [1,3,6,7,8] |
| M073 | [2,4,5,8] | [1,4,5,8] |
| M078 | [1,3,4] | [1,2,3] |
| M092 | [1,2,3,14] | [1,3,5,14] |
| M093 | [1,2,3,14] | [1,3,5,14] |
| M094 | [1,2,3,14] | [1,3,5,14] |
| M100 | [1,2,4,6,8,17] | [1,2,4,7,8,17] |
| M103 | [1,2,4,6,7,9] | [1,2,3,4,6,7] |
| M104 | [1,2,4,6,9,16] | [1,2,4,5,9,16] |
| M106 | [1,2,6,8,9,12] | [1,2,4,5,8,12] |
| M108 | [1,2,4,6,7,12] | [1,2,4,7,12,13] |
| M109 | [1,2,3,5,9,13] | [1,2,5,9,10,13] |
| M110 | [1,2,3,7,11,12] | [1,2,3,6,9,11] |
| M111 | [1,2,5,6,9,14] | [1,2,3,5,9,14] |
| M114 | [1,2,3,5,6,13] | [1,2,3,5,6,8] |
| M116 | [1,2,4,5,6,7] | [1,2,4,5,7,14] |
| M117 | [1,2,3,4,9,13] | [1,2,4,9,11,13] |
| M119 | [1,2,4,5,9,16] | [1,2,4,5,6,16] |
| M120 | [1,2,5,7,8,15] | [1,2,5,7,8,11] |
| M121 | [1,2,5,7,8,16] | [1,2,4,7,8,16] |
| M122 | [1,2,3,5,6,7,10] | [1,2,3,5,6,11,13] |
| M123 | [1,2,4,5,7,9,13] | [1,2,3,4,5,7,9] |
| M124 | [1,3,7,8,9,11,12] | [1,2,3,7,8,9,11] |
| M126 | [1,4,5,6,9,11,13] | [1,2,4,5,6,9,13] |
| M130 | [1,2,4,5,6,8,13] | [1,2,4,5,6,11,12] |
| M134 | [1,2,3,5,7,9,11] | [1,2,3,5,6,7,9] |
| M137 | [1,2,3,4,5,9,13] | [1,2,3,4,5,7,9] |
| M139 | [1,2,3,5,7,10,13] | [1,3,5,7,8,10,13] |
| M140 | [1,2,4,5,8,10,11] | [1,2,4,5,6,8,11] |
| M145 | [1,2,4,5,6,7,11] | [1,2,3,4,6,7,11] |
| M147 | [1,2,3,5,6,7,16] | [1,2,3,5,6,14,16] |
| M149 | [1,2,3,4,6,8,18] | [1,2,3,4,6,13,18] |
| M150 | [1,2,3,4,5,12,14] | [1,2,3,4,5,12,13] |
| M181 | [1,4,6,7] | [1,4,7,11] |
| M182 | [1,4,6,7] | [1,4,7,11] |
| M190 | [2,6,8,14] | [6,8,10,14] |
| M191 | [2,6,8,14] | [6,8,10,14] |
| M193 | [1,2,3,14] | [1,3,5,14] |
| M197 | [2,4,8,12,13] | [2,4,8,11,13] |
| M198 | [2,4,8,12,13] | [2,4,8,11,13] |
| M207 | [4,6,11,15,16] | [4,6,13,15,16] |
| M228 | [2,8,10,11,12] | [2,3,8,11,12] |
| M229 | [4,5,7,11,13] | [5,7,9,11,13] |
| M230 | [4,5,8,11,13] | [5,8,9,11,13] |
| M231 | [4,5,7,11,13] | [5,8,9,11,13] |
| M253 | [2,3,4,8] | [1,2,3,8] |
| M254 | [2,3,4,8] | [1,2,3,8] |
| M303 | [1,3,8] | [3,5,8] |
| M353 | [3,5,6] | [3,6,7] |
| M386 | [2,4,6,13] | [2,4,6,11] |
| M387 | [2,4,6,13] | [2,4,6,11] |
| R003 | [1,3,8,10,14,16] | [1,8,10,14,16,17] |
| R004 | [1,4,6,8,10] | [1,2,4,8,10] |
| R005 | [1,2,3,5,6,7,8] | [1,2,3,4,5,7,8] |
| R046 | [1,6,7,10] | [1,2,7,10] |
| R048 | [1,4,5,6,9] | [1,4,6,9,10] |
| R072 | [1,4,5,7] | [1,5,6,7] |
| R081 | [3,4,5,6,7,8] | [1,3,5,6,7,8] |
| R083 | [1,2,3,4,5,6,9,12,14,15,19,20] | [1,2,3,4,5,6,9,11,12,14,19,20] |
| R096 | [2,4,5,6,7,9,10,11,12,14,15,16,18,19,20] | [2,5,6,7,9,10,11,12,14,15,16,17,18,19,20] |
| R098 | [1,3,5,8,9,10,14,20,26,27] | [1,5,8,9,10,12,14,20,26,27] |
| R109 | [1,5,6,8,9,10] | [1,4,5,6,8,10] |
| R113 | [1,4] | [2,4] |
| S044 | [1,3,5,8,9] | [1,3,5,7,9] |
| S045 | [1,2,3,4,6,7,8,9,10] | [1,2,3,4,5,6,7,9,10] |
+------+------------------------------------------+-------------------------------------------+
74 rows in set (0.63 sec)
Note the initial command to ensure that the query completes successfully.
We can explore the use of random choices:
SELECT X.Rule, COUNT(*) AS "Cases with random choice", SUM(X.Random)
FROM Result X
WHERE X.Random <> 0
GROUP BY X.Rule;
+--------------+--------------------------+---------------+
| Rule | Cases with random choice | SUM(X.Random) |
+--------------+--------------------------+---------------+
| BCSTV | 156 | 417 |
| Borda | 25 | 35 |
| Bucklin | 2 | 2 |
| CambridgeSTV | 37 | 164 |
| CofESTV | 149 | 1054 |
| ERS76STV | 126 | 384 |
| ERS97STV | 130 | 353 |
| IRV | 162 | 372 |
| MeekSTV | 110 | 275 |
| NIrelandSTV | 132 | 337 |
| QPQe | 192 | 1408 |
| QPQr | 198 | 1733 |
| SNTV | 83 | 136 |
| SuppVote | 27 | 35 |
| WarrenSTV | 113 | 283 |
| XXvote | 69 | 107 |
+--------------+--------------------------+---------------+
16 rows in set (0.02 sec)
+--------------+--------------------------+---------------+
As expected, CofE makes more random choices by not permitting multiple
exclusions, and Meek makes only half the number of random choices
after the first due to using very small fractions of a vote.
(This query fails with a syntax error on the current SourceForge system
for reasons which are not clear - it is OK with MySQL version 5.0.16
on an Apple.)
4.3 Using both tables
We now find all the elections for a single seat for which
the Condorcet winner is not elected.
SET MAX_JOIN_SIZE =4294967295;
SELECT X.ID, X.Smith_Set, Y.Elected, Y.Rule
FROM BLT_info X, Result Y
WHERE X.Seats = 1
AND X.ID = Y.ID
AND INSTR(X.Smith_Set, ',') = 0
AND X.Smith_Set <> Y.Elected
AND LEFT(X.ID,1) <> 'T'
ORDER BY X.ID;
+------+-----------+---------+-------------+
| ID | Smith_Set | Elected | Rule |
+------+-----------+---------+-------------+
| F053 | [1] | [4] | SNTV |
| R026 | [2] | [8] | SNTV |
| R026 | [2] | [5] | Bucklin |
| R026 | [2] | [5] | Borda |
| R026 | [2] | [8] | XXvote |
| R035 | [1] | [2] | Bucklin |
| R051 | [2] | [6] | Bucklin |
| R054 | [4] | [1] | Bucklin |
| R084 | [6] | [12] | SuppVote |
| R084 | [6] | [12] | Bucklin |
| R084 | [6] | [12] | Borda |
| R097 | [15] | [3] | SNTV |
| R097 | [15] | [3] | SuppVote |
| R097 | [15] | [3] | XXvote |
| S001 | [2] | [9] | SNTV |
| S001 | [2] | [9] | SuppVote |
| S001 | [2] | [9] | Coombs |
| S001 | [2] | [9] | XXvote |
| S006 | [13] | [6] | Coombs |
| S006 | [13] | [3] | Borda |
| S007 | [3] | [6] | Bucklin |
| S009 | [13] | [10] | SNTV |
| S009 | [13] | [10] | SuppVote |
| S011 | [9] | [4] | SNTV |
| S011 | [9] | [4] | SuppVote |
| S011 | [9] | [21] | XXvote |
| S012 | [22] | [7] | SNTV |
| S012 | [22] | [7] | SuppVote |
| S012 | [22] | [7] | Bucklin |
| S012 | [22] | [7] | XXvote |
| S013 | [19] | [14] | SNTV |
| S013 | [19] | [14] | SuppVote |
| S013 | [19] | [14] | XXvote |
| S015 | [17] | [10] | SNTV |
| S015 | [17] | [16] | IRV |
| S015 | [17] | [10] | SuppVote |
| S015 | [17] | [16] | BCSTV |
| S015 | [17] | [16] | ERS97STV |
| S015 | [17] | [16] | NIrelandSTV |
| S015 | [17] | [16] | MeekSTV |
| S015 | [17] | [16] | WarrenSTV |
| S015 | [17] | [16] | QPQe |
| S015 | [17] | [16] | QPQr |
| S015 | [17] | [19] | XXvote |
| S015 | [17] | [16] | ERS76STV |
| S015 | [17] | [16] | CofESTV |
| S027 | [9] | [1] | SNTV |
| S027 | [9] | [1] | Borda |
| S027 | [9] | [1] | XXvote |
| S028 | [17] | [1] | SNTV |
| S028 | [17] | [1] | SuppVote |
| S028 | [17] | [1] | Bucklin |
| S028 | [17] | [1] | Borda |
| S028 | [17] | [1] | XXvote |
| S029 | [18] | [9] | SNTV |
| S029 | [18] | [9] | SuppVote |
| S029 | [18] | [1] | Bucklin |
| S029 | [18] | [9] | XXvote |
| S035 | [8] | [18] | Coombs |
| S035 | [8] | [16] | Borda |
| S035 | [8] | [16] | XXvote |
| S036 | [15] | [13] | Bucklin |
| S036 | [15] | [21] | XXvote |
| S042 | [3] | [2] | SNTV |
| S042 | [3] | [2] | SuppVote |
| S042 | [3] | [2] | Bucklin |
| S042 | [3] | [2] | Borda |
| S047 | [10] | [5] | SuppVote |
| S049 | [1] | [2] | Bucklin |
+------+-----------+---------+-------------+
69 rows in set (0.52 sec)
All of these cases indicates that the Condorcet winner is not
necessarily elected by STV (as expected).
We can find the difference between Cambridge and Meek and produce the
main characteristics from the BLT_info table:
SET MAX_JOIN_SIZE =4294967295;
SELECT Z.ID, Z.Votes, Z.Candidates, Z.Seats,
X.Elected AS "Elected by Meek", Y.Elected AS "Elected by Cambridge"
FROM Result X, Result Y, BLT_info Z
WHERE X.ID = Y.ID
AND X.ID = Z.ID
AND Y.ID = Z.ID
AND X.Rule = "MeekSTV"
AND Y.Rule = "CambridgeSTV"
AND X.Random = 0
AND LEFT(X.ID,1) <> 'T'
AND X.Elected <> Y.Elected;
+------+--------+------------+-------+----------------------+----------------------+
| ID | Votes | Candidates | Seats | Elected by Meek | Elected by Cambridge |
+------+--------+------------+-------+----------------------+----------------------+
| S044 | 2908 | 12 | 5 | [1,3,5,8,9] | [1,3,5,7,9] |
| S045 | 853 | 10 | 9 | [1,2,3,4,6,7,8,9,10] | [1,2,3,4,5,6,7,9,10] |
| R022 | 867 | 13 | 8 | [1,2,4,5,6,9,10,12] | [1,2,4,5,6,8,10,12] |
| R067 | 253 | 3 | 2 | [1,2] | [1,3] |
| R109 | 1147 | 10 | 6 | [1,4,5,6,8,9] | [1,5,6,8,9,10] |
| M005 | 27757 | 7 | 3 | [1,2,5] | [1,2,4] |
| M010 | 38410 | 9 | 4 | [1,3,4,5] | [1,2,4,5] |
| M012 | 28665 | 5 | 3 | [1,2,3] | [1,2,4] |
| M017 | 35205 | 14 | 4 | [1,2,4,9] | [1,2,4,5] |
| M019 | 29193 | 13 | 4 | [1,4,8,9] | [1,5,8,9] |
| M028 | 44454 | 13 | 5 | [1,3,6,7,8] | [1,2,3,6,7] |
| M030 | 28793 | 9 | 3 | [1,2,4] | [1,3,4] |
| M034 | 25247 | 7 | 3 | [1,2,4] | [1,3,4] |
| M045 | 28687 | 7 | 3 | [1,2,4] | [1,4,5] |
| M051 | 39991 | 10 | 4 | [1,3,4,5] | [1,2,4,5] |
| M059 | 35038 | 11 | 4 | [1,4,5,7] | [1,2,4,5] |
| M060 | 25553 | 9 | 3 | [1,4,7] | [1,4,5] |
| M066 | 24825 | 9 | 3 | [1,2,5] | [1,2,4] |
| M070 | 44914 | 13 | 5 | [1,2,6,7,8] | [1,3,6,7,8] |
| M073 | 36407 | 8 | 4 | [2,4,5,8] | [1,4,5,8] |
| M078 | 27881 | 8 | 3 | [1,3,4] | [1,2,3] |
| M081 | 28352 | 6 | 3 | [1,4,6] | [1,2,4] |
| M092 | 37438 | 16 | 4 | [1,2,3,14] | [1,3,5,14] |
| M181 | 36400 | 12 | 4 | [1,4,6,7] | [1,4,7,11] |
| M190 | 40009 | 14 | 4 | [2,6,8,14] | [6,8,10,14] |
| M191 | 40009 | 14 | 4 | [2,6,8,14] | [6,8,10,14] |
| M193 | 37438 | 16 | 4 | [1,2,3,14] | [1,3,5,14] |
| M197 | 59634 | 14 | 5 | [2,4,8,12,13] | [2,4,8,11,13] |
| M198 | 59634 | 14 | 5 | [2,4,8,12,13] | [2,4,8,11,13] |
| M207 | 42648 | 16 | 5 | [4,6,11,15,16] | [4,6,13,15,16] |
| M229 | 53670 | 13 | 5 | [4,5,7,11,13] | [5,7,9,11,13] |
| M230 | 53670 | 13 | 5 | [4,5,8,11,13] | [5,8,9,11,13] |
| M231 | 53670 | 13 | 5 | [4,5,7,11,13] | [5,8,9,11,13] |
| M253 | 42733 | 9 | 4 | [2,3,4,8] | [1,2,3,8] |
| M254 | 42733 | 9 | 4 | [2,3,4,8] | [1,2,3,8] |
| M266 | 30703 | 11 | 3 | [1,8,9] | [7,8,9] |
| M283 | 43076 | 10 | 4 | [1,2,7,10] | [1,2,7,9] |
| M303 | 32440 | 9 | 3 | [1,3,8] | [3,5,8] |
| M353 | 28808 | 8 | 3 | [3,5,6] | [3,6,7] |
| M386 | 44797 | 13 | 4 | [2,4,6,13] | [2,4,6,11] |
| M387 | 44797 | 13 | 4 | [2,4,6,13] | [2,4,6,11] |
| F006 | 16489 | 16 | 6 | [4,5,7,8,9,10] | [4,5,6,7,9,10] |
| C015 | 550000 | 16 | 4 | [1,2,3,11] | [1,2,7,11] |
| C019 | 750000 | 17 | 4 | [1,2,11,13] | [1,2,7,11] |
| C023 | 950000 | 20 | 4 | [1,2,11,13] | [1,2,7,11] |
+------+--------+------------+-------+----------------------+----------------------+
45 rows in set (0.61 sec)
Note that the non-logical cases are all for a relatively large number
of seats. (The logically unnecessary
AND Y.ID = Z.ID is added
to speed up the query.)
Finally, we return to the example which we gave at the beginning. We
try to find an example in which ERS97=Meek, but these two are not
equal to (ERS76=QPQr), obviously in terms of the candidates elected.
SET MAX_JOIN_SIZE =4294967295;
SELECT X.ID
FROM Result X, Result Y, Result Z, Result U
WHERE X.ID = Y.ID
AND X.ID = Z.ID
AND Y.ID = Z.ID
AND Y.ID = U.ID
AND X.ID = U.ID
AND U.ID = Z.ID
AND X.Rule = "ERS97STV"
AND Y.Rule = "MeekSTV"
AND Z.Rule = "ERS76STV"
AND U.Rule = "QPQr"
AND X.Elected = Y.Elected
AND Z.Elected = U.Elected
AND X.Elected <> Z.Elected
AND Y.Elected <> Z.Elected
AND X.Elected <> U.Elected
AND Y.Elected <> U.Elected;
Without the initial SET command one gets:
#1104 - The SELECT would examine more than MAX_JOIN_SIZE rows; check
your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if
the SELECT is okay
With the initial SET command required in the SourceForge set-up, or without
that using another MySQL system one gets:
+------+
| ID |
+------+
| T143 |
+------+
1 row in set (0.93 sec)
We can now see what information we have about this particular test:
SELECT *
FROM BLT_info
WHERE ID="T143";
This is too wide to display in the format given by MySQL, but gives:
| ID | T143 |
| Title | TEST97B Substage TieBreak |
| Candidates | 6 |
| Seats | 2 |
| Votes | 60 |
| Invalid_Votes | 0 |
| Total_Prefs | 100 |
| Withdrawn_Candidates | 0 |
| Zero_First | 0 |
| No_Support | 0 |
| Largest_Pile | 13 |
| Smith_Set | [1] |
| Single_Prefs | 28 |
| Source | Keith Edkins, email: keith.edkins at gwydir.demon.co.uk |
| Comment | See papers 5 and 6 in Voting matters, Issue 11, April 2000. |
| Extra_Doc | N |
SELECT *
FROM Result
WHERE ID="T143";
+------+-------------+---------+--------+--------+-------+-----------+-----------------------+
| ID | Rule | Elected | Stages | Random | First | Tie_Break | Program |
+------+-------------+---------+--------+--------+-------+-----------+-----------------------+
| T143 | SNTV | [1,2] | 1 | 0 | 2 | S | pSTV: version 0.9 |
| T143 | IRV | [1,4] | 5 | 0 | 0 | S | pSTV: version 0.9 |
| T143 | Coombs | [3,4] | 5 | 0 | 0 | S | pSTV: version 0.9 |
| T143 | Borda | [1,3] | 1 | 0 | 2 | S | pSTV: version 0.9 |
| T143 | BCSTV | [1,4] | 6 | 0 | 1 | S | pSTV: version 0.9 |
| T143 | ERS97STV | [1,4] | 7 | 0 | 1 | S | pSTV: version 0.9 |
| T143 | NIrelandSTV | [1,4] | 6 | 0 | 1 | S | pSTV: version 0.9 |
| T143 | MeekSTV | [1,4] | 5 | 0 | 1 | S | pSTV: version 0.9 |
| T143 | WarrenSTV | [1,4] | 5 | 0 | 1 | S | pSTV: version 0.9 |
| T143 | QPQe | [1,3] | 5 | 0 | 1 | S | Ada rule v0.04 |
| T143 | QPQr | [1,3] | 8 | 0 | 1 | S | Ada rule v0.04 |
| T143 | XXvote | [1,4] | 1 | 0 | 2 | S | Ada rule v0.04 |
| T143 | ERS76 | [1,3] | 5 | 0 | 1 | S | eSTV Reg. 12180,1.47a |
| T143 | CofE | [1,3] | 5 | 0 | 1 | S | eSTV Reg. 12180,1.48f |
+------+-------------+---------+--------+--------+-------+-----------+-----------------------+
14 rows in set (0.02 sec)
Finally, a script has been written to compare all the elections (but
omitting the T Class and those involving a random choice), so that a
table can be prepared giving the result. This is as a percentage of
the elections in which a different set of candidates were elected.
This result of this is:
| Borda | Bucklin | CambridgeSTV | CofESTV | ERS76STV | ERS97STV | IRV | MeekSTV | NIrelandSTV | QPQe | QPQr | SNTV | SuppVote | WarrenSTV | XXvote |
| BCSTV | 65.30 | 11.67 | 3.21 | 4.56 | 5.10 | 4.97 | 18.82 | 12.23 | 3.37 | 20.56 | 15.06 | 36.35 | 3.45 | 12.97 | 71.98 |
| Borda | - | 13.68 | 62.39 | 66.99 | 68.73 | 63.45 | 66.05 | 60.82 | 64.36 | 63.42 | 61.68 | 67.72 | 12.99 | 60.58 | 20.47 |
| Bucklin | - | - | 9.43 | 21.21 | 34.62 | 13.64 | 13.64 | 13.64 | 13.64 | 16.67 | 16.67 | 19.10 | 16.46 | 13.64 | 30.00 |
| CambridgeSTV | - | - | - | 3.41 | 3.52 | 3.42 | 17.56 | 9.40 | 2.99 | 14.66 | 12.06 | 32.26 | 1.96 | 9.40 | 71.43 |
| CofESTV | - | - | - | - | 1.22 | 1.37 | 20.46 | 14.09 | 1.57 | 18.60 | 15.77 | 38.60 | 6.90 | 13.89 | 69.98 |
| ERS76STV | - | - | - | - | - | 0.20 | 21.75 | 14.68 | 2.39 | 19.18 | 16.02 | 40.12 | 15.00 | 14.68 | 70.35 |
| ERS97STV | - | - | - | - | - | - | 20.07 | 13.23 | 2.59 | 18.53 | 15.60 | 36.80 | 5.00 | 13.23 | 69.79 |
| IRV | - | - | - | - | - | - | - | 23.16 | 19.37 | 29.36 | 26.23 | 24.81 | 5.00 | 23.53 | 73.76 |
| MeekSTV | - | - | - | - | - | - | - | - | 12.93 | 15.87 | 7.39 | 40.46 | 5.00 | 1.36 | 67.70 |
| NIrelandSTV | - | - | - | - | - | - | - | - | - | 19.20 | 15.86 | 35.91 | 5.00 | 12.76 | 70.84 |
| QPQe | - | - | - | - | - | - | - | - | - | - | 13.82 | 45.34 | 3.57 | 15.11 | 67.86 |
| QPQr | - | - | - | - | - | - | - | - | - | - | - | 43.01 | 3.57 | 8.58 | 66.04 |
| SNTV | - | - | - | - | - | - | - | - | - | - | - | - | 6.49 | 40.71 | 72.50 |
| SuppVote | - | - | - | - | - | - | - | - | - | - | - | - | - | 5.00 | 10.26 |
| WarrenSTV | - | - | - | - | - | - | - | - | - | - | - | - | - | - | 67.50 |
These results might seem surprising at first. For instance, BCSTV and SuppVote are very different, since
the Supplementary Vote only applies to electing a single candidate. In fact, they are seen to be quite
similar since only those elections for which results of both voting rules are available are compared - in this
case, those for a single seat. In fact, 58 elections are compared and just two give a different result.
The percentage difference is then 2/58=3.45%.
5 Programs used
A key program is one which computes the information for the BLT_info
table. This is written in Ada 95 and is available without restriction.
The other programs are those that do counts for various rules. At the
moment, these are as follows:
SELECT X.Rule, X.Program
FROM Result X
GROUP BY X.Rule;
+--------------+-----------------------+
| Rule | Program |
+--------------+-----------------------+
| BCSTV | pSTV: version 0.9 |
| Borda | pSTV: version 0.9 |
| Bucklin | pSTV: version 0.9 |
| CambridgeSTV | pSTV: version 0.9 |
| CofE | eSTV Reg. 12180,1.48f |
| Condorcet | pSTV: version 0.9 |
| Coombs | pSTV: version 0.9 |
| ERS76 | eSTV Reg. 12180,1.47a |
| ERS97STV | pSTV: version 0.9 |
| IRV | pSTV: version 0.9 |
| MeekSTV | pSTV: version 0.9 |
| NIrelandSTV | pSTV: version 0.9 |
| QPQe | Ada rule v0.04 |
| QPQr | Ada rule v0.04 |
| SNTV | pSTV: version 0.9 |
| SuppVote | pSTV: version 0.9 |
| WarrenSTV | pSTV: version 0.9 |
| XXvote | Ada rule v0.04 |
+--------------+-----------------------+
18 rows in set (0.08 sec)
- Implementations of eSTV are from Joe Otten. A demonstration
version of this program is available from the ERS web site.
- Jeff O'Neill's program pSTV. This program produces data
in a format used to load the data into the Result table.
- An Ada 95 program which produces result for the two versions
of QPQ and XXvote.
6 Related information
The main related information are all the election data files:
Xddd.BLT. These are two big to handle apart from writing a
CD. Those that would like a copy for non-commercial purposes should
contact Brian Wichmann.
In undertaking work to validate implementations of various STV counting
rules, Brian Wichmann has used a `standard' format for conventional
result sheets. This CSV format has proved very useful, but is not used
here for two results: firstly, it is not really appropriate for some
counting rules like Meek; secondly it is very detailed and would
increase the size of the tables to store the result by more than a
factor of ten and be very difficult to use.
Hence the situation of the moment is that you may use this database to
discover that a specific election E gives a different result with
rules X and Y. You would then need to repeat these two election counts
and examine the output to discover the reason for this.
7 Likely extensions
It should be straightforward to add the results from additional
counting rules. However, the work involved is much reduced if the
table output is produced directly, as we have done.
It would a great advance if more full disclosure elections were
available (R or F class). The number of such elections is too small
for many statistical tests.
When full disclosure takes place and further information is available
(F class) then this additional information should be stored. This
needs to be considered at a later date.
8 Problem areas
Within the confines of the existing system, it seems that very
detailed analysis of specific cases would require re-running the
appropriate counting software. Hence the main purpose of the database
is to collect statistical information and identify cases worthy of
further study.
At the moment, there is no version control built into the system. When
in doubt, use the dates on the two main files. The intention is to
make the system from this point onwards upward compatible. Hence if an
error is found in the BLT file, that test would be deleted and the
test ID not re-used. Although this database inherits a lot of material
from the previous collection of BLT files, it is
not upward
compatible with it.
Currently, if a counting program has a missing result, the reason for
this is not recorded. Sometimes, this is a capacity issue, as with
David Hill's MS-DOS system (not used here). With the Cambridge rules
all candidates are excluded with fewer than 50 votes after all surplus
votes have been transferred.
At the moment, results from two implementations of the same rule are
not stored in the results table. If this is done, then the program
name must be used to discriminate cases, which makes running queries
more awkward.
9 Acknowledgments
Many thanks to those that made all of this possible. Too many people
have contributed over the years to the election database to list
here. Thanks to our SQL consultant, David Wichmann.
A special thanks for those who have written counting programs which
have been used to compute the result for the database. Currently, this
is David Hill (not actually in this edition), and Joe Otten.
References
- [1]
- R. A. Newland and F. S. Britton. How to conduct
an election by the Single Transferable Vote. ERS 3rd Edition. 1997.
See
http://www.electoral-reform.org.uk/votingsystems/stvrules.htm.
- [2]
- D. R. Woodall. QPQ, a quota-preferential STV-like
election rule. Voting matters. Issue 17, pp1-7. October 2003.
See
http://www.mcdougall.org.uk/VM/ISSUE17/I17P1.PDF.
- [3]
- C. H. E. Warren. Counting in STV elections.
Voting matters. Issue 1, pp12-13. March 1994.
See
http://www.mcdougall.org.uk/VM/ISSUE1/P4.HTM.
- [4]
- I. D. Hill, B. A. Wichmann and D. R. Woodall. Algorithm
123 - Single Transferable Vote by Meek's method. Computer
Journal. Vol 30, pp277-281, 1987.
- [5]
- M. Schulze. Voting matters, Issue 17. page 11.
( Suppose that d[X,Y] is the number of voters who strictly prefer
candidate X to candidate Y. Then the Smith set is the smallest
non-empty set of candidates with d[A,B] > d[B,A] for each candidate
A of this set and each candidate B outside this set.)
See
http://www.mcdougall.org.uk/VM/ISSUE17/I17P3.PDF.
A Installation on you own machine
This database consists of this guide and two SQL tables. The two
tables must be loaded into a MySql database and are available from
SourceForge.
If you are using the SourceForge Internet version of this database, then the
tables will have already been set up. Please
do not change any of the
tables.
The two tables are enclosed in an SQL script to make importing them easy.
From the command line of your computer, enter
mysql < stvdb-1.2.sql
The SQL for each table are:
CREATE TABLE `BLT_info` (
`ID` varchar(4) default NULL,
`Title` varchar(50) default NULL,
`Candidates` int(11) default NULL,
`Seats` int(11) default NULL,
`Votes` int(11) default NULL,
`Invalid_Votes` int(11) default NULL,
`Total_Prefs` int(11) default NULL,
`Withdrawn_Candidates` int(11) default NULL,
`Zero_First` int(11) default NULL,
`No_Support` int(11) default NULL,
`Largest_Pile` int(11) default NULL,
`Smith_Set` varchar(100) default NULL,
`Single_Prefs` int(11) default NULL,
`Source` varchar(80) default NULL,
`Comment` varchar(255) default NULL,
`Extra_Doc` char(1) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `Result` (
`ID` varchar(4) default NULL,
`Rule` varchar(15) default NULL,
`Elected` varchar(220) default NULL,
`Stages` int(11) default NULL,
`Random` int(11) default NULL,
`First` int(11) default NULL,
`Tie_Break` char(1) default NULL,
`Program` varchar(31) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
File translated from
TEX
by
TTH,
version 3.63.
On 29 Jun 2006, 21:52.