library(meta)
## Loading 'meta' package (version 4.8-4).
## Type 'help(meta)' for a brief overview.
data7 <- read.csv("data7.csv")
data7
##       study  Ee  Ne  Ec  Nc
## 1    Samson  12  24  15  32
## 2      Luca  37  44  32  44
## 3      Ekel 136 150 120 162
## 4  Ramnujam  18  48  18  71
## 5      Kurt 127 120  77 142
## 6    Dammer  63  80  66  82
## 7   Morelli  34  20  32  34
## 8     Jimmy  13  72  16  64
## 9    Dekles  82  88  51  88
## 10  Subaina  22  50  28  37
## 11   Rafael  48  72  46  44
## 12  Monicca  56 100  91 120
## 13 Veronica  36  41  20  30
## 14   Ludwig  46  72  72  60
summary(data7$Ee/data7$Ne)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1806  0.5150  0.7271  0.7475  0.8995  1.7000
summary(data7$Ec/data7$Nc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2500  0.5516  0.7340  0.6954  0.7932  1.2000
logOR <- with(data7[data7$study=="Dekles",],
              log((Ee*(Nc-Ec)) / (Ec*(Ne-Ee))))
selogOR <- with(data7[data7$study=="Dekles",],
                sqrt(1/Ee + 1/(Ne-Ee) + 1/Ec + 1/(Nc-Ec)))

round(exp(c(logOR,
            logOR + c(-1,1) *
            qnorm(1-0.05/2) * selogOR)), 4)
## [1]  9.9150  3.9092 25.1478
metabin(Ee, Ne, Ec, Nc, sm="OR", method="I",
        data=data7, subset=study=="Dekles")
##      OR            95%-CI    z  p-value
##  9.9150 [3.9092; 25.1478] 4.83 < 0.0001
## 
## Details:
## - Inverse variance method
logRR <- with(data7[data7$study=="Dekles",],
              log((Ee/Ne) / (Ec/Nc)))
selogRR <- with(data7[data7$study=="Dekles",],
                sqrt(1/Ee + 1/Ec - 1/Ne - 1/Nc))

round(exp(c(logRR,
            logRR + c(-1,1) *
            qnorm(1-0.05/2) * selogRR)), 4)
## [1] 1.6078 1.3340 1.9379
metabin(Ee, Ne, Ec, Nc, sm="RR", method="I",
        data=data7, subset=study=="Dekles")
##      RR           95%-CI    z  p-value
##  1.6078 [1.3340; 1.9379] 4.98 < 0.0001
## 
## Details:
## - Inverse variance method
metabin(Ee, Ne, Ec, Nc, sm="RD", method="I",
        data=data7, subset=study=="Dekles")
##      RD           95%-CI    z  p-value
##  0.3523 [0.2365; 0.4681] 5.96 < 0.0001
## 
## Details:
## - Inverse variance method
ASD <- with(data7[data7$study=="Dekles",],
            asin(sqrt(Ee/Ne)) - asin(sqrt(Ec/Nc)))
seASD <- with(data7[data7$study=="Dekles",],
              sqrt(1/(4*Ne) + 1/(4*Nc)))

round(c(ASD, ASD + c(-1,1) * qnorm(1-0.05/2) * seASD), 4)
## [1] 0.4413 0.2936 0.5891
metabin(Ee, Ne, Ec, Nc, sm="ASD", method="I", data=data7, subset=study=="Dekles")
##     ASD           95%-CI    z  p-value
##  0.4413 [0.2936; 0.5891] 5.85 < 0.0001
## 
## Details:
## - Inverse variance method
data8 <- read.csv("data8.csv")
data8
##     study Ee   Ne Ec   Nc
## 1  Poland  0  280  1  240
## 2  Jerman  5  242  7  188
## 3    Karl  6  280  5  332
## 4    ABCD 11  269 16  282
## 5    BRFL 10 1000 13  956
## 6  Andrew  8 1900  8 1900
## 7    Bigg 13 1421 13 1234
## 8   Roger  1  600 15  500
## 9  Krikka  6 1200  4 1256
## 10  Prifd  3  200  1   78
## 11   JJKL 14 1508 15 1400
summary(data8$Ee/data8$Ne)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.000000 0.004605 0.009284 0.012481 0.017831 0.040892
summary(data8$Ec/data8$Nc)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.003185 0.007373 0.012821 0.018024 0.022530 0.056738
logOR <- with(data8[data8$study=="Poland",],
              log(((Ee+0.5)*(Nc-Ec+0.5)) /
                  ((Ec+0.5)*(Ne-Ee+0.5))))
selogOR <- with(data8[data8$study=="Poland",],
                sqrt(1/(Ee+0.5) + 1/(Ne-Ee+0.5) +
                     1/(Ec+0.5) + 1/(Nc-Ec+0.5)))
round(exp(c(logOR,
            logOR + c(-1,1) * qnorm(1-0.05/2) * selogOR)), 4)
## [1] 0.2846 0.0115 7.0190
metabin(Ee, Ne, Ec, Nc, sm="OR", method="I",
        data=data8, subset=study=="Poland")
##      OR           95%-CI     z  p-value
##  0.2846 [0.0115; 7.0190] -0.77   0.4422
## 
## Details:
## - Inverse variance method
## - Continuity correction of 0.5 in studies with zero cell frequencies
metabin(Ee, Ne, Ec, Nc, sm="OR", method="I",
        data=data8, subset=study=="Poland",
        incr=0.1)
##      OR            95%-CI     z  p-value
##  0.0776 [0.0001; 50.3847] -0.77   0.4391
## 
## Details:
## - Inverse variance method
## - Continuity correction of 0.1 in studies with zero cell frequencies
metabin(Ee, Ne, Ec, Nc, sm="OR", method="I",
        data=data8, subset=study=="Poland",
        incr="TACC")
##      OR           95%-CI     z  p-value
##  0.3145 [0.0138; 7.1880] -0.72   0.4687
## 
## Details:
## - Inverse variance method
## - Treatment arm continuity correction in studies with zero cell frequencies
metabin(Ee, Ne, Ec, Nc, sm="RR", method="I",
        data=data8, subset=study=="Poland")
##      RR           95%-CI     z  p-value
##  0.2858 [0.0117; 6.9832] -0.77   0.4424
## 
## Details:
## - Inverse variance method
## - Continuity correction of 0.5 in studies with zero cell frequencies
metabin(Ee, Ne, Ec, Nc, sm="OR", method="P",
        data=data7, subset=study=="Dekles")
##      OR            95%-CI    z  p-value
##  6.6671 [3.3585; 13.2353] 5.42 < 0.0001
## 
## Details:
## - Peto method
metabin(Ee, Ne, Ec, Nc, sm="OR", method="P",
        data=data8, subset=study=="Poland")
##      OR           95%-CI     z  p-value
##  0.1146 [0.0022; 5.8410] -1.08   0.2801
## 
## Details:
## - Peto method
logOR <- with(data7,
              log((Ee*(Nc-Ec)) / (Ec*(Ne-Ee))))
## Warning in log((Ee * (Nc - Ec))/(Ec * (Ne - Ee))): NaNs produced
varlogOR <- with(data7,
                 1/Ee + 1/(Ne-Ee) + 1/Ec + 1/(Nc-Ec))
weight <- 1/varlogOR

round(exp(weighted.mean(logOR, weight)), 4)
## [1] NaN
round(1/sum(weight), 4)
## [1] -0.0165
mb1 <- metabin(Ee, Ne, Ec, Nc, sm="OR", method="I",
               data=data7, studlab=study)
## Warning in metabin(Ee, Ne, Ec, Nc, sm = "OR", method = "I", data = data7, :
## Studies with event.e > n.e get no weight in meta-analysis.
## Warning in metabin(Ee, Ne, Ec, Nc, sm = "OR", method = "I", data = data7, :
## Studies with event.c > n.c get no weight in meta-analysis.
round(c(exp(mb1$TE.fixed), mb1$seTE.fixed^2), 4)
## [1] 1.2188 0.0174
print(summary(mb1), digits=2)
## Number of studies combined: k = 10
## 
##                        OR       95%-CI    z  p-value
## Fixed effect model   1.22 [0.94; 1.58] 1.50   0.1339
## Random effects model 1.37 [0.69; 2.74] 0.90   0.3691
## 
## Quantifying heterogeneity:
##  tau^2 = 1.0398; H = 2.61 [1.99; 3.42]; I^2 = 85.3% [74.8%; 91.5%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  61.43    9 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
forest(mb1, comb.random=FALSE, hetstat=FALSE)

logOR <- with(data8,
              log((Ee*(Nc-Ec)) / (Ec*(Ne-Ee))))
varlogOR <- with(data8,
                 1/Ee + 1/(Ne-Ee) + 1/Ec + 1/(Nc-Ec))
weight <- 1/varlogOR
weight[data8$study=="Poland"]
## [1] 0
mb2 <- metabin(Ee, Ne, Ec, Nc, sm="OR", method="I",
               data=data8, studlab=study)
print(summary(mb2), digits=2)
## Number of studies combined: k = 11
## 
##                       OR       95%-CI     z  p-value
## Fixed effect model   0.8 [0.59; 1.10] -1.37   0.1712
## Random effects model 0.8 [0.59; 1.10] -1.36   0.1744
## 
## Quantifying heterogeneity:
##  tau^2 = 0.0039; H = 1.01 [1.00; 1.60]; I^2 = 1.3% [0.0%; 60.7%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  10.13   10   0.4290
## 
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
## - Continuity correction of 0.5 in studies with zero cell frequencies
as.data.frame(mb2)[,c("studlab", "incr.e", "incr.c")]
##    studlab incr.e incr.c
## 1   Poland    0.5    0.5
## 2   Jerman    0.0    0.0
## 3     Karl    0.0    0.0
## 4     ABCD    0.0    0.0
## 5     BRFL    0.0    0.0
## 6   Andrew    0.0    0.0
## 7     Bigg    0.0    0.0
## 8    Roger    0.0    0.0
## 9   Krikka    0.0    0.0
## 10   Prifd    0.0    0.0
## 11    JJKL    0.0    0.0
mb1.mh <- metabin(Ee, Ne, Ec, Nc, sm="OR",
                  data=data7, studlab=study)
## Warning in metabin(Ee, Ne, Ec, Nc, sm = "OR", data = data7, studlab =
## study): Studies with event.e > n.e get no weight in meta-analysis.
## Warning in metabin(Ee, Ne, Ec, Nc, sm = "OR", data = data7, studlab =
## study): Studies with event.c > n.c get no weight in meta-analysis.
print(summary(mb1.mh), digits=2)
## Number of studies combined: k = 10
## 
##                        OR       95%-CI    z  p-value
## Fixed effect model   1.30 [1.02; 1.65] 2.15   0.0314
## Random effects model 1.37 [0.69; 2.74] 0.90   0.3698
## 
## Quantifying heterogeneity:
##  tau^2 = 1.0444; H = 2.62 [2.00; 3.43]; I^2 = 85.4% [74.9%; 91.5%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  61.66    9 < 0.0001
## 
## Details on meta-analytical method:
## - Mantel-Haenszel method
## - DerSimonian-Laird estimator for tau^2
forest(mb1.mh, comb.random=FALSE, hetstat=FALSE,
       text.fixed="MH estimate")

mb2.mh <- metabin(Ee, Ne, Ec, Nc, sm="OR", method="MH",
                  data=data8, studlab=study)
print(summary(mb2.mh), digits=2)
## Number of studies combined: k = 11
## 
##                        OR       95%-CI     z  p-value
## Fixed effect model   0.73 [0.54; 0.98] -2.08   0.0373
## Random effects model 0.80 [0.58; 1.11] -1.33   0.1834
## 
## Quantifying heterogeneity:
##  tau^2 = 0.0155; H = 1.03 [1.00; 1.63]; I^2 = 5.0% [0.0%; 62.2%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  10.53   10   0.3954
## 
## Details on meta-analytical method:
## - Mantel-Haenszel method
## - DerSimonian-Laird estimator for tau^2
## - Continuity correction of 0.5 in studies with zero cell frequencies
mb1.peto <- metabin(Ee, Ne, Ec, Nc, sm="OR", method="P",
                    data=data7, studlab=study)
## Warning in metabin(Ee, Ne, Ec, Nc, sm = "OR", method = "P", data = data7, :
## Studies with event.e > n.e get no weight in meta-analysis.
## Warning in metabin(Ee, Ne, Ec, Nc, sm = "OR", method = "P", data = data7, :
## Studies with event.c > n.c get no weight in meta-analysis.
print(summary(mb1.peto), digits=2)
## Number of studies combined: k = 10
## 
##                        OR       95%-CI    z  p-value
## Fixed effect model   1.31 [1.03; 1.67] 2.21   0.0274
## Random effects model 1.33 [0.68; 2.61] 0.83   0.4043
## 
## Quantifying heterogeneity:
##  tau^2 = 0.9982; H = 2.72 [2.09; 3.54]; I^2 = 86.5% [77.1%; 92.0%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  66.63    9 < 0.0001
## 
## Details on meta-analytical method:
## - Peto method
## - DerSimonian-Laird estimator for tau^2
mb2.peto <- metabin(Ee, Ne, Ec, Nc, sm="OR", method="Peto",
                    data=data8, studlab=study)
print(summary(mb2.peto), digits=2)
## Number of studies combined: k = 11
## 
##                        OR       95%-CI     z  p-value
## Fixed effect model   0.73 [0.54; 0.98] -2.10   0.0359
## Random effects model 0.72 [0.49; 1.07] -1.62   0.1049
## 
## Quantifying heterogeneity:
##  tau^2 = 0.1472; H = 1.25 [1.00; 1.78]; I^2 = 35.6% [0.0%; 68.3%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  15.52   10   0.1141
## 
## Details on meta-analytical method:
## - Peto method
## - DerSimonian-Laird estimator for tau^2
print(summary(mb1), digits=2)
## Number of studies combined: k = 10
## 
##                        OR       95%-CI    z  p-value
## Fixed effect model   1.22 [0.94; 1.58] 1.50   0.1339
## Random effects model 1.37 [0.69; 2.74] 0.90   0.3691
## 
## Quantifying heterogeneity:
##  tau^2 = 1.0398; H = 2.61 [1.99; 3.42]; I^2 = 85.3% [74.8%; 91.5%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  61.43    9 < 0.0001
## 
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
restmp1 <- rbind(c(exp(mb1$TE.fixed), exp(mb1$lower.fixed), exp(mb1$upper.fixed),
                   exp(mb1$TE.random), exp(mb1$lower.random), exp(mb1$upper.random),
                   mb1$tau^2),
                 c(exp(mb1.mh$TE.fixed), exp(mb1.mh$lower.fixed), exp(mb1.mh$upper.fixed),
                   exp(mb1.mh$TE.random), exp(mb1.mh$lower.random), exp(mb1.mh$upper.random),
                   mb1.mh$tau^2),
                 c(exp(mb1.peto$TE.fixed), exp(mb1.peto$lower.fixed), exp(mb1.peto$upper.fixed),
                   exp(mb1.peto$TE.random), exp(mb1.peto$lower.random), exp(mb1.peto$upper.random),
                   mb1.peto$tau^2)
                 )

restmp1 <- as.data.frame(restmp1)
restmp1[,1:6] <- round(restmp1[,1:6], 2)
restmp1[,7] <- round(restmp1[,7], 4)
names(restmp1) <- c("OR (fixed)", "lower", "upper", "OR (random)", "lower", "upper", "tau^2")
row.names(restmp1) <- c("IV", "MH", "Peto")

restmp2 <- rbind(c(exp(mb2$TE.fixed), exp(mb2$lower.fixed), exp(mb2$upper.fixed),
                   exp(mb2$TE.random), exp(mb2$lower.random), exp(mb2$upper.random),
                   mb2$tau^2),
                 c(exp(mb2.mh$TE.fixed), exp(mb2.mh$lower.fixed), exp(mb2.mh$upper.fixed),
                   exp(mb2.mh$TE.random), exp(mb2.mh$lower.random), exp(mb2.mh$upper.random),
                   mb2.mh$tau^2),
                 c(exp(mb2.peto$TE.fixed), exp(mb2.peto$lower.fixed), exp(mb2.peto$upper.fixed),
                   exp(mb2.peto$TE.random), exp(mb2.peto$lower.random), exp(mb2.peto$upper.random),
                   mb2.peto$tau^2)
                 )

restmp2 <- as.data.frame(restmp2)
restmp2[,1:6] <- round(restmp2[,1:6], 2)
restmp2[,7] <- round(restmp2[,7], 4)
names(restmp2) <- c("OR (fixed)", "lower", "upper", "OR (random)", "lower", "upper", "tau^2")
row.names(restmp2) <- c("IV", "MH", "Peto")

restmp1
##      OR (fixed) lower upper OR (random) lower upper  tau^2
## IV         1.22  0.94  1.58        1.37  0.69  2.74 1.0398
## MH         1.30  1.02  1.65        1.37  0.69  2.74 1.0444
## Peto       1.31  1.03  1.67        1.33  0.68  2.61 0.9982
restmp2
##      OR (fixed) lower upper OR (random) lower upper  tau^2
## IV         0.80  0.59  1.10        0.80  0.59  1.10 0.0039
## MH         0.73  0.54  0.98        0.80  0.58  1.11 0.0155
## Peto       0.73  0.54  0.98        0.72  0.49  1.07 0.1472
data9 <- read.csv("data9.csv")
data9
##        study Ee Ne Ec Nc   blind
## 1       Shay  1 12  5 12 Blinded
## 2    Michael 25 60 37 61 Blinded
## 3       Drew 21 50 21 55 Blinded
## 4  Sebastian 16 36 15 35      No
## 5     Taylor 12 38 32 47      No
## 6      Reign  8 21 12 21      No
## 7     Xavier  5 25 15 22      No
## 8     Arroyo  7 19  9 15      No
## 9      Shane  6 32 13 37      No
## 10     Frost  8 28 21 23      No
summary(data9$Ee/data9$Ne)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.08333 0.22143 0.34211 0.31028 0.40774 0.44444
summary(data9$Ec/data9$Nc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3514  0.4196  0.5857  0.5632  0.6623  0.9130
mb3 <- metabin(Ee, Ne, Ec, Nc, sm="RR", method="I",
               data=data9, studlab=study)
print(summary(mb3), digits=2)
## Number of studies combined: k = 10
## 
##                        RR       95%-CI     z  p-value
## Fixed effect model   0.64 [0.53; 0.76] -4.83 < 0.0001
## Random effects model 0.59 [0.44; 0.80] -3.44   0.0006
## 
## Quantifying heterogeneity:
##  tau^2 = 0.1162; H = 1.51 [1.06; 2.14]; I^2 = 55.9% [10.3%; 78.3%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  20.39    9   0.0157
## 
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
mb3s <- update(mb3, byvar=blind, print.byvar=FALSE)
print(summary(mb3s), digits=2)
## Number of studies combined: k = 10
## 
##                        RR       95%-CI     z  p-value
## Fixed effect model   0.64 [0.53; 0.76] -4.83 < 0.0001
## Random effects model 0.59 [0.44; 0.80] -3.44   0.0006
## 
## Quantifying heterogeneity:
##  tau^2 = 0.1162; H = 1.51 [1.06; 2.14]; I^2 = 55.9% [10.3%; 78.3%]
## 
## Test of heterogeneity:
##      Q d.f.  p-value
##  20.39    9   0.0157
## 
## Results for subgroups (fixed effect model):
##           k   RR       95%-CI     Q    tau^2   I^2
## Blinded   3 0.80 [0.60; 1.06]  4.32   0.099  53.7%
## No        7 0.54 [0.43; 0.69] 11.95   0.1067 49.8%
## 
## Test for subgroup differences (fixed effect model):
##                    Q d.f.  p-value
## Between groups  4.12    1   0.0425
## Within groups  16.27    8   0.0387
## 
## Results for subgroups (random effects model):
##           k   RR       95%-CI     Q    tau^2   I^2
## Blinded   3 0.78 [0.47; 1.30]  4.32   0.099  53.7%
## No        7 0.53 [0.37; 0.75] 11.95   0.1067 49.8%
## 
## Test for subgroup differences (random effects model):
##                     Q d.f.  p-value
## Between groups   1.54    1   0.2140
## 
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2