Meta-analyses using meta package

Reference

Load data

Use foreign package to read Stata data files

library(foreign)

Load Stata data files directly from web site

strepto  <- read.dta("http://www.blackwellpublishing.com/medicine/bmj/systreviews/datasets/strepto.dta")
magnes   <- read.dta("http://www.blackwellpublishing.com/medicine/bmj/systreviews/datasets/magnes.dta")
bcgtrial <- read.dta("http://www.blackwellpublishing.com/medicine/bmj/systreviews/datasets/bcgtrial.dta")

## Page 349: Mortality due to MI: streptokinase users vs non-users
strepto
   trial       trialnam year pop1 deaths1 pop0 deaths0
1      1       Fletcher 1959   12       1   11       4
2      2          Dewar 1963   21       4   21       7
3      3   1st European 1969   83      20   84      15
4      4    Heikinheimo 1971  219      22  207      17
5      5        Italian 1971  164      19  157      18
6      6   2nd European 1971  373      69  357      94
7      7  2nd Frankfurt 1973  102      13  104      29
8      8 1st Australian 1973  264      26  253      32
9      9     NHLBI SMIT 1974   53       7   54       3
10    10         Valere 1975   49      11   42       9
11    11          Frank 1975   55       6   53       6
12    12      UK Collab 1976  302      48  293      52
13    13          Klein 1976   14       4    9       1
14    14       Austrian 1977  352      37  376      65
15    15       Lasierra 1977   13       1   11       3
16    16       N German 1977  249      63  234      51
17    17       Witchitz 1977   32       5   26       5
18    18 2nd Australian 1977  112      25  118      31
19    19   3rd European 1977  156      25  159      50
20    20           ISAM 1986  859      54  882      63
21    21        GISSI-1 1986 5860     628 5852     758
22    22         ISIS-2 1988 8592     791 8595    1029

Analysis using meta package

## Load meta package
library(meta)

## Meta-analysis using metabin()
strepto_meta <-
    metabin(data        = strepto,  # Data
            event.e     = deaths1,  # Events in exposed
            n.e         = pop1,     # Number in exposed
            event.c     = deaths0,  # Events in control
            n.c         = pop0,     # Number in control
            sm          = "RR",     # Summary measure
            studlab     = trialnam, # Study labels
            comb.fixed  = TRUE,     # Fixed effects yes
            comb.random = FALSE     # Random effects no
            )

## Show results
strepto_meta
                   RR             95%-CI %W(fixed)
Fletcher       0.2292  [0.0300;  1.7499]      0.18
Dewar          0.5714  [0.1962;  1.6647]      0.30
1st European   1.3494  [0.7429;  2.4509]      0.64
Heikinheimo    1.2232  [0.6688;  2.2371]      0.75
Italian        1.0105  [0.5510;  1.8531]      0.78
2nd European   0.7026  [0.5338;  0.9247]      4.10
2nd Frankfurt  0.4571  [0.2522;  0.8282]      1.22
1st Australian 0.7786  [0.4780;  1.2683]      1.39
NHLBI SMIT     2.3774  [0.6490;  8.7086]      0.13
Valere         1.0476  [0.4809;  2.2821]      0.41
Frank          0.9636  [0.3316;  2.8005]      0.26
UK Collab      0.8956  [0.6261;  1.2809]      2.25
Klein          2.5714  [0.3394; 19.4813]      0.05
Austrian       0.6080  [0.4173;  0.8861]      2.68
Lasierra       0.2821  [0.0340;  2.3403]      0.14
N German       1.1609  [0.8403;  1.6038]      2.24
Witchitz       0.8125  [0.2634;  2.5062]      0.24
2nd Australian 0.8497  [0.5369;  1.3446]      1.29
3rd European   0.5096  [0.3327;  0.7805]      2.11
ISAM           0.8801  [0.6195;  1.2503]      2.65
GISSI-1        0.8274  [0.7491;  0.9138]     32.34
ISIS-2         0.7690  [0.7044;  0.8395]     43.86

Number of studies combined: k=22

                       RR            95%-CI      z  p.value
Fixed effect model 0.7988  [0.7546; 0.8455] -7.747 < 0.0001

