Base Ranker: Reporting Odds Ratio (ROR)

Nan Xiao https://nanx.me/ (Seven Bridges)https://www.sevenbridges.com/ , Soner Koc https://github.com/skoc (Seven Bridges)https://www.sevenbridges.com/ , Kaushik Ghose https://kaushikghose.wordpress.com/ (Seven Bridges)https://www.sevenbridges.com/
2020-05-17

Beside PRR, ROR is yet another commonly used metric for safety signal detection. Let’s denote the vaccine-symptom pairs from the VAERS database as many \(2 \times 2\) contingency tables:

Target vaccine Target symptom All other symptoms Total
Yes \(n_{ij}\) \(n_i - n_{ij}\) \(n_i\)
No \(n_j - n_{ij}\) \(n - n_i - n_j + n_{ij}\) \(n - n_i\)
Total \(n_j\) \(n - n_j\) \(n\)

In the table, \(n_i = \sum_j n_{ij}\), \(n_j = \sum_i n_{ij}\). The reporting odds ratio (ROR) (Puijenbroek et al. 2002) for each vaccine-symptom pair is defined as

\[ ROR_{ij} = \frac{n_{ij}}{\tilde{E}_{ij}} \]

where

\[ \tilde{E}_{ij} = \frac{(n_i - n_{ij})(n_j - n_{ij})}{n - n_i - n_j + n_{ij}}. \]

Similar to PRR, a relatively higher ROR indicates stronger association between the vaccine and the symptom.

Load the packages for ROR-based singal detection and ranking:


suppressMessages(library("PhViD"))
library("kableExtra")

Load the preprocessed VAERS data and transform it into the analyzable format:


df_p <- readRDS("data-processed/df_p.rds")
df_p <- df_p[, 1:3]
df_v <- as.PhViD(df_p, MARGIN.THRES = 10)

Calculate the Reporting Odds Ratio (ROR) (Puijenbroek et al. 2002) and the ranking statistic — lower bound of the 95% two-sided confidence interval of log(ROR):


lst_ror <- ROR(df_v, MIN.n11 = 10, DECISION = 3, RANKSTAT = 2)
df_ror <- lst_ror$SIGNALS[order(lst_ror$SIGNALS$`LB95(log(ROR))`, decreasing = TRUE), 1:6]
row.names(df_ror) <- NULL

View the top ranked vaccine-adverse event pairs:


head(df_ror) %>% kable() %>% kable_styling()
drug code event effect count expected count LB95(log(ROR)) ROR
INFLUENZA (SEASONAL) (FLUCELVAX) Product use issue 57 0.0863973 6.891032 1440.3816
INFLUENZA (SEASONAL) (AFLURIA) Multiple use of single-use product 49 0.3842040 6.774675 6339.6250
HPV (CERVARIX) Product use issue 22 0.0236538 6.620322 1205.5581
SMALLPOX (DRYVAX) Cow pox 125 0.6461921 6.451967 930.6815
INFLUENZA (SEASONAL) (AFLURIA) HIV antigen negative 48 0.4149403 6.093381 1034.9999
SMALLPOX (ACAM2000) Pericardial disease 64 0.2820515 5.942646 559.5005

Puijenbroek, Eugene P van, Andrew Bate, Hubert GM Leufkens, Marie Lindquist, Roland Orre, and Antoine CG Egberts. 2002. “A Comparison of Measures of Disproportionality for Signal Detection in Spontaneous Reporting Systems for Adverse Drug Reactions.” Pharmacoepidemiology and Drug Safety 11 (1): 3–10.

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.