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:
- VoteHub's public polls API: structured records with field dates, sample size, population, sponsor, partisan flags and a link to the pollster's own release.
- Wikipedia race articles for every Senate and governor race: we parse the general-election polling tables, including the footnotes that link to each poll's original release. We also read the national job-approval tables in Wikipedia's article on opinion polling of the second Trump presidency.
- Pollsters' own releases. We currently read Emerson College's national surveys straight from its website, for the generic ballot and Trump approval. If a release can't be read with certainty, we skip it and log it rather than guess.
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
- Pollster names. "NYT/Siena", "The New York Times/Siena College" and "New York Times / Siena University" are the same operation. A curated registry maps spellings to one pollster, and anything unrecognized is flagged for review.
- Validation. Rows with impossible dates, implausible sample sizes or answers that add to more than ~104% are held back, for example ranked-choice tables that show several rounds in one row.
- One number per poll. Many polls report several versions: likely and registered voters, with and without third-party candidates. We use one per poll: the race's main matchup, then likely voters over registered voters over adults, then the largest sample.
- Tracking polls. When a pollster's field periods overlap (daily or weekly trackers), we keep only non-overlapping waves so one firm can't swamp the data.
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
- The race's true opinion is a trend that can drift from week to week (a random walk). It is estimated jointly with everything else, so a poll is never compared against an average it helped tilt.
- A pollster's house effect is pooled across every race it polled. It is pulled toward zero when the pollster has few polls, and centered so the average poll's pollster is zero.
- Population effects separate who was surveyed (likely voters, all adults, and so on, each compared with registered voters) from the pollster itself. They're identified because many pollsters report more than one population.
- Sponsor effects measure how much polls marked as Democratic- or Republican-sponsored differ. Our sources often mark a partisan firm's every poll this way, so the house effect we show includes the pollster's average sponsor effect. It is the pollster's total lean with population differences removed.
- The error combines sampling error (from the sample size, with a design effect of 1.5) and each pollster's own non-sampling error. It follows a heavy-tailed distribution, so one wild poll can't drag a pollster's estimate.
Current estimates (95% intervals; positive is more Democratic for elections and more favorable to Trump for approval):
| Effect | Elections | Trump 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
- Our sources don't record survey mode (phone, text, online panel), so we can't yet separate mode effects from house effects.
- Population effects are assumed to be the same for every pollster. A pollster that only ever surveys all adults gets the average adults-vs-registered gap, not its own.
- Coverage depends on our sources. When a source stops updating a series, the overview page shows a notice.