Quantifying heterogeneity:
tau^2 = 0.0112; H = 1.2 [1; 1.56]; I^2 = 30.9% [0%; 58.9%]

Test of heterogeneity:
     Q d.f. p.value
 30.41   21   0.084

Details on meta-analytical method:
- Mantel-Haenszel method
## p352 Forest plot using forest.meta()
forest.meta(strepto_meta)

plot of chunk unnamed-chunk-5

## Funnel plot using funnel()
funnel(strepto_meta)

plot of chunk unnamed-chunk-6


## Test for funnel plot asymmetry
metabias(strepto_meta)

    Linear regression test of funnel plot asymmetry

data:  strepto_meta 
t = 0.4681, df = 20, p-value = 0.6448
alternative hypothesis: asymmetry in funnel plot 
sample estimates:
   bias se.bias   slope 
 0.1670  0.3567 -0.2389 

## Cumulative meta-analysis using metacum()
strepto_meta.cuml <- metacum(strepto_meta)
strepto_meta.cuml

Cumulative meta-analysis (Fixed effect model)

                                   RR            95%-CI  p.value    tau^2     I^2
Adding Fletcher (k=1)          0.2292  [0.0300; 1.7499]   0.1555   0             
Adding Dewar (k=2)             0.4436  [0.1740; 1.1309]   0.0887   0         0.0%
Adding 1st European (k=3)      0.9614  [0.5905; 1.5651]   0.8741   0.3145   50.7%
Adding Heikinheimo (k=4)       1.0664  [0.7296; 1.5587]   0.7398   0.08     30.3%
Adding Italian (k=5)           1.0498  [0.7610; 1.4483]   0.7671   0.0128    7.8%
Adding 2nd European (k=6)      0.8387  [0.6812; 1.0327]   0.0976   0.0557   37.2%
Adding 2nd Frankfurt (k=7)     0.7800  [0.6415; 0.9485]   0.0128   0.082    47.6%
Adding 1st Australian (k=8)    0.7798  [0.6503; 0.9351]   0.0073   0.0525   38.9%
Adding NHLBI SMIT (k=9)        0.8012  [0.6697; 0.9585]   0.0154   0.0711   43.8%
Adding Valere (k=10)           0.8115  [0.6814; 0.9663]   0.019    0.0597   38.7%
Adding Frank (k=11)            0.8154  [0.6863; 0.9687]   0.0203   0.0482   32.3%
Adding UK Collab (k=12)        0.8299  [0.7106; 0.9693]   0.0186   0.0312   26.7%
Adding Klein (k=13)            0.8372  [0.7172; 0.9772]   0.0243   0.0325   26.0%
Adding Austrian (k=14)         0.7966  [0.6906; 0.9189]   0.0018   0.0351   29.7%
Adding Lasierra (k=15)         0.7919  [0.6868; 0.9132]   0.0013   0.0344   27.9%
Adding N German (k=16)         0.8392  [0.7368; 0.9558]   0.0082   0.0462   37.3%
Adding Witchitz (k=17)         0.8388  [0.7371; 0.9545]   0.0077   0.0404   33.1%
Adding 2nd Australian (k=18)   0.8395  [0.7413; 0.9508]   0.0059   0.0322   28.9%
Adding 3rd European (k=19)     0.8066  [0.7160; 0.9087]   0.0004   0.0459   37.6%
Adding ISAM (k=20)             0.8148  [0.7278; 0.9122]   0.0004   0.0376   34.6%
Adding GISSI-1 (k=21)          0.8220  [0.7629; 0.8857] < 0.0001   0.0201   31.2%
Adding ISIS-2 (k=22)           0.7988  [0.7546; 0.8455] < 0.0001   0.0112   30.9%

Pooled estimate                0.7988  [0.7546; 0.8455] < 0.0001   0.0112   30.9%

Details on meta-analytical method:
- Mantel-Haenszel method

## Cumulative forest plot using forest()
forest(strepto_meta.cuml, xlim = c(0.5, 2))

plot of chunk unnamed-chunk-6

DerSimonian-Laird random effect using smoking data in HSAUR2 package

Reference

library(HSAUR2)
data(smoking)

