30 January 2020

2019 General Election Results Analysis

Hello there. I love general elections. I get to turn into Peter Snow, by talking about exactly what happened and how it happened and what it meant.

Overview - Swing


Now, we'll start by looking at the swingometer. There was a 4.7% swing from Labour to Conservative. This was way above what the opinion polls were suggesting.



So what were the biggest swings, then? Well, the biggest swings aren't necessarily the biggest majorities overturned. Most of the really big swings, especially for Labour, were in really safe seats with next to no consequences for the incumbent.


What was really striking about the election is just how... normal the results are. There's not a huge divergence from the national picture and nor are there the big regional variations that we saw in 2017 (yes, the SNP did increase their vote share substantially, but in this context I'm referring solely to the Labour/Conservative battle). The swing was a little bigger in the North and a little less in London and the South, but overall the uniform national swing, the crudest model of working out the election results, was not too far off and certainly within the margin of error.

Here, we've put the arrow on the national swing, but for the regions (and for spacing reasons, we've amalgamated the North, Midlands, and South into three groups) we've coloured the appropriate number of boxes, each one representing one point of swing, representing the swing in that part of the UK. The swing, therefore, is not particularly regionally divergent this time around.


70% of the seats were within one standard deviation (3.5) of the national swing (4.7%). It's possible, therefore, to suggest that the standard deviation was quite large, but not particularly when you consider the regional swings ranged between 2.5% from Lab to Con (Scotland) to 8.4% from Lab to Con (North East). 445 of the results, therefore, fall between a 1.2% from Lab to Con and an 8.2% from Lab to Con, on a national picture. Yes, that leaves 187 seats outside of this range (including Buckingham and Chorley), but what it does indicate that the vast majority of these seats were quite safe.

Labour and the Conservatives


So this is the crucial bit: the crucial battlegrounds. Here are Labour's 100 easiest seats to win from the 2017 election; they needed 64 net gains to win an overall majority. And they came very, very, very short, making just one gain, Putney, from the Conservatives.


The Conservatives had such a good night - as you can tell from their attack board. Now, some of these were SNP so were not really on the table, but they've hit almost every single Labour target in here, missing only a handful of seats below the national swing. Indeed, they've even managed a few gains beyond this target board - an eventuality that very few people predicted, if anyone at all.

You can also see the Conservatives' success in the Labour defence, the so-called "red wall" that was breached. Labour's top 100 defences were battered, bruised, and Labour lost over one fifth of their seats. All of the following were red in 2017: the Conservatives and SNP almost wipe out the first column - one or two stalwarts hold on for Labour - and down the second column too, and most of the third column is gone too. One or two Conservative parachutists make it into the fourth column!

Liberal Democrats and SNP


What about the minor parties? The SNP, the Liberal Democrats? Well, for the Liberal Democrats, it was like 2010 in many ways, with a wave of optimism, Jo Swinson declaring she would win a majority... and then went down in terms of seats. Their vote share actually increased in many areas, but as the Conservatives' vote share also went up in the same key areas too, the swing was neglible in many areas, and certainly whilst Richmond Park was no surprise for a Lib Dem gain (with a swing needed of less than 0.1%), the only other two gains were from the SNP (again, a tiny 2017 majority), and St Albans, easily the Lib Dems' best result of the night, and was generally in line with the Con/LD swing in the East of England, albeit significantly larger in that one seat. The Liberal Democrats gained 8.4% of the vote in the South East, but this was useless to them as the swing from the Conservatives to the Lib Dems in the South East, 4.9%, was not theoretically big enough to wield any seats whatsoever, with Lewes (5.1% swing required) being target #1 in the South East (CON hold). However, there's no explaining their three Conservative losses, as they were all bucking the patterns. This goes some way to debunking the myth of "the Brexit election", for these parts of the country all voted Remain and yet went from LD to Con.


What's even more striking is Jo Swinson losing her seat in Dunbartonshire East. The SNP did not, in theory, do enough to take the seat, as they only experienced a 2.7% swing towards them from the Lib Dems, but in Dunbartonshire East, they managed to reach the 5.3% swing needed to unseat Jo Swinson. Losing Fife North East in return, therefore, was a strange one, as the swing would have pointed to a larger SNP majority this time around. Nonetheless, the SNP had a good night, cleaning up all but one of their top 12 targets and adding Renfrewshire East (from Con), Dunbartonshire East (from LD), and Aberdeen East (from Con) to their list. Other than Jo Swinson, however, these are not anomolies. Indeed, the Conservatives holding on is the anomolous result here, with Moray, Banff and Buchan, and Dumfries & Galloway theoretically being lost. The SNP, therefore, will be disappointed not to hit 50 seats again given they ought to have taken these seats. They only had one loss, which was Fife North East to the Lib Dems.


Was the Benjamin model a success?

Like any half-decent psephologist, I developed my own way of analysing the election results. This does not mean I am a predictor, it means I translate polls and votes into seats theoretically. My methodology is very similar to the exit poll prior to 2015, and uses regional breakdowns of votes to apply the regional swings to each seat in turn. This isn't that accurate, but then again neither is any system.

The only way to test the model, therefore, is to use the actual election results in terms of votes, and see what that would yield in terms of seats won. In other words, as though the actual election results was like an opinion poll, done by region as per my methodology. So... what do we come up with?

