Methodology

What we collect, how we clean it, and exactly what each number on this site means.

1. Collecting polls

Every few hours we pull from these sources and archive an unmodified copy of everything we download:

When the same poll appears in more than one source, we merge it into one record. A match needs the same pollster, field dates within a day or two, the same population and toplines within one point. Identical dates and toplines also count as a match even when sources disagree on the sample. Gaps in one source are filled from another. When values conflict, VoteHub wins, because it carries unrounded figures from pollsters' crosstabs.

2. Cleaning

3. Margins

Election polls are scored as the leading non-Republican candidate minus the Republican, so positive numbers favor Democrats (or an independent running against a Republican). Each race's matchup is the pairing polled most often in its last 60 days of polling. Generic ballot polls are Democrats minus Republicans. Approval is approve minus disapprove, so positive numbers are more favorable to Trump.

4. House effects

We fit a Bayesian model to all polls at once. Each poll is modeled as

poll margin = race's true opinion that week + pollster's house effect + population effect + sponsor effect + error

Current estimates (95% intervals; positive is more Democratic for elections and more favorable to Trump for approval):

EffectElectionsTrump approval
Likely voters (vs registered)−0.1 (−0.8 to +0.6)+1.4 (+0.0 to +2.7)
All adults (vs registered)+1.7 (+0.4 to +3.0)−1.2 (−2.1 to −0.3)
Voters, unspecified (vs registered)−0.5 (−3.5 to +2.7)−1.9 (−8.2 to +4.9)
Population not reported (vs registered)−0.1 (−3.2 to +2.9)—
Democratic-sponsored poll+1.2 (+0.1 to +2.2)−1.2 (−6.1 to +3.6)
Republican-sponsored poll−1.4 (−2.2 to −0.5)−0.1 (−1.9 to +1.8)

Fit with NUTS (NumPyro): elections: all R-hat ≤ 1.01, smallest effective sample 1432, 0 divergent transitions; approval: all R-hat ≤ 1.01, smallest effective sample 861, 0 divergent transitions. If a fit fails its convergence checks, that poll type falls back to the simpler model and this page says so.

A house effect is relative. It tells you how a pollster compares with other pollsters, not whether it is right. If most pollsters miss in the same direction, the one that looks like an outlier may be the most accurate. We will score accuracy against certified results after each election.

5. Noise and herding

For pollsters with 5 or more polls, we compare how widely their polls scatter around their own house effect with how widely they should scatter given their sample sizes. A dispersion of 1 is typical. Well below 1 means the polls are more consistent than chance allows, which can point to herding or heavy modeling. Well above 1 means they are noisier than expected. We flag pollsters whose dispersion is significant at p < 0.05 (chi-square test). A flag is a statistical observation, not an accusation.

6. Head-to-head comparisons

As a model-free check, we pair up polls by different pollsters of the same race whose field midpoints are within 7 days, and average the gap. The intervals come from 2,000 bootstrap resamples. When this simple comparison and the model disagree, that's worth looking into.

7. Disagreement index

For each 2-week window, we take the typical distance of polls from their race's consensus and divide it by the typical sampling error. A value of 1 means pollsters disagree only as much as sample sizes predict. Higher values mean real methodological differences between pollsters.

Limitations and roadmap