## ‘qt’ the number of treated subjetcs who stopped smoking.
## ‘tt’ the totla number of treated subjects.
## ‘qc’ the number of subjetcs who stopped smoking without being treated.
## ‘tc’ the total number of subject not being treated.
smoking
              qt  tt  qc  tc
Blondal89     37  92  24  90
Campbell91    21 107  21 105
Fagerstrom82  30  50  23  50
Fee82         23 180  15 172
Garcia89      21  68   5  38
Garvey00      75 405  17 203
Gross95       37 131   6  46
Hall85        18  41  10  36
Hall87        30  71  14  68
Hall96        24  98  28 103
Hjalmarson84  31 106  16 100
Huber88       31  54  11  60
Jarvis82      22  58   9  58
Jensen91      90 211  28  82
Killen84      16  44   6  20
Killen90     129 600 112 617
Malcolm80      6  73   3 121
McGovern92    51 146  40 127
Nakamura90    13  30   5  30
Niaura94       5  84   4  89
Pirie92       75 206  50 211
Puska79       29 116  21 113
Schneider85    9  30   6  30
Tonnesen88    23  60  12  53
Villa99       11  21  10  26
Zelman92      23  58  18  58

## Perform meta-analysis
smoking_meta <-
    metabin(data    = smoking,          # Dataset
            event.e = qt,               # Events in exposed
            n.e     = tt,               # Number in exposed
            event.c = qc,               # Events in control
            n.c     = tc,               # Number in control
            sm      = "OR",             # Summary measure: Odds ratio
            studlab = rownames(smoking) # Study labels
            )

## Page 4: Mantel-Haenszel (Fixed effect)
## Page 6: DerSimonian-Laird (Random effect)
smoking_meta
                 OR            95%-CI %W(fixed) %W(random)
Blondal89    1.8500  [0.9892;  3.460]      3.96       4.82
Campbell91   0.9767  [0.4971;  1.919]      4.66       4.33
Fagerstrom82 1.7609  [0.7965;  3.893]      2.51       3.41
Fee82        1.5333  [0.7713;  3.048]      3.66       4.23
Garcia89     2.9489  [1.0094;  8.615]      1.21       2.08
Garvey00     2.4866  [1.4256;  4.337]      5.04       5.63
Gross95      2.6241  [1.0265;  6.708]      1.74       2.60
Hall85       2.0348  [0.7829;  5.289]      1.63       2.53
Hall87       2.8223  [1.3289;  5.994]      2.26       3.69
Hall96       0.8687  [0.4614;  1.636]      5.63       4.75
Hjalmarson84 2.1700  [1.1005;  4.279]      3.18       4.30
Huber88      6.0040  [2.5721; 14.015]      1.21       3.07
Jarvis82     3.3272  [1.3706;  8.077]      1.53       2.86
Jensen91     1.4345  [0.8429;  2.441]      6.32       5.95
Killen84     1.3333  [0.4279;  4.155]      1.43       1.88
Killen90     1.2349  [0.9310;  1.638]     23.69      10.55
Malcolm80    3.5224  [0.8531; 14.543]      0.57       1.26
McGovern92   1.1676  [0.7040;  1.937]      7.61       6.31
Nakamura90   3.8235  [1.1500; 12.713]      0.77       1.70
Niaura94     1.3449  [0.3487;  5.188]      1.00       1.38
Pirie92      1.8435  [1.2044;  2.822]      8.59       7.61
Puska79      1.4603  [0.7750;  2.752]      4.36       4.74
Schneider85  1.7143  [0.5228;  5.621]      1.15       1.74
Tonnesen88   2.1239  [0.9285;  4.858]      2.15       3.19
Villa99      1.7600  [0.5489;  5.643]      1.16       1.80
Zelman92     1.4603  [0.6791;  3.140]      2.97       3.60

Number of studies combined: k=26

                        OR          95%-CI     z  p.value
Fixed effect model   1.670  [1.468; 1.899] 7.819 < 0.0001
Random effects model 1.752  [1.483; 2.069] 6.604 < 0.0001

Quantifying heterogeneity:
tau^2 = 0.0475; H = 1.18 [1; 1.5]; I^2 = 28.4% [0%; 55.8%]