Headline figures (Benjamin model): CON 355 (-10), LAB 202 (-1), SNP 51 (+3), LD 18 (+6), PC 4 (nc), GRE 1 (nc).

How many of these seats did I get right, then? Well, there are 632 possible seats we modelled, albeit two of these were based on assumptions (Buckinghamshire - CON gain from SPK; Chorley - SPK gain from LAB), and 37 were incorrect. A hit rate, therefore of 595 out of 632 is not bad one bit. My model got 94% of seats correct. But let's see which seats our model did not predict correctly.

Now, of these 37 seats, 17 were within 2%, so these can simply be put down to "margin of error" and can be discounted, as they were effectively too close to call accurately. That leaves just 15 anomalies, and we'll look at each of these in turn:

Banff and Buchan:
Estimated result: SNP gain from CON
Actual result: CON hold

The Conservatives actually increased their majority in Banff and Buchan thanks largely to a collapse in the Labour vote, with the Labour vote down by 5%. The SNP didn't do particularly well either, only up 1.3%, and both of these factors combined to increase the Conservative majority against the projection of an SNP gain.

Battersea, Bedford, Cardiff North, Portsmouth South, Warwick and Leamington:
Estimated result: CON gain from LAB
Actual result: LAB hold

These results have been grouped together since they were all expected to be Conservative gains but were not. Three of them (Battersea, Cardiff North, Portsmouth South) were in the top 5 Con->Lab swings, and in Portsmouth South this came about from a collapse in the Lib Dem vote, indicating a LD->Lab movement in voters, perhaps tactically to prevent a Conservative gain, as the seat was ultra-marginal in 2017. Battersea, strangely, does the same thing but the other way round, a large Con->LD movement creating a mathematical swing to Labour, despite their vote share falling by 0.4%. Cardiff North represents an anomaly in the Conservative vote (down 6%) rather than a particularly good result for Labour. The other two seats, Warwick and Leamington and Bedford, just didn't swing hard enough.

Ceredigion:
Estimated result: LD gain from PC
Actual result: PC hold

Against the Welsh trends, Plaid Cymru held Ceredigion. A collapse in the Lib Dem vote was to blame here, losing 11% of their vote share for some reason. In Wales, the Lib Dems' vote share increased by 2.9%, so this is an anomaly that no one saw coming.

Carshalton and Wallington, Norfolk North:
Estimated result: LD hold
Actual result: CON gain from LD

Carshalton and Wallington was a bizarre result. The Labour vote was well down in London but in Carshalton, went to the Conservatives rather than the Liberal Democrats as was the case in most of London. The Lib Dem vote did not change on 2017, and with a Labour to Conservative swing of 5.1% - not entirely notable - it was the Lib Dem failure to increase their votes which did for them.

I'm not sure what happened in Norfolk North though. There appears to have been a direct LD->Con swing (Con up 17%, LD down 18.1%) and is arguably their worst result of the night. Unpopular MP? Local factors? This should not have happened.

Dunbartonshire East:
Estimated result: LD hold
Actual result: SNP gain from LD

Swinson effect? Being such a high-profile MP, we can put this one under "mitigating circumstances".

Heywood & Middleton, Leigh:
Estimated result: LAB hold
Actual result: CON gain from LAB

The two results against Labour which the Conservatives did better than expected, taking these seats despite the regional pattern indicating they wouldn't. Heywood and Middleton, scene of a shock 2nd place for UKIP in a 2014 by-election, almost repeated itself, with 8.3% for the Brexit Party and with Labour down 11%, this allowed the Conservative to take the seat. It was a similar story in Leigh, although on this occasion the Lab collapse split between Conservatives and the Brexit Party. 

Leeds North West, Sheffield Hallam:
Estimated result: LD gain from LAB
Actual result: LAB hold

Sheffield Hallam, Nick Clegg's former seat, represented very poorly by Jared O'Mara between 2017 and 2019, was almost a dead cert to go back to the Lib Dems. It was thought that there was an anti-Clegg vote in 2017 and this was almost certain to dissipate in 2019. But instead, the opposite appears to have happened. The Lib Dems have always said that they do better when an incumbent, a familiar face, is re-standing. Despite Nick Clegg being, well, Nick Clegg, this appears to have been the case here, with the Lib Dems' vote down 1.3%. On the other hand, Leeds North West was another collapse in Lib Dem votes, down 16%.

St Ives:
Estimated result: LD gain from CON
Actual result: CON hold

St Ives, the most southerly constituency in mainland Britain, had been Lib Dem for a long time before 2015, but since then has remained Conservative. Andrew George almost resisted the 2015 Lib Dem collapse, but I suspect that now, his personal vote is dwindling, having now stood unsuccessfully three times in a row, he is no longer as familiar a face in St Ives as he once was, hence the small drop in Lib Dem vote.

So that's all the anomalies dealt with. Now, to look at the parties' best and worst results.


(That list of "others" drops took forever.)

A lot of these don't actually result in any gains or losses, perhaps indicating voter "hapathy" given the safeness of these seats.

Most of these Labour collapses are in the North of England, for the Conservatives they're more spread out but have a significant portion in the South East and East Anglia; the Lib Dem collapses are everywhere, and Plaid Cymru's collapses, making up 4 of the top 10 other losses, are all in Wales.

So, those are some stats surrounding the election.

If anyone wants to know anything, my Twitter DMs (@MrRhysBenjamin) are open, so ask away.