I would like to conduct a multivariate meta-analysis (multiple treatment arm meta analysis) comparing the effect of different drugs. My outcome measure is discrete and describes the number of occurrences of a specific side effect during the period of observation. The studies that i would like to include report the odds ratio (OR) and their 95%-CI of this side effect for every drug relative to a “baseline drug”. The problem is that studies defined different drugs to be the baseline.
- Is it valid to just transform my OR to bring them to a common baseline drug?
- Is it valid to transform the 95%-CI of the OR in the same way?
- There is typically no 95%-CI reported for the baseline drug. Thus
when I transform this baseline drug, I have no 95%-CI. Is there a way to derive a 95%-CI in this case?
Here is some dummy data:
structure(list(study = structure(c(2L, 2L, 2L, 2L, 2L, 3L, 3L,
3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L), .Label = c("Liu", "Mark", "Smith"
), class = "factor"), drug = structure(c(1L, 2L, 3L, 4L, 5L,
1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L), .Label = c("A", "B",
"C", "D", "E"), class = "factor"), OR = c(1, 1.5, 1.7, 1.8, 2.5,
2.8, 1.1, 1, 2.3, 1.2, 1.8, 1.2, 2.5, 1, 1.8), ci_lb = structure(c(13L,
5L, 4L, 9L, 11L, 12L, 2L, 13L, 10L, 1L, 6L, 3L, 8L, 13L, 7L), .Label = c("0.5556",
"0.6225", "0.7619", "1.2628", "1.365", "1.4212", "1.5758", "1.6208",
"1.7048", "1.7435", "1.9497", "2.3531", "NA"), class = "factor"),
ci_ub = structure(c(13L, 2L, 7L, 5L, 10L, 11L, 1L, 13L, 9L,
4L, 8L, 3L, 12L, 13L, 6L), .Label = c("1.5775", "1.635",
"1.6381", "1.8444", "1.8952", "2.0242", "2.1372", "2.1788",
"2.8565", "3.0503", "3.2469", "3.3792", "NA"), class = "factor")), .Names = c("study",
"drug", "OR", "ci_lb", "ci_ub"), row.names = c(NA, -15L), class = "data.frame")
> my_data
study drug OR ci_lb ci_ub
1 Mark A 1.0 NA NA
2 Mark B 1.5 1.365 1.635
3 Mark C 1.7 1.2628 2.1372
4 Mark D 1.8 1.7048 1.8952
5 Mark E 2.5 1.9497 3.0503
6 Smith A 2.8 2.3531 3.2469
7 Smith B 1.1 0.6225 1.5775
8 Smith C 1.0 NA NA
9 Smith D 2.3 1.7435 2.8565
10 Smith E 1.2 0.5556 1.8444
11 Liu A 1.8 1.4212 2.1788
12 Liu B 1.2 0.7619 1.6381
13 Liu C 2.5 1.6208 3.3792
14 Liu D 1.0 NA NA
15 Liu E 1.8 1.5758 2.0242
my_data_1 <- my_data[my_data$study=="Mark",]
my_data_2 <- my_data[my_data$study=="Smith",]
my_data_3 <- my_data[my_data$study=="Liu",]
my_data_2$OR <- my_data_2$OR * 1/my_data_2$OR[my_data_2$drug=="A"]
my_data_3$OR <- my_data_3$OR * 1/my_data_3$OR[my_data_3$drug=="A"]
my_data_2$ci_lb <- my_data_2$ci_lb * 1/my_data_2$OR[my_data_2$drug=="A"]
my_data_3$ci_lb <- my_data_3$ci_lb * 1/my_data_3$OR[my_data_3$drug=="A"]
my_data_2$ci_ub <- my_data_2$ci_ub * 1/my_data_2$OR[my_data_2$drug=="A"]
my_data_3$ci_ub <- my_data_3$ci_ub * 1/my_data_3$OR[my_data_3$drug=="A"]
my_data_new <- rbind(my_data_1, my_data_2, my_data_3)
my_data_new
my_data_new$OR <- round(my_data_new$OR, 2)
my_data_new$ci_lb <- round(my_data_new$ci_lb, 2)
my_data_new$ci_ub <- round(my_data_new$ci_ub, 2)
> my_data_new
study drug OR ci_lb ci_ub
1 Mark A 1.00 NA NA
2 Mark B 1.50 1.36 1.64
3 Mark C 1.70 1.26 2.14
4 Mark D 1.80 1.70 1.90
5 Mark E 2.50 1.95 3.05
6 Smith A 1.00 2.35 3.25
7 Smith B 0.39 0.62 1.58
8 Smith C 0.36 NA NA
9 Smith D 0.82 1.74 2.86
10 Smith E 0.43 0.56 1.84
11 Liu A 1.00 1.42 2.18
12 Liu B 0.67 0.76 1.64
13 Liu C 1.39 1.62 3.38
14 Liu D 0.56 NA NA
15 Liu E 1.00 1.58 2.02