Math calculator

Poisson Regression Calculator

Counts and their rates.

Modelling counts

Eighty units with a count outcome and one predictor. The rate ratio is 1.5214 per unit (95% CI 1.310 to 1.766, p = 0.000000036), and the Pearson dispersion is 0.9786 — almost exactly the 1 a Poisson process produces. The deviance is 89.976 on 78 degrees of freedom and the Pearson statistic 76.332, both close to their degrees of freedom, which is the pattern that says the variance really does equal the mean. When that holds, the Poisson standard errors are the right ones and no correction is needed.

80 rows · 1 predictor · 78 residual degrees of freedom

Dispersion 0.9786 — consistent with a Poisson process

The Pearson statistic is 76.332 on 78 degrees of freedom and the deviance is 89.976. Both close to the degrees of freedom is what a genuine Poisson process looks like, and it means the standard errors below can be read as they stand.

Dispersion

0.9786

Pearson χ² 76.33 / 78 df

Standard errors off by

0.9893×

the quasi-Poisson correction

Likelihood ratio

29.548

p = 5.46e-8

AIC

337.14

deviance 89.98

Rate ratios, both ways

Each coefficient with Poisson and quasi-Poisson standard errors, intervals and p-values
TermRate ratioPoisson intervalPoisson pQuasi intervalQuasi p
Intercept1.68951.191 to 2.3970.00331.195 to 2.3880.0039
exposure hours1.52141.310 to 1.7663.63e-81.312 to 1.7643.52e-7

The rate ratio column is shared: quasi-Poisson changes nothing about the estimate, only the uncertainty around it. On this data the quasi interval for the first predictor is 0.99 times as wide as the Poisson one, which is the whole practical consequence of the dispersion figure above.

The quasi-Poisson correction is exactly multiplication by √dispersion — the verification suite asserts that on thirty fits, along with the requirement that every coefficient comes back bit-identical. A correction that changed a point estimate would be doing something other than what it claims.

Quasi-Poisson is a standard-error patch, not a model. If the counts are overdispersed because of unobserved variation between units, a negative binomial model fits that structure and gives different — usually better — predictions. If they are overdispersed because of excess zeros, neither is right and a zero-inflated model is the honest choice.

Both standard errors Dispersion checked Rate ratios Variance equals mean, assumed

What this tool shows

On the second preset the dispersion is 5.8378, and the same rate ratio of 1.4746 comes with an interval of 1.314 to 1.655 or 1.116 to 1.949 depending on which standard error you use. The p-value moves from 0.000000000042 to 0.0077. Identical data, identical point estimate, and an interval 2.44 times wider once the overdispersion is accounted for. Poisson regression assumes the variance equals the mean, and when it does not, the model is confident about the wrong thing.

  • Rate ratios with confidence intervals from an iteratively reweighted least squares fit
  • The Pearson dispersion, with the deviance and degrees of freedom it is computed from
  • Quasi-Poisson intervals and p-values beside the Poisson ones, for every coefficient
  • How much every standard error is understated — the square root of the dispersion, stated as a factor
  • A likelihood ratio test against the intercept-only model, and the AIC
  • Why quasi-Poisson is a standard-error patch rather than a different model
Both standard errors Dispersion checked Rate ratios Poisson against quasi

It assumes the variance equals the mean. Check that first.

Updated 13 September 2026 · Works in any browser, no installation

Poisson regression models the log of an expected count as a linear function of the predictors, and returns rate ratios. It carries one assumption that linear regression does not: the variance of the counts equals their mean. Real counts usually vary more than that, and the consequence is not a biased estimate — it is a standard error too small by the square root of the dispersion, which this page measures rather than assumes away.

At a glance

