The result is an aggregation that suggests the population two-party preferred (TPP) voting intention might be closer to 49.5 per cent for Labor and 50.5 per cent for the Coalition.
All-in-all, this result suggests a close election.
Because the ReachTEL series (with just three polls) appears to have a moderate Coalition bias, I have excluded it from the sum-to-zero constraint on house-effects (just like I previously excluded the Morgan face to face poll because of its Labor bias). I will review this decision when I have seen a few more ReachTEL polls.
Of note: once bias adjusted, the latest ReachTEL poll is pretty much 50-50 in round terms (See the right-most data point in the next chart).
Adding the ReachTEL poll suggests that the Rudd Resurrection Effect (RRE) might be closer to 5.1 percentage points. Half the RRE samples from the aggregation fell between 4.5 and 5.7 percentage points.
Finally, for the nerds, the updated JAGS code:
model {
## Based on Simon Jackman's model, with an additional element for
## the various rounding effects of the different polling houses
## and a sum-to-zero constraint on house effects
## Update: also provides for a discontinuity with the Gillard to Rudd transition.
## -- observational model
for(poll in 1:NUMPOLLS) { # for each poll result
roundingEffect[poll] ~ dunif(-houseRounding[poll], houseRounding[poll])
yhat[poll] <- houseEffect[house[poll]] + walk[day[poll]] +
roundingEffect[poll]
y[poll] ~ dnorm(yhat[poll], samplePrecision[poll]) # distribution
}
## -- temporal model
for(i in 2:PERIOD) { # for each day under analysis ...
#walk[i] ~ dnorm(walk[i-1], walkPrecision) # AR(1)
day2DayAdj[i] <- ifelse(i==DISCOUNTINUITYDAY, walk[i-1]+discontinuityValue, walk[i-1])
walk[i] ~ dnorm(day2DayAdj[i], walkPrecision)
}
## -- sum-to-zero constraint on house effects (ignoring Morgan F2F/ReachTEL)
#houseEffect[1] <- -sum( houseEffect[2:HOUSECOUNT] ) + houseEffect[MORGANF2F]
#houseEffect[1] <- -sum( houseEffect[2:HOUSECOUNT] )
houseEffect[1] <- -sum( houseEffect[2:HOUSECOUNT] ) + houseEffect[REACHTEL]
## -- priors
sigmaWalk ~ dunif(0, 0.00250) ## uniform prior on std. dev.
walkPrecision <- pow(sigmaWalk, -2) ## for the day-to-day random walk
walk[1] ~ dunif(0.01, 0.99) ## initialisation of the daily walk
discontinuityValue ~ dunif(-0.2, 0.2) ## uninformative prior
for(i in 2:HOUSECOUNT) { ## vague normal priors for house effects
houseEffect[i] ~ dnorm(0, pow(0.1, -2))
}
}
No comments:
Post a Comment