Buy me a coffee View on GitHub

UK Polling Aggregator 🗳️

Bayesian statistical analysis of UK opinion polling trends

Current Standings

The latest model estimates for each party's support, shown as the mean of the posterior distribution at the most recent time point. These values represent the model's best guess of current support levels, with the change over the past 30 days and average uncertainty in the mean shown for context. Parties are sorted by vote share.

Polls Used

All individual polls used in the model, sorted by date (most recent first). Each pollster is assigned a rating based on their estimated systematic bias. The raw poll results are shown alongside their ratings, allowing you to compare different pollsters' reported values for the same time period.

Date Pollster Rating Client Sample CON LAB REF LD GRN PC SNP OTH

Pollster Ratings

The Bayesian model estimates systematic biases for each polling organization. These represent consistent tendencies to over- or under-estimate party support relative to the underlying trend. Pollsters with larger biases systematically report different values than the trend suggests, while those with smaller biases cluster more tightly around it. The overall bias (RMS across parties) determines the rating from A+ to F.

Pollster Rating Polls Overall Bias CON LAB REF LD GRN PC SNP OTH

About This Dashboard

This dashboard provides a statistical aggregation and visualization of UK opinion polling data for the next general election. Rather than simply averaging polls, or using a LOESS model, it uses a Bayesian model to estimate polling trends while accounting for uncertainty.

Methodology:

  • Model: Bayesian hierarchical B-spline regression with separate smooth trends for each party
  • Pollster bias estimation: Party-specific biases are estimated for each pollster using a hierarchical prior
  • Pollster ratings: Based on overall RMS bias across all parties (A+ to F scale)
  • Uncertainty quantification: 95% highest density intervals (HDI) shown as shaded regions
  • Sampling: Posterior distributions estimated using MCMC (via PyMC with NUTS sampler)
  • Smoothing: Adaptive splines with one knot approximately every month

Data Source: All polling data is sourced from the Wikipedia page on current UK opinion polling, which aggregates polls from various organizations.

Interpreting the Charts:

  • Solid lines: Model's best estimate of party support over time
  • Shaded areas: 95% credible intervals - there's a 95% probability the true value falls within this range
  • Scattered points: Raw polling data from individual surveys, with opacity reflecting pollster quality (darker = higher rating)
  • Interactive legend: Click on party names to show/hide them from the chart

Pollster Ratings:

  • Overall bias: Root mean square (RMS) of party-specific biases
  • Rating scale: A+ (< 0.5%), A (0.5-1.0%), B+ (1.0-1.5%), B (1.5-2.0%), C+ (2.0-2.5%), C (2.5-3.0%), D (3.0-4.0%), F (> 4.0%)
  • Bias values: Positive values indicate overestimation, negative values indicate underestimation

Limitations:

  • The model treats each party independently, without accounting for potential correlations or interactions between parties. Vote shares likely therefore do not sum to 100%.
  • Pollster biases are estimated from historical data and may not reflect future performance or methodological changes.

In future iterations, I may explore more complex models that address these limitations, such as multinomial models to ensure vote shares sum to 100%, or time-varying bias estimation.

Note: This is a statistical model and should not be interpreted as a prediction or forecast. Polling can be volatile and may not accurately reflect final election results.