datos$Ncasos=datos[[columnaInteres]]datosCalculo=datos %>%select(Autor, N, Ncasos) %>%filter(complete.cases(.))nEstudios=nrow(datosCalculo)
La forma de trabajar es fijarnos en la columna Autor, N y Ncasos (columna de interés). Queremos hacer una metaanálisis de porcentajes calculados como Ncasos/N. Para ello usamos la función escalc del paquete metafor, que calcula los efectos y sus varianzas. En este caso usamos la transformación logit para que los intervalos de confianza estén acotados entre 0 y 1.
# A tibble: 13 × 10
Autor N Ncasos yi vi sei zi pval ci.lb ci.ub
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Arnold et … 74 29 -0.439 0.0567 0.238 -1.85 6.50e- 2 -0.906 0.0274
2 Arnold et … 49 26 0.123 0.0819 0.286 0.428 6.68e- 1 -0.438 0.684
3 Di Eusanio… 21 18 1.79 0.389 0.624 2.87 4.06e- 3 0.570 3.01
4 Kim et al … 55 42 1.17 0.101 0.317 3.69 2.20e- 4 0.551 1.79
5 Kim et al … 20 15 1.10 0.267 0.516 2.13 3.34e- 2 0.0865 2.11
6 Koizumi et… 60 51 1.73 0.131 0.362 4.80 1.61e- 6 1.03 2.44
7 Liakopoulo… 36 21 0.336 0.114 0.338 0.995 3.20e- 1 -0.326 0.999
8 Panfilov e… 26 22 1.70 0.295 0.544 3.14 1.71e- 3 0.639 2.77
9 Schoeberl … 32 18 0.251 0.127 0.356 0.705 4.81e- 1 -0.447 0.950
10 Schoeberl … 68 47 0.806 0.0689 0.262 3.07 2.15e- 3 0.291 1.32
11 Tian et al 698 530 1.15 0.00784 0.0885 13.0 1.67e-38 0.975 1.32
12 Verhoye et… 94 62 0.661 0.0474 0.218 3.04 2.38e- 3 0.235 1.09
13 Weiss et al 41 32 1.27 0.142 0.377 3.36 7.74e- 4 0.529 2.01
Ya tenemos los datos preparados para hacer el metaanálisis. Usamos la función rma para hacer el metaanálisis, en este caso usando un modelo de efectos aleatorios (REML es el método por defecto).
res <-rma(yi, vi, data=datosAmpliados, method="REML")summary(res)
Random-Effects Model (k = 13; tau^2 estimator: REML)
logLik deviance AIC BIC AICc
-12.4421 24.8843 28.8843 29.8541 30.2176
tau^2 (estimated amount of total heterogeneity): 0.3365 (SE = 0.1842)
tau (square root of estimated tau^2 value): 0.5801
I^2 (total heterogeneity / total variability): 82.76%
H^2 (total variability / sampling variability): 5.80
Test for Heterogeneity:
Q(df = 12) = 65.7433, p-val < .0001
Model Results:
estimate se zval pval ci.lb ci.ub
0.8284 0.1876 4.4163 <.0001 0.4608 1.1961 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Ahora mostramos los resultados en un forest plot.
Vamos a posicionar la columna de casos algo más a la izquierda para que no se solape con los intervalos de confianza. Para ello usamos el argumento ilab.xpos. Podemos añadir más columnas si queremos, por ejemplo la columna N:
forest(res, slab=datosCalculo$Autor, xlab="Proporción", atransf=plogis, ilab=cbind(datosCalculo$Ncasos, datosCalculo$N), ilab.xpos=c(-3.5, -3))#Poner los titulos de las columnastext(-3.5, nEstudios+0.75, "Casos")text(-3, nEstudios+0.75, "N")
op <-par(cex=0.75, font=2)
AHora podríamos estudiar el sesgo de publicación con un funnel plot y el test de Egger:
funnel(res, atransf=plogis)
regtest(res, model="rma", predictor="sei")
Regression Test for Funnel Plot Asymmetry
Model: mixed-effects meta-regression model
Predictor: standard error
Test for Funnel Plot Asymmetry: z = 1.4543, p = 0.1459
Limit Estimate (as sei -> 0): b = 0.1664 (CI: -0.7974, 1.1301)