4  Effect Sizes samenbrengen

4.1 Theorie

In de statistiek wordt een model gezien als een vereenvoudigde “theorie”, die het proces beschrijft waarmee de waargenomen gegevens zijn gegenereerd. Vaak wordt het geschreven als een wiskundige formule om processen in de wereld om ons heen op een geïdealiseerde manier te beschrijven.

Er zijn twee alternatieve modellen in de meta-analyse: het fixed-effect model en het random-effects model. Het fixed-effect model gaat ervan uit dat er één ware effectgrootte is en dat alle effectgroottes afkomstig zijn van één homogene populatie.

Het random-effects model daarentegen stelt dat de ware effectgroottes ook variëren binnen meta-analyses. Het anticipeert op aanzienlijke heterogeniteit tussen studies in de ware effecten. Het doel van het random-effects model is daarom om het gemiddelde te vinden van de ware effectgrootteverdeling die ten grondslag ligt aan onze gegevens. De variantie van de ware effectgroottes \(\tau2\), ook wel heterogeniteitsvariantie tussen studies genoemd, moet worden geschat in random-effects meta-analyses. Hier zijn verschillende methoden voor, en welke het beste werkt hangt af van de context.

De meest gebruikelijke manier om een gepoolde effectgrootte te berekenen is via de inverse-variantiemethode. In het meta-pakket is er een functie om meta-analyses uit te voeren van vooraf berekende effectgroottegegevens, evenals een reeks functies die kunnen worden gebruikt voor verschillende soorten “ruwe” uitkomstgegevens.

4.2 Praktijk

Eerst kijken we hoe we een fixed-model kunnen uitvoeren met het esc pakket:

# Laad dmetar, esc en tidyverse
library(dmetar)    ## voor de data
library(esc)       ## voor de berekening van effect groottes 
library(tidyverse) ## voor databewerking

# Laad de dataset via dmetar
data(SuicidePrevention)

# Bekijk de dataset en zie welke variabelen (kolommen) en studies (rijen) er zijn
glimpse(SuicidePrevention)
Rows: 9
Columns: 10
$ author    <chr> "Berry et al.", "DeVries et al.", "Fleming et al.", "Hunt & …
$ n.e       <dbl> 90, 77, 30, 64, 50, 109, 60, 40, 51
$ mean.e    <dbl> 14.98, 16.21, 3.01, 19.32, 4.54, 15.11, 3.44, 7.10, 23.74
$ sd.e      <dbl> 3.29, 5.35, 0.87, 6.41, 2.75, 4.63, 1.26, 0.76, 7.24
$ n.c       <dbl> 95, 69, 30, 65, 50, 111, 60, 40, 56
$ mean.c    <dbl> 15.54, 20.13, 3.13, 20.22, 5.61, 16.46, 3.42, 7.38, 24.91
$ sd.c      <dbl> 4.41, 7.43, 1.23, 7.62, 2.66, 5.39, 1.88, 1.41, 10.65
$ pubyear   <dbl> 2006, 2019, 2006, 2011, 1997, 2000, 2013, 2015, 2014
$ age_group <fct> gen, older, gen, gen, gen, gen, gen, older, older
$ control   <fct> WLC, no intervention, no intervention, WLC, WLC, no interven…

Als we dat weten kunnen we de dataset analyseren:

# Bereken Hedges' g en de Standaard Fout (SE)
# We slaan de studienamen op in "study".
# We gebruiken de pmap_dfr functie om de effect grootte te berekenen voor elke rij studie.
# Kijk goed wat we gebruiken
SP_calc <- pmap_dfr(SuicidePrevention, 
                    function(mean.e, sd.e, n.e, mean.c,
                             sd.c, n.c, author, ...){
                      esc_mean_sd(grp1m = mean.e,
                                  grp1sd = sd.e,
                                  grp1n = n.e,
                                  grp2m = mean.c,
                                  grp2sd = sd.c,
                                  grp2n = n.c,
                                  study = author,
                                  es.type = "g") %>% 
                        as.data.frame()}) 

# Laten we de nieuwe dataset opnieuw bekijken
# Je ziet dat Hedges' g ("es") en standard error ("se") erin zit
glimpse(SP_calc)
Rows: 9
Columns: 9
$ study       <chr> "Berry et al.", "DeVries et al.", "Fleming et al.", "Hunt …
$ es          <dbl> -0.14279447, -0.60770928, -0.11117965, -0.12698011, -0.392…
$ weight      <dbl> 46.09784, 34.77314, 14.97625, 32.18243, 24.52054, 54.50431…
$ sample.size <dbl> 185, 146, 60, 129, 100, 220, 120, 80, 107
$ se          <dbl> 0.1472854, 0.1695813, 0.2584036, 0.1762749, 0.2019459, 0.1…
$ var         <dbl> 0.02169299, 0.02875783, 0.06677240, 0.03107286, 0.04078214…
$ ci.lo       <dbl> -0.4314686, -0.9400826, -0.6176413, -0.4724727, -0.7882811…
$ ci.hi       <dbl> 0.145879624, -0.275335960, 0.395282029, 0.218512440, 0.003…
$ measure     <chr> "g", "g", "g", "g", "g", "g", "g", "g", "g"

