Unit 07.03: Risk is out of everyone; odds is against the alternative
Risk ratios and odds ratios agree only when the outcome is rare, and the odds ratio is the one your model will hand you.
Risk is out of everyone; odds is against the alternative
Risk is events divided by the total. A risk ratio compares two risks and reads naturally: twice as likely.
Odds is events divided by non-events. An odds ratio compares two odds, and it does not read naturally at all — but it is what logistic regression produces, so you will meet it constantly.
The two are close when the outcome is rare, because with few events the denominator of the odds is nearly the total. As the outcome becomes common they diverge sharply, and the odds ratio is always further from 1. Reading an odds ratio as a risk ratio therefore always overstates the effect.
This block computes both from one table, then repeats with a common outcome.
tbl <- matrix(c(30, 270, 15, 285), nrow = 2, byrow = TRUE,
dimnames = list(group = c("exposed", "unexposed"),
outcome = c("event", "no_event")))
print(tbl)
risk_exposed <- tbl["exposed", "event"] / sum(tbl["exposed", ])
risk_unexposed <- tbl["unexposed", "event"] / sum(tbl["unexposed", ])
odds_exposed <- tbl["exposed", "event"] / tbl["exposed", "no_event"]
odds_unexposed <- tbl["unexposed", "event"] / tbl["unexposed", "no_event"]
cat("\nRisk exposed :", round(risk_exposed, 4), "\n")
cat("Risk unexposed :", round(risk_unexposed, 4), "\n")
cat("Risk ratio :", round(risk_exposed / risk_unexposed, 3), "\n")
cat("Odds ratio :", round(odds_exposed / odds_unexposed, 3), "\n\n")
cat("Here the odds ratio exaggerates the risk ratio by",
round((odds_exposed/odds_unexposed) / (risk_exposed/risk_unexposed), 2), "x.\n")
cat("They agree only when the outcome is rare. With a common outcome:\n")
common <- matrix(c(300, 200, 200, 300), nrow = 2, byrow = TRUE)
rr <- (300/500) / (200/500); or <- (300/200) / (200/300)
cat(" risk ratio", round(rr, 2), " odds ratio", round(or, 2),
" -- a factor of", round(or / rr, 2), "apart\n")
cat("Report risk ratios where you can. Odds ratios are what logistic\n")
cat("regression gives you, and they are routinely misread as risk ratios.\n")
With risks of 0.10 and 0.05 the risk ratio is exactly 2 and the odds ratio 2.111 — close, because the outcome is rare, and the odds ratio exaggerates by a factor of 1.06. With a common outcome the same calculation gives a risk ratio of 1.5 against an odds ratio of 2.25, a factor of 1.5 apart. The same data, described as 'half again as likely' or 'more than twice the odds'.
The mistake this prevents
The mistake is saying 'twice as likely' when the model reported an odds ratio of 2. With a common outcome that overstates the risk ratio substantially.
Takeaway
Report risk ratios or absolute risks where you can. When reporting an odds ratio, say that it is an odds ratio and give the underlying rates so a reader can convert.
