## Install R packages (if not already installed) # install.packages("netmeta") # install.packages("dplyr") options(width = 70, prompt="R> ", continue = "+ ") ## Data set 1: adjuvant treatments in Parkinson's disease ## data("Stowe2010", package = "netmeta") library("dplyr") Stowe2010 %>% slice(18:20) ## Data set 2: antithrombotics to prevent strokes ## data("Dogliotti2014", package = "netmeta") head(Dogliotti2014, 7) ## Data set 3: treatments for chronic obstructive pulmonary disease ## data("Baker2009", package = "netmeta") subset(Baker2009, study == "Mahler 2002") ## Network meta-analysis in practice -- overview of netmeta ## library("netmeta") settings.meta(digits = 2, digits.se = 3) ## Example 1: adjuvant treatments in Parkinson's disease ## pw1 <- pairwise(treat = list(t1, t2, t3), n = list(n1, n2, n3), mean = list(y1, y2, y3), sd = list(sd1, sd2, sd3), studlab = study, data = Stowe2010) dim(pw1) names(pw1) selstudy1 <- c("COMTI(E) INT-OZ", "LARGO", "COMTI(E) Nomecomt") subset(pw1, studlab %in% selstudy1) %>% select(TE, seTE, studlab, treat1, treat2, mean1, mean2) net1 <- netmeta(TE, seTE, treat1, treat2, studlab, data = pw1, common = FALSE, ref = "plac") net1 <- netmeta(pw1, common = FALSE, ref = "plac") # pdf("Figures/netgraph1.pdf", width = 7, height = 6) netgraph(net1, plastic = FALSE, multiarm = TRUE, cex = 1.25, offset = ifelse(trts != "MAOBI", 0.025, 0.01), number.of.studies = TRUE, cex.number = 1, pos.number.of.studies = 0.3) # invisible(dev.off()) ## Auxiliary commands to determine and set values for argument 'adj' ## in netgraph.netmeta() nodes1 <- netgraph(net1, iterate = TRUE)$nodes nodes1 %>% select(adj.x, adj.y) nodes1 <- nodes1 %>% mutate(adj.x = replace(adj.x, trts == "Placebo", 0.9)) nodes1 %>% select(adj.x, adj.y) # pdf("Figures/netgraph2.pdf", width = 7, height = 6) netgraph(net1, plastic = FALSE, multiarm = TRUE, iterate = TRUE, col = "black", cex = 1.25, offset = ifelse(trts == "Placebo", 0.04, 0.02), adj = nodes1 %>% select(adj.x, adj.y), number.of.studies = TRUE, cex.number = 1) # invisible(dev.off()) net1 print(summary(net1), truncate = studlab %in% selstudy1, nchar.trts = 4, nma = FALSE) # pdf("Figures/forest1.pdf", width = 7, height = 2) forest(net1) # invisible(dev.off()) # pdf("Figures/forest2.pdf", width = 7, height = 4) forest(net1, ref = c("C", "D", "M"), baseline = FALSE, drop = TRUE) # invisible(dev.off()) netrank(net1) set.seed(1909) ran1 <- rankogram(net1) ran1 # pdf("Figures/rankogram.pdf") plot(ran1) # invisible(dev.off()) netrank(ran1) netleague(net1, seq = netrank(net1), ci = FALSE) decomp.design(net1) netsplit(net1) # pdf("Figures/netheat.pdf") netheat(net1, nchar.trts = 4) # invisible(dev.off()) ## Example 2: antithrombotics to prevent strokes cilayout("(", "-") pw2 <- pairwise(treat = treatment, n = total, event = stroke, studlab = study, data = Dogliotti2014, sm = "OR") head(pw2, 5) %>% select(studlab, treat1, treat2, TE, seTE) net2 <- netmeta(pw2, ref = "plac") subset(pw2, studlab == "WASPO, 2007") %>% select(studlab, event1, n1, event2, n2) # pdf("Figures/netgraph3.pdf") netgraph(net2, seq = "optimal", plastic = FALSE, number = TRUE, cex.points = n.trts, offset = ifelse(trts == "VKAs", 0.05, ifelse(trts %in% c("Aspirin", "Apixaban"), 0.035, 0.025)), labels = paste0(trts, "\n(n=", round(n.trts), ")")) # invisible(dev.off()) net2.mh <- netmetabin(pw2, ref = "plac") nb2 <- netbind(net2, net2.mh, random = FALSE, name = c("Inverse variance", "Mantel-Haenszel")) # pdf("Figures/forest3.pdf", width = 6, height = 7) forest(nb2, xlim = c(0.15, 2), at = c(0.2, 0.5, 1, 2)) # invisible(dev.off()) ## Example 3: treatments for chronic obstructive pulmonary disease pw3 <- pairwise(treat = treatment, n = total, event = exac, studlab = paste(study, year), data = Baker2009, sm = "OR") net3 <- netmeta(pw3, common = FALSE, ref = "plac") selvars3 <- c("studlab", "event1", "n1", "event2", "n2") subset(pw3, studlab == "DalNegro 2003 2008")[, selvars3] # pdf("Figures/netgraph4.pdf") netgraph(net3, seq = "optimal", plastic = FALSE, number = TRUE, cex.points = n.trts, offset = ifelse(n.trts < 1500, 0.025, 0.05), labels = paste0(gsub("+", " +\n", trts, fixed = TRUE), "\n(n=", round(n.trts), ")"), rotate = -3 * 45) # invisible(dev.off()) net3 nc3 <- netcomb(net3, inactive = "plac") nc3 nb3 <- netbind(net3, nc3, name = c("Standard NMA", "Additive CNMA")) # pdf("Figures/forest4.pdf", width = 6, height = 7) forest(nb3) # invisible(dev.off()) netrank(nc3) netrank(net3) sessionInfo()