Irish Polling Report

A place to discuss Irish opinion polls


leave a comment »

A lot of folks ask me how I arrive at the figures in this blog, and given this is a new election with a new spreadsheet, I thought I’d update the explanation.

First of all, what it isn’t.  It’s *not* a portal into the future.  It’s not even a prediction of the result of the election.  What it is, is a projection of the sort of seats outcome most likely if there was a general election result in line with an opinion poll.  Each election do a projection for each usable poll (last one pre #GE11 here) and then I use the final figures (plus some final tweaking to account for information received during the campaign) to make my final prediction.  I compared pollsters and myself with the actual outcomes and I hope you’ll agree the outcomes show my approach works (within parameters that are possible) in terms of predicting national outcomes.  This doesn’t claim it will be close everywhere as there will always be local variation, but that generally cancels out at a national level (there’s only so much luck a party can have). Last one was more accurate than the media projections (OK, not hard) and well ahead of the other main spreadsheet predictions website, an outcome which is method related, rather than me having a good nose what what happens locally (I don’t think I have, particularly, but given such knowledge tends to be restricted to what you know best, it can involve significant confirmation bias- “A little knowledge can be a dangerous thing“).

Given this election follows a constituency redrawing, the first element was/is creating a ‘base vote’,  This is largely an attempt to re-construct the 2011 General Election, with the new constituencies and, perhaps more challenging, with new parties and defections (but without taking account of swings since then).   This establishes the baseline, from which the swings are measured. Obviously, this is fraught with dangers but, in practice, being a bit out here and there doesn’t make a significant impact on the method’s accuracy, at least for the larger parties and in practice not for the smaller parties (beyond the margin of error, anyway), for reasons that become apparent below.

Each poll, I enter the ratings for each party.  Fortunately, the smaller parties are getting named this time around, which makes the approach much more accurate.  There’s another blog that aggregates the smaller parties and INDs into OTH, and as a result shows them gaining a lot of seats relative to LP.  However Inds, AAA and Renua are not as coherent a block as a single party, they don’t transfer as well as running mates, and they don’t manage their vote in the first place.  The same blog has been explaining its low vote to seat ratio for LP (much lower than received in other elections with fewer votes) on the basis that there are more fringe parties to overtake them now than in 1987, but this ignores that a fractured 15% OTH vote will transfer all over the place, especially as there are all sorts of reasons voters find themselves in that column.

The spreadsheet then calculates 2 variables for each party (and OTH)  The first, used by most others doing this, is the proportionate change in each party vote.  For example, let’s take a constituency (Upper Down) where PartyA had 16% last time (more properly, its the baseline figure rather than the actual 2011 vote but we’ll call it that for simplicity), when getting 8% nationally (i.e. they got double their national average there in 2011, so it’s a stronghold).

Say that party’s national vote increased from that 8% to 20% (quite an achievement!), that variable is  2.5 (20 divided by 8).  Formula 1, applied to this value, increase PartyA’s vote in Upper Down from 16% to 40%.

However, while somewhat instructive, early generations of this calculation (originally in BASIC on an 1980s home computer) found that this over-estimated the swing in constituencies where the party was already strong, and under-estimated where it was weak.  Overall this largely tended to cancel out in net terms, but I was keen to refine it.  So I did.


The second variable calculates the proportionate change in those not voting for the party locally.  This makes real-world sense, as any increase in a party vote is – largely – the result of people leaving other candidates.  Where you already have a lot of those votes, there’s fewer to win.  Variable B in this case, is the change nationally in the non-vote for each party , i.e. from 92% (100-8), to 80% (100-20).  So the non-vote variable in each constituency for PartyA is 92% by 80%, or 0.87 (i.e. the non-vote ‘shrinks’ by 13%).  There is also a step that ensure each value is above zero (required because can go below zero, as a result of the non-vote increasing a lot and not much needed to make it above 100% locally)…in such cases it ‘increases’ the vote to zero (as you’ll note later, this slightly reduces the vote for them elsewhere).

So the previous 16% vote for PartyA in Upper Down meant a non-vote of 84%.  Apply variable2 of 87%, and that’s 73% of a non-vote there now, or  a party vote of 27%.  In other words, the swing under this formula is smaller (because the vote was already relatively high).  Conversely, where that party would have been weaker than nationally would see that swing somewhat higher (try it and see, it’s fun! Kinda. Sorta…)

The spreadsheet then applies both variable A and variable B to PartyA (and the equivalent for all parties) into the party totals in each constituency, and an average of those is produced.  In this case, PartyA in Upper Down is looking at 33.35% (average of 40% + 27%), compared to 20% nationally.


OK, so in each constituency, you have a total for each party/OTH. But the total in each constituency won’t add up to exactly 100%.  Next job is to scale each party total up or down to make the total in that constituency 100.0%.  That’s simple enough.

Next job involves calculating what the national vote totals for each party are as a result of these new totals, based on the likely voters in each constituency.  This will not be level with the numbers that were in the poll you entered (it won’t be very far off, but may be more than 2% out, so it has to be adjusted for the projection to be sound).  When the spreadsheet calculates the drift from the poll figures, it then goes through each constituency and adjusts accordingly, by the appropriate percentage.

The final amount is calculated and is the final (unhidden) column for each party in each constituency, with a blank column for the seats in each constituency.


Then it’s the count.

In a majority of seats (in some constituencies all of them), it’s obvious from the FPV what the seats are going to be (at over 90% certainty) and so I don’t do a laborious count-by-count projection.  If FG are 50% in a 3-seater, FF 25%, LP 10% and OTH 15%, that’s clearly 2 seats FG, 1 FF (more than 9 times out of 10, anyway).  But where it’s not, I use a template on another tab.  It involves me splitting the party votes among candidates in a plausible fashion, and transfers in each count on the basis I judge (yes, you can’t do this another way) is most likely.  Current I assume LP/FG will transfer about 50% to each other (and 75-80% internally while have running mate).  SF/FF transfers similar outside Dublin, lower (c.30%) in the capital).  Indos transferring about a bit but the direction depends on the politics of local Indo candidates.  Local factors I suspect will be stronger this time and so a bit more leakages across parties to stay in the county.  AAAPBP transfers about 45% to SF, 15-20% to LP and 20% OTH.  A fair few non-transferables, as most voters already seem to be looking for a reason to vote for no-one.  In practice, a lot of last seats are being won in these constituencies without reaching the quota.

This count simulation may make it clear that the last seat is pretty certain to go to a particular party (at least so you’d be 90%+ sure). However some won’t, and where it’s a close call, I (again using my judgement) apportion probability.  Where it’s literally 50/50, too close to call, each gets 0.5 and so on.  This means that if a party has a two-thirds chance in 3 constituencies, the spreadsheet only gives them 2.0 seats, and that’s more accurate.  If you have 10 constituencies where you have a 67% chance of winning, you shouldn’t win all ten of them (if you do, they probably weren’t 67%).

Spreadsheet tots all these up, and then I manually round the totals (*.5 is rounded up, unless there’s more than 158 seats as a result, in which case they round down).

And that’s it.  Of course it involves some degree of subjectivity where final seats are close, although past record suggests I manage to avoid bias (I see little point in fooling myself, and this stuff is primarily for my own interest).

So that’s it. And if you still don’t trust it… that’s fine!  I’m happy it’s worked well in the past and will do so in the future.  I just thought I’d answer the question.




Written by Dotski

February 8, 2016 at 11:56 pm

Posted in Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: