Editverse Free Calculator
Poisson Regression
Model count outcomes and get rate ratios with 95% CIs for each predictor, with the R command behind the result. Each row is one observation, and every row is assumed to cover the same observation window: the calculator has no exposure or person-time offset. A full guide follows below. Validated against R 4.3.3.
In Simple Words
Poisson regression is the right tool when what you’re measuring is a count — the number of infections on a ward, the number of falls a patient has in a year, the number of adverse events per clinic. Counts can only be 0, 1, 2, 3 and so on, they can’t go negative, and they’re often clustered near zero with a long tail, which is exactly the shape ordinary linear regression handles badly.
The calculator fits a Poisson model and reports each predictor as a rate ratio: a value above 1 means that predictor is associated with a higher expected count, a value below 1 means a lower one. That makes the output easy to read even if you’ve never fitted a generalized linear model before.
When to Use Poisson Regression
Reach for Poisson regression whenever your outcome is a count of events observed over the same fixed window for every observation, such as hospital admissions per month or bacterial colonies per plate, and you want to know how one or more predictors change the expected rate of those events.
It sits alongside two other regression tools depending on what your outcome actually looks like. If your outcome is continuous and roughly symmetric (blood pressure, weight, a lab value), use Multiple Linear Regression instead. If your outcome is binary — an event either happened or it didn’t — use Logistic Regression instead, which reports odds ratios rather than rate ratios. Poisson regression is the middle ground built specifically for counts.
Expected: one row per record, count, x1, x2, …
Drop a CSV here or click to choose. Parsed in your browser: nothing is uploaded.
Expected: one row per record, count, x1, x2, …
df <- read.csv(text = "count,x1
{pois_csv}")
m <- glm(count ~ ., data = df, family = poisson)
summary(m); exp(coef(m))User guide
When to use. Model count outcomes and obtain rate ratios for each predictor.
Assumptions. Counts follow a Poisson distribution; mean equals variance (check for overdispersion).
Common mistakes. If variance far exceeds the mean, use negative binomial or a quasi-Poisson model.
Worked example
Click Load example data above, then Run Analysis to see a fully worked result with figure, formula and interpretation for this test.
References
- Cameron AC, Trivedi PK. Regression Analysis of Count Data. 2nd ed. 2013.
Worked Examples
Example 1: Counts vs. a Single Predictor
Eight observations pair a count outcome with a predictor x1: (count=2, x1=1), (3, 2), (5, 3), (8, 4), (10, 5), (14, 6), (20, 7), (25, 8). Notice the counts rise steeply, not linearly, as x1 increases — that accelerating pattern is a signature of count data and part of why fitting a straight line to raw counts tends to fit poorly at the extremes. Enter the pairs into the calculator and run the model: it fits glm(count ~ x1, family = poisson) and reports a coefficient for x1 on the log scale, which the calculator also exponentiates into a rate ratio for you.
Example 2: Reading the Output
Using that same dataset, the calculator gives the coefficient’s p-value (is x1 associated with the count at all?) and the exponentiated coefficient, or rate ratio, with its 95% CI (how much does each one-unit increase in x1 multiply the expected count by?): here 1.40, 95% CI 1.26 to 1.56, p < 0.0001. The R command (summary(m); exp(coef(m))) also prints the residual deviance, a rough check of how well the model fits. A rate ratio comfortably above 1 with a small p-value would indicate the predictor is associated with a meaningfully higher expected count; a rate ratio close to 1 would indicate little effect.
Assumptions to Check
Poisson-distributed counts. The outcome should genuinely be a count of events (0, 1, 2, 3…) rather than a rate you’ve already divided by exposure.
Mean equals variance. A core property of the Poisson distribution is that its variance equals its mean. Check for overdispersion — if the observed variance is much larger than the mean, standard errors from a plain Poisson model will be too small.
Independent observations. Each count should be independent of the others; repeated counts on the same patient or cluster need a model that accounts for that structure.
Log-linear relationship. The model assumes predictors act linearly on the log of the expected count, not on the count itself.
Common Mistakes
Ignoring overdispersion
If the variance far exceeds the mean, use negative binomial or a quasi-Poisson model instead — both are built for overdispersed count data that a plain Poisson model would understate.
Treating the raw coefficient as the effect size
The model coefficient is on the log scale and isn’t directly interpretable. Always exponentiate it (as the calculator does) to get the rate ratio before describing the effect.
Using Poisson regression on an already-normalized rate
If your outcome is “events per person-year” rather than a raw count, you need an offset term for exposure, not a plain count model fit to the normalized value. This calculator does not take an offset, so when person-time or exposure differs between rows, fit glm(count ~ x1 + offset(log(time)), family = poisson) in R instead.
Confusing rate ratios with odds ratios
Poisson regression reports incidence rate ratios, not odds ratios. They’re read the same way (above 1 = higher, below 1 = lower) but they answer a different question than logistic regression’s odds ratios.
Frequently Asked Questions
What’s the difference between Poisson regression and linear regression?
Linear regression assumes a continuous, roughly normal outcome. Poisson regression is built for count outcomes (0, 1, 2…) and models the log of the expected count, which handles the right-skew and non-negativity that counts naturally have. See the Multiple Linear Regression calculator for continuous outcomes.
What is a rate ratio?
A rate ratio is the exponentiated regression coefficient. A rate ratio of 1.5 for a predictor means a one-unit increase in that predictor is associated with a 50% higher expected count, holding other predictors constant.
What if my data are overdispersed?
Check whether the variance of your counts substantially exceeds the mean. If it does, a negative binomial model is usually the better fit — plain Poisson regression will understate your standard errors and can make results look more significant than they are.
Can Poisson regression handle zero counts?
Yes, zeros are a normal part of count data and the Poisson distribution accommodates them directly. If your data have far more zeros than a Poisson distribution would predict, a zero-inflated model may fit better.
Related Calculators
References
- Cameron AC, Trivedi PK. Regression Analysis of Count Data. 2nd ed. 2013.
- McCullagh P, Nelder JA. Generalized Linear Models. 2nd ed. Chapman & Hall/CRC; 1989.
Need This Analysis Done for Your Manuscript?
Our PhD biostatisticians run Poisson and negative binomial regression on your count data — publication-ready tables with reproducible R output.
