Calculating Odds Ratio in R
I have been working on several volcano plots lately. That means I’ve been pouring through many thousands of records of clinical trial data. Typically, when we give a patient a higher dose, we fix whatever indicator we are trying to remedy, and we also see a greater rate of adverse events (AEs). Volcano plots give us the ability to quickly discern just how much frequency of AE increases as dose increases.
treatments <- c("Placebo", "Low Dose", "High Dose")
ae_present <- c("No", "Yes")
dat <- matrix(c(85, 1, 80, 5, 77, 8), nrow = 3, ncol = 2, byrow = TRUE)
dimnames(dat) <- list("Treatments" = treatments, "AE Present" = ae_present)
If you’ve done everything correctly, this data should appear as the following table.
AE Present
Treatments No Yes
Placebo 85 1
Low Dose 80 5
High Dose 77 8
To compute the odds ratio, we will use the epitools
pacakge, which is available on CRAN.
library(epitools)
or_fit <- oddsratio(dat)
Let’s check out the contents of the or_fit
variable.
$data
AE Present
Treatments No Yes Total
Placebo 75 1 86
Low Dose 80 5 85
High Dose 77 8 85
Total 242 14 256
$measure
odds ratio with 95% C.I.
Treatments estimate lower upper
Placebo 1.000000 NA NA
Low Dose 4.755327 0.7107625 127.7539
High Dose 7.804760 1.3552471 199.6285
$p.value
two-sided
Treatments midp.exact fisher.exact chi.square
Placebo NA NA NA
Low Dose 0.11629373 0.11732592 0.09353659
High Dose 0.01784242 0.01801546 0.01572061
Using the same epitools
package, we can also compute the relative risk (risk ratio) for the various treatments.
rr_fit <- riskratio(dat)
This rr_fit
data looks like the following.
$data
AE Present
Treatments No Yes Total
Placebo 75 1 86
Low Dose 80 5 85
High Dose 77 8 85
Total 242 14 256
$measure
risk ratio with 95% C.I.
Treatments estimate lower upper
Placebo 1.000000 NA NA
Low Dose 5.058824 0.6035846 42.39952
High Dose 8.094118 1.0345936 63.32413
That’s it! Now, go forth and analyze!