Saturday, November 28, 2015

Aggregation stands at 54.6 per cent

Two new polls in this week's aggregation:
  • Seven's ReachTEL poll which came in at 55 to 45 per cent in the Coalition's favour (up from 53 to 47 a month ago); and
  • The Australian's Newspoll, which came in at 53 to 47 per cent in the Coalition's favour (unchanged on the previous fortnight).




Betting market holding steady

House Coalition Odds ($) Labor Odds ($) Coalition Win Probability (%)
2015-11-28 Betfair 1.13 7.27 86.547619
2015-11-28 CrownBet 1.13 6.00 84.151473
2015-11-28 Ladbrokes 1.15 5.00 81.300813
2015-11-28 Luxbet 1.07 7.50 87.514586
2015-11-28 Sportsbet 1.10 6.00 84.507042
2015-11-28 TABtouch 1.11 6.50 85.413929
2015-11-28 William Hill 1.10 7.00 86.419753





Friday, November 20, 2015

Betting market update

A further movement to the Coalition in the betting market for the next election.

House Coalition Odds ($) Labor Odds ($) Coalition Win Probability (%)
2015-11-20 Betfair 1.11 7.27 86.754177
2015-11-20 CrownBet 1.13 6.00 84.151473
2015-11-20 Ladbrokes 1.15 5.00 81.300813
2015-11-20 Luxbet 1.07 7.50 87.514586
2015-11-20 Sportsbet 1.10 6.00 84.507042
2015-11-20 TABtouch 1.11 6.50 85.413929
2015-11-20 William Hill 1.10 7.00 86.419753





Saturday, November 14, 2015

Luxbet hits 85%

House Coalition Odds ($) Labor Odds ($) Coalition Win Probability (%)
2015-11-14 Betfair 1.13 6.89 85.910224
2015-11-14 CrownBet 1.13 6.00 84.151473
2015-11-14 Ladbrokes 1.15 5.00 81.300813
2015-11-14 Luxbet 1.09 6.20 85.048011
2015-11-14 Sportsbet 1.10 6.00 84.507042
2015-11-14 TABtouch 1.14 5.50 82.831325
2015-11-14 William Hill 1.13 6.00 84.151473





Wednesday, November 11, 2015

Betting market update

House Coalition Odds ($) Labor Odds ($) Coalition Win Probability (%)
2015-11-11 Betfair 1.13 6.51 85.209424
2015-11-11 CrownBet 1.13 6.00 84.151473
2015-11-11 Ladbrokes 1.15 5.00 81.300813
2015-11-11 Luxbet 1.12 5.60 83.333333
2015-11-11 Sportsbet 1.10 6.00 84.507042
2015-11-11 TABtouch 1.14 5.50 82.831325
2015-11-11 William Hill 1.13 6.00 84.151473





Tuesday, November 10, 2015

Polling update

The latest Newspoll is reported in the Australian. It has the Coalition on 53 and Labor on 47, which is a one point move in the Coalition's favour over the previous Newspoll (54 to 48). Dropping these numbers into our regular aggregation yields an estimated two-party preferred vote share of 53.5 percent for the Coalition.



Across the four models I run, the median sample is as follows:



And, just for the fun of it, let's look at aggregated net happiness.


Monday, November 9, 2015

Update to the Dirichlet, sum-to-zero model

I have been wrestling with an aspect of the Dirichlet, sum-to-zero model of primary voting intention for some time, which I think I have finally solved.

The Dirichlet distribution is a n-tuple or list of proportions, where each proportion is greater than or equal to zero and less than or equal to one. The sum of the n-tuple is one. In our model we use a 4-tuple, where each proportion represents the primary vote share for each party grouping [Coalition, Labor, Greens, Other].

