Introduction

I was curious about the EU Referendum Rules triggering a 2nd EU Referendum petition visible at https://petition.parliament.uk/petitions/131215. I started downloading the petition data every 10 mins from 10 am on Sat 25th and later upped the rate to every 2 mins. There is simple analysis presented below and you will be able to do more if you want using the data (see https://github.com/jefferis/EURef2Petition)

Summary

  1. About 95% of signatories are UK residents
  2. The petition was receiving about 2000 UK signatures/min at its peak
  3. Support is highest in Green (15.9%, n=1) and Lib Dem (6.1%, n=8) constituencies but there is then not much of a step down to Con (5.6%) or Lab (5.0%)
  4. SNP constituencies (3.1%) are signing at approx half the rate that you might expect giving the strong remain vote in Scotland.
  5. At a regional level, Scotland (3.2%) and Northern Ireland (3.4%) have signature rates less than half of the South East (6.6%) or London (9.0%)
  6. There is a weak but still very significant negative correlation between the proportion of older voters in a constituency and the number of signatures.
  7. There is a very strong positive correlation (R^2>0.8) between constituency level referendum results and the rate of signing the petition.
  8. In this model, rates for Wales and especially Scotland were lower
  9. I found evidence for about 30,000 dubious signatures using UK post-codes in 2 constituencies on Sun am. petition.parliament.uk removed these within hours (without any input from me).
  10. About 3340 additional fake signatures were added on Mon later afternoon/evening with a postcode in the Bracknell constituency.
  11. There were a similar number of irregularities in non-UK signatures (at a higher proportional rate since the number of non-UK signatures is only 5% of the total). I did not analyse these further since they are not relevant to the petition process.

Load Data

# summary data frame
sdf=readRDS("signature_data.rds") 
# list of all raw data
pet_data=readRDS('munged_petition_data.rds')

We can get plot the total signatures and get a quick estimate of the number of signatures per minute since I started collecting data.

library(ggplot2)

qplot(time, total, data=sdf, ylim=c(0,NA), geom='line')

mylm=lm(total~time, data=sdf)
summary(mylm)
## 
## Call:
## lm(formula = total ~ time, data = sdf)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1685282  -136115    63757   234621   329373 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.394e+09  7.460e+07  -99.12   <2e-16 ***
## time         5.042e+00  5.085e-02   99.17   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 289000 on 2988 degrees of freedom
## Multiple R-squared:  0.767,  Adjusted R-squared:  0.7669 
## F-statistic:  9834 on 1 and 2988 DF,  p-value: < 2.2e-16

We can repeat the plot but only with UK signatures (although British citizens abrorad have the right to sign there is more data available for UK residents)

# the same but UK signatures only by using consituency table
sdf$uksigs=sapply(pet_data, function(x) sum(x$data$attributes$signatures_by_constituency$signature_count))

# ggplot needs data in a *tall* rather than wide format
library(tidyr)
sdftall=gather(sdf[-1],count.type, n, -time)

qplot(time, n, col=count.type, data=sdftall, geom='line', 
      ylim=c(0,NA), ylab='signatures', xlab=NULL) +
  scale_x_datetime(date_labels="%a %H:%M", date_breaks="12 hours") +
  theme(legend.position = c(0.1, .9))

Note that the 3810617 UK signatures make up 94.2213581% of the total.

You can see a couple of obvious dislocations. The up-tick of about 10,000 non-UK signatures shortly after 3am Sunday obviously looks dubious and is characterised in further detail below.

Signatures per min

We can take a look at how the number of signatures per minute has evolved:

with(sdf, 
     qplot(time[-1], 
           diff(total)/(as.integer(diff(time))/60), 
           ylim=c(0,NA),
           ylab="Signatures /min",
           xlab='Time') +
       scale_x_datetime(date_labels="%a %H:%M", date_breaks="12 hours")
     +stat_smooth(method = 'loess', span=.03)
)
## Warning: Removed 6 rows containing non-finite values (stat_smooth).
## Warning: Removed 6 rows containing missing values (geom_point).

You can see that there is one outlier of >10,000 signatures per minute, corresponding to the blip in non-UK signatures at 3am on Sunday mentioned earlier. There are futher small blips (~1000-1500) on Monday either side of 12:00 but these turn out to be non-UK signatures so I have ignored them.

Let’s repeat with UK signatures only:

with(sdf, 
     qplot(time[-1], 
           diff(uksigs)/(as.integer(diff(time))/60), 
           ylim=c(0,NA),
           ylab="Signatures /min",
           xlab='Time') +
       scale_x_datetime(date_labels="%a %H:%M", date_breaks="12 hours")
     +stat_smooth(method = 'loess', span=.03)
)
## Warning: Removed 2 rows containing non-finite values (stat_smooth).
## Warning: Removed 2 rows containing missing values (geom_point).

So I am pleased to report that UK does actually sleep during the small hours of the morning (though some people seemed to be awake during the early hours of Sunday - see below). Overall this looks a reasonable activity profile and shows that at the peak, UK signatures were coming in at over 2000/min.

Comparison with constituency level information

petition.parliament.uk releases a break down of data by constituency. We can use this to compare the petition data with constituency information including party, demographics etc. See Acknowledgements for data sources.

by.mps=readRDS('general_election_by.mps.rds')
all.winners <-  by.mps %>% 
  select(Constituency, Votes, Party) %>% 
  arrange(desc(Votes)) %>%
  data.frame()

constituency_names.df <- read.csv("constituency_names.csv", header=TRUE, row.names=1)
all.winners=merge(all.winners, constituency_names.df)

library(readxl)
pop=read_excel("Population-by-age.xlsx", sheet = "Data")

Let’s list some basic info for the top and bottom 20 constituencies. Note that sig_rate is the number of signatures per head of population (all ages):

euref=pet_data[[length(pet_data)]]

sigdf=euref$data$attributes$signatures_by_constituency
sigdf=merge(sigdf, pop, by.x='ons_code', by.y = 'ONSConstID')
sigdf$sig_rate=sigdf$signature_count/sigdf$PopTotalConstNum

sigdf=merge(sigdf, all.winners, by.x='ons_code', by.y = 'id')
sigdf %>% 
  arrange(desc(sig_rate)) %>% 
  select(c(ons_code:signature_count, sig_rate, Pop65ConstRate, Party)) %>% 
  top_n(20, sig_rate) %>%
  kable
ons_code name mp signature_count sig_rate Pop65ConstRate Party
E14000752 Hornsey and Wood Green Catherine West MP 23640 0.1826357 0.1027287 Labour
E14000763 Islington North Rt Hon Jeremy Corbyn MP 19935 0.1824430 0.0892035 Labour
E14000602 Bristol West Thangam Debbonaire MP 23188 0.1781130 0.0763210 Labour
E14000598 Brighton, Pavilion Caroline Lucas MP 19100 0.1767847 0.1061634 Green Party
E14000549 Battersea Jane Ellison MP 18864 0.1700563 0.0835136 Conservative
E14000896 Richmond Park Zac Goldsmith MP 20158 0.1655878 0.1413140 Conservative
E14000727 Hampstead and Kilburn Tulip Siddiq MP 22407 0.1641972 0.1186393 Labour
E14000764 Islington South and Finsbury Emily Thornberry MP 17976 0.1608403 0.0883208 Labour
E14000673 Dulwich and West Norwood Helen Hayes MP 18281 0.1607064 0.0884892 Labour
E14000998 Tooting Dr Rosena Allin-Khan MP 17155 0.1595473 0.0879254 Labour
E14000768 Kensington Victoria Borwick MP 18010 0.1581628 0.1305524 Conservative
E14000887 Putney Rt Hon Justine Greening MP 14818 0.1581531 0.1076803 Conservative
E14000639 Cities of London and Westminster Rt Hon Mark Field MP 18639 0.1581426 0.1269705 Conservative
E14000629 Chelsea and Fulham Rt Hon Greg Hands MP 16603 0.1578052 0.1293008 Conservative
E14001040 Wimbledon Stephen Hammond MP 15068 0.1552298 0.1322564 Conservative
E14000721 Hackney South and Shoreditch Meg Hillier MP 19406 0.1530623 0.0731238 Labour
E14001008 Vauxhall Kate Hoey MP 18066 0.1522848 0.0748780 Labour
E14000720 Hackney North and Stoke Newington Ms Diane Abbott MP 20513 0.1504272 0.0704286 Labour
E14000750 Holborn and St Pancras Keir Starmer MP 21486 0.1499979 0.1099189 Labour
E14001005 Twickenham Dr Tania Mathias MP 17282 0.1475190 0.1432425 Conservative
sigdf %>% 
  arrange(desc(sig_rate)) %>% 
  select(c(ons_code:signature_count, sig_rate, Pop65ConstRate, Party)) %>% 
  top_n(20, desc(sig_rate)) %>%
  kable
ons_code name mp signature_count sig_rate Pop65ConstRate Party
E14001030 West Bromwich West Mr Adrian Bailey MP 1937 0.0207639 0.1451649 Labour
E14000716 Great Grimsby Melanie Onn MP 1818 0.0205784 0.1664837 Labour
E14000891 Redcar Anna Turley MP 1783 0.0205427 0.2059796 Labour
S14000004 Angus Mike Weir MP 1753 0.0202338 0.2143888 Scottish National Party
S14000032 Glasgow North East Anne McLaughlin MP 1729 0.0201454 0.1500944 Scottish National Party
S14000040 Kilmarnock and Loudoun Alan Brown MP 1907 0.0198317 0.1886043 Scottish National Party
S14000059 West Dunbartonshire Martin Docherty-Hughes MP 1758 0.0195921 0.1754263 Scottish National Party
S14000035 Glasgow South West Chris Stephens MP 1663 0.0193723 0.1473487 Scottish National Party
E14000582 Boston and Skegness Matt Warman MP 2006 0.0193074 0.2290323 Conservative
E14000771 Kingston upon Hull East Karl Turner MP 1774 0.0192950 0.1653343 Labour
E14000677 Easington Grahame Morris MP 1576 0.0190428 0.1877334 Labour
E14000669 Doncaster North Rt Hon Edward Miliband MP 1853 0.0188191 0.1805736 Labour
S14000011 Coatbridge, Chryston and Bellshill Philip Boswell MP 1771 0.0183023 0.1547786 Scottish National Party
E14000542 Barnsley East Michael Dugher MP 1655 0.0177877 0.1845618 Labour
S14000047 Motherwell and Wishaw Marion Fellows MP 1517 0.0165173 0.1650643 Scottish National Party
E14001011 Walsall North Mr David Winnick MP 1555 0.0162030 0.1643013 Labour
S14000036 Glenrothes Peter Grant MP 1415 0.0158914 0.1903821 Scottish National Party
S14000003 Airdrie and Shotts Neil Gray MP 1336 0.0152148 0.1592775 Scottish National Party
S14000007 Banff and Buchan Dr Eilidh Whiteford MP 1378 0.0149482 0.1921245 Scottish National Party
S14000030 Glasgow East Natalie McGarry MP 1236 0.0138658 0.1579426 Scottish National Party

From which a few interesting points emerge. Most of the top constituencies are in the Bremain hotspots in London/SE with Con or Lab MPs. However interestingly the bottom 20 include 11 SNP constituencies (many of which presumably voted to remain). It looks like the Scots are not involved with this process.

We can look at a summary by Party:

sigdf %>%
  group_by(Party) %>%
  summarise(`Mean Sig Rate`=mean(sig_rate), `Constituencies`=length(sig_rate)) %>% 
  arrange(desc(`Mean Sig Rate`)) %>%
  kable()
Party Mean Sig Rate Constituencies
Green Party 0.1767847 1
Liberal Democrat 0.0682556 8
Conservative 0.0625805 331
Social Democratic & Labour Party 0.0568346 3
Plaid Cymru 0.0568218 3
Labour 0.0561606 232
Independent 0.0504711 1
Democratic Unionist Party 0.0341348 8
Scottish National Party 0.0337721 56
Ulster Unionist Party 0.0317342 2
Sinn Fein 0.0305904 4
UKIP 0.0236869 1

all of which makes pretty good sense to me (Green and Lib Dem constituencies highest) Cons/Lab similarly. SNP lower than might be expected as noted above.

We can look at a summary by Region:

sigdf %>%
  group_by(RegionName) %>%
  summarise(`Mean Sig Rate`=mean(sig_rate), `Constituencies`=length(sig_rate)) %>% 
  arrange(desc(`Mean Sig Rate`)) %>%
  kable()
RegionName Mean Sig Rate Constituencies
London 0.1011557 73
South East 0.0733696 84
South West 0.0670911 55
East of England 0.0580005 58
North West 0.0505099 75
Wales 0.0486292 40
East Midlands 0.0462598 46
Yorkshire and The Humber 0.0445738 54
West Midlands 0.0427558 59
North East 0.0381505 29
Northern Ireland 0.0377713 18
Scotland 0.0347947 59

To my view this re-emphasises the fact that Scotland and Northern Ireland, which both voted to remain, are not engaging with this petition. However, it may be that this is not unusual (e.g. maybe they are not interested in petitioning the Westminster legislature in general). This needs to be checked with other petitions.

We can compare the signature rate with some demographic data:

qplot(data=sigdf, sig_rate, Pop65ConstRate, xlim=c(0,NA), ylim=c(0,NA))+
  stat_smooth(method = 'lm')

eupet.lm=lm(sig_rate~Pop65ConstRate, data=sigdf)
summary(eupet.lm)
## 
## Call:
## lm(formula = sig_rate ~ Pop65ConstRate, data = sigdf)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.04805 -0.02327 -0.00548  0.01581  0.10940 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     0.094297   0.004733  19.924  < 2e-16 ***
## Pop65ConstRate -0.204997   0.025386  -8.075 3.29e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03 on 648 degrees of freedom
## Multiple R-squared:  0.09143,    Adjusted R-squared:  0.09003 
## F-statistic: 65.21 on 1 and 648 DF,  p-value: 3.292e-15

As expected constituencies with higher levels of over 65s are signing less. Now it is possible that some fraction of this effect is because older people are less likely to engage with the petitions website. Is this true?

Comparison with EU Pamphlet petition

The petition [STOP CAMERON spending British taxpayers’ money on Pro-EU Referendum leaflets] (https://petition.parliament.uk/petitions/116762) is on a similar topic but is likely to appeal to out rather than remain voters:

library(jsonlite)
eupamphlet.raw=fromJSON("https://petition.parliament.uk/petitions/116762.json")
eupamphlet.sigdf=eupamphlet.raw$data$attributes$signatures_by_constituency
# merge in constituency level demographic data used earlier
eupamphlet.sigdf=merge(eupamphlet.sigdf, pop, by.x='ons_code', by.y = 'ONSConstID')
# compute 
eupamphlet.sigdf = mutate(eupamphlet.sigdf, sig_rate=signature_count/PopTotalConstNum)

We can then compare the proportion of over 65s in each constituency with the rate of signatures:

qplot(data=eupamphlet.sigdf, sig_rate, Pop65ConstRate/`Pop20-64ConstRate`, xlim=c(0,NA), ylim=c(0,NA))+
  stat_smooth(method = 'lm')

eupamhlet.lm=lm(sig_rate~I(Pop65ConstRate/`Pop20-64ConstRate`), data=eupamphlet.sigdf)
summary(eupamhlet.lm)
## 
## Call:
## lm(formula = sig_rate ~ I(Pop65ConstRate/`Pop20-64ConstRate`), 
##     data = eupamphlet.sigdf)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0030086 -0.0005074  0.0000482  0.0006286  0.0035698 
## 
## Coefficients:
##                                        Estimate Std. Error t value
## (Intercept)                           0.0004234  0.0001318   3.213
## I(Pop65ConstRate/`Pop20-64ConstRate`) 0.0094486  0.0004006  23.584
##                                       Pr(>|t|)    
## (Intercept)                            0.00138 ** 
## I(Pop65ConstRate/`Pop20-64ConstRate`)  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0009869 on 648 degrees of freedom
## Multiple R-squared:  0.4619, Adjusted R-squared:  0.4611 
## F-statistic: 556.2 on 1 and 648 DF,  p-value: < 2.2e-16

Indeed there is a strong positive correlation (R^2=.45) and the effect size is much stronger than the negative correlation for the 2nd EU referendum signature.

Comparison with Jeremy Hunt Petition

Ideally one would try to scrape as many of the petitions as possible to provide a baseline, but for the time being I just took one other large petition that did not strike me as being particularly likely to result in an age divide.

library(jsonlite)
jhunt.raw=fromJSON("https://petition.parliament.uk/petitions/121152.json")
jhunt.sigdf=jhunt.raw$data$attributes$signatures_by_constituency
# merge in constituency level demographic data used earlier
jhunt.sigdf=merge(jhunt.sigdf, pop, by.x='ons_code', by.y = 'ONSConstID')
# compute 
jhunt.sigdf = mutate(jhunt.sigdf, sig_rate=signature_count/PopTotalConstNum)

We can then compare the proportion of over 65s in each constituency with the rate of signatures:

qplot(data=jhunt.sigdf, sig_rate, Pop65ConstRate, xlim=c(0,NA), ylim=c(0,NA))+
  stat_smooth(method = 'lm')

jhunt.lm=lm(sig_rate~Pop65ConstRate, data=jhunt.sigdf)
summary(jhunt.lm)
## 
## Call:
## lm(formula = sig_rate ~ Pop65ConstRate, data = jhunt.sigdf)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0048679 -0.0014296 -0.0002853  0.0009656  0.0149007 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     0.0072419  0.0003709  19.524  < 2e-16 ***
## Pop65ConstRate -0.0121455  0.0019896  -6.105 1.78e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.002351 on 648 degrees of freedom
## Multiple R-squared:  0.05438,    Adjusted R-squared:  0.05292 
## F-statistic: 37.27 on 1 and 648 DF,  p-value: 1.776e-09

Now if you look at linear model summaries, you’ll see that the slope of the negative relationship for the euref petition is almost 15x greater than the Hunt petition. However we need to adjust for the fact that signature rate is much higher for the EU petition. We’ll adjust by the ratio of the mean signature rates for the two petitions.

coef(eupet.lm)/coef(jhunt.lm)*sum(jhunt.sigdf$sig_rate)/sum(sigdf$sig_rate)
##    (Intercept) Pop65ConstRate 
##       1.147698       1.487690

This gives a factor of 1.5 difference in the age-response slope (EU ref has stronger negative age correlation).

These results support an asymmetry in the petition age profile consistent with the much higher levels of support for leave voters.

All of which suggests to me that there appears to be a real negative relationship between age and proportion of petition signatures on this new referendum petition.

Comparison with Referendum Predictions

Let’s load up the referendum data from the electoral commission ## Referendum data

# euref <- read.csv("http://www.electoralcommission.org.uk/__data/assets/file/0014/212135/EU-referendum-result-data.csv")
euref <- readRDS('EU-referendum-result-data.rds')

Now the problem is that the referendum was reported not by constituencies but by 382 areas, but maybe we can match up some of these as a starting point.

nrow(euref)
## [1] 382
inboth=intersect(sigdf$ConstituencyName, euref$Area)
length(inboth)
## [1] 151

OK so 151 referendum regions and constituencies have the same name.

Let’s use these matches to look at some relationships:

sigdf2=merge(sigdf, euref, by.x='ConstituencyName', by.y='Area')
qplot(data=sigdf2,Pct_Remain,sig_rate)+geom_smooth(method = 'lm')

Hmm, there are some points that are rather separated from the rest. Just a hunch, but let’s model the different member countries of the UK separately.

qplot(data=sigdf2,Pct_Remain,sig_rate*100, col=Nation, 
      xlab="Percent Voting Remain", ylab='Percent Signing Petition',
      main=paste("Petition vs Referendum Results for",nrow(sigdf2), "UK Constituencies"))+
  geom_smooth(method = 'lm')+
  theme(legend.position = c(0.1, .8), legend.title=element_blank())

Yup, very large difference between Scotland and England / Wales. We can also look at the terms in the linear model that reflect this:

euref.lm=lm(sig_rate~Pct_Remain+Nation,data=sigdf2)
euref.lm
## 
## Call:
## lm(formula = sig_rate ~ Pct_Remain + Nation, data = sigdf2)
## 
## Coefficients:
##    (Intercept)      Pct_Remain  NationScotland     NationWales  
##       -0.05988         0.00267        -0.07187        -0.01519
summary(euref.lm)
## 
## Call:
## lm(formula = sig_rate ~ Pct_Remain + Nation, data = sigdf2)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.033774 -0.005574 -0.000074  0.005666  0.021745 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -0.0598797  0.0044853  -13.35  < 2e-16 ***
## Pct_Remain      0.0026702  0.0001022   26.12  < 2e-16 ***
## NationScotland -0.0718715  0.0034848  -20.62  < 2e-16 ***
## NationWales    -0.0151908  0.0037509   -4.05 8.26e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.009663 on 147 degrees of freedom
## Multiple R-squared:  0.8352, Adjusted R-squared:  0.8319 
## F-statistic: 248.4 on 3 and 147 DF,  p-value: < 2.2e-16

Note that this full model has a very high R^2 >0.8. So, not that surprisingly, it seems that the knowing how people voted in the referendum is a very strong predictor of whether they signed this petition. Residuals in either direction might be evidence of regret (which polls have suggested to 2-3x more common in leave than remain voters). There looks to be a small up-tick in constituencies that were overwhelmingly for leave. However further work is required to match up constituency level data with referendum areas before drawing stronger conclusions.

Predicting which constituencie voted to leave

We can use the signature distributions to predict which constituencies voted to leave/remain in the EU. We need to drop Northern Ireland since we have no constituency level information for that

# Make a model for data where we have matched constits vs regions
# (poorly but apparently with good predictive power)
# Could also use percentage of over 65s as additional predictor
euref.lm2=lm(Pct_Remain~sig_rate+Nation,data=sigdf2)

summary(euref.lm2)
## 
## Call:
## lm(formula = Pct_Remain ~ sig_rate + Nation, data = sigdf2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.4839 -2.0692 -0.1633  2.0266 11.3530 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     26.0898     0.7111  36.689  < 2e-16 ***
## sig_rate       308.1248    11.7956  26.122  < 2e-16 ***
## NationScotland  25.4609     1.0229  24.891  < 2e-16 ***
## NationWales      4.9475     1.2799   3.866 0.000166 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.282 on 147 degrees of freedom
## Multiple R-squared:  0.8761, Adjusted R-squared:  0.8736 
## F-statistic: 346.5 on 3 and 147 DF,  p-value: < 2.2e-16
# make new data set with everything except NI
no.ni=droplevels(subset(sigdf, Nation!="Northern Ireland"))

no.ni$pred_remain=predict(euref.lm2, no.ni)

no.ni$eurpred_binary=ifelse(no.ni$pred_remain>50, "Remain", "Leave")
table(no.ni$Party, no.ni$eurpred_binary) %>% kable
Leave Remain
Conservative 254 77
Labour 188 44
Scottish National Party 0 56
Liberal Democrat 3 5
Plaid Cymru 2 1
Green Party 0 1
UKIP 1 0
no.ni %>% 
  select(ConstituencyName,mp, eurpred_binary, pred_remain, Party, Nation, ons_code) %>% 
  kable
ConstituencyName mp eurpred_binary pred_remain Party Nation ons_code
1 Aldershot Sir Gerald Howarth MP Leave 41.12979 Conservative England E14000530
2 Aldridge-Brownhills Wendy Morton MP Leave 35.05970 Conservative England E14000531
3 Altrincham and Sale West Mr Graham Brady MP Remain 56.43607 Conservative England E14000532
4 Amber Valley Nigel Mills MP Leave 35.66530 Conservative England E14000533
5 Arundel and South Downs Rt Hon Nick Herbert MP Remain 53.12371 Conservative England E14000534
6 Ashfield Gloria De Piero MP Leave 33.20189 Labour England E14000535
7 Ashford Rt Hon Damian Green MP Leave 41.97583 Conservative England E14000536
8 Ashton-under-Lyne Angela Rayner MP Leave 36.22688 Labour England E14000537
9 Aylesbury Rt Hon David Lidington MP Leave 44.95548 Conservative England E14000538
10 Banbury Victoria Prentis MP Leave 46.71961 Conservative England E14000539
11 Barking Rt Hon Dame Margaret Hodge MP Leave 38.74332 Labour England E14000540
12 Barnsley Central Dan Jarvis MP Leave 33.25011 Labour England E14000541
13 Barnsley East Michael Dugher MP Leave 31.57059 Labour England E14000542
14 Barrow and Furness John Woodcock MP Leave 37.37841 Labour England E14000543
15 Basildon and Billericay Mr John Baron MP Leave 37.85162 Conservative England E14000544
16 Basingstoke Rt Hon Maria Miller MP Leave 44.60582 Conservative England E14000545
17 Bassetlaw John Mann MP Leave 34.49136 Labour England E14000546
18 Bath Ben Howlett MP Remain 66.79669 Conservative England E14000547
19 Batley and Spen NA Leave 37.56293 Labour England E14000548
20 Battersea Jane Ellison MP Remain 78.48832 Conservative England E14000549
21 Beaconsfield Rt Hon Dominic Grieve QC MP Remain 53.12072 Conservative England E14000550
22 Beckenham Bob Stewart MP Remain 53.73201 Conservative England E14000551
23 Bedford Richard Fuller MP Leave 43.46232 Conservative England E14000552
24 Bermondsey and Old Southwark Neil Coyle MP Remain 65.30017 Labour England E14000553
25 Berwick-upon-Tweed Mrs Anne-Marie Trevelyan MP Leave 39.82992 Conservative England E14000554
26 Bethnal Green and Bow Rushanara Ali MP Remain 68.10053 Labour England E14000555
27 Beverley and Holderness Graham Stuart MP Leave 39.65634 Conservative England E14000556
28 Bexhill and Battle Huw Merriman MP Leave 44.59756 Conservative England E14000557
29 Bexleyheath and Crayford Rt Hon David Evennett MP Leave 38.45023 Conservative England E14000558
30 Birkenhead Rt Hon Frank Field MP Leave 40.24149 Labour England E14000559
31 Birmingham, Edgbaston Rt Hon Gisela Stuart MP Leave 46.08723 Labour England E14000560
32 Birmingham, Erdington Jack Dromey MP Leave 35.33647 Labour England E14000561
33 Birmingham, Hall Green Mr Roger Godsiff MP Leave 49.79930 Labour England E14000562
34 Birmingham, Hodge Hill Rt Hon Liam Byrne MP Leave 36.73856 Labour England E14000563
35 Birmingham, Ladywood Shabana Mahmood MP Leave 41.94922 Labour England E14000564
36 Birmingham, Northfield Richard Burden MP Leave 37.11388 Labour England E14000565
37 Birmingham, Perry Barr Mr Khalid Mahmood MP Leave 38.21451 Labour England E14000566
38 Birmingham, Selly Oak Steve McCabe MP Leave 45.28274 Labour England E14000567
39 Birmingham, Yardley Jess Phillips MP Leave 36.94961 Labour England E14000568
40 Bishop Auckland Helen Goodman MP Leave 35.14629 Labour England E14000569
41 Blackburn Kate Hollern MP Leave 40.07895 Labour England E14000570
42 Blackley and Broughton Graham Stringer MP Leave 38.62033 Labour England E14000571
43 Blackpool North and Cleveleys Paul Maynard MP Leave 34.50704 Conservative England E14000572
44 Blackpool South Gordon Marsden MP Leave 33.02344 Labour England E14000573
45 Blaydon Mr David Anderson MP Leave 39.71593 Labour England E14000574
46 Blyth Valley Mr Ronnie Campbell MP Leave 35.91569 Labour England E14000575
47 Bognor Regis and Littlehampton Nick Gibb MP Leave 38.07265 Conservative England E14000576
48 Bolsover Mr Dennis Skinner MP Leave 33.47682 Labour England E14000577
49 Bolton North East Mr David Crausby MP Leave 38.12152 Labour England E14000578
50 Bolton South East Yasmin Qureshi MP Leave 35.91872 Labour England E14000579
51 Bolton West Chris Green MP Leave 39.45415 Conservative England E14000580
52 Bootle Peter Dowd MP Leave 40.84353 Labour England E14000581
53 Boston and Skegness Matt Warman MP Leave 32.03886 Conservative England E14000582
54 Bosworth David Tredinnick MP Leave 39.23591 Conservative England E14000583
55 Bournemouth East Mr Tobias Ellwood MP Leave 45.90306 Conservative England E14000584
56 Bournemouth West Conor Burns MP Leave 44.11753 Conservative England E14000585
57 Bracknell Dr Phillip Lee MP Leave 45.49704 Conservative England E14000586
58 Bradford East Imran Hussain MP Leave 36.79324 Labour England E14000587
59 Bradford South Judith Cummins MP Leave 33.74655 Labour England E14000588
60 Bradford West Naz Shah MP Leave 39.23720 Labour England E14000589
61 Braintree James Cleverly MP Leave 39.93232 Conservative England E14000590
62 Brent Central Dawn Butler MP Leave 49.28702 Labour England E14000591
63 Brent North Barry Gardiner MP Leave 44.83922 Labour England E14000592
64 Brentford and Isleworth Ruth Cadbury MP Remain 60.04562 Labour England E14000593
65 Brentwood and Ongar Rt Hon Sir Eric Pickles MP Leave 43.70215 Conservative England E14000594
66 Bridgwater and West Somerset Mr Ian Liddell-Grainger MP Leave 38.57319 Conservative England E14000595
67 Brigg and Goole Andrew Percy MP Leave 34.58482 Conservative England E14000596
68 Brighton, Kemptown Simon Kirby MP Remain 58.35135 Conservative England E14000597
69 Brighton, Pavilion Caroline Lucas MP Remain 80.56153 Green Party England E14000598
70 Bristol East Kerry McCarthy MP Leave 48.59807 Labour England E14000599
71 Bristol North West Charlotte Leslie MP Remain 55.81347 Conservative England E14000600
72 Bristol South Karin Smyth MP Remain 52.49776 Labour England E14000601
73 Bristol West Thangam Debbonaire MP Remain 80.97081 Labour England E14000602
74 Broadland Rt Hon Keith Simpson MP Leave 43.81521 Conservative England E14000603
75 Bromley and Chislehurst Robert Neill MP Remain 51.72656 Conservative England E14000604
76 Bromsgrove Rt Hon Sajid Javid MP Leave 42.78921 Conservative England E14000605
77 Broxbourne Mr Charles Walker MP Leave 38.97037 Conservative England E14000606
78 Broxtowe Rt Hon Anna Soubry MP Leave 46.41295 Conservative England E14000607
79 Buckingham Rt Hon John Bercow MP Remain 53.76580 Conservative England E14000608
80 Burnley Julie Cooper MP Leave 33.88369 Labour England E14000609
81 Burton Andrew Griffiths MP Leave 36.74258 Conservative England E14000610
82 Bury North Mr David Nuttall MP Leave 40.68554 Conservative England E14000611
83 Bury South Mr Ivan Lewis MP Leave 41.79414 Labour England E14000612
84 Bury St Edmunds Jo Churchill MP Leave 43.54106 Conservative England E14000613
85 Calder Valley Craig Whittaker MP Leave 44.90666 Conservative England E14000614
86 Camberwell and Peckham Rt Hon Harriet Harman QC MP Remain 61.93698 Labour England E14000615
87 Camborne and Redruth George Eustice MP Leave 41.55839 Conservative England E14000616
88 Cambridge Daniel Zeichner MP Remain 70.94921 Labour England E14000617
89 Cannock Chase Amanda Milling MP Leave 33.27786 Conservative England E14000618
90 Canterbury Mr Julian Brazier MP Remain 52.62869 Conservative England E14000619
91 Carlisle John Stevenson MP Leave 36.26863 Conservative England E14000620
92 Carshalton and Wallington Rt Hon Tom Brake MP Leave 45.21675 Liberal Democrat England E14000621
93 Castle Point Rebecca Harris MP Leave 34.06781 Conservative England E14000622
94 Central Devon Mel Stride MP Remain 51.56268 Conservative England E14000623
95 Central Suffolk and North Ipswich Dr Poulter MP Leave 44.97346 Conservative England E14000624
96 Charnwood Edward Argar MP Leave 41.71374 Conservative England E14000625
97 Chatham and Aylesford Tracey Crouch MP Leave 36.22020 Conservative England E14000626
98 Cheadle Mary Robinson MP Remain 53.35801 Conservative England E14000627
99 Chelmsford Rt Hon Sir Simon Burns MP Leave 45.14724 Conservative England E14000628
100 Chelsea and Fulham Rt Hon Greg Hands MP Remain 74.71346 Conservative England E14000629
101 Cheltenham Alex Chalk MP Remain 53.87328 Conservative England E14000630
102 Chesham and Amersham Rt Hon Cheryl Gillan MP Remain 58.69515 Conservative England E14000631
103 Chesterfield Toby Perkins MP Leave 37.86235 Labour England E14000632
104 Chichester Rt Hon Andrew Tyrie MP Remain 50.61031 Conservative England E14000633
105 Chingford and Woodford Green Rt Hon Iain Duncan Smith MP Leave 49.62666 Conservative England E14000634
106 Chippenham Michelle Donelan MP Leave 49.48050 Conservative England E14000635
107 Chipping Barnet Rt Hon Theresa Villiers MP Remain 59.23494 Conservative England E14000636
108 Chorley Rt Hon Lindsay Hoyle MP Leave 39.58510 Labour England E14000637
109 Christchurch Mr Christopher Chope MP Leave 42.93365 Conservative England E14000638
110 Cities of London and Westminster Rt Hon Mark Field MP Remain 74.81742 Conservative England E14000639
111 City of Chester Christian Matheson MP Remain 51.37342 Labour England E14000640
112 City of Durham Dr Roberta Blackman-Woods MP Leave 45.06139 Labour England E14000641
113 Clacton Mr Douglas Carswell MP Leave 33.38830 UKIP England E14000642
114 Cleethorpes Martin Vickers MP Leave 33.82607 Conservative England E14000643
115 Colchester Will Quince MP Leave 44.90643 Conservative England E14000644
116 Colne Valley Jason McCartney MP Leave 43.37428 Conservative England E14000645
117 Congleton Fiona Bruce MP Leave 44.69437 Conservative England E14000646
118 Copeland Mr Jamie Reed MP Leave 37.12644 Labour England E14000647
119 Corby Tom Pursglove MP Leave 39.10811 Conservative England E14000648
120 Coventry North East Colleen Fletcher MP Leave 36.87296 Labour England E14000649
121 Coventry North West Mr Geoffrey Robinson MP Leave 39.22114 Labour England E14000650
122 Coventry South Mr Jim Cunningham MP Leave 42.46165 Labour England E14000651
123 Crawley Henry Smith MP Leave 40.53378 Conservative England E14000652
124 Crewe and Nantwich Edward Timpson MP Leave 39.31403 Conservative England E14000653
125 Croydon Central Gavin Barwell MP Leave 45.30381 Conservative England E14000654
126 Croydon North Mr Steve Reed MP Leave 46.25084 Labour England E14000655
127 Croydon South Chris Philp MP Leave 49.45388 Conservative England E14000656
128 Dagenham and Rainham Jon Cruddas MP Leave 35.86623 Labour England E14000657
129 Darlington Jenny Chapman MP Leave 37.75014 Labour England E14000658
130 Dartford Gareth Johnson MP Leave 38.32625 Conservative England E14000659
131 Daventry Chris Heaton-Harris MP Leave 43.26748 Conservative England E14000660
132 Denton and Reddish Andrew Gwynne MP Leave 37.98699 Labour England E14000661
133 Derby North Amanda Solloway MP Leave 41.93657 Conservative England E14000662
134 Derby South Rt Hon Margaret Beckett MP Leave 36.79744 Labour England E14000663
135 Derbyshire Dales Rt Hon Patrick McLoughlin MP Leave 49.13903 Conservative England E14000664
136 Devizes Claire Perry MP Leave 44.60652 Conservative England E14000665
137 Dewsbury Paula Sherriff MP Leave 39.55193 Labour England E14000666
138 Don Valley Rt Hon Caroline Flint MP Leave 33.38878 Labour England E14000667
139 Doncaster Central Rt Hon Dame Rosie Winterton MP Leave 33.85762 Labour England E14000668
140 Doncaster North Rt Hon Edward Miliband MP Leave 31.88839 Labour England E14000669
141 Dover Charlie Elphicke MP Leave 38.46418 Conservative England E14000670
142 Dudley North Ian Austin MP Leave 33.30292 Labour England E14000671
143 Dudley South Mike Wood MP Leave 33.63889 Conservative England E14000672
144 Dulwich and West Norwood Helen Hayes MP Remain 75.60741 Labour England E14000673
145 Ealing Central and Acton Dr Rupa Huq MP Remain 69.58669 Labour England E14000674
146 Ealing North Stephen Pound MP Leave 47.23275 Labour England E14000675
147 Ealing, Southall Mr Virendra Sharma MP Leave 48.76958 Labour England E14000676
148 Easington Grahame Morris MP Leave 31.95732 Labour England E14000677
149 East Devon Rt Hon Hugo Swire MP Leave 47.85649 Conservative England E14000678
150 East Ham Rt Hon Stephen Timms MP Leave 42.77126 Labour England E14000679
151 East Hampshire Damian Hinds MP Remain 53.03032 Conservative England E14000680
152 East Surrey Mr Sam Gyimah MP Leave 48.62046 Conservative England E14000681
153 East Worthing and Shoreham Tim Loughton MP Leave 48.43208 Conservative England E14000682
154 East Yorkshire Rt Hon Sir Greg Knight MP Leave 37.29109 Conservative England E14000683
155 Eastbourne Caroline Ansell MP Leave 42.67680 Conservative England E14000684
156 Eastleigh Mims Davies MP Leave 43.44535 Conservative England E14000685
157 Eddisbury Antoinette Sandbach MP Leave 44.61328 Conservative England E14000686
158 Edmonton Kate Osamor MP Leave 39.28219 Labour England E14000687
159 Ellesmere Port and Neston Justin Madders MP Leave 41.10869 Labour England E14000688
160 Elmet and Rothwell Alec Shelbrooke MP Leave 43.00186 Conservative England E14000689
161 Eltham Clive Efford MP Leave 48.42405 Labour England E14000690
162 Enfield North Rt Hon Joan Ryan MP Leave 43.07643 Labour England E14000691
163 Enfield, Southgate Mr David Burrowes MP Remain 57.41108 Conservative England E14000692
164 Epping Forest Mrs Eleanor Laing MP Leave 44.64482 Conservative England E14000693
165 Epsom and Ewell Rt Hon Chris Grayling MP Remain 52.47004 Conservative England E14000694
166 Erewash Maggie Throup MP Leave 37.74201 Conservative England E14000695
167 Erith and Thamesmead Teresa Pearce MP Leave 37.56011 Labour England E14000696
168 Esher and Walton Dominic Raab MP Remain 60.87542 Conservative England E14000697
169 Exeter Rt Hon Ben Bradshaw MP Remain 51.27120 Labour England E14000698
170 Fareham Suella Fernandes MP Leave 43.79101 Conservative England E14000699
171 Faversham and Mid Kent Helen Whately MP Leave 43.83487 Conservative England E14000700
172 Feltham and Heston Seema Malhotra MP Leave 41.02092 Labour England E14000701
173 Filton and Bradley Stoke Jack Lopresti MP Leave 47.25278 Conservative England E14000702
174 Finchley and Golders Green Mike Freer MP Remain 64.86241 Conservative England E14000703
175 Folkestone and Hythe Damian Collins MP Leave 40.56981 Conservative England E14000704
176 Forest of Dean Rt Hon Mark Harper MP Leave 42.39782 Conservative England E14000705
177 Fylde Mark Menzies MP Leave 40.26822 Conservative England E14000706
178 Gainsborough Sir Edward Leigh MP Leave 37.87616 Conservative England E14000707
179 Garston and Halewood Maria Eagle MP Leave 44.39496 Labour England E14000708
180 Gateshead Ian Mearns MP Leave 38.82249 Labour England E14000709
181 Gedling Vernon Coaker MP Leave 43.52277 Labour England E14000710
182 Gillingham and Rainham Rehman Chishti MP Leave 36.93960 Conservative England E14000711
183 Gloucester Richard Graham MP Leave 39.30213 Conservative England E14000712
184 Gosport Caroline Dinenage MP Leave 38.07544 Conservative England E14000713
185 Grantham and Stamford Nick Boles MP Leave 40.76685 Conservative England E14000714
186 Gravesham Adam Holloway MP Leave 37.58799 Conservative England E14000715
187 Great Grimsby Melanie Onn MP Leave 32.43049 Labour England E14000716
188 Great Yarmouth Brandon Lewis MP Leave 34.10895 Conservative England E14000717
189 Greenwich and Woolwich Matthew Pennycook MP Remain 58.15267 Labour England E14000718
190 Guildford Rt Hon Anne Milton MP Remain 57.78919 Conservative England E14000719
191 Hackney North and Stoke Newington Ms Diane Abbott MP Remain 72.44011 Labour England E14000720
192 Hackney South and Shoreditch Meg Hillier MP Remain 73.25205 Labour England E14000721
193 Halesowen and Rowley Regis James Morris MP Leave 35.74607 Conservative England E14000722
194 Halifax Holly Lynch MP Leave 36.70200 Labour England E14000723
195 Haltemprice and Howden Rt Hon David Davis MP Leave 41.05268 Conservative England E14000724
196 Halton Derek Twigg MP Leave 37.03778 Labour England E14000725
197 Hammersmith Andy Slaughter MP Remain 71.12920 Labour England E14000726
198 Hampstead and Kilburn Tulip Siddiq MP Remain 76.68298 Labour England E14000727
199 Harborough Rt Hon Sir Edward Garnier QC MP Leave 45.55373 Conservative England E14000728
200 Harlow Rt Hon Robert Halfon MP Leave 36.49475 Conservative England E14000729
201 Harrogate and Knaresborough Andrew Jones MP Remain 50.01713 Conservative England E14000730
202 Harrow East Bob Blackman MP Leave 46.24983 Conservative England E14000731
203 Harrow West Gareth Thomas MP Leave 49.90977 Labour England E14000732
204 Hartlepool Mr Iain Wright MP Leave 32.65893 Labour England E14000733
205 Harwich and North Essex Mr Bernard Jenkin MP Leave 43.73952 Conservative England E14000734
206 Hastings and Rye Rt Hon Amber Rudd MP Leave 44.28555 Conservative England E14000735
207 Havant Mr Alan Mak MP Leave 39.19379 Conservative England E14000736
208 Hayes and Harlington John McDonnell MP Leave 38.98027 Labour England E14000737
209 Hazel Grove William Wragg MP Leave 45.53935 Conservative England E14000738
210 Hemel Hempstead Rt Hon Mike Penning MP Leave 44.35010 Conservative England E14000739
211 Hemsworth Jon Trickett MP Leave 34.18865 Labour England E14000740
212 Hendon Dr Matthew Offord MP Leave 49.84683 Conservative England E14000741
213 Henley John Howell MP Remain 59.61446 Conservative England E14000742
214 Hereford and South Herefordshire Jesse Norman MP Leave 40.87663 Conservative England E14000743
215 Hertford and Stortford Mr Mark Prisk MP Remain 50.89881 Conservative England E14000744
216 Hertsmere Oliver Dowden MP Leave 49.03661 Conservative England E14000745
217 Hexham Guy Opperman MP Leave 49.40357 Conservative England E14000746
218 Heywood and Middleton Liz McInnes MP Leave 36.17471 Labour England E14000747
219 High Peak Andrew Bingham MP Leave 47.79516 Conservative England E14000748
220 Hitchin and Harpenden Rt Hon Peter Lilley MP Remain 60.26854 Conservative England E14000749
221 Holborn and St Pancras Keir Starmer MP Remain 72.30785 Labour England E14000750
222 Hornchurch and Upminster Dame Angela Watkinson MP Leave 37.44940 Conservative England E14000751
223 Hornsey and Wood Green Catherine West MP Remain 82.36436 Labour England E14000752
224 Horsham Jeremy Quin MP Leave 49.99929 Conservative England E14000753
225 Houghton and Sunderland South Bridget Phillipson MP Leave 33.75061 Labour England E14000754
226 Hove Peter Kyle MP Remain 71.43275 Labour England E14000755
227 Huddersfield Mr Barry Sheerman MP Leave 39.50195 Labour England E14000756
228 Huntingdon Mr Jonathan Djanogly MP Leave 45.55625 Conservative England E14000757
229 Hyndburn Graham Jones MP Leave 34.69247 Labour England E14000758
230 Ilford North Wes Streeting MP Leave 47.83360 Labour England E14000759
231 Ilford South Mike Gapes MP Leave 45.06857 Labour England E14000760
232 Ipswich Ben Gummer MP Leave 41.73901 Conservative England E14000761
233 Isle of Wight Mr Andrew Turner MP Leave 40.72905 Conservative England E14000762
234 Islington North Rt Hon Jeremy Corbyn MP Remain 82.30499 Labour England E14000763
235 Islington South and Finsbury Emily Thornberry MP Remain 75.64867 Labour England E14000764
236 Jarrow Mr Stephen Hepburn MP Leave 36.54307 Labour England E14000765
237 Keighley Kris Hopkins MP Leave 42.56084 Conservative England E14000766
238 Kenilworth and Southam Rt Hon Jeremy Wright QC MP Remain 53.19066 Conservative England E14000767
239 Kensington Victoria Borwick MP Remain 74.82366 Conservative England E14000768
240 Kettering Mr Philip Hollobone MP Leave 38.78408 Conservative England E14000769
241 Kingston and Surbiton James Berry MP Remain 58.16880 Conservative England E14000770
242 Kingston upon Hull East Karl Turner MP Leave 32.03503 Labour England E14000771
243 Kingston upon Hull North Diana Johnson MP Leave 36.91237 Labour England E14000772
244 Kingston upon Hull West and Hessle Rt Hon Alan Johnson MP Leave 34.87771 Labour England E14000773
245 Kingswood Chris Skidmore MP Leave 41.44406 Conservative England E14000774
246 Knowsley Rt Hon George Howarth MP Leave 37.08703 Labour England E14000775
247 Lancaster and Fleetwood Cat Smith MP Leave 44.65901 Labour England E14000776
248 Leeds Central Rt Hon Hilary Benn MP Leave 41.02984 Labour England E14000777
249 Leeds East Richard Burgon MP Leave 35.84307 Labour England E14000778
250 Leeds North East Fabian Hamilton MP Remain 58.78481 Labour England E14000779
251 Leeds North West Greg Mulholland MP Remain 53.65381 Liberal Democrat England E14000780
252 Leeds West Rachel Reeves MP Leave 42.87869 Labour England E14000781
253 Leicester East Rt Hon Keith Vaz MP Leave 39.69203 Labour England E14000782
254 Leicester South Jonathan Ashworth MP Leave 45.29788 Labour England E14000783
255 Leicester West Liz Kendall MP Leave 38.32368 Labour England E14000784
256 Leigh Rt Hon Andy Burnham MP Leave 35.54709 Labour England E14000785
257 Lewes Maria Caulfield MP Remain 57.18027 Conservative England E14000786
258 Lewisham East Heidi Alexander MP Remain 52.70393 Labour England E14000787
259 Lewisham West and Penge Jim Dowd MP Remain 61.51399 Labour England E14000788
260 Lewisham, Deptford Vicky Foxcroft MP Remain 67.62037 Labour England E14000789
261 Leyton and Wanstead John Cryer MP Remain 57.06588 Labour England E14000790
262 Lichfield Michael Fabricant MP Leave 41.44401 Conservative England E14000791
263 Lincoln Karl McCartney MP Leave 40.08916 Conservative England E14000792
264 Liverpool, Riverside Mrs Louise Ellman MP Remain 51.19776 Labour England E14000793
265 Liverpool, Walton Steve Rotheram MP Leave 37.69355 Labour England E14000794
266 Liverpool, Wavertree Luciana Berger MP Leave 47.76999 Labour England E14000795
267 Liverpool, West Derby Stephen Twigg MP Leave 39.65550 Labour England E14000796
268 Loughborough Rt Hon Nicky Morgan MP Leave 44.42266 Conservative England E14000797
269 Louth and Horncastle Victoria Atkins MP Leave 35.50503 Conservative England E14000798
270 Ludlow Mr Philip Dunne MP Leave 42.95880 Conservative England E14000799
271 Luton North Kelvin Hopkins MP Leave 38.21147 Labour England E14000800
272 Luton South Mr Gavin Shuker MP Leave 38.19322 Labour England E14000801
273 Macclesfield David Rutley MP Remain 50.60686 Conservative England E14000802
274 Maidenhead Rt Hon Theresa May MP Remain 56.05528 Conservative England E14000803
275 Maidstone and The Weald Mrs Helen Grant MP Leave 43.39109 Conservative England E14000804
276 Makerfield Yvonne Fovargue MP Leave 34.18438 Labour England E14000805
277 Maldon Rt Hon John Whittingdale MP Leave 40.67821 Conservative England E14000806
278 Manchester Central Lucy Powell MP Leave 48.66765 Labour England E14000807
279 Manchester, Gorton Rt Hon Sir Gerald Kaufman MP Leave 48.29298 Labour England E14000808
280 Manchester, Withington Jeff Smith MP Remain 67.51072 Labour England E14000809
281 Mansfield Sir Alan Meale MP Leave 33.32638 Labour England E14000810
282 Meon Valley George Hollingbery MP Leave 46.84464 Conservative England E14000811
283 Meriden Rt Hon Caroline Spelman MP Leave 41.05852 Conservative England E14000812
284 Mid Bedfordshire Nadine Dorries MP Leave 45.33481 Conservative England E14000813
285 Mid Derbyshire Pauline Latham MP Leave 44.79197 Conservative England E14000814
286 Mid Dorset and North Poole Michael Tomlinson MP Leave 45.30506 Conservative England E14000815
287 Mid Norfolk George Freeman MP Leave 40.90647 Conservative England E14000816
288 Mid Sussex Rt Hon Sir Nicholas Soames MP Remain 52.44416 Conservative England E14000817
289 Mid Worcestershire Nigel Huddleston MP Leave 40.74568 Conservative England E14000818
290 Middlesbrough Andy McDonald MP Leave 33.42073 Labour England E14000819
291 Middlesbrough South and East Cleveland Tom Blenkinsop MP Leave 34.58445 Labour England E14000820
292 Milton Keynes North Mark Lancaster MP Leave 45.96077 Conservative England E14000821
293 Milton Keynes South Iain Stewart MP Leave 45.08752 Conservative England E14000822
294 Mitcham and Morden Siobhain McDonagh MP Leave 47.48419 Labour England E14000823
295 Mole Valley Sir Paul Beresford MP Remain 57.31282 Conservative England E14000824
296 Morecambe and Lunesdale David Morris MP Leave 39.38606 Conservative England E14000825
297 Morley and Outwood Andrea Jenkyns MP Leave 38.72962 Conservative England E14000826
298 New Forest East Rt Hon Dr Julian Lewis MP Leave 42.95158 Conservative England E14000827
299 New Forest West Rt Hon Sir Desmond Swayne MP Leave 46.47130 Conservative England E14000828
300 Newark Robert Jenrick MP Leave 43.46572 Conservative England E14000829
301 Newbury Richard Benyon MP Remain 50.65394 Conservative England E14000830
302 Newcastle upon Tyne Central Chi Onwurah MP Leave 43.19130 Labour England E14000831
303 Newcastle upon Tyne East Rt Hon Nicholas Brown MP Leave 48.00971 Labour England E14000832
304 Newcastle upon Tyne North Catherine McKinnell MP Leave 43.31906 Labour England E14000833
305 Newcastle-under-Lyme Paul Farrelly MP Leave 37.57625 Labour England E14000834
306 Newton Abbot Anne Marie Morris MP Leave 44.20073 Conservative England E14000835
307 Normanton, Pontefract and Castleford Rt Hon Yvette Cooper MP Leave 33.09325 Labour England E14000836
308 North Cornwall Scott Mann MP Leave 41.57573 Conservative England E14000837
309 North Devon Peter Heaton-Jones MP Leave 42.90807 Conservative England E14000838
310 North Dorset Simon Hoare MP Leave 45.65144 Conservative England E14000839
311 North Durham Mr Kevan Jones MP Leave 36.44409 Labour England E14000840
312 North East Bedfordshire Rt Hon Alistair Burt MP Leave 45.57647 Conservative England E14000841
313 North East Cambridgeshire Stephen Barclay MP Leave 35.40199 Conservative England E14000842
314 North East Derbyshire Natascha Engel MP Leave 38.18351 Labour England E14000843
315 North East Hampshire Mr Ranil Jayawardena MP Remain 52.33861 Conservative England E14000844
316 North East Hertfordshire Sir Oliver Heald QC MP Leave 49.60312 Conservative England E14000845
317 North East Somerset Mr Jacob Rees-Mogg MP Remain 50.00627 Conservative England E14000846
318 North Herefordshire Bill Wiggin MP Leave 44.15071 Conservative England E14000847
319 North Norfolk Rt Hon Norman Lamb MP Leave 41.01328 Liberal Democrat England E14000848
320 North Shropshire Rt Hon Owen Paterson MP Leave 38.78258 Conservative England E14000849
321 North Somerset Rt Hon Dr Liam Fox MP Remain 53.25132 Conservative England E14000850
322 North Swindon Justin Tomlinson MP Leave 39.69948 Conservative England E14000851
323 North Thanet Sir Roger Gale MP Leave 38.50831 Conservative England E14000852
324 North Tyneside Mary Glindon MP Leave 38.28064 Labour England E14000853
325 North Warwickshire Craig Tracey MP Leave 34.96377 Conservative England E14000854
326 North West Cambridgeshire Mr Shailesh Vara MP Leave 41.25326 Conservative England E14000855
327 North West Durham Pat Glass MP Leave 37.38574 Labour England E14000856
328 North West Hampshire Kit Malthouse MP Leave 45.90931 Conservative England E14000857
329 North West Leicestershire Andrew Bridgen MP Leave 39.64145 Conservative England E14000858
330 North West Norfolk Sir Henry Bellingham MP Leave 37.08727 Conservative England E14000859
331 North Wiltshire James Gray MP Leave 48.66658 Conservative England E14000860
332 Northampton North Michael Ellis MP Leave 38.56707 Conservative England E14000861
333 Northampton South David Mackintosh MP Leave 39.22381 Conservative England E14000862
334 Norwich North Chloe Smith MP Leave 44.28068 Conservative England E14000863
335 Norwich South Clive Lewis MP Remain 56.30241 Labour England E14000864
336 Nottingham East Chris Leslie MP Leave 45.79216 Labour England E14000865
337 Nottingham North Mr Graham Allen MP Leave 33.96228 Labour England E14000866
338 Nottingham South Lilian Greenwood MP Leave 43.68229 Labour England E14000867
339 Nuneaton Mr Marcus Jones MP Leave 35.60145 Conservative England E14000868
340 Old Bexley and Sidcup Rt Hon James Brokenshire MP Leave 40.87375 Conservative England E14000869
341 Oldham East and Saddleworth Debbie Abrahams MP Leave 37.12270 Labour England E14000870
342 Oldham West and Royton Jim McMahon MP Leave 37.09486 Labour England E14000871
343 Orpington Joseph Johnson MP Leave 45.23700 Conservative England E14000872
344 Oxford East Rt Hon Andrew Smith MP Remain 62.42277 Labour England E14000873
345 Oxford West and Abingdon Nicola Blackwood MP Remain 68.02344 Conservative England E14000874
346 Pendle Andrew Stephenson MP Leave 35.49402 Conservative England E14000875
347 Penistone and Stocksbridge Angela Smith MP Leave 38.95717 Labour England E14000876
348 Penrith and The Border Rory Stewart MP Leave 42.06850 Conservative England E14000877
349 Peterborough Mr Stewart Jackson MP Leave 37.49097 Conservative England E14000878
350 Plymouth, Moor View Johnny Mercer MP Leave 34.47799 Conservative England E14000879
351 Plymouth, Sutton and Devonport Oliver Colvile MP Leave 43.69736 Conservative England E14000880
352 Poole Mr Robert Syms MP Leave 43.96013 Conservative England E14000881
353 Poplar and Limehouse Jim Fitzpatrick MP Remain 62.07652 Labour England E14000882
354 Portsmouth North Penny Mordaunt MP Leave 37.98739 Conservative England E14000883
355 Portsmouth South Mrs Flick Drummond MP Leave 44.65225 Conservative England E14000884
356 Preston Mr Mark Hendrick MP Leave 38.46734 Labour England E14000885
357 Pudsey Stuart Andrew MP Leave 49.16963 Conservative England E14000886
358 Putney Rt Hon Justine Greening MP Remain 74.82067 Conservative England E14000887
359 Rayleigh and Wickford Rt Hon Mark Francois MP Leave 36.91114 Conservative England E14000888
360 Reading East Mr Rob Wilson MP Remain 55.90215 Conservative England E14000889
361 Reading West Alok Sharma MP Leave 46.81698 Conservative England E14000890
362 Redcar Anna Turley MP Leave 32.41947 Labour England E14000891
363 Redditch Karen Lumley MP Leave 37.87327 Conservative England E14000892
364 Reigate Crispin Blunt MP Remain 52.03563 Conservative England E14000893
365 Ribble Valley Mr Nigel Evans MP Leave 40.29518 Conservative England E14000894
366 Richmond (Yorks) Rishi Sunak MP Leave 40.15314 Conservative England E14000895
367 Richmond Park Zac Goldsmith MP Remain 77.11149 Conservative England E14000896
368 Rochdale Simon Danczuk MP Leave 36.99654 Labour England E14000897
369 Rochester and Strood Kelly Tolhurst MP Leave 38.62477 Conservative England E14000898
370 Rochford and Southend East James Duddridge MP Leave 38.47526 Conservative England E14000899
371 Romford Andrew Rosindell MP Leave 38.08108 Conservative England E14000900
372 Romsey and Southampton North Caroline Nokes MP Remain 51.18540 Conservative England E14000901
373 Rossendale and Darwen Jake Berry MP Leave 37.95023 Conservative England E14000902
374 Rother Valley Rt Hon Kevin Barron MP Leave 34.79886 Labour England E14000903
375 Rotherham Sarah Champion MP Leave 33.20915 Labour England E14000904
376 Rugby Mark Pawsey MP Leave 41.26953 Conservative England E14000905
377 Ruislip, Northwood and Pinner Mr Nick Hurd MP Remain 53.95217 Conservative England E14000906
378 Runnymede and Weybridge Rt Hon Philip Hammond MP Remain 50.48412 Conservative England E14000907
379 Rushcliffe Rt Hon Kenneth Clarke QC MP Remain 55.95099 Conservative England E14000908
380 Rutland and Melton Rt Hon Sir Alan Duncan MP Leave 45.38761 Conservative England E14000909
381 Saffron Walden Rt Hon Sir Alan Haselhurst MP Leave 49.38167 Conservative England E14000910
382 Salford and Eccles Rebecca Long Bailey MP Leave 44.12468 Labour England E14000911
383 Salisbury John Glen MP Leave 49.42441 Conservative England E14000912
384 Scarborough and Whitby Mr Robert Goodwill MP Leave 37.47805 Conservative England E14000913
385 Scunthorpe Nic Dakin MP Leave 32.96296 Labour England E14000914
386 Sedgefield Phil Wilson MP Leave 35.39503 Labour England E14000915
387 Sefton Central Bill Esterson MP Leave 47.54615 Labour England E14000916
388 Selby and Ainsty Nigel Adams MP Leave 42.15678 Conservative England E14000917
389 Sevenoaks Rt Hon Michael Fallon MP Leave 49.53292 Conservative England E14000918
390 Sheffield Central Paul Blomfield MP Remain 51.88405 Labour England E14000919
391 Sheffield South East Mr Clive Betts MP Leave 35.46526 Labour England E14000920
392 Sheffield, Brightside and Hillsborough Gill Furniss MP Leave 35.77051 Labour England E14000921
393 Sheffield, Hallam Rt Hon Nick Clegg MP Remain 61.52083 Liberal Democrat England E14000922
394 Sheffield, Heeley Louise Haigh MP Leave 41.69509 Labour England E14000923
395 Sherwood Mark Spencer MP Leave 37.28962 Conservative England E14000924
396 Shipley Philip Davies MP Leave 45.29088 Conservative England E14000925
397 Shrewsbury and Atcham Daniel Kawczynski MP Leave 45.17013 Conservative England E14000926
398 Sittingbourne and Sheppey Gordon Henderson MP Leave 35.06897 Conservative England E14000927
399 Skipton and Ripon Julian Smith MP Leave 45.84392 Conservative England E14000928
400 Sleaford and North Hykeham Stephen Phillips QC MP Leave 39.22434 Conservative England E14000929
401 Slough Rt Hon Fiona Mactaggart MP Leave 40.93806 Labour England E14000930
402 Solihull Julian Knight MP Leave 44.62474 Conservative England E14000931
403 Somerton and Frome David Warburton MP Leave 49.75458 Conservative England E14000932
404 South Basildon and East Thurrock Stephen Metcalfe MP Leave 34.10856 Conservative England E14000933
405 South Cambridgeshire Heidi Allen MP Remain 62.86468 Conservative England E14000934
406 South Derbyshire Heather Wheeler MP Leave 38.80641 Conservative England E14000935
407 South Dorset Richard Drax MP Leave 41.64566 Conservative England E14000936
408 South East Cambridgeshire Lucy Frazer MP Remain 54.54874 Conservative England E14000937
409 South East Cornwall Mrs Sheryll Murray MP Leave 43.04997 Conservative England E14000938
410 South Holland and The Deepings Rt Hon John Hayes MP Leave 34.70158 Conservative England E14000939
411 South Leicestershire Alberto Costa MP Leave 40.65808 Conservative England E14000940
412 South Norfolk Mr Richard Bacon MP Leave 47.56677 Conservative England E14000941
413 South Northamptonshire Andrea Leadsom MP Leave 45.71197 Conservative England E14000942
414 South Ribble Seema Kennedy MP Leave 39.87840 Conservative England E14000943
415 South Shields Mrs Emma Lewell-Buck MP Leave 34.52164 Labour England E14000944
416 South Staffordshire Rt Hon Gavin Williamson MP Leave 35.73380 Conservative England E14000945
417 South Suffolk James Cartlidge MP Leave 45.55325 Conservative England E14000946
418 South Swindon Robert Buckland MP Leave 43.62080 Conservative England E14000947
419 South Thanet Craig Mackinlay MP Leave 41.20647 Conservative England E14000948
420 South West Bedfordshire Andrew Selous MP Leave 41.19207 Conservative England E14000949
421 South West Devon Mr Gary Streeter MP Leave 44.20375 Conservative England E14000950
422 South West Hertfordshire Mr David Gauke MP Remain 56.09492 Conservative England E14000951
423 South West Norfolk Rt Hon Elizabeth Truss MP Leave 36.21933 Conservative England E14000952
424 South West Surrey Rt Hon Jeremy Hunt MP Remain 60.46629 Conservative England E14000953
425 South West Wiltshire Dr Andrew Murrison MP Leave 43.60411 Conservative England E14000954
426 Southampton, Itchen Royston Smith MP Leave 40.85717 Conservative England E14000955
427 Southampton, Test Dr Alan Whitehead MP Leave 44.86518 Labour England E14000956
428 Southend West Sir David Amess MP Leave 43.02764 Conservative England E14000957
429 Southport John Pugh MP Leave 42.34990 Liberal Democrat England E14000958
430 Spelthorne Kwasi Kwarteng MP Leave 43.47059 Conservative England E14000959
431 St Albans Mrs Anne Main MP Remain 63.63298 Conservative England E14000960
432 St Austell and Newquay Steve Double MP Leave 39.33138 Conservative England E14000961
433 St Helens North Conor McGinn MP Leave 36.81243 Labour England E14000962
434 St Helens South and Whiston Marie Rimmer MP Leave 37.67113 Labour England E14000963
435 St Ives Derek Thomas MP Leave 45.88630 Conservative England E14000964
436 Stafford Jeremy Lefroy MP Leave 39.98818 Conservative England E14000965
437 Staffordshire Moorlands Karen Bradley MP Leave 37.74536 Conservative England E14000966
438 Stalybridge and Hyde Jonathan Reynolds MP Leave 38.61289 Labour England E14000967
439 Stevenage Stephen McPartland MP Leave 41.29306 Conservative England E14000968
440 Stockport Ann Coffey MP Leave 47.56150 Labour England E14000969
441 Stockton North Alex Cunningham MP Leave 33.42528 Labour England E14000970
442 Stockton South James Wharton MP Leave 37.28974 Conservative England E14000971
443 Stoke-on-Trent Central Tristram Hunt MP Leave 34.55085 Labour England E14000972
444 Stoke-on-Trent North Ruth Smeeth MP Leave 32.60729 Labour England E14000973
445 Stoke-on-Trent South Robert Flello MP Leave 33.19828 Labour England E14000974
446 Stone Sir William Cash MP Leave 40.35936 Conservative England E14000975
447 Stourbridge Margot James MP Leave 37.88850 Conservative England E14000976
448 Stratford-on-Avon Nadhim Zahawi MP Remain 50.41796 Conservative England E14000977
449 Streatham Mr Chuka Umunna MP Remain 70.51386 Labour England E14000978
450 Stretford and Urmston Kate Green MP Leave 47.13455 Labour England E14000979
451 Stroud Neil Carmichael MP Remain 54.46575 Conservative England E14000980
452 Suffolk Coastal Dr Thérèse Coffey MP Leave 47.26441 Conservative England E14000981
453 Sunderland Central Julie Elliott MP Leave 36.08864 Labour England E14000982
454 Surrey Heath Rt Hon Michael Gove MP Leave 48.53344 Conservative England E14000983
455 Sutton and Cheam Paul Scully MP Leave 49.26548 Conservative England E14000984
456 Sutton Coldfield Rt Hon Andrew Mitchell MP Leave 45.83412 Conservative England E14000985
457 Tamworth Christopher Pincher MP Leave 36.18341 Conservative England E14000986
458 Tatton Rt Hon George Osborne MP Remain 52.21657 Conservative England E14000987
459 Taunton Deane Rebecca Pow MP Leave 44.62636 Conservative England E14000988
460 Telford Lucy Allan MP Leave 35.32091 Conservative England E14000989
461 Tewkesbury Mr Laurence Robertson MP Leave 44.86410 Conservative England E14000990
462 The Cotswolds Geoffrey Clifton-Brown MP Remain 53.70635 Conservative England E14000991
463 The Wrekin Mark Pritchard MP Leave 38.13899 Conservative England E14000992
464 Thirsk and Malton Kevin Hollinrake MP Leave 42.17399 Conservative England E14000993
465 Thornbury and Yate Luke Hall MP Leave 45.65151 Conservative England E14000994
466 Thurrock Jackie Doyle-Price MP Leave 35.40240 Conservative England E14000995
467 Tiverton and Honiton Neil Parish MP Leave 43.41720 Conservative England E14000996
468 Tonbridge and Malling Tom Tugendhat MP Leave 48.91283 Conservative England E14000997
469 Tooting Dr Rosena Allin-Khan MP Remain 75.25024 Labour England E14000998
470 Torbay Kevin Foster MP Leave 38.92700 Conservative England E14000999
471 Torridge and West Devon Mr Geoffrey Cox QC MP Leave 43.79727 Conservative England E14001000
472 Totnes Dr Sarah Wollaston MP Remain 51.34668 Conservative England E14001001
473 Tottenham Rt Hon David Lammy MP Remain 53.45226 Labour England E14001002
474 Truro and Falmouth Sarah Newton MP Remain 53.36998 Conservative England E14001003
475 Tunbridge Wells Rt Hon Greg Clark MP Remain 55.15656 Conservative England E14001004
476 Twickenham Dr Tania Mathias MP Remain 71.54404 Conservative England E14001005
477 Tynemouth Rt Hon Alan Campbell MP Leave 45.69231 Labour England E14001006
478 Uxbridge and South Ruislip Boris Johnson MP Leave 43.66407 Conservative England E14001007
479 Vauxhall Kate Hoey MP Remain 73.01249 Labour England E14001008
480 Wakefield Mary Creagh MP Leave 36.10926 Labour England E14001009
481 Wallasey Ms Angela Eagle MP Leave 41.61866 Labour England E14001010
482 Walsall North Mr David Winnick MP Leave 31.08231 Labour England E14001011
483 Walsall South Valerie Vaz MP Leave 36.76880 Labour England E14001012
484 Walthamstow Stella Creasy MP Remain 56.80097 Labour England E14001013
485 Wansbeck Ian Lavery MP Leave 37.04577 Labour England E14001014
486 Wantage Mr Edward Vaizey MP Remain 54.69941 Conservative England E14001015
487 Warley Rt Hon John Spellar MP Leave 37.29797 Labour England E14001016
488 Warrington North Helen Jones MP Leave 39.05665 Labour England E14001017
489 Warrington South David Mowat MP Leave 45.22714 Conservative England E14001018
490 Warwick and Leamington Chris White MP Remain 56.02619 Conservative England E14001019
491 Washington and Sunderland West Mrs Sharon Hodgson MP Leave 34.43310 Labour England E14001020
492 Watford Richard Harrington MP Leave 46.86839 Conservative England E14001021
493 Waveney Peter Aldous MP Leave 37.21019 Conservative England E14001022
494 Wealden Nusrat Ghani MP Remain 50.78828 Conservative England E14001023
495 Weaver Vale Graham Evans MP Leave 43.82372 Conservative England E14001024
496 Wellingborough Mr Peter Bone MP Leave 37.71701 Conservative England E14001025
497 Wells James Heappey MP Leave 45.58974 Conservative England E14001026
498 Welwyn Hatfield Rt Hon Grant Shapps MP Leave 45.47294 Conservative England E14001027
499 Wentworth and Dearne Rt Hon John Healey MP Leave 32.48911 Labour England E14001028
500 West Bromwich East Tom Watson MP Leave 34.14078 Labour England E14001029
501 West Bromwich West Mr Adrian Bailey MP Leave 32.48763 Labour England E14001030
502 West Dorset Rt Hon Oliver Letwin MP Remain 50.65724 Conservative England E14001031
503 West Ham Lyn Brown MP Leave 48.57649 Labour England E14001032
504 West Lancashire Rosie Cooper MP Leave 41.39242 Labour England E14001033
505 West Suffolk Rt Hon Matthew Hancock MP Leave 38.45347 Conservative England E14001034
506 West Worcestershire Harriett Baldwin MP Leave 47.63726 Conservative England E14001035
507 Westminster North Ms Karen Buck MP Remain 65.96571 Labour England E14001036
508 Westmorland and Lonsdale Tim Farron MP Remain 50.19891 Liberal Democrat England E14001037
509 Weston-Super-Mare John Penrose MP Leave 41.20370 Conservative England E14001038
510 Wigan Lisa Nandy MP Leave 35.01654 Labour England E14001039
511 Wimbledon Stephen Hammond MP Remain 73.91992 Conservative England E14001040
512 Winchester Steve Brine MP Remain 61.57504 Conservative England E14001041
513 Windsor Adam Afriyie MP Remain 52.17294 Conservative England E14001042
514 Wirral South Alison McGovern MP Leave 46.53407 Labour England E14001043
515 Wirral West Margaret Greenwood MP Leave 49.27110 Labour England E14001044
516 Witham Rt Hon Priti Patel MP Leave 41.32694 Conservative England E14001045
517 Witney Rt Hon David Cameron MP Remain 54.79183 Conservative England E14001046
518 Woking Mr Jonathan Lord MP Remain 53.93197 Conservative England E14001047
519 Wokingham Rt Hon John Redwood MP Remain 55.21289 Conservative England E14001048
520 Wolverhampton North East Emma Reynolds MP Leave 32.68297 Labour England E14001049
521 Wolverhampton South East Rt Hon Pat McFadden MP Leave 32.49642 Labour England E14001050
522 Wolverhampton South West Rob Marris MP Leave 39.75039 Labour England E14001051
523 Worcester Mr Robin Walker MP Leave 43.64068 Conservative England E14001052
524 Workington Sue Hayman MP Leave 36.35132 Labour England E14001053
525 Worsley and Eccles South Barbara Keeley MP Leave 37.95000 Labour England E14001054
526 Worthing West Sir Peter Bottomley MP Leave 45.52322 Conservative England E14001055
527 Wycombe Mr Steve Baker MP Leave 48.23007 Conservative England E14001056
528 Wyre and Preston North Mr Ben Wallace MP Leave 41.77203 Conservative England E14001057
529 Wyre Forest Mark Garnier MP Leave 37.71918 Conservative England E14001058
530 Wythenshawe and Sale East Mike Kane MP Leave 43.36584 Labour England E14001059
531 Yeovil Marcus Fysh MP Leave 39.56649 Conservative England E14001060
532 York Central Rachael Maskell MP Remain 52.47939 Labour England E14001061
533 York Outer Julian Sturdy MP Leave 49.11066 Conservative England E14001062
552 Aberdeen North Kirsty Blackman MP Remain 62.90403 Scottish National Party Scotland S14000001
553 Aberdeen South Callum McCaig MP Remain 66.69646 Scottish National Party Scotland S14000002
554 Airdrie and Shotts Neil Gray MP Remain 56.23871 Scottish National Party Scotland S14000003
555 Angus Mike Weir MP Remain 57.78520 Scottish National Party Scotland S14000004
556 Argyll and Bute Brendan O’Hara MP Remain 62.90761 Scottish National Party Scotland S14000005
557 Ayr, Carrick and Cumnock Corri Wilson MP Remain 58.22815 Scottish National Party Scotland S14000006
558 Banff and Buchan Dr Eilidh Whiteford MP Remain 56.15656 Scottish National Party Scotland S14000007
559 Berwickshire, Roxburgh and Selkirk Calum Kerr MP Remain 61.41145 Scottish National Party Scotland S14000008
560 Caithness, Sutherland and Easter Ross Dr Paul Monaghan MP Remain 58.40054 Scottish National Party Scotland S14000009
561 Central Ayrshire Dr Philippa Whitford MP Remain 58.02589 Scottish National Party Scotland S14000010
562 Coatbridge, Chryston and Bellshill Philip Boswell MP Remain 57.19003 Scottish National Party Scotland S14000011
563 Cumbernauld, Kilsyth and Kirkintilloch East Stuart C. McDonald MP Remain 58.88644 Scottish National Party Scotland S14000012
564 Dumfries and Galloway Richard Arkless MP Remain 59.04182 Scottish National Party Scotland S14000013
565 Dumfriesshire, Clydesdale and Tweeddale Rt Hon David Mundell MP Remain 61.66645 Conservative Scotland S14000014
566 Dundee East Stewart Hosie MP Remain 60.02623 Scottish National Party Scotland S14000015
567 Dundee West Chris Law MP Remain 61.04964 Scottish National Party Scotland S14000016
568 Dunfermline and West Fife Douglas Chapman MP Remain 61.38540 Scottish National Party Scotland S14000017
569 East Dunbartonshire John Nicolson MP Remain 68.78673 Scottish National Party Scotland S14000018
570 East Kilbride, Strathaven and Lesmahagow Dr Lisa Cameron MP Remain 60.11700 Scottish National Party Scotland S14000019
571 East Lothian George Kerevan MP Remain 65.44570 Scottish National Party Scotland S14000020
572 East Renfrewshire Kirsten Oswald MP Remain 66.34651 Scottish National Party Scotland S14000021
573 Edinburgh East Tommy Sheppard MP Remain 73.10335 Scottish National Party Scotland S14000022
574 Edinburgh North and Leith Deidre Brock MP Remain 82.55039 Scottish National Party Scotland S14000023
575 Edinburgh South Ian Murray MP Remain 81.72832 Labour Scotland S14000024
576 Edinburgh South West Joanna Cherry QC MP Remain 72.74860 Scottish National Party Scotland S14000025
577 Edinburgh West Michelle Thomson MP Remain 70.93306 Scottish National Party Scotland S14000026
578 Na h-Eileanan An Iar Angus Brendan MacNeil MP Remain 58.33504 Scottish National Party Scotland S14000027
579 Falkirk John Mc Nally MP Remain 58.51893 Scottish National Party Scotland S14000028
580 Glasgow Central Alison Thewliss MP Remain 68.58157 Scottish National Party Scotland S14000029
581 Glasgow East Natalie McGarry MP Remain 55.82305 Scottish National Party Scotland S14000030
582 Glasgow North Patrick Grady MP Remain 74.74228 Scottish National Party Scotland S14000031
583 Glasgow North East Anne McLaughlin MP Remain 57.75795 Scottish National Party Scotland S14000032
584 Glasgow North West Carol Monaghan MP Remain 64.53606 Scottish National Party Scotland S14000033
585 Glasgow South Stewart Malcolm McDonald MP Remain 66.12639 Scottish National Party Scotland S14000034
586 Glasgow South West Chris Stephens MP Remain 57.51975 Scottish National Party Scotland S14000035
587 Glenrothes Peter Grant MP Remain 56.44717 Scottish National Party Scotland S14000036
588 Gordon Rt Hon Alex Salmond MP Remain 61.91873 Scottish National Party Scotland S14000037
589 Inverclyde Ronnie Cowan MP Remain 58.03261 Scottish National Party Scotland S14000038
590 Inverness, Nairn, Badenoch and Strathspey Drew Hendry MP Remain 61.37071 Scottish National Party Scotland S14000039
591 Kilmarnock and Loudoun Alan Brown MP Remain 57.66129 Scottish National Party Scotland S14000040
592 Kirkcaldy and Cowdenbeath Roger Mullin MP Remain 58.97678 Scottish National Party Scotland S14000041
593 Lanark and Hamilton East Angela Crawley MP Remain 58.96978 Scottish National Party Scotland S14000042
594 Linlithgow and East Falkirk Martyn Day MP Remain 59.92193 Scottish National Party Scotland S14000043
595 Livingston Hannah Bardell MP Remain 59.87275 Scottish National Party Scotland S14000044
596 Midlothian Owen Thompson MP Remain 61.97635 Scottish National Party Scotland S14000045
597 Moray Rt Hon Angus Robertson MP Remain 58.61394 Scottish National Party Scotland S14000046
598 Motherwell and Wishaw Marion Fellows MP Remain 56.64004 Scottish National Party Scotland S14000047
599 North Ayrshire and Arran Patricia Gibson MP Remain 57.98725 Scottish National Party Scotland S14000048
600 North East Fife Stephen Gethins MP Remain 66.89271 Scottish National Party Scotland S14000049
601 Ochil and South Perthshire Ms Tasmina Ahmed-Sheikh MP Remain 62.61677 Scottish National Party Scotland S14000050
602 Orkney and Shetland Rt Hon Alistair Carmichael MP Remain 61.06525 Liberal Democrat Scotland S14000051
603 Paisley and Renfrewshire North Gavin Newlands MP Remain 60.45008 Scottish National Party Scotland S14000052
604 Paisley and Renfrewshire South Mhairi Black MP Remain 59.57463 Scottish National Party Scotland S14000053
605 Perth and North Perthshire Pete Wishart MP Remain 61.95182 Scottish National Party Scotland S14000054
606 Ross, Skye and Lochaber Ian Blackford MP Remain 63.33389 Scottish National Party Scotland S14000055
607 Rutherglen and Hamilton West Margaret Ferrier MP Remain 58.59853 Scottish National Party Scotland S14000056
608 Stirling Steven Paterson MP Remain 66.62716 Scottish National Party Scotland S14000057
609 West Aberdeenshire and Kincardine Stuart Blair Donaldson MP Remain 65.24501 Scottish National Party Scotland S14000058
610 West Dunbartonshire Martin Docherty-Hughes MP Remain 57.58746 Scottish National Party Scotland S14000059
611 Ynys Mon Albert Owen MP Leave 45.92776 Labour Wales W07000041
612 Delyn Rt Hon David Hanson MP Leave 45.51641 Labour Wales W07000042
613 Alyn and Deeside Mark Tami MP Leave 44.46600 Labour Wales W07000043
614 Wrexham Ian C. Lucas MP Leave 43.64726 Labour Wales W07000044
615 Llanelli Nia Griffith MP Leave 41.33506 Labour Wales W07000045
616 Gower Byron Davies MP Remain 50.30419 Conservative Wales W07000046
617 Swansea West Geraint Davies MP Remain 50.10055 Labour Wales W07000047
618 Swansea East Carolyn Harris MP Leave 40.94856 Labour Wales W07000048
619 Aberavon Stephen Kinnock MP Leave 40.31131 Labour Wales W07000049
620 Cardiff Central Jo Stevens MP Remain 59.21361 Labour Wales W07000050
621 Cardiff North Craig Williams MP Remain 58.33832 Conservative Wales W07000051
622 Rhondda Chris Bryant MP Leave 39.14954 Labour Wales W07000052
623 Torfaen Nick Thomas-Symonds MP Leave 40.57168 Labour Wales W07000053
624 Monmouth David T. C. Davies MP Remain 52.50755 Conservative Wales W07000054
625 Newport East Jessica Morden MP Leave 42.42585 Labour Wales W07000055
626 Newport West Paul Flynn MP Leave 46.92373 Labour Wales W07000056
627 Arfon Hywel Williams MP Remain 53.21047 Plaid Cymru Wales W07000057
628 Aberconwy Guto Bebb MP Leave 48.19148 Conservative Wales W07000058
629 Clwyd West Rt Hon David Jones MP Leave 46.60634 Conservative Wales W07000059
630 Vale of Clwyd Dr James Davies MP Leave 42.90806 Conservative Wales W07000060
631 Dwyfor Meirionnydd Liz Saville Roberts MP Leave 46.91059 Plaid Cymru Wales W07000061
632 Clwyd South Susan Elan Jones MP Leave 42.76190 Labour Wales W07000062
633 Montgomeryshire Glyn Davies MP Leave 46.01936 Conservative Wales W07000063
634 Ceredigion Mr Mark Williams MP Remain 52.35783 Liberal Democrat Wales W07000064
635 Preseli Pembrokeshire Rt Hon Stephen Crabb MP Leave 45.17310 Conservative Wales W07000065
636 Carmarthen West and Pembrokeshire South Simon Hart MP Leave 44.18520 Conservative Wales W07000066
637 Carmarthen East and Dinefwr Jonathan Edwards MP Leave 45.51539 Plaid Cymru Wales W07000067
638 Brecon and Radnorshire Chris Davies MP Leave 48.91088 Conservative Wales W07000068
639 Neath Christina Rees MP Leave 42.13602 Labour Wales W07000069
640 Cynon Valley Rt Hon Ann Clwyd MP Leave 40.63476 Labour Wales W07000070
641 Merthyr Tydfil and Rhymney Gerald Jones MP Leave 39.76750 Labour Wales W07000071
642 Blaenau Gwent Nick Smith MP Leave 38.59069 Labour Wales W07000072
643 Bridgend Mrs Madeleine Moon MP Leave 45.20336 Labour Wales W07000073
644 Ogmore Chris Elmore MP Leave 41.02649 Labour Wales W07000074
645 Pontypridd Owen Smith MP Leave 46.34345 Labour Wales W07000075
646 Caerphilly Wayne David MP Leave 43.49427 Labour Wales W07000076
647 Islwyn Chris Evans MP Leave 40.67607 Labour Wales W07000077
648 Vale of Glamorgan Rt Hon Alun Cairns MP Leave 48.37491 Conservative Wales W07000078
649 Cardiff West Kevin Brennan MP Remain 57.21191 Labour Wales W07000079
650 Cardiff South and Penarth Stephen Doughty MP Remain 52.94807 Labour Wales W07000080

Irregularities

I was initially concerned at the linearity of the rate of signature growth during the day (wondering if this might actually be an artefact of the back-end computer systems operating close to capacity), but so far I have only found evidence of limited irregularities in the UK data. Investigation on Sunday (26 June) morning of the activity found two constituencies where something odd has happened. I found these by dividing the data up by constituency and correlating the rate of signature growth by constituency with the national average. One of these was very obvious: the constituency with the most signatures, Cities of London and Westminster, had an implausibly large amount of activity overnight (unless there are a load of traders in Hong Kong …)

Overall this leads me to suggest that at the time of initial writing ~30,000 out of 2787004 UK signatures (~1.1%) might be invalid.

For what it’s worth the petitions team removed these fake signatures at around 2pm on Sunday.

Collect data

all_sigcounts=t(sapply(pet_data,function(x) x$data$attributes$signatures_by_constituency$signature_count))
colnames(all_sigcounts)=pet_data[[1]]$data$attributes$signatures_by_constituency$name
rownames(all_sigcounts)=sdf$time
all_sigcounts=cbind(sdf['time'], all_sigcounts)

Now let’s calculate the correlation of all constituencies vs the UK average and look for discrepancies

library(dplyr)
cor_vs_totaluk=apply(all_sigcounts[,-1], 2, cor, sdf$uksigs)
data.frame(constit=names(cor_vs_totaluk), cor=cor_vs_totaluk)  %>%
  arrange(cor) %>%
  top_n(10, desc(cor)) %>%
  kable
constit cor
Cities of London and Westminster -0.0361037
Bracknell 0.7513190
Worsley and Eccles South 0.8210328
Bradford West 0.9908169
Na h-Eileanan an Iar 0.9952896
Rhondda 0.9954370
Airdrie and Shotts 0.9956330
West Dunbartonshire 0.9960348
Ayr, Carrick and Cumnock 0.9967067
Rutherglen and Hamilton West 0.9967177

A histogram makes these two outliers pretty obvious:

hist(cor_vs_totaluk, col='red', breaks=50)

hist(cor_vs_totaluk, col='red', breaks=50, ylim=c(0,50))

We can plot the data for the 2 dubious constituencies

qplot(time, `Cities of London and Westminster`,data=all_sigcounts)+
  scale_x_datetime(date_labels="%a %H:%M", date_breaks="12 hours")

qplot(time, `Worsley and Eccles South`,data=all_sigcounts) + 
  scale_x_datetime(date_labels="%a %H:%M", date_breaks="12 hours")

which shows both the suspicious night time activity and its correction.

For comparison here are the 3rd and 9th constituencies (with much higher correlation scores):

qplot(time, `Rhondda`,data=all_sigcounts) + 
  scale_x_datetime(date_labels="%a %H:%M", date_breaks="12 hours")

qplot(time, `St Ives`,data=all_sigcounts) + 
  scale_x_datetime(date_labels="%a %H:%M", date_breaks="12 hours")

(A few) more fake signatures

On Tues, I spotted another attempt to add fake signatures with post-code(s) in Bracknell. This took place late on Monday afternoon/evening.

qplot(time, `Bracknell`,data=all_sigcounts) + 
  scale_x_datetime(date_labels="%a %H:%M", date_breaks="12 hours")

This may be more obvious if we plot as signatures / minute.

with(all_sigcounts,
     qplot(time[-1], diff(`Bracknell`)/diff(as.integer(time)/60), ylim=c(0,NA),
           xlab=NULL, ylab='Signatures/minute') + geom_smooth(method='loess', span=.08)+
  scale_x_datetime(date_labels="%a %H:%M", date_breaks="12 hours"))
## Warning: Removed 2 rows containing non-finite values (stat_smooth).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_smooth).

We can add a prediction of what the data should have looked like by calculating a linear model of Bracknell vs the whole UK before the spike and then applying that to the a smoothed version of the whole UK data.

bdf=mutate(sdf, Bracknell=all_sigcounts$Bracknell)
brack.lm=lm(Bracknell~0+uksigs, data=subset(bdf, time<ISOdatetime(2016,6,27,14,0,0, tz='Europe/London')))

all.smooth=loess(uksigs~as.integer(time), data=sdf, span=0.08)
bdf$Bracknell.pred=all.smooth$fitted*coef(brack.lm)

plot(Bracknell~time,data=bdf, type='l', main='~3400 Fake Signatures in Bracknell (Now Removed)')
lines(Bracknell.pred~time, data=bdf, col='red', lwd=2)
legend(min(bdf$time),max(bdf$Bracknell)*0.9, legend=c('predicted','observed'),
       col=c('red','black'), lty=1, bty='n')

And the (pretty precisely) estimated number of fake signatures is:

nfakesigs=with(subset(bdf, time>ISOdatetime(2016,6,28,0,0,0, tz='Europe/London') & 
                        time<ISOdatetime(2016,6,28,20,0,0, tz='Europe/London')),
     c(mean=mean(Bracknell-Bracknell.pred), sd=sd(Bracknell-Bracknell.pred)))
nfakesigs
##        mean          sd 
## 3339.067675    3.483332

ie. 3339.067675 (+/- 3.4833316 sd) or 0.0876254 % of the total UK sigs.

On Tue night, the petition.parliament.uk team confirmed that they had found these independently on Mon night and they removed them from the reported data. Apparently my numbers were off by 80; they found 3420. Note to self 2 sf was sufficient, 95 CI would have been good but the small baseline shift at the start of the activity spike was likely the main cause of the 2% discrepancy in the effect size prediction.

Other irregularities

There have been other irregularities that are harder for me to spot with these data than the Petitions team, whom I assume have acess to additional information (IP?). This is evident from cases where corrections have been made:

dd=apply(all_sigcounts[,-1],2,diff)
# this is not quite correct because it is sigs_removed + sigs added in prev 2 min
sigs_removed=-apply(dd, 2, min)
plot(table(sigs_removed)[-1], log='x', xlab='Signatures removed', ylab='Frequency')
## Warning in axis(...): "log" is not a graphical parameter

These fake signatures, account for a further 2972 of the UK signatures.

Notes

Personal

For the record, I am a scientist and I voted remain because in my view that was objectively the best decision for the country and my own profession.

Technical note

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document.

Acknowledgements

UK constituency data came from https://github.com/kjhealy/uk-elections and https://www.parliament.uk/mps-lords-and-offices/offices/commons/commonslibrary/statistics-for-uk-constituencies/. EU Referendum data was downloaded from http://www.electoralcommission.org.uk/. Thanks to all three as well as https://petition.parliament.uk/ for making data available.