We gebruiken deze resultaten om de formule van het fixed-effect model toe te passen:

# Bereken de inverse variantie-gewichten voor elk onderzoek.
SP_calc$w <- 1/SP_calc$se^2

# Vervolgens gebruiken we de gewichten om het gecombineerde effect te berekenen
pooled_effect <- sum(SP_calc$w*SP_calc$es)/sum(SP_calc$w)
pooled_effect
[1] -0.2311121

De resultaten van onze berekeningen laten zien dat de gepoolde effectgrootte, uitgaande van een model met een vast effect, \(g \approx -0,23\) is. Later laten we zien hoe het random model werkt.

metagen kan worden gebruikt voor vooraf berekende effectgroottegegevens. Hier wordt het gebruikt om een meta-analyse uit te voeren van de ThirdWave dataset. Laten we de dataset openen en bekijken.

library(tidyverse) # voor databewerking
library(dmetar)    # voor de data
library(meta)      # voor de meta-analyse
Loading 'meta' package (version 6.5-0).
Type 'help(meta)' for a brief overview.
Readers of 'Meta-Analysis with R (Use R!)' should install
older version of 'meta' package: https://tinyurl.com/dt4y5drs
data(ThirdWave)
glimpse(ThirdWave)
Rows: 18
Columns: 8
$ Author               <chr> "Call et al.", "Cavanagh et al.", "DanitzOrsillo"…
$ TE                   <dbl> 0.7091362, 0.3548641, 1.7911700, 0.1824552, 0.421…
$ seTE                 <dbl> 0.2608202, 0.1963624, 0.3455692, 0.1177874, 0.144…
$ RiskOfBias           <chr> "high", "low", "high", "low", "low", "low", "high…
$ TypeControlGroup     <chr> "WLC", "WLC", "WLC", "no intervention", "informat…
$ InterventionDuration <chr> "short", "short", "short", "short", "short", "sho…
$ InterventionType     <chr> "mindfulness", "mindfulness", "ACT", "mindfulness…
$ ModeOfDelivery       <chr> "group", "online", "group", "group", "online", "g…

Nu gaan we voor de analyse het random-effect model gebruken via het pakket meta.

TE bevat de \(g\) waarden en seTE de standaardfout ervan. De metagen functie neemt de volgende argumenten:

m.gen <- metagen(TE = TE,
                 seTE = seTE,
                 studlab = Author,
                 data = ThirdWave,
                 sm = "SMD",
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "REML",
                 hakn = TRUE,
                 title = "Third Wave Psychotherapies")

Ons m.gen object bevat nu alle resultaten van de meta-analyse. Een gemakkelijke manier om een overzicht te krijgen is door de summary functie te gebruiken.

summary(m.gen)
Review:     Third Wave Psychotherapies

                          SMD            95%-CI %W(random)
Call et al.            0.7091 [ 0.1979; 1.2203]        5.0
Cavanagh et al.        0.3549 [-0.0300; 0.7397]        6.3
DanitzOrsillo          1.7912 [ 1.1139; 2.4685]        3.8
de Vibe et al.         0.1825 [-0.0484; 0.4133]        7.9
Frazier et al.         0.4219 [ 0.1380; 0.7057]        7.3
Frogeli et al.         0.6300 [ 0.2458; 1.0142]        6.3
Gallego et al.         0.7249 [ 0.2846; 1.1652]        5.7
Hazlett-Stevens & Oren 0.5287 [ 0.1162; 0.9412]        6.0
Hintz et al.           0.2840 [-0.0453; 0.6133]        6.9
Kang et al.            1.2751 [ 0.6142; 1.9360]        3.9
Kuhlmann et al.        0.1036 [-0.2781; 0.4853]        6.3
Lever Taylor et al.    0.3884 [-0.0639; 0.8407]        5.6
Phang et al.           0.5407 [ 0.0619; 1.0196]        5.3
Rasanen et al.         0.4262 [-0.0794; 0.9317]        5.1
Ratanasiripong         0.5154 [-0.1731; 1.2039]        3.7
Shapiro et al.         1.4797 [ 0.8618; 2.0977]        4.2
Song & Lindquist       0.6126 [ 0.1683; 1.0569]        5.7
Warnecke et al.        0.6000 [ 0.1120; 1.0880]        5.2

