Back to main page.

Read data.

D <- readSheet("Bleeding")
D <- D[!is.na(label)]
D <- D[,
       `:=` (nWarfarin = as.numeric(nWarfarin),
             yWarfarin = as.numeric(yWarfarin))]

Tidy up the data (do not show the code).

Hard-code data corrections to the PETRO study.

From: Marian McDonagh
Sent: Friday, February 05, 2016 5:00 PM
To: Benjamin Chan
Subject: Re: Checking data for meta-analysis

It looks like this was a dose-ranging studies with multiple arms. The only relevant one here had 0 events in the dabigatran 150 group (N = 100), and of course 0 in the warfarin group (N = 70).

D <- D[study == "PETRO" & treatment == "Dabigatran_300_mg",
       `:=` (treatment = "Dabigatran_150_mg",
             responders = 0,
             sampleSize = 100)]
study treatment responders sampleSize
ARISTOTLE Apixaban_5_mg 327 9088
ARISTOTLE Warfarin 462 9052
ARISTOTLE-J Apixaban_5_mg 0 74
ARISTOTLE-J Warfarin 1 74
ENGAGE AF-TIMI Edoxaban_30_mg 254 7034
ENGAGE AF-TIMI Edoxaban_60_mg 418 7035
ENGAGE AF-TIMI Warfarin 524 7036
J-ROCKET Rivaroxaban_15_mg 639
J-ROCKET Warfarin 639
PETRO Dabigatran_150_mg 0 100
PETRO Warfarin 0 70
RE-LY Dabigatran_110_mg 322 6015
RE-LY Dabigatran_150_mg 375 6076
RE-LY Warfarin 397 6022
ROCKET-AF Rivaroxaban_20_mg 395 7081
ROCKET-AF Warfarin 386 7090
Yamashita, 2012 Edoxaban_30_mg 0 131
Yamashita, 2012 Edoxaban_60_mg 2 131
Yamashita, 2012 Warfarin 0 129

Run the model using fixed-effects.

M <- mtc.model(network, type="consistency", linearModel=effect)
plot(M)

results <- mtc.run(M, n.adapt=nAdapt, n.iter=nIter, thin=thin)

Summary

Direct and indirect odds ratios and 95% confidence bounds are stored in mtcBleedingOddsRatios.csv.

or <- combineResults(outcomeBleeding=TRUE)
write.csv(or, file="mtcBleedingOddsRatios.csv", row.names=FALSE)
print(xtable(or), type="html", include.rownames=FALSE)
treatment Apixaban 5 mg Dabigatran 110 mg Dabigatran 150 mg Edoxaban 30 mg Edoxaban 60 mg Rivaroxaban 20 mg Warfarin
Apixaban 5 mg vs 0.86 (0.71, 1.06) 0.74 (0.61, 0.91) 1.49 (1.20, 1.83) 0.88 (0.72, 1.06) 0.67 (0.55, 0.83) 0.69 (0.60, 0.80)
Dabigatran 110 mg vs 1.16 (0.94, 1.42) 0.86 (0.74, 1.00) 1.72 (1.39, 2.14) 1.02 (0.83, 1.24) 0.78 (0.64, 0.97) 0.80 (0.69, 0.93)
Dabigatran 150 mg vs 1.34 (1.10, 1.65) 1.16 (1.00, 1.35) 2.00 (1.62, 2.48) 1.18 (0.97, 1.44) 0.91 (0.74, 1.12) 0.93 (0.81, 1.07)
Edoxaban 30 mg vs 0.67 (0.55, 0.83) 0.58 (0.47, 0.72) 0.50 (0.40, 0.62) 0.59 (0.50, 0.69) 0.45 (0.37, 0.56) 0.47 (0.40, 0.54)
Edoxaban 60 mg vs 1.14 (0.94, 1.39) 0.99 (0.81, 1.21) 0.85 (0.70, 1.03) 1.70 (1.45, 1.99) 0.77 (0.63, 0.94) 0.79 (0.69, 0.90)
Rivaroxaban 20 mg vs 1.48 (1.21, 1.82) 1.28 (1.03, 1.57) 1.10 (0.89, 1.35) 2.20 (1.78, 2.71) 1.30 (1.07, 1.58) 1.03 (0.89, 1.18)
Warfarin vs 1.44 (1.25, 1.67) 1.25 (1.07, 1.45) 1.07 (0.93, 1.24) 2.15 (1.84, 2.51) 1.27 (1.11, 1.45) 0.97 (0.85, 1.13)

Forest plots, NOAC vs NOAC

noac <- unique(D[treatment != "Warfarin", treatment])
for (i in 1:length(noac)) {
  forest(relative.effect(results, noac[i], noac[1:length(noac) != i]))
}

Diagnostics

summary(results)
## $measure
## [1] "Log Odds Ratio"
## 
## $summaries
## 
## Iterations = 5010:30000
## Thinning interval = 10 
## Number of chains = 4 
## Sample size per chain = 2500 
## 
## 1. Empirical mean and standard deviation for each variable,
##    plus standard error of the mean:
## 
##                                  Mean      SD  Naive SE Time-series SE
## d.Warfarin.Apixaban_5_mg     -0.36793 0.07333 0.0007333      0.0007453
## d.Warfarin.Dabigatran_110_mg -0.22236 0.07670 0.0007670      0.0009095
## d.Warfarin.Dabigatran_150_mg -0.07100 0.07415 0.0007415      0.0007501
## d.Warfarin.Edoxaban_30_mg    -0.76409 0.07899 0.0007899      0.0010145
## d.Warfarin.Edoxaban_60_mg    -0.23618 0.06827 0.0006827      0.0006828
## d.Warfarin.Rivaroxaban_20_mg  0.02614 0.07326 0.0007326      0.0007421
## 
## 2. Quantiles for each variable:
## 
##                                 2.5%      25%      50%      75%    97.5%
## d.Warfarin.Apixaban_5_mg     -0.5138 -0.41728 -0.36695 -0.31839 -0.22428
## d.Warfarin.Dabigatran_110_mg -0.3732 -0.27436 -0.22181 -0.17105 -0.07020
## d.Warfarin.Dabigatran_150_mg -0.2147 -0.12087 -0.07163 -0.01969  0.07207
## d.Warfarin.Edoxaban_30_mg    -0.9218 -0.81712 -0.76388 -0.71072 -0.61115
## d.Warfarin.Edoxaban_60_mg    -0.3708 -0.28220 -0.23674 -0.19012 -0.10248
## d.Warfarin.Rivaroxaban_20_mg -0.1187 -0.02268  0.02633  0.07606  0.16817
## 
## 
## $DIC
##     Dbar       pD      DIC 
## 17.45363 12.11059 29.56422 
## 
## attr(,"class")
## [1] "summary.mtc.result"

Sampler diagnostics.

gelman.plot(results)

gelman.diag(results)
## Potential scale reduction factors:
## 
##                              Point est. Upper C.I.
## d.Warfarin.Apixaban_5_mg              1          1
## d.Warfarin.Dabigatran_110_mg          1          1
## d.Warfarin.Dabigatran_150_mg          1          1
## d.Warfarin.Edoxaban_30_mg             1          1
## d.Warfarin.Edoxaban_60_mg             1          1
## d.Warfarin.Rivaroxaban_20_mg          1          1
## 
## Multivariate psrf
## 
## 1
plot(results)

autocorr.plot(results$samples)

Assess the degree of heterogeneity and inconsistency.

anohe <- mtc.anohe(network, n.adapt=nAdapt, n.iter=nIter, thin=thin)
summary(anohe)
## Analysis of heterogeneity
## =========================
## 
## Per-comparison I-squared:
## -------------------------
## 
##                  t1                t2  i2.pair  i2.cons incons.p
## 1     Apixaban_5_mg          Warfarin 99.92203 80.35540       NA
## 2 Dabigatran_110_mg Dabigatran_150_mg       NA       NA       NA
## 3 Dabigatran_110_mg          Warfarin       NA       NA       NA
## 4 Dabigatran_150_mg          Warfarin 25.57975  0.00000       NA
## 5    Edoxaban_30_mg    Edoxaban_60_mg 99.65912 89.34658       NA
## 6    Edoxaban_30_mg          Warfarin 96.27542  0.00000       NA
## 7    Edoxaban_60_mg          Warfarin 99.49744 95.45185       NA
## 8 Rivaroxaban_20_mg          Warfarin       NA       NA       NA
## 
## Global I-squared:
## -------------------------
## 
##    i2.pair  i2.cons
## 1 99.33462 67.75014
plot(anohe)
## Analysis of heterogeneity -- convergence plots
## Unrelated Study Effects (USE) model:

## Unrelated Mean Effects (UME) model:

## Consistency model: