Log-binomial regression
Estimates a prevalence ratio in a cross-sectional study or a risk ratio in a cohort or trial with fixed follow-up. Poisson with robust SE if it fails to converge.
Clinical example
In a cross-sectional survey, the prevalence of hypertension in smokers compared with non-smokers, adjusted for age, reported as a prevalence ratio instead of an odds ratio.
When to use it
- The outcome is yes or no and common, so that an odds ratio would overstate the effect.
- You want a prevalence ratio (cross-sectional) or a risk ratio (cohort or trial with fixed follow-up).
- Follow-up time is the same for everyone.
Assumptions to check
Independent observations
One value per patient.
The model has to converge
Log-binomial models can fail to converge. Poisson regression with robust standard errors estimates the same kind of ratio.
What to report
- Prevalence ratio with 95% CI
- Risk ratio with 95% CI; also give ARR and NNT for treatment effects
Common mistakes
Reporting a logistic OR as if it were a risk ratio when prevalence exceeds about 10%; the OR then overstates the effect
Defaulting to an odds ratio when the outcome is common
Alternatives
| If your situation is… | Use |
|---|---|
| Case-control | Logistic regression |
| Follow-up time differs between patients | Cox proportional hazards regression |
In your software
# R
fit <- glm(hypertension ~ smoker + age, family = binomial(link = "log"), data = d)
exp(cbind(PR = coef(fit), confint(fit)))
# If it does not converge: Poisson with robust standard errors
library(sandwich)
library(lmtest)
fit2 <- glm(hypertension ~ smoker + age, family = poisson, data = d)
coeftest(fit2, vcov = vcovHC(fit2, type = "HC0"))
GENLIN hypertension (REFERENCE=FIRST) WITH smoker age
/MODEL smoker age DISTRIBUTION=BINOMIAL LINK=LOG
/PRINT SOLUTION (EXPONENTIATE).