Wednesday’s indicative votes in the House of Commons produced no definitive answer of the way forward. By using social network analysis showing the size of each voting bloc and ‘Hamming distances’ (ironically usually used for error correction), we can map how close MPs are to each other, giving an indication of how a coalition could be made if each block of MPs flipped their vote in order to form a Parliamentary consensus.

Brexit is currently turning out to a failed experiment in direct democracy, something I pointed out nearly three years ago.

However, with the House of Commons opening up data, it does allow us a rare insight into the goings on of the population and the MPs that are our representatives.

One interesting data source is released by the UK Parliament showing the voting record of every MP for every ‘division’ (vote). One particularly interesting vote was that done on Wednesday 27 March, where MPs were able to cast their votes for 8 motions:

Mr Baron’s motion B (No deal) ,

Nick Boles’s motion D (Common market 2.0) ,

George Eustice’s motion H (EFTA and EEA) ,

Mr Clarke’s motion J (Customs union) ,

Jeremy Corbyn’s motion K (Labour’s alternative plan) ,

Joanna Cherry’s motion L (Revocation to avoid no deal) ,

Margaret Beckett’s motion M (Confirmatory public vote) , and

Mr Fysh’s motion O (Contingent preferential arrangements)

By making a so-called bipartite network, we can map individual MPs to the votes for which they voted yes. This results in a map of MPs shown below.

(c) Dr Duncan Robertson duncanrobertson.com

While this is interesting, it doesn’t really show the distance between MPs’ voting intentions.

We can redraw the map by using the distance between MPs according to the votes they cast. We can do this by constructing a binary string of their votes. For simplicity, we count only the ‘aye’ or yes votes, and ignore abstentions and nos.

For instance, if an MP voted yes, no, no, yes, no, yes, yes, no, they would be given a string of 10010110, whereas if another MP voted no, no, yes, no, yes, yes, no, yes, they would be given a string of 00101101. So, what is the ‘distance’ between 10010110 and 00101101? For this, we use the Hamming distance – count the number of locations where there is a difference. In this case, the Hamming distance between the MPs is 6.

By constructing a graph of Hamming distances of 1, we can construct neighbours of individual groups of MPs. This is shown in the graph below.

I have listed the votes in the following order:

Common Market 2.0

Confirmatory Public Vote

Contingent Preferential Arrangement

Customs union

EFTA and EEA

Labour’s Alternative Plan

No Deal

Revocation to Avoid No Deal

(c) Dr Duncan Robertson duncanrobertson.com



However, this isn’t very useful, as it doesn’t show the type of MP that voted for each of these. So we can relabel the nodes with a representative MP from that bloc.

From this, you can work out the number of intermediate MPs to get to any other MPs. What is quite interesting is that every MP was just one vote away from another – no-one is isolated. Which, in some little way, gives us hope.

(c) Duncan Robertson duncanrobertson.com

We can then weight the edges to show the possible coalition that could be made if these blocs were to join. And here it is:

The size of each circle represents the number of MPs that voted the same way as the representative MP named on the circle, and the thickness of the links shows how many MPs would join together if one vote were flipped.

If the linked blocs join up, you can see how there could be a path to a Parliamentary majority – for the blocs to join, it would mean switching one vote from ‘aye’ to ‘no’ or vice versa.

For completeness, the list of MPs and their associated binary string is linked here. You can find the MPs that are part of each bloc by searching for the MP name in the label on the network graph. The Hamming distance between each and every MP is available on request. I leave it to the reader to construct an affinity matrix – or what I would call currently describe as a ‘Matrix of Hate’ for each MP pair.