Number of studies: k = 18

                             SMD           95%-CI    t  p-value
Random effects model (HK) 0.5771 [0.3782; 0.7760] 6.12 < 0.0001

Quantifying heterogeneity:
 tau^2 = 0.0820 [0.0295; 0.3533]; tau = 0.2863 [0.1717; 0.5944]
 I^2 = 62.6% [37.9%; 77.5%]; H = 1.64 [1.27; 2.11]

Test of heterogeneity:
     Q d.f. p-value
 45.50   17  0.0002

Details on meta-analytical method:
- Inverse variance method
- Restricted maximum-likelihood estimator for tau^2
- Q-Profile method for confidence interval of tau^2 and tau
- Hartung-Knapp adjustment for random effects model (df = 17)

Het gepoolde effect direct weergeven is ook mogelijk. Hier dat effect via random-methode

m.gen$TE.random
[1] 0.5771158

Hier dat effect via fixed-methode.

m.gen$TE.fixed
[1] 0.4805045

Je kunt ook een sensitiviteis-analyse uitvoeren. Dan zet je een andere methode in om te zien of de resultaten dan hetzelfde zijn. We kunnen bijvoorbeeld de functie update.meta gebruiken om de methode voor het schatten van \(\tau^2\) te veranderen van de standaard REML in PM (Paule-Mandel). Dit is een goed idee bijvoorbeeld als het aantal studies klein is.

m.gen_update <- update.meta(m.gen, 
                            method.tau = "PM")

# effect
m.gen_update$TE.random
[1] 0.5873544

Om de \(\tau^2\) schatting te krijgen doe je:

m.gen_update$tau2
[1] 0.1104957

Nu iets over binaire uitkomsten. We gebruiken de functie metabin om een meta-analyse uit te voeren op de dataset DepressionMortality. Laten we de dataset openen en eerste eens bekijken.

library(dmetar)
library(tidyverse)
library(meta)

data(DepressionMortality)
glimpse(DepressionMortality)
Rows: 18
Columns: 6
$ author  <chr> "Aaroma et al., 1994", "Black et al., 1998", "Bruce et al., 19…
$ event.e <dbl> 25, 65, 5, 26, 32, 1, 24, 15, 15, 173, 37, 41, 29, 61, 15, 21,…
$ n.e     <dbl> 215, 588, 46, 67, 407, 44, 60, 61, 29, 1015, 105, 120, 258, 38…
$ event.c <dbl> 171, 120, 107, 1168, 269, 87, 200, 437, 227, 250, 66, 9, 24, 3…
$ n.c     <dbl> 3088, 1901, 2479, 3493, 6256, 1520, 882, 2603, 853, 3375, 409,…
$ country <chr> "Finland", "USA", "USA", "USA", "Sweden", "USA", "Canada", "Ne…

In dit voorbeeld wordt de risk ratio, RR(Risicoverhouding)) berekend (de binaire uitkomst). We gebruiken een random-effect poolingmodel en omdat we te maken hebben met binaire uitkomstgegevens, gebruiken we de Paule-Mandel-schatter voor \(tau2\).

m.bin <- metabin(event.e = event.e, 
                 n.e = n.e,
                 event.c = event.c,
                 n.c = n.c,
                 studlab = author,
                 data = DepressionMortality,
                 sm = "RR",
                 method = "MH",
                 MH.exact = TRUE,
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "PM",
                 hakn = TRUE,
                 title = "Depressie en Mortaliteit")
summary(m.bin)
Review:     Depressie en Mortaliteit

                          RR            95%-CI %W(random)
Aaroma et al., 1994   2.0998 [1.4128;  3.1208]        6.0
Black et al., 1998    1.7512 [1.3139;  2.3341]        6.6
Bruce et al., 1989    2.5183 [1.0785;  5.8802]        3.7
Bruce et al., 1994    1.1605 [0.8560;  1.5733]        6.5
Enzell et al., 1984   1.8285 [1.2853;  2.6014]        6.3
Fredman et al., 1989  0.3971 [0.0566;  2.7861]        1.2
Murphy et al., 1987   1.7640 [1.2644;  2.4610]        6.4
Penninx et al., 1999  1.4647 [0.9361;  2.2919]        5.8
Pulska et al., 1998   1.9436 [1.3441;  2.8107]        6.2
Roberts et al., 1990  2.3010 [1.9206;  2.7567]        7.0
Saz et al., 1999      2.1837 [1.5533;  3.0700]        6.3
Sharma et al., 1998   2.0500 [1.0744;  3.9114]        4.7
Takeida et al., 1997  6.9784 [4.1303; 11.7902]        5.3
Takeida et al., 1999  5.8124 [3.8816;  8.7035]        6.0
Thomas et al., 1992   1.3303 [0.7780;  2.2745]        5.3
Thomas et al., 1992   1.7722 [1.1073;  2.8363]        5.6
Weissman et al., 1986 1.2500 [0.6678;  2.3398]        4.8
Zheng et al., 1997    1.9803 [1.4001;  2.8011]        6.3

