dat.tian2009.RdResults from 48 trials examining the effect of rosiglitazone on the risk of myocardial infarction and death from cardiovascular causes.
dat.tian2009The data frame contains the following columns:
| study | character | Study ID |
| group | character | Treatment group (rosiglitazone or control) |
| intervention | character | Intervention group, i.e., combination of drug classes |
| detailed.intervention | character | Intervention group with drug names instead of classes |
| phase | integer | Phase of clinical trial |
| duration | integer | Duration of the trial (in weeks) |
| n.all | integer | Number of patients |
| n | integer | Number of patients with information on outcomes |
| deaths | integer | Number of deaths |
| infarcts | integer | Number of myocardial infarctions |
| type | character | Study types as in Table 1 from Nissen and Wolski (2007) |
| population | character | Details on the trial population |
| period | character | Trial period |
| age | numeric | Mean age (in years) |
| male | numeric | Percentage of males |
| hemoglobin | numeric | Mean baseline glycated hemoglobin level |
Nissen and Wolski (2007) performed a meta-analysis of trials examining the effect of rosiglitazone on the risk of myocardial infarction and death from cardiovascular causes. The present dataset by Tian et al. (2009) is based on this meta-analysis, but includes six additional trials where no event was observed in either group for both outcomes. The data set is in long arm-based format. See dat.nissen2007 for the original dataset.
Tian, L., Cai, T., Pfeffer, M. A., Piankov, N., Cremieux, P.-Y., & Wei, L. J. (2009). Exact and efficient inference procedure for meta-analysis and its application to the analysis of independent 2 x 2 tables with all available data but without artificial continuity correction. Biostatistics, 10(2), 275–281. https://doi.org/10.1093/biostatistics/kxn034
Nissen, S. E., & Wolski, K. (2007). Effect of Rosiglitazone on the risk of myocardial infarction and death from cardiovascular causes. New England Journal of Medicine, 356(24), 2457-2471. https://doi.org/10.1056/NEJMoa072761
medicine, cardiology, odds ratios, Peto's method, generalized linear models
### Show first 6 rows / 3 trials of the dataset
head(dat.tian2009)
#> study group intervention detailed.intervention phase duration n.all n deaths
#> 1 49653/011 Rosiglitazone Rosiglitazone Rosiglitazone 3 24 357 357 1
#> 2 49653/011 Control Placebo Placebo 3 24 176 176 0
#> 3 49653/020 Rosiglitazone Rosiglitazone Rosiglitazone 3 52 391 391 0
#> 4 49653/020 Control Sulfonylurea Glyburide 3 52 207 207 0
#> 5 49653/024 Rosiglitazone Rosiglitazone Rosiglitazone 3 26 774 774 0
#> 6 49653/024 Control Placebo Placebo 3 26 185 185 0
#> infarcts type population period age
#> 1 2 Trials included in original registration package Type 2 DM Sept. 1996-Sept. 1997 60.150
#> 2 0 Trials included in original registration package Type 2 DM Sept. 1996-Sept. 1997 58.800
#> 3 2 Trials included in original registration package Type 2 DM Oct. 1996-May 1998 60.650
#> 4 1 Trials included in original registration package Type 2 DM Oct. 1996-May 1998 60.100
#> 5 1 Trials included in original registration package Type 2 DM Jan. 1997-Feb. 1998 57.425
#> 6 1 Trials included in original registration package Type 2 DM Jan. 1997-Feb. 1998 57.700
#> male hemoglobin
#> 1 65.700 8.900
#> 2 65.800 9.000
#> 3 62.900 8.150
#> 4 70.400 8.200
#> 5 60.825 8.925
#> 6 68.800 8.900
### Load meta package
suppressPackageStartupMessages(library(meta))
### Print odds ratios and confidence limits with two digits and define
### labels shown in forest plots
oldset <- settings.meta(digits = 2,
label.e = "Rosiglitazone", label.c = "Control",
label.left = "Favors rosiglitazome",
label.right = "Favors control")
### Transform data from long arm-based format to contrast-based
### format. Argument 'sm' has to be used for odds ratio as summary
### measure; by default the risk ratio is used in the metabin function
### called internally.
pw <- pairwise(treat = group, event = deaths, n = n, studlab = study,
data = dat.tian2009, sm = "OR", varnames = c("lnOR", "selnOR"))
### Fit the inverse variance model
mod_iv <- metabin(pw,
text.common = "IV method (common)",
text.random = "IV method (random)")
### Fit the Mantel-Haenszel model
mod_mh <- update(mod_iv, method = "MH", random = FALSE,
method.incr = gs("method.incr"),
text.common = "MH method")
### Fit the Peto model
mod_peto <- update(mod_mh, method = "Peto",
text.common = "Peto method")
### Fit generalized linear mixed models (GLMM)
mod_glmm <- update(mod_mh, method = "glmm", model = "CM.AL",
random = TRUE,
text.common = "GLMM (common)",
text.random = "GLMM (random)")
if (requireNamespace("brglm2", quietly = TRUE)) {
### Fit the logistic regression model with penalized likelihood (LRP)
mod_plma <- update(mod_glmm, method = "LRP",
text.common = "LRP method (common)",
text.random = "LRP method (random)")
### Fit the logistic regression model after excluding double zero studies
mod_plma1 <- metabin(event1, n1, event2, n2, studlab = study,
data = subset(pw, !is.na(lnOR)), sm = "OR", method = "LRP",
text.common = "LRP method, exclude zeros (common)",
text.random = "LRP method, exclude zeros (random)")
}
### Create forest plot with all results
mm <- metaadd(mod_iv, data = mod_mh)
mm <- metaadd(mm, data = mod_peto)
mm <- metaadd(mm, data = mod_glmm)
if (requireNamespace("brglm2", quietly = TRUE)) {
mm <- metaadd(mm, data = mod_plma)
mm <- metaadd(mm, data = mod_plma1)
}
fname <- tempfile(pattern = "forest", fileext = ".pdf")
forest(mm, hetstat = FALSE, file = fname, width = 10, rows.gr = 1)
### Use previous settings
settings.meta(oldset)