Formula shown
log(λ) = β₀ + β₁x₁ + … , fitted by iteratively reweighted least squares with weights w = λ. exp(βⱼ) is the rate ratio per unit of xⱼ. The Pearson dispersion is Σ(y − λ̂)²/λ̂ divided by n − p; under a true Poisson process it is close to 1. Quasi-Poisson multiplies every standard error by the square root of that dispersion and leaves the coefficients exactly where they were.
Scenario support
Modelling event counts — defects, claims, visits, incidents — against predictors; checking whether counts really behave as a Poisson process; and deciding whether a significant rate ratio survives an honest accounting of the variation in the data.
Educational estimate
Planning support from the values you enter — not professional advice.

What overdispersion actually costs

The second preset is built so the two standard errors disagree as much as they plausibly can, because the size of the gap is what makes the check worth running.

The dispersion is 5.8378. The counts vary almost six times more than a Poisson process allows.

The rate ratio is 1.4746 either way. The point estimate is untouched, which is the part people find surprising.

The interval goes from 1.314–1.655 to 1.116–1.949, 2.44 times wider, and the p-value from 0.000000000042 to 0.0077.

Both results are still significant here. That is the honest version: dispersion does not automatically overturn a finding, it changes how strongly the data supports it — and at a dispersion of 5.8 the difference between those two p-values is eight orders of magnitude.

Why counts overdisperse

A dispersion above 1 is a symptom, and the four usual causes call for different responses.

Unobserved variation between units. Some machines fail more often than the predictors explain. A negative binomial model fits this directly.

Clustering in the events themselves. One incident causes three more. The counts are not independent, and neither correction fixes that properly.

Excess zeros. Many units that could never have an event at all. A zero-inflated model separates the two processes; a dispersion correction just widens everything.

A missing predictor. The cheapest cause to fix and the one worth ruling out first, because the variation it leaves behind looks exactly like overdispersion.

Quasi-Poisson is a patch, not a model

The correction on this page is the simplest of the remedies, and knowing what it does and does not do decides whether it is enough.

It multiplies every standard error by √dispersion. That is the entire operation — asserted in the verification suite, along with the requirement that every coefficient comes back bit-identical.

It does not change any prediction. The fitted counts are the same, so if the model is for forecasting, the correction changes nothing you would act on.

It has no likelihood, so there is no AIC and no likelihood ratio test for a quasi-Poisson fit — which is why those figures on this page come from the Poisson model and should be read with the dispersion in mind.

A negative binomial model is the alternative with a likelihood, and it usually gives different predictions as well as different intervals, because it models the extra variation rather than absorbing it into a scale factor.

Rate ratios, and the exposure that belongs underneath them

A count means nothing without the window it was counted over, and that is usually handled outside the coefficients.

Twelve faults in a year and twelve in a week are different findings. If the observation windows differ across rows, the model needs to know.

The standard device is an offset: log(exposure) enters the linear predictor with its coefficient fixed at 1, which turns the model from counts into rates.

This page does not fit offsets, so with unequal exposure the honest options are to include log(exposure) as an ordinary predictor — and check that its coefficient is near 1 — or to model a rate directly.

A rate ratio of 2.0359 means the expected count doubles per unit of the predictor, holding everything else fixed. Unlike an odds ratio it is a genuine multiplier on the quantity of interest, which makes it the easier of the two to report honestly.

Underdispersion is real and rarer

A dispersion clearly below 1 is unusual enough to be worth a second look rather than a correction.

It means the counts vary less than randomness alone would produce. Something is regularising them.

The usual cause is a process with a floor or a ceiling — a quota, a capacity limit, a rounding rule — which is a fact about the data-generating process rather than noise.

Occasionally it means the counts are not counts. Aggregates, averages rounded to integers, or a measure derived from something continuous.

The quasi-Poisson correction applies here too, shrinking the standard errors rather than widening them — which is technically consistent and worth being cautious about, since narrower intervals from a dispersion estimate deserve more scepticism than wider ones.

How the fit is verified

An iterative fit has no closed form to check against, so the suite uses three independent angles.

Recovery on simulated data. Six samples of three thousand counts drawn from a known model, with the true slope recovered inside five standard errors each time.

The quasi-Poisson identity. Every standard error exactly √dispersion times the Poisson one, and every coefficient bit-identical, across thirty overdispersed fits.

Structural invariants on every fit: the likelihood ratio never negative, every reported ratio the exponential of its coefficient, and the dispersion consistent with the Pearson statistic and degrees of freedom printed beside it.

And the shared least-squares machinery is checked elsewhere. The weighted regression at the heart of each iteration is the same arithmetic the site’s regression diagnostics engine uses, which is cross-verified against a second, independently written implementation.

Reporting a count model

Four items, and the second is the one whose absence lets a model claim more certainty than it has.

Give rate ratios with intervals, not raw coefficients. A log-scale coefficient is not something a reader can act on.

Give the dispersion. It decides whether the intervals beside it mean anything, and it is the figure most often left out.

Say which standard errors you used. Poisson and quasi-Poisson differ here by a factor of 2.42, and “p < 0.001” does not say which.

Say what the exposure window was. A count without its window is not a rate, and a rate ratio from unequal windows without an offset is wrong in a way the output will not show.

Sources and methodology

References for the model and the dispersion problem.

Method. The fit is by iteratively reweighted least squares with a log link and weights equal to the fitted mean, and the dispersion is the Pearson statistic divided by the residual degrees of freedom rather than the deviance ratio — the Pearson version is the one quasi-Poisson is defined from, and both are printed so they can be compared. The quasi-Poisson correction multiplies every standard error by the square root of that dispersion and refers the resulting statistics to a t distribution rather than a normal, since the dispersion is itself estimated. The verification suite asserts that correction as an identity on thirty overdispersed fits — every standard error exactly √dispersion times the Poisson one, every coefficient bit-identical — and separately recovers known slopes from six simulated samples of three thousand counts, each within five standard errors of the truth. That engine is verified on every change against 100 assertions. The count and the per-case breakdown are published on the formula verification page.

Related calculators

Where this goes next:

Logistic RegressionLogistic regression with odds ratios converted to risk ratios at your own event rate, a likelihood ratio test, AUC, and separation reported rather than hidden.
Poisson DistributionPoisson probabilities with a dispersion test against your own variance — because a Poisson forces variance to equal the mean, and real count data usually does not, which is exactly where the tail goes wrong.
Negative BinomialShows both conventions at once — failures before the rth success and total trials differ by exactly r, so the same k gives two answers 32% apart and nobody says which they meant.
Multiple RegressionFits several predictors with a VIF on every term, and names the configuration people misread: a model significant at p = 0.0103 where neither predictor reaches 0.05, at a VIF of only 7.11.
c Chartc and u charts for defect counts, with the exact Poisson probability of exceeding the three-sigma limit computed rather than assumed.
Chi-SquareGoodness of fit and tests of independence with every expected count and per-cell contribution shown — because the validity condition is about expected counts, not observed ones, and most calculators hide them.

More in Math, or browse all calculators.

Educational use disclaimer

An educational tool. Poisson regression assumes the variance of the counts equals their mean; when it does not, the coefficients stay unbiased and the standard errors are too small by the square root of the dispersion. The quasi-Poisson correction shown here adjusts those standard errors and nothing else — it has no likelihood, so it produces no AIC and no likelihood ratio test, and it is not a substitute for a negative binomial or zero-inflated model when the cause of the overdispersion is structural.

How we calculate · Found an error? email us

Authorship & verification

Written and maintained by , a business operator who builds spreadsheet-based calculators.

What's changed (5 updates)

Published 13 September 2026

  1. Published a Poisson fit with rate ratios and the Pearson dispersion check.
  2. Added quasi-Poisson intervals and p-values beside the Poisson ones for every coefficient.
  3. Shipped a preset where the corrected interval is 2.44 times wider on identical data.
  4. Stated the factor by which every standard error is understated when counts overdisperse.
  5. Documented the four causes of overdispersion and which remedy each one calls for.

Add this calculator to your site

Responsive embed — and private: nothing your visitors type leaves their browser.