Number of studies: k = 18
Number of observations: o = 94770
Number of events: e = 5439

                         RR           95%-CI    t  p-value
Random effects model 2.0217 [1.5786; 2.5892] 6.00 < 0.0001

Quantifying heterogeneity:
 tau^2 = 0.1865 [0.0739; 0.5568]; tau = 0.4319 [0.2718; 0.7462]
 I^2 = 77.2% [64.3%; 85.4%]; H = 2.09 [1.67; 2.62]

Test of heterogeneity:
     Q d.f.  p-value
 74.49   17 < 0.0001

Details on meta-analytical method:
- Inverse variance method
- Paule-Mandel estimator for tau^2
- Q-Profile method for confidence interval of tau^2 and tau
- Hartung-Knapp adjustment for random effects model (df = 17)

We gebruiken een andere schattingsmethode om de resultaten nogmaals te controleren (sensitiviteits-analyse), REML ipv MH.

m.bin_update <- update.meta(m.bin, 
                            method.tau = "REML")

De resultaten zijn vrijwel hetzelfde:

exp(m.bin_update$TE.random)
[1] 2.02365

Hier de schatting voor \(\tau^2\):

m.bin_update$tau2
[1] 0.1647315

Laten we daarvoor sm overzetten naar OR:

m.bin_or <- metabin(event.e = event.e, 
                 n.e = n.e,
                 event.c = event.c,
                 n.c = n.c,
                 studlab = author,
                 data = DepressionMortality,
                 sm = "OR",
                 method = "MH",
                 MH.exact = TRUE,
                 fixed = FALSE,
                 random = TRUE,
                 method.tau = "PM",
                 hakn = TRUE,
                 title = "Depressie en Mortaliteit")
summary(m.bin_or)
Review:     Depressie en Mortaliteit

                          OR            95%-CI %W(random)
Aaroma et al., 1994   2.2445 [1.4389;  3.5011]        6.3
Black et al., 1998    1.8446 [1.3432;  2.5331]        7.0
Bruce et al., 1989    2.7034 [1.0472;  6.9793]        3.7
Bruce et al., 1994    1.2623 [0.7684;  2.0737]        6.0
Enzell et al., 1984   1.8992 [1.2974;  2.7802]        6.7
Fredman et al., 1989  0.3831 [0.0521;  2.8146]        1.3
Murphy et al., 1987   2.2733 [1.3248;  3.9011]        5.8
Penninx et al., 1999  1.6163 [0.8944;  2.9208]        5.5
Pulska et al., 1998   2.9547 [1.4041;  6.2177]        4.7
Roberts et al., 1990  2.5683 [2.0855;  3.1629]        7.5
Saz et al., 1999      2.8278 [1.7510;  4.5666]        6.1
Sharma et al., 1998   2.5949 [1.1555;  5.8275]        4.3
Takeida et al., 1997  7.7354 [4.4252; 13.5219]        5.7
Takeida et al., 1999  6.7101 [4.3351; 10.3862]        6.4
Thomas et al., 1992   1.3555 [0.7623;  2.4104]        5.6
Thomas et al., 1992   1.8472 [1.1082;  3.0791]        6.0
Weissman et al., 1986 1.3158 [0.6013;  2.8793]        4.5
Zheng et al., 1997    2.0324 [1.4110;  2.9275]        6.8

Number of studies: k = 18
Number of observations: o = 94770
Number of events: e = 5439

                         OR           95%-CI    t  p-value
Random effects model 2.2901 [1.7512; 2.9949] 6.52 < 0.0001

Quantifying heterogeneity:
 tau^2 = 0.2032 [0.0744; 0.6314]; tau = 0.4508 [0.2728; 0.7946]
 I^2 = 72.9% [56.7%; 83.0%]; H = 1.92 [1.52; 2.43]

Test of heterogeneity:
     Q d.f.  p-value
 62.73   17 < 0.0001

Details on meta-analytical method:
- Inverse variance method
- Paule-Mandel estimator for tau^2
- Q-Profile method for confidence interval of tau^2 and tau
- Hartung-Knapp adjustment for random effects model (df = 17)