The Dirichlet, sum-to-zero model has three parts:
  1. A temporal model, where the estimated national vote share for each party is pretty much like it was on the previous day. 
  2. An house-effects model, where the house effects:
    • across all houses for a particular party sum to zero
    • across all parties for a particular house sum to zero
  3. An observational model where the poll result for a particular day, subject to houses effects, supports the national estimated vote-share for each of the parties for that day in the temporal model.
I had been struggling with was the double constraint in the house-effects element of the model. For a long time, I simply ignored the second constraint in the corner case, as JAGS would not allow the node to be defined twice. The code snippet for this follows.

    #### ----- House-effects model
    ## -- vague priors ...
    for (h in 2:HOUSECOUNT) { 
        for (p in 2:PARTIES) { 
            houseEffect[h, p] ~ dunif(-0.1, 0.1)
       }
    }

    ## -- sum to zero constraint - but only in one direction for houseEffect[1, 1]
    for (p in 2:PARTIES) { 
        houseEffect[1, p] <- 0 - sum( houseEffect[2:HOUSECOUNT, p] )
    }
    for(h in 1:HOUSECOUNT) { 
        # includes a constraint for houseEffect[1, 1], but only in one direction
        houseEffect[h, 1] <- 0 - sum( houseEffect[h, 2:PARTIES] )
    }

While the absence of the double constraint troubled me a little, the model appeared to work. So I largely left it untouched. With the move to JAGS 4.0.1, I revisited this model. It occurred to me that I could code the second constraint as a requirement that the sum of houseEffect[1, 2:PARTIES] equaled the sum of houseEffect[2:HOUSECOUNT, 1]. I did this with the following addition to the model (including the introduction of zero as a defined constant data element).

data {
    zero <- 0.0
}
model {

    ...

    ## -- the other direction constraint on houseEffect[1, 1]
    zero ~ dsum( houseEffect[1, 1], sum( houseEffect[2:HOUSECOUNT, 1] ) )
}

From the earlier code, houseEffect[1, 1] contains the negated sum from houseEffect[1, 2:PARTIES]. When added to sum of houseEffect[2:HOUSECOUNT, 1] the result should be zero.

Let's revisit the charts. We will start with the vote estimate charts, before moving to the house effects charts (which we will look at from the perspective of houses and parties).

















Does this additional bit of code make the model work better? I don't think so, but it is a more accurate specification of the necessary constraints in the model.

The full model code can be seen here (it is the third of the four models on the linked page).

Thursday, November 5, 2015

Betting market update

House Coalition Odds ($) Labor Odds ($) Coalition Win Probability (%)
2015-11-05 Betfair 1.13 6.89 85.910224
2015-11-05 CrownBet 1.13 6.00 84.151473
2015-11-05 Ladbrokes 1.15 5.00 81.300813
2015-11-05 Luxbet 1.12 5.60 83.333333
2015-11-05 Sportsbet 1.15 5.50 82.706767
2015-11-05 TABtouch 1.14 5.50 82.831325
2015-11-05 William Hill 1.13 6.00 84.151473





Monday, November 2, 2015

Aggregation and observations

Dear reader, before moving to the aggregation, you should know that I have upgraded my analytical tool set from JAGS 3.4.0 to JAGS 4.0.1. The good news is that the aggregation models run about twice as fast as they did previously. Also, I have fixed a couple of trivial coding glitches in the Dirichlet models which became evident with the new JAGS (updated code here).

The Morgan Poll continues its statistical hagiography of the Turnbull government. With preferences distributed on the basis of the previous election, this is the third 55 to 45 from Morgan. Plugging these numbers into my standard aggregation model we get an estimated two-party preferred voting intention for the Coalition of 53.3 per cent.



Just for the fun of it, I thought I would see what difference it would make if we treated the post Malcolm Turnbull polls as a new series from Morgan. The results follow.



In this last chart, it is interesting to note the change in systemic polling drift from the House of Morgan before and after the leadership of Malcolm Turnbull.

Turning to the Dirichlet model of primary votes, we have ...









And across all the models.