3 February, 2004: Which Parliamentary co-ordinate are you?

[ Home page | Web log ]

Some time ago I suggested to Francis Irving that he apply principal components analysis (as used in my Political Survey and elsewhere) to parliamentary voting records. Francis very kindly sent me an enormous file full of data so that I could do all the work myself.

Some background is available at the Public Whip FAQ page; basically, from time to time Parliament divides (votes), and MPs who are present may vote `aye' (yes) or `noe' on the motion. There is no usual way for an MP to register an abstention (occasionally one may vote `aye' and `noe' in a single division, but this is rare and abstention and absence can't usually be distinguished). According to The Public Whip's statistics, the mean attendance in divisions is about 62%.

The simplest representation of these data is to consider each MP's voting record as a vector of all the divisions in which they voted. Each element of the vector is +1 if the MP voted `aye' in the corresponding division, -1 for `noe', and 0 for `not present', which could be the result of laziness, abstention, or the MP having better things to do with their time. (Tony Blair, for instance, rarely votes; Gerry Adams never does.) Note that the assignment of -1/0/+1 is arbitrary. Because many divisions are rather sparsely attended, I've restricted my analysis to divisions in which 500 or more (out of 659) MPs vote; this is arbitrary too, but has the effect of restricting the analysis to the to 15-25% of divisions with the largest attendance. These are likely to be the most controversial, and therefore interesting, divisions, since otherwise all those MPs wouldn't have bothered to turn up for them.

Anyway, given this set of vectors we can find the covariance matrix for the divisions, which tells us how the votes in one division correspond to votes in others. If every MP voted the same way in two different divisions, the covariance between those divisions would be large and positive; if every MP who voted `aye' in the first division voted `noe' in the second, the covariance would be large and negative; and if the votes in the two divisions were completely unrelated, the covariance would be about zero.

Principal components analysis picks out the combinations of the divisions which (in some sense) best explain the variations in the data. I wrote some notes about the procedure for the Political Survey; the procedure is the same here, except that instead of survey questions we have divisions. The idea is that we'll extract from the data political axes which describe how MPs behave.

The Public Whip has data from the 1997 and 2001 Parliaments. I've looked at both. The results are not earth-shattering, but they are somewhat interesting....

First, how many significant axes are there? I can't be bothered to do this properly (by sampling from marginal distributions), so instead here's what is apparently called a scree plot, a plot of the first few eigenvalues:

Scree plot

-- from this we conclude (by handwaving, basically) that the first two eigenvectors are significant. The first eigenvector is much more important than the second. We shall see why in a moment.

Plotting the data for the two parliaments yields the following. First, 1997:

1997 Parliament, unscaled

and 2001:

2001 Parliament, unscaled

Observe that the MPs cluster by party affiliation. This is promising, and suggests that the whole thing may not be a total waste of time. (I've picked the signs of the x and y coordinates to put Labour on the left and the Conservatives on the right; obviously this is an arbitrary distinction.) Some comments:

The fact that MPs don't attend all votes is a pain, because it means we can't tell whether an MP lies outside the cluster of their party because they're a rebel, or because they're lazy. Two ways to fix this suggest themselves:

Both of these are ad hoc. The first one sounds more elegant, but in fact leaves the first eigenvector unchanged with the second eigenvector representing the voting fraction plus some noise. This produces a rather less interesting plot that looks like this: (these are data from the 1997 Parliament; the scaling is slightly different, but that makes no difference to the plot itself)

1997 Parliament, with voting fraction

The second idea is easy to explain and hard to justify. We take each MP's position (x, y), and plot them instead at (x/f, y/f), where f is the fraction of divisions in which they voted. This should move them out towards the edge of the plot, to join their political fellows. Implicitly, this makes the assumption that MPs are failing to attend votes, rather than choosing to abstain: the scaling is moving them to the position that they would be in had they voted in all divisions in the manner suggested by their votes in the divisions they did attend. This is obviously not right, but it's not so catastrophically wrong as to be useless, either. Here are two views of the difference this makes for the 1997 Parliament data:

1997 Parliament scaled/unscaled comparison

1997 Parliament scaled/unscaled

Applying this scaling, we get for the 1997 Parliament:

1997 Parliament, scaled

and for 2001:

2001 Parliament, scaled

Note that:

Before making any more comments, we should look at what the two eigenvectors mean. The two are quite different. Looking at the absolute values of the components -- that is, how strongly the votes in the various divisions contribute to an MP's horizontal position on the graph, we get this:

First eigenvector components

-- that is, the top 90% of divisions contribute about equally to the axis. Basically these are the divisions in which MPs from the Labour and Conservative parties voted on opposing sides; it is a `government/anti-government' axis. The majority of divisions are like this; typical examples include this division in which Conservative and Liberal Democrat members called for a Civil Service Bill, and Labour members opposed them; or this division on an amendment to the Criminal Justice Bill which was defeated by Labour.

The second one is rather different:

Second eigenvector components

It is dominated by a few divisions in which the Liberal Democrats opposed both the Labour and Conservative parties. Typical examples include this division on the case for an invasion of Iraq, or this on the withdrawal of state support from the families of asylum seekers. Essentially this is an `axis of Lib-Demmery'.

The actual list of divisions and component strengths which make up the two axes are here:

-- there are links from those pages to the pages for each division at The Public Whip.

Although the divisions voted on in the two Parliaments are obviously different, the axes retain their meanings between the two. So we can compare the positions of the parties between the two Parliaments. Basically we find,

These two points are consistent with Liberal Democrat strategy to move right better to compete with the Conservatives for votes in Conservative/Liberal Democrat seats. (Remember the `decapitation' strategy?) The change in Tory position is, I think, too small to say much about, but it's suggestive of another chapter in the endless Tory search for `clear blue water', except that here we're talking about separation from the Liberal Democrats, rather than those post-Thatcherites on the Labour benches. (And note that behaviour in Parliament is not interchangeable with policy as advertised to the public. The subjects of most divisions are chosen by the government, not the Conservative or Liberal Democrat parties; Opposition parties can't control the agenda in Parliament in the way they can in their manifestos and campaigns. So the waffle above should be taken heavily salted.)

Moving on,

It remains to say that there's a fair amount of handwaving in the above.

Another interesting exercise is to see where notable political personalities fall on the plot. Here are some examples, for 1997:

1997 Parliament notable MPs

And for 2001:

2001 Parliament notable MPs

If your browser supports Java, you can use Julian Todd's viewing applet to explore the data interactively, rather than just trusting me to pick MP names at random. Follow links for the 1997 Parliament; or the 2001 Parliament. (Disclaimer: I don't really do Java. So you're rather on your own with these. I don't have a browser which does Java, but the `appletviewer' tool from the Java development kit seems to do the right thing.)

I'm not sure how useful any of this is as a way to look at MPs' voting records, but it's vaguely fun and seems to be novel. Drop me a line if you can think of any interesting ways to use the data. Hopefully Francis and Julian will implement this for their MP map....


Copyright (c) 2004 Chris Lightfoot; available under a Creative Commons License.