Test of heterogeneity:
    Q d.f. p.value
 34.9   25    0.09

Details on meta-analytical method:
- Mantel-Haenszel method
## Forest plot
forest.meta(smoking_meta)

plot of chunk unnamed-chunk-8

## Funnel plot
funnel(smoking_meta)

plot of chunk unnamed-chunk-9


## Test for funnel plot asymmetry
metabias(smoking_meta)

    Linear regression test of funnel plot asymmetry (efficient score)

data:  smoking_meta 
t = 2.326, df = 24, p-value = 0.02878
alternative hypothesis: asymmetry in funnel plot 
sample estimates:
   bias se.bias   slope 
 1.2912  0.5551  0.1127 

## Cumulative meta-analysis
smoking_meta.cuml <- metacum(smoking_meta)
smoking_meta.cuml

Cumulative meta-analysis (Fixed effect model)

                                OR           95%-CI  p.value    tau^2     I^2
Adding Blondal89 (k=1)       1.850  [0.9892; 3.460]   0.0541   0             
Adding Campbell91 (k=2)      1.378  [0.8736; 2.175]   0.1678   0.0936   45.9%
Adding Fagerstrom82 (k=3)    1.465  [0.9866; 2.175]   0.0583   0.0078    5.8%
Adding Fee82 (k=4)           1.482  [1.0520; 2.087]   0.0244   0         0.0%
Adding Garcia89 (k=5)        1.593  [1.1515; 2.203]   0.0049   0         0.0%
Adding Garvey00 (k=6)        1.807  [1.3682; 2.386] < 0.0001   0.0123    8.8%
Adding Gross95 (k=7)         1.869  [1.4325; 2.440] < 0.0001   0.0022    1.6%
Adding Hall85 (k=8)          1.881  [1.4550; 2.430] < 0.0001   0         0.0%
Adding Hall87 (k=9)          1.960  [1.5376; 2.499] < 0.0001   0         0.0%
Adding Hall96 (k=10)         1.770  [1.4134; 2.216] < 0.0001   0.0549   28.3%
Adding Hjalmarson84 (k=11)   1.806  [1.4586; 2.236] < 0.0001   0.0399   22.6%
Adding Huber88 (k=12)        1.944  [1.5820; 2.390] < 0.0001   0.1186   45.9%
Adding Jarvis82 (k=13)       2.000  [1.6359; 2.444] < 0.0001   0.1162   44.8%
Adding Jensen91 (k=14)       1.919  [1.5910; 2.316] < 0.0001   0.103    43.3%
Adding Killen84 (k=15)       1.901  [1.5798; 2.288] < 0.0001   0.0933   39.9%
Adding Killen90 (k=16)       1.675  [1.4354; 1.954] < 0.0001   0.1045   48.6%
Adding Malcolm80 (k=17)      1.690  [1.4496; 1.969] < 0.0001   0.1034   47.1%
Adding McGovern92 (k=18)     1.639  [1.4153; 1.897] < 0.0001   0.0978   46.9%
Adding Nakamura90 (k=19)     1.660  [1.4355; 1.920] < 0.0001   0.102    47.0%
Adding Niaura94 (k=20)       1.656  [1.4333; 1.914] < 0.0001   0.0947   44.1%
Adding Pirie92 (k=21)        1.674  [1.4602; 1.920] < 0.0001   0.0796   41.7%
Adding Puska79 (k=22)        1.664  [1.4560; 1.902] < 0.0001   0.0708   39.0%
Adding Schneider85 (k=23)    1.665  [1.4577; 1.901] < 0.0001   0.0646   36.1%
Adding Tonnesen88 (k=24)     1.675  [1.4692; 1.910] < 0.0001   0.0594   33.9%
Adding Villa99 (k=25)        1.676  [1.4713; 1.910] < 0.0001   0.0536   31.0%
Adding Zelman92 (k=26)       1.670  [1.4684; 1.899] < 0.0001   0.0475   28.4%

Pooled estimate              1.670  [1.4684; 1.899] < 0.0001   0.0475   28.4%

Details on meta-analytical method:
- Mantel-Haenszel method

## Cumulative forest plot
forest(smoking_meta.cuml)

plot of chunk unnamed-chunk-9