Fixed and Fair
Briefing
The Board meets on Friday, and Odile Kastner wants the arithmetic settled before anyone argues about models. Corvane's submission pools eight QUAYSIDE trials of Velquor and reports a single odds ratio for heart failure hospitalization. "Start where nobody can disagree," Vale tells you, sliding the trial table across her desk. "Fixed effect, by hand. Then tell me what it means for a ward of patients, not for a statistician."
Brook, reading over your shoulder, says what Kastner will ask first: how many patients need Velquor to keep one out of hospital?
Specification
- Data:
quayside_trials.rds, one row per trial. - Outcome: heart failure hospitalization within 12 months.
- Effect measure: odds ratio, Velquor versus control; below 1 favors Velquor.
- Model: inverse variance fixed effect meta-analysis of log odds ratios, with Woolf variances 1/a + 1/b + 1/c + 1/d. No trial has a zero cell, so no continuity correction.
- Q: Cochran's Q from the same fixed effect fit.
- W: each trial's weight is its inverse variance; report the largest trial's share of the total weight, in percent.
- NNT: at a control risk p0 = 0.15, convert the pooled OR to a risk ratio with RR = OR / (1 − p0 + p0 × OR), take RD = p0 × (RR − 1), and report ceiling(1 / |RD|).
- Compute every part from unrounded values.
Flag
epi{OR_Q_W_NNT}
| Part | What | Format |
|---|---|---|
| OR | Pooled inverse variance fixed effect odds ratio, Velquor versus control | number(dp=2) |
| Q | Cochran's Q from the same fit | number(dp=1) |
| W | Largest trial's share of the total weight, percent | number(dp=1) |
| NNT | NNT at a control risk of 0.15, via OR to RR, rounded up | integer |
Format example: epi{0.81_9.3_21.7_41}. Unrounded numbers are fine: the preview shows what will be checked.
Exhibits
The eight QUAYSIDE trials, one row each. 336 B
sha256 7037a8402097891f6ebb307365cd02bd3f67cdb84dc7b993862be50becc950addownload
What each column means. 551 B
sha256 0463742372b64510ef953a29efde2841c72b5a4a6fcbbd7280cab29d4be2efc0download
R files can run code when loaded in R older than 4.4.0. Use R 4.4.0 or later and check the checksum before readRDS() or load().