jueves, 27 de febrero de 2025

RStudio - Metafor | Síntesis final del procedimiento

A lo largo de este mes, hemos aprendido a ejecutar un meta-análisis en RStudio mediante la biblioteca Metafor. El objetivo de esta entrada es actuar como una entrada de síntesis final sobre las cuestiones que se deberán tener en cuenta cuando se efectúe un meta-análisis similar.

Pasos a tener en cuenta

Antes de comenzar con el análisis se recomienda tener cierta experiencia, aunque sea básica, con el programa RStudio. Recordemos que en Estrategia Estadística se explica cómo poder usarlo de manera efectiva sin necesidad de tener conocimientos previos.
  • En primer lugar, se deberán instalar las bibliotecas necesarias: metafor y tidyverse. Además, también es recomendable tener instalado la biblioteca xlsx. Puedes hacer clic en el siguiente botón para acceder a este contenido para repasarlo o aprender:


  • A continuación, una vez abierto (e instalado los paquetes) se deberá solicitar la carga de las bibliotecas mencionadas.

  • Ahora, se puede proceder con el meta-análisis propiamente dicho, calculando en primer lugar la diferencia de medias estandarizadas y obteniendo el meta-análisis propiamente dicho de efectos aleatorios. Esto se deberá completar con la generación del forest plot. Puedes hacer clic en el siguiente botón para acceder a estos contenidos:





  • A continuación, se puede analizar la influencia individual.

  • El siguiente paso sería llevar a cabo el análisis de moderación con algunas variables categóricas o cuantitativas. Puedes hacer clic en el siguiente botón para acceder a este contenido:



  • Finalmente se debería efectuar un análisis de sesgo de publicación, que incluya el funnel plot.



Guía resumen del procedimiento

Con el fin de tener un documento referencia que resuma todas las funciones que se han explicado a lo largo de este mes y que se deben introducir en RStudio, puedes descargar la siguiente hoja de funciones. En ella aparecerán las funciones que se han usado y se especificará los nombres que se han empleado como ejemplo (y que podrían ser cambiados para otros meta-análisis). Puedes hacer clic en el siguiente botón para acceder a Box y descargar el documento pdf. La contraseña de este documento es metafor




Fuente bibliográfica

Todo el contenido de este mes no hubiese sido posible sin la consulta del material del doctor Noah L. Schroeder y su canal de YouTube Learn Meta-Analysis:
  • Schroeder, N. L. (2022). Meta-analysis in R with metafor. Learn Meta-Analysis: https://www.youtube.com/@LearnMetaAnalysis  

Jacob Sierra Díaz y Alti

martes, 25 de febrero de 2025

RStudio - Metafor | Redactando los resultados

Esta es la última entrada de la serie de elaboración de un meta-análisis básico (de efectos aleatorios) con la biblioteca Metafor. Ha llegado el momento de ver un ejemplo de cómo reportar los resultados de los procedimientos descritos a lo largo de este mes tanto en inglés como en castellano. Las partes propias del meta-análisis que hemos usado como ejemplo se han puesto de color rojo. Para facilitar su interpretación, se han incluido botones que dirigen a la parte de procedimiento e interpretación elemental de los elementos.


6.1 | Primer párrafo: resultados generales

Lo primero que se debe escribir en el informe de resultados (o artículo) son los resultados generales. Estos se deben componer del tipo de análisis que se ha llevado a cabo, el número de estudios (k) que se ha empleado y si las medidas del grupo experimental fueron significativamente mayor que las del grupo control, reportando la g y el p-valor. A continuación se muestra una manera de reportar estos resultados. En rojo, los datos que habrá que cambiar según los resultados particulares del meta-análisis. 
  • We conducted a random effect meta-analysis of 27 studies and found that the intervention was significantly more effective that comparison condition (g = 0.61; p < 0.001).
  • Hemos realizado un meta-análisis de efectos aleatorios de 27 estudios y hemos encontrado que la intervención fue significativamente más eficaz que la condición a comparar (g = 0.61; p < 0.001).

Estos resultados se extraen del procedimiento que se mostrará haciendo clic en el siguiente botón:




A continuación, en el mismo párrafo se deberá decir si se ha observado heterogeneidad significativa en la muestra, reportadon el valor Q e I2 (%) junto con una breve explicación de dicha heterogeneidad. Además también se podrá reportar la t2
  • We found significant heterogeneity in the sample (Q(26) = 91,84; p < 0,001; I2 = 74,27%), indicating that there was substantial heterogeneity. Moreover, we found that t= 0.24 (SE = 0.09)
  • Hemos visto que hay una heterogeneidad significativa en la muestra (Q(26) = 91,84; p < 0,001; I= 74,27%), sugiriendo que se trata de una heterogeneidad sustancial. Además, hemos econtrado que t= 0.24 (SE = 0.09)

Estos resultados se extraen del procedimiento que se mostrará haciendo clic en el siguiente botón:




6.2 | Segundo párrafo: outliers y forest plot

A continuación, debemos expresar si existe algún outlier (caso atípico) que pueda estar influyendo en los resultados. Aquí habrá que expresar si ese outlier se ha quitado o, si por el contrario, se decide mantenerlo. Recordemos que los outlier son aquellos casos que se salen de la tendencia general del meta-análisis. Se puede ver bastante bien visualmente en el forest plot y en el valor de SMD.
  • We next checked to see if there were any outlier or study with significant influence on the results. One study (Ferguson, 2022) was found to be an outlier. Nevertheless, the study was not notably different than others in the sample, so the effect size was not removed or modified.
  • A continuación hemos verificado si hay algún estudio con un valor atípico (outlier) que influya significativamente en los resultados. Un estudio (Ferguson, 2022) se ha identificado como outlier. Sin embargo, el estudio no es notablemente diferente con respecto al resto de la muestra y el tamaño del efecto no ha sido quitado o modificado.

Ahora, debemos introducir el forest plot y se puede poner a continuación del párrafo anterior, es decir, sin que sea un nuevo párrafo.
  • A forest plot of all effect sizes is shown in Figure 1.
  • El forest plot de todos los tamaños del efecto se muestra en la Figura 1.
Ahora, debemos introducir el forest plot y se puede poner a continuación del párrafo anterior. Puedes hacer clic en el siguiente botón para acceder a la entrada donde se cuenta cómo realizar este gráfico en R:




6.3 | Tercer párrafo: análisis de la moderación

El tercer párrafo debe ir dedicado al análisis de moderación y a exponer la comprobación de si la variable objeto de comparación modera en el efecto final (outcome). A este respecto, sería interesante incluir el estadístico qbetween (Qb) y el p-valor general del análisis junto con una tabla de cada una de las categorías de la variable objeto de estudio. Una forma de expresar esto en los resultados puede ser:
  • We first checked to see if the type of study significantly moderated the effects of the intervention. We found that the different categories were a significant moderator (Qb (4) = 9,85; p = 0.042). A table of results is shown in Table 1.
  • Ahora hemos comprobado si el tipo de estudio significativamente modera los efectos de la intervención. Hemos encontrado que las distintas categorías fueron moderadores significativos (Qb (4) = 9,85; p = 0.042). Una tabla de estos resultados se desglosa en la Tabla 1.

A continuación, habría que poner la tabla, que se muestra en el análisis de moderación. En concreto, las columnas que hay que poner (de izquierda a derecha) son: categorías de la variable, muestra del grupo experimental, muestra del grupo control, número de comparaciones (k), estadístico g, error estándar, valor z (empleado en el ámbito de ciencias de la educación; zval) e intervalo de confianza inferior (ci.lb) y superior (ci.ub). La recomendación más rápida será copiar los valores de la consola de Excel al programa de edición de texto (M. Word, en la mayoría de los casos); aunque también hay comandos para exportar la tabla automáticametne.

Para acceder al contenido relativo a la generación del análisis de moderación con variables categóricas puedes hacer clic en el siguiente botón:




6.4 | Cuarto párrafo: sesgo de publicación

La última cuestión que se debe introducir en el informe es el sesgo de publicación. En primer lugar hay que reportar que se ha verificado la asimetría del funnel plot (incluyéndolo como Figura 2). A continuación, habrá que informar sobre los resultados del método trim and fill, pudiendo aportar el funnel plot de este método (como Figura 3). Ahora, habrá que incluir la información de la regresión de Egger, aportando el p-valor. Por último, se deberá realizar un último párrafo para concluir con todos estos hallazgos. Para ello, se muestra un ejemplo de redacción:

  • In order to examine if publication bias was a significant concern, we first examine the funnel plot for asymmetry. As shown in Figure 2, the funnel plot seems to be slightly asimetrical, however it does not appear to be overly skewed. Next, we conducted a trim and fill analysis. The analysis showed that two studies were missing on the right side of the funnel (see Figure 3). Nevertheless, imputing these studies did not notably change the overall effect size (g = 0.67; p < 0.001) from the overall effect size found in the meta-analysis (g = 0.61; p < 0.001). We then ran Egger's regression to check for funnel plot asymetry. The test was not significant, suggesting that there is not significant funnel plot asymetry (z = -0.10; b = 0.65; p = 0.91). Overall, we conclude that publication bias is not likely to be a significant concern in our sample. While the trim and fill analysis found that two studies were missing from the right side of the funnel, imputing them did not notably change the overall effect size. Moreover, Egger's regression suggested that the funnel plot was not significant asymmetrical.
  • Para examinar si el sesgo de publicación tuvo una preocupación significativa, primero examinamos visualmente el funnel plot en busca de asimetría. Tal y como se muestra en la Figura 2, el funnel plot parece ser ligeramente asimétrico; sin embargo, no parece tener una excesiva desviación. A continuación, hemos realizado un análisis trim and fill. Este análisis mostró que dos estudios se perdieron en el lado derecho del funnel plot (véase Figura 3). Sin embargo, imputando estos estudios no se apreció cambio notable en el tamaño del efecto global (g = 0.67; p < 0.001) en comparación con el tamaño del efecto original del meta-análisis (g = 0.61; p < 0.001). Luego, hemos realizado la regresión de Egger para comprobar la asimetría del funnel plot. El test descubrió que no fue significativo, surigierno que no hay una asimetría considerable (z = -0.10; b = 0.65; p = 0.91). En resumen, podemos concluir que el sesgo de publicación no es un problema significativo en nuestra muestra de estudios. Además, el método trim and fill encontró dos estudios que faltaban en el lado derecho del funnel plot e imputándolos no se apreció cambios significativos en el tamaño del efecto global. Además, la regresión de Egger sugirió que el funnel plot no fue asimétrico.
Para recordar cómo hacer el procedimiento completo del riesgo de publicación puedes hacer clic en el siguiente botón:



Siguiente contenido

Hasta aquí los pasos básicos para realizar un meta-análisis elemental con la interfaz RStudio empleando la biblioteca Metafor. Haciendo clic en el siguiente botón accederás a una hoja resumen con todos los comandos y funciones que se han usado y que se pueden copiar y pegar para realizar este u otro tipo de meta-análisis.


Jacob Sierra Díaz y Alti

sábado, 22 de febrero de 2025

RStudio - Metafor | Análisis del sesgo de publicación

Otro de los aspectos más característicos de un meta-análisis es el estudio del sesgo de publicación. Se trata de la publicación selectiva de estudios en base a sus hallazgos (que normalmente son positivos o deseables). Este el último paso que se realiza tras obtener el análisis de moderación en un meta-análisis y que se puede volver a recordar pulsando sobre el siguiente botón:



5.1 | El funnel plot

El funnel plot es lo primero que vamos a solicitar para este análisis. En esta entrada no vamos a entrar en detalles técnicos; tan solo veremos cómo se puede elaborar este gráfico. Para ello vamos a emplear la función funnel (resultados globales), que para este ejemplo tenía el nombre de globalalea.

> funnel (globalalea)

Tras seleccionar esta función y clicar en la tecla RUN, aparecerá en la parte inferior izquierda el diagrama tan característico, tal y como se muestra en la siguiente imagen:


  • Este gráfico sirve para estudiar la asimetría. Sin embargo, puesto que puede ser un tema subjetivo (tal vez un investigador lo ve asimétrico y otra simétrico) se requiere realizar otras pruebas.


5.2 | El método trim and fill

Para poder superar la limitación subjetiva del funnel plot se puede realizar el método trim-and-fill. Para ello, la función que vamos a usar es trimfill. Sin embargo, vamos a asignar un nombre previo para usarlo en el siguiente funnel plot que vamos a crear. :

> trimandfill = trimfill(globalalea)
> trimandfill

En la siguiente imagen se muestra la explicación de estos resultados



El siguiente paso es generar un nuevo funnel plot con los datos del trim and fill. Para ellos usaremos el nombre que hemos puesto trimandfill en la función funnel:

> funnel (trimandfill)


En la siguiente imagen se muestra el funnel con los dos artículos identificados por este método, aportando una información visual complementaria a lo visto en los números anteriores:



5.3 | La regresión de Egger

La regresión de Egger (Egger's regression en inglés) mide la asimetría del funnel plot. Para ello, usaremos los resultados globales (globalaea en este caso) en la función regtest (...)

  • Lo deseable es que este test tenga un p-valor superior a 0,050 para determinar que no hay asimetría significativa. 

Seguir aprendiendo

Junto con las entradas anteriores, hemos visto como se puede hacer un meta-análisis básico con la biblioteca metafor. Un último paso después de todos estos procedimientos es el de exponer y redactar todos los resutados en un informe o artículo científico. En la siguiente entrada veremos una propuesta de cómo poder hacerlo. Puedes hacer clic en el siguiente botón para acceder a este contenido:



Jacob Sierra Díaz y Alti

jueves, 20 de febrero de 2025

RStudio - Metafor | Análisis de moderación

En los meta-análisis podemos encontrarnos variables categóricas como, por ejemplo, el país de publicación o el tipo de estudio) que serán interesantes tenerlas en cuenta. Por ese motivo se efectúan los análisis de moderación [moderator analysis en inglés]. Recordemos que para hacer este tipo de análisis para variables cuantitativas o cualitativas precisaremos haber efectuado el meta-análisis propiamente dicho para darnos cuenta de los posibles cambios producidos. Puedes hacer clic en el siguiente botón para recordar el procedimiento: 



4.1 | Función del análisis de moderación (categórica)

[1] En este análisis vamos a calcular lo que en inglés se denomina qbetween o el test de los moderadores, como se le conoce en la biblioteca de metafor.
  • El test nos permite conocer si hay diferencias significativas entre los niveles de nuestra moderación. Dicho de otra forma, queremos saber si hay diferencias significativas en las categorías de una variable categórica.
Lo primero que tenemos que hacer es nombrar la función que vamos a crear y que llamaremos Mod (de moderador), nombre de la variable categórica y q (que hace referencia al qbetween). A continuación, podremos la función del meta-análisis de efectos aleatorios rma y entre paréntesis pondremos yi e vi, seguido de mods (moderador) con un = y ~ [en Mac es con Alt + ñ y en Windows es con Alt Gr + 4], a continuación, escribiremos factor y entre paréntesis pondremos el nombre que tenga la variable categórica en nuestra base de datos (estudio en este caso). Por último señalaremos dónde están los datos con data = y el nombre de la base de datos (MAbasico en este caso). Para este ejemplo, la función quedará de esta forma:

> Mod.estudioq = rma (yi, vi, mods = ~ factor (estudio), data = MA basico)

Ejecutar esta función no devolverá ningún resultado. Para ello, deberemos volver a invocar su nombre:

> Mod.estudioq



[2] A continuación, vamos a solicitar los tamaños del efecto para cada una de las categorías. Para ello, vamos a poner una función similar a la de arriba pero sin la q al final del nombre (esto último es solo para aclararnos de lo que estamos haciendo). Ahora, podremos el código o la función anterior pero en el factor pondremos un -1. Lo que hará este -1 es quitar el intercepto.

> Mod.estudio = rma (yi, vi, mods = ~ factor (estudio)-1, data = MA basico)

Para ver los resultados (e interpretarlos) deberemos volver a invocar la variable:

> Mod.estudio



4.2 | Interpretación de los resultados

[1] En la ventana correspondiente aparecerán muchas cosas. En primer lugar, debemos bajar hasta el resultado QM, que tendrá el título de Test of Moderators. Este es el test que hemos visto antes que se llamaba qbetween y que nos dice si hay diferencias significativas entre los niveles o categorías de nuestra variable moderadora. Para ello miraremos el p-valor y lo interpretaremos de la forma en la que se muestra en la siguiente imagen. 



Ahora nos vamos a centrar en lo que se expone arriba: Test for Residual Heterogeneity. Lo cierto es que de este valor no se suele reportar en los meta-análisis pero que ofrece respuesta a la pregunta de ¿hay varianza no explicada que el análisis de moderación no explica? Aquí, cuando el p-valor es significativo (p-valor < 0,050) significa que hay varianza no explicada [unexplained variance en inglés] que nuestro análisis no ha detectado o explicado.


 
[2] Cuando realizaremos la función que hemos llamado mod.estudio (sin el q y, por lo tanto, es distinto a la prueba q-between) los resultados serán distintos a los vistos arriba puesto que es un test de moderación distinto. Recordemos que lo que hemos hecho en [1] mide si hay diferencias significativas entre los niveles y en [2] se mide si hay diferencias significativas a cero. Es por ello que el p-valor y los estadísticos difieran. Aquí, lo que hemos hecho ha sido quitar el intercepto de nuestro modelo, alcanzado algunos niveles o categorías valores significativos. En esencia, los valores que se representan en la siguiente tabla con el título de Model Result es lo que se suele reportar en las publicaciones.



Seguir aprendiendo

Uno de los últimos pasos que se deben dar en cualquier meta-análisis es el del estudio del sesgo de publicación. En la siguiente entrada relacionada veremos cómo se solicita en RStudio y qué cuestiones hay que tener en cuenta. Puedes hacer clic en el siguiente botón para acceder al contenido:



Jacob Sierra Díaz y Alti

martes, 18 de febrero de 2025

RStudio - Metafor | Análisis de la influencia individual

A la hora de hacer cualquier estudio estadístico o meta-análisis podemos encontrarnos con datos atípicos (outliers) que pueden estar influyendo en el resultado global. Es por ello, que se hace necesario realizar un estudio de la influencia para poder determinar posibles errores a la hora de haber introducido los datos en la base de datos (los puntos decimales son muy traicioneros) o para asegurar que se trata de un efecto natural. 

En las dos entradas anteriores hemos visto cómo se realiza un análisis convencional de efectos aleatorios y cómo se efectúa el gráfico forest-plot. Puedes hacer clic en los siguientes botones para acceder a estos contenidos y repasarlos. 




Sin embargo, lo que vamos a hacer ahora podría ser un paso previo a la hora de hacer el forest-plot, ya que si se detectase alguna influencia que sea necesario prestarle atención, el análisis anterior no serviría para mucho.  


3.1 | Función del estudio de la influencia

El análisis de la influencia individual de cada estudio puede hacerse mediante la función:

> influence (nombre de la función del meta-análisis)

En este caso, el nombre que pusimos para calcular el meta-análisis del tamaño del efecto fue globalalea. Por tanto, esta será la que debe ir entre paréntesis sin comillas. Recordemos que se debe escribir la siguiente instrucción en el Script de R, seleccionarla y pulsar en RUN.

> influence (globalalea)


3.2 | Interpretación de los resultados

Con tan solo solicitar esta instrucción, nos aparecerá en la consola de R los resultados en forma de tabla. Lo que tenemos que hacer básicamente es observar la última columna (inf de influence) y buscar si hay algún asterisco (*). En la tabla, cada fila es un estudio (y están en el orden en el que se introdujeron en la base de datos).

El asterisco (*) nos indica que algo de ese estudio particular tiene una influencia significativa. En otras palabras, es un valor outlier que puede estar influyendo significativamente al resto del procedimiento. En estos casos, lo que podemos hacer es abrir la base de datos (el Excel en este caso) e ir al estudio nueve para revisar si se ha introducido algún valor erróneo. 
  • En caso de que se verifique que hay un error, se deberá cambiar, guardar los cambios en la base de datos y volver a hacer con el procedimiento visto hasta ahora. Bastará con seleccionar las instrucciones del Script de R y clicar en RUN.  

Vamos a determinar, para este ejemplo, que la influencia del octavo estudio parece algo natural ya que no es porque se haya introducido un valor malo ni tampoco el tamaño del efecto original es significativamente distinto al resto. 



Seguir aprendiendo

A continuación, veremos la forma que tenemos de realizar un análisis de moderación para las variables categóricas que forman parte de la base de datos. Haz clic en el siguiente botón para acceder al contenido directamente:


Jacob Sierra Díaz y Alti

sábado, 15 de febrero de 2025

RStudio - Metafor | Generación del forest plot

Uno de los gráficos más característicos de un meta-análisis es el denominado forest plot (diagrama de bosque en inglés). Hoy vamos a aprender cómo se realiza con Metafor usando la base de datos que llevamos empleando en las entradas anteriores cuyo nombre es MAbasico. Puedes hacer clic en el siguiente botón para acceder al análisis de efectos aleatorio básico que realizamos previamente. De hecho, necesitaremos saber el nombre que se le puso a la operación anterior del análisis de efectos aleatorios. Recordemos que para el procedimiento que veremos hoy se deben cargar la bibliotecas metafor tidyverse.




2.1 | Generación del forest plot

Generar el forest plot en metafor es muy sencillo. Bastará con personalizar la siguiente función: 
> forest.rma (resultado del análisis de los efectos aleatorios, slab = nombre de la base de datos $ nombre de la variable de identificación, header = "Título")

Aquí, en este caso, (1) debemos hacer referencia al nombre del procedimiento que pusimos a la hora de hacer el análisis de efectos aleatorios (función rma) [globalalea en el ejemplo] y (2) hacer referencia al nombre de la base de datos [MAbasico] seguido del nombre que hayamos puesto en la primera variable de identificación [id en este ejemplo] (separado por un $). Por tanto, la función quedará tal que así:

> forest.rma (globalalea, slab = MAbasico $ id, header = "Estudio")


Tal y como podemos ver en la siguiente ilustración, el forest plot se muestra en el Cuaderno (ventana inferior izquierda).




2.2 | Interpretación (rápida y breve) del forest plot

No es objeto de esta entrada explicar cómo se realiza la lectura de un forest plot. Para ello, hay otras entradas en Estrategia Estadística donde se explica. Además, lo más seguro, junto con el análisis de la entrada anterior, se precise realizar algún otro procedimiento adicional. Sin embargo, a continuación se muestran los elementos más característicos del diagrama:



Seguir aprendiendo

A continuación, vamos a ver el análisis de la influencia individual. Puedes hacer clic en el siguiente botón para acceder directamente al contenido:



Jacob Sierra Díaz y Alti

jueves, 13 de febrero de 2025

RStudio - Metafor | Meta-análisis convencional de efectos aleatorios

Hoy vamos a realizar un meta-análisis convencional con la base de datos que hemos ido introduciendo en las entradas anteriores. Puedes hacer clic en el siguiente botón para acceder a la base de datos que se va a emplear. 

Antes de comenzar...

Para realizar este meta-análisis, se recuerda que se tienen que tener activas las bibliotecas metafor y tidyverse

> library (metafor)
> library (tidyverse)

Para realizar este meta-análisis será necesario haber calculado los tamaños del efecto y sus varianzas previamente (yi y vi, respectivamente si se tiene en cuenta el análisis efectuado en RStudio). Puedes hacer clic en el siguiente botón para recordar cómo se realiza este procedimiento. 


1.1 | Efectos aleatorios globales

Lo primero que debemos hacer es realizar el cálculo del efectos aleatorios global (overall random effects, en inglés). Para ello usaremos la función rma (tamaño del efecto, varianza del tamaño del efecto. data = nombre de la base de datos). Normalmente la columna del tamaño del efecto tiene el nombre por defecto yi y su varianza xi (tal y como se vio en la entrada anterior). Sin embargo, como este procedimiento lo vamos a invocar después, conviene asignarle un nombre (nombre = función anterior o nombre <- función anterior). En este caso, le ponderemos el nombre globalalea (puede ser otro) y la función que habrá que correr (presionando la tecla RUN cuando se seleccione) será:

> globalalea = rma (yi, vi, data = MAbasico)

Si sirve para memorizar mejor la función, rma significa Random effect Meta-Analysis. Para ver este resultado, deberemos escribir el nombre asignado (globalalea) y hacer clic en RUN. 



1.2 | Interpretación de los resultados

Cuando se ejecute el nombre de la función descrita anteriormente (globalalea en este ejemplo), en la consola de R aparecerán los resultados del meta-análisis. 

Lo primero que vemos es el título del análisis seguido del número de artículos de la base de datos (k = 27) y el estimador tau al cuadrado (REML). Lo que más nos interesa ahora es ir a la parte de Model Results y ver el estimate, que es el tamaño del efecto global de los tamaños del efecto estandarizados de cada uno de los artículos objeto de análisis (estimate = 0.6106). En términos de andar por casa, la interpretación es similar a como se interpreta la d de Cohen, siendo un valor de 0,600 un efecto moderado. A continuación vemos el error estándar (se = 0.1143), el valor z (zvalue = 5.3409) y el p-valor que nos dice si es estadísticamente significativo el tamaño del efecto global (< 0.0001). En este caso, observamos que sí que lo es. A continuación vemos el límite inferior del intervalo de confianza (ci. lb = 0.3865) y el límite superior del intervalo de confianza (ci. ub = 0.8346)



1.3 | Estudio de la heterogeneidad

Lo siguiente que hay que ver es la heterogeneidad. No es necesario calcularla a parte porque ya se calcula por defecto con el procedimiento visto en el apartado 1.1. 
  • Lo que primero se recomienda mirar es el Test for heterogeneity, que es un test q. Este estadístico nos informa de si la heterogeneidad es significativa en nuestro análisis (consultando el p-valor). En la práctica, cuando el p-valor es menor a 0,050 es conveniente complementarlo con un análisis de moderación. 
  • A continuación, se debe mirar la I^2,  que se trata de un porcentaje que nos informa de cuánta variación tiene verdaderamente la heterogeneidad. Un valor entre el 70% y 100% se considera un porcentaje considerable. Recordemos que entre 50% y 70% se considera un valor sustancial. Sin lugar a dudas, en este ejemplo, estamos ante un caso realmente elevado, que nos debe invitar a la idea de hacer un análisis de moderación.
  • Por último, se debe mirar el tau^2, que informa de la varianza estimada del verdadero efecto. Por tanto, este valor se interpreta como un tamaño del efecto como el de la diferencia de medias estandarizadas. Se trata, por tanto, de la varianza entre la heterogeneidad de los estudios objeto de estudios. 



Seguir aprendiendo

En la siguiente entrada veremos la forma de generar uno de los gráficos más famosos del meta-análisis: el forest plot. Puedes hacer clic en el siguiente botón para acceder al siguiente contenido y aprender el siguiente paso para realizar un meta-análisis:

    Jacob Sierra Díaz y Alti


    martes, 11 de febrero de 2025

    RStudio - Metafor | Cálculo de la diferencia de medias estandarizadas

    Como ya es bien conocido, un meta-análisis trabaja con el concepto de tamaños del efecto. Uno de los tamaños del efecto más comunes cuando existen datos de la media, desviación típica y tamaño muestral del grupo control y experimental es la diferencia de medias estandarizadas. (Standarized Mean Difference o SMD en inglés).

    En esta entrada vamos a partir de la base de datos de Excel que hemos introducido en entradas anteriores de este mes y que hemos cargado en RStudio. Puedes hacer clic en el siguiente botón para aprender o refrescar cómo se debe hacer la carga de los datos correctamente. 
    • Recordemos que estamos usando el archivo MA Basico, que previamente hemos importado a RStudio con un ordenador Mac. No obstante, estas operaciones son similares en un ordenador Windows. Recordemos que el nombre de la base en R es MAbasico (que podría haber sido otro nombre).


    Bibliotecas necesarias

    Recordemos que para que lo que vamos a ver hoy funcione, tenemos que tener activas las bibliotecas:

    > library (metafor)
    > library (tidyverse)

    > library (xlsx)


    Cálculo de diferencia de medias estandarizadas

    Para calcular la diferencia de medias estandarizadas (SMD; Standarized Mean Differences en inglés) debemos pedir que RStudio añada dos nuevas columnas con los tamaños del efecto y la varianza de esos tamaños del efecto.

    En primer lugar, debemos "traducir" las funciones de nuestra base de datos a las funciones de la biblioteca metafor. Para ello, vamos a solicitar que los nombres de MAbasico se transformen. Para ello, debemos usar la función escalc (que se es el acrónimo de effect size calculation) en la que también pediremos la instrucción de measure = "SMD" [diferencias de medias estandarizadas]. A continuación, se debe introducir el nombre de las variables que pone metafor seguido del nombre que habíamos puesto en nuestra base de datos. En metafor los nombres son m1i (mean group 1 intervention; media del grupo 1), sd1i (standard deviation 1 intervention; desviación típica del grupo 1), n1i (n group 1 intervention; muestra del grupo 1), m2i (mean group 2 intervention; media del grupo 2), sd2i (standard deviation 2 intervention; desviación típica del grupo 2) y n2i (n group 2 intervention; muestra del grupo 2). En este caso, grupo 1 hace referencia al grupo experimental y grupo 2 al grupo control. Entonces, después de cada uno de estos nombres tendremos que escribir la correspondencia con nuestra base de datos. En nuestro caso será m1i = med_int, sd1i = dt_int, n1i = n_int, m2i = med_cont, sd2i = dt_cont; n2i = n_cont. Por último, se debe poner la función data = nombre de la base de datos. Integrado en la siguiente función tendremos:

    > MAbasico = escalc (measure = "SMD", m1i = med_int, sd1i = dt_int, n1i = n_int, m2i = med_cont, sd2i = dt_cont, n2i = n_cont, data = MAbasico)


    Nótese que hemos usado el mismo nombre para esta función que nuestra anterior base de datos. Esto es así para que tengamos una nueva base de datos con el mismo nombre pero que incluya los cálculos del tamaño del efecto.

    Entonces, después de esta función, si invocamos el nombre MAbasico veremos que aparecerán dos nuevas columnas: yi y vi que corresponden con el tamaño del efecto (columna yi) y con la varianza del tamaño del efecto (vi).



    Seguir aprendiendo

    Ahora ya estamos listos para realizar el primer paso del meta-análisis. En la siguiente entrada veremos cómo se efectúa un meta-análisis de efectos aleatorios. Haz clic en el siguiente botón para acceder a este contenido:


    Jacob Sierra Díaz y Alti

    sábado, 8 de febrero de 2025

    RStudio - Metafor | Importación de la base de datos formato .xlsx

    En la entrada anterior vimos la forma más sencilla de generar la base de datos con Excel (o cualquier programa similar). Hoy veremos la manera de importar esa base de datos en RStudio. Puedes hacer clic en el siguiente botón para acceder a la entrada anterior y descargarte la base de datos.


    Bibliotecas necesarias

    A partir de este momento, vamos a necesitar tener activas las bibliotecas metafor y tidyverse. Por tanto, es recomendable comenzar a cargar estos paquetes con los comandos:

    > library (metafor)
    > library (tidyverse)

    Además, para poder leer correctamente la base de datos en formato .xlsx deberemos invocar la biblioteca xlsx
    • Si es la primera vez que se instala esta biblioteca para leer archivos Excel deberemos escribir la función  install.packages ("xlsx")
    • Si ya está instalado el paquete, habrá que abrirlo con la función library (xlsx)
    En RStudio se pueden poner las tres instrucciones en el editor de código (R Script), en este caso la carga de las tres bibliotecas que se necesitan, señalarlas con el cursor y hacer clic en RUN


    Importación mediante ruta

    Una vez abierta la biblioteca xlsx, la función que usamos para cargar nuestra base de datos (en este caso en formato .xlsx) es mediante el comando:
    read.xlsx ("ruta de la base de datos o archivo, incluyendo su nombre y la extensión", sheetName = "hoja en la que está la base")

    En efecto, vamos a tener que saber la ruta en la que se encuentra el archivo. Supongamos que en este caso nuestra base de datos tiene el nombre de "MA basico" y está alojada en el escritorio del ordenador. Tal y como se muestra en la siguiente imagen, independientemente del sistema operativo, haciendo clic en las propiedades del archivo ("Obtener información" en ordenadores Mac) podremos conocer exactamente la ruta en la que se encuentra.



    Llegados a este punto conviene avisar que nunca es recomendable importar directamente la base de datos. Lo que debemos hacer es asignar un nombre previamente al proceso que no tenga espacios. Esto servirá para luego poder invocar esa base de datos de una manera más cómoda. En este caso, llamaremos a la base de datos del mismo modo que el archivo (pero sin espacio). Por tanto, para este ejemplo, usando un ordenador Mac, la ruta será la siguiente:

    > MAbasico = read.xlsx ("/Users/manueljacobsierra-diaz/Desktop/MA Basico.xlsx", sheetName = "Hoja1")


    Entonces, cada vez que se quiera consultar o hacer referencia a la base de datos, podremos usar el nombre (en este caso) MAbasico. En el espacio de trabajo (ventana superior derecha) se puede observar cómo aparece un icono con la base de datos cargada. Haciendo clic en el icono azul aparecerán los nombres de las variables, tal y como se muestra en la siguiente imagen:



    Podemos verificar que los datos se han metido correctamente escribiendo el nombre que hemos creado anteriormente. En este caso llamado MAbasico. En la consola de R se verán todos los datos de la base. 


    Con esto ya estamos listo para comenzar el procedimiento del meta-análisis propiamente dicho.


    Seguir aprendiendo

    En la siguiente entrada comenzaremos a dar los primeros pasos del meta-análisis propiamente dicho. En concreto, veremos el cálculo del tamaño del efecto para este tipo de datos (diferencia de medias estandarizadas). Haz clic en el siguiente botón para acceder al siguiente aprendizaje:


    Jacob Sierra Díaz y Alti

    jueves, 6 de febrero de 2025

    RStudio - Metafor | Preparación de la base de datos en Excel

    Hoy vamos a ver la forma en la que se debe preparar la base de datos para hacer un meta-análisis básico en RStudio con el paquete metafor. Para ello, lo más recomendable, debido a su sencillez y a ser lo más intuitivo, es usar una hoja de cálculo, como Excel (Microsoft), Numbers (Apple), Hojas de cálculo (Google) o similares.

    Ya que a lo largo de este mes vamos a ir viendo una primera aproximación básica al meta-análisis, vamos a preparar un Excel con los datos más elementales. En este ejemplo se usará la versión 16.94 de Excel para Mac. No obstante, es indistinto la versión que se vaya a usar, al igual que el sistema operativo). 


    Elementos básicos

    Cada columna de Excel, empezando por la A será una variable distinta. Cada fila será un caso distinto. Para los meta-análisis, cada caso suele ser un artículo distinto. Para un meta-análisis básico necesitaremos extraer de cada estudio objeto de análisis la media artimética, la desviación típica y el tamaño muestral de los grupos experimentales y controles.

    Es recomendable llamar a estas variables de una forma que no queden espacio entre los nombres y que sean fácilmente identificables. Por ejemplo: "mediaexp" para la media del grupo experimental, "dtcont" para la desviación típica del grupo control o "nexp" para el tamaño muestral del grupo experimental. Así, podremos invocar las variables mucho más fácilmente en R. 


    Lo más fácil para trabajar es que toda la base de datos quede completada. Esto quiere decir que es recomendable que no quede ninguna casilla sin valor (celdas vacías). Al ser una introducción al meta-análisis, adoptaremos en esta serie de entradas este supuesto. En otro momento se explicará qué se debe hacer cuando hay estudios incompletos.

    Por último y, curiosamente lo primero que debe aparecer en la base de datos, sería añadir la identificación de los estudios. Normalmente se pondrá el apellido del primer autor seguido del año de publicación. Se suelen poner otras variables moderadoras tales como el tipo de estudio o el país, aunque las variables esenciales para el meta-análisis se han dicho en primer lugar.

    En definitiva, los elementos que deben aparecer y que se pondrán en la primera fila (la 1) son los respectivos nombres de:
    • Identificador
    • Otras variables descriptivas: país, tipo de publicación u otras variables categóricas
    • Media del grupo experimental
    • Desviación típica del grupo experimental
    • Tamaño muestral del grupo experimental
    • Media del grupo control
    • Desviación típica del grupo control
    • Tamaño muestral del grupo control

    Por último, cabe mencionar que la separación decimal en un Excel en castellano debe hacerse con coma y no con punto. Posteriormente veremos que al subirlo a RStudio (si tiene interfaz en inglés), lo convertirá en punto.


    Configuración del Excel

    Entonces, cada elemento descrito anteriormente será cada columna de la base de datos. En cada fila deberemos de poner los datos que se extraigan de cada estudio. Es recomendable no cortar y pegar datos en la hoja que se va a usar como base de datos en R, ya que puede que alguna columna o fila adicional se accione y de un error posterior en el meta-análisis.
    • Hay ciertas investigaciones que pueden incluir varios datos independientes que se podrían meta-analizar. Es decir, que a lo mejor haya más de un valor de las variables objeto de estudio. Esto suele ser cuando un estudio usa dos instrumentos para medir el mismo outcome. En tal caso, se deberán poner en filas distintas como si se tratasen de estudios independientes. Por supuesto, aquí habría que identificar a los autores con una letra adicional.

    En la siguiente imagen se muestra la forma de una base de datos para un meta-análisis básico en R. Nótese que los colores puestos representan estudios que cuentan con más de un valor en la variable objeto de análisis. 



    En esta serie de entradas usaremos esta base de datos ficticia para hacer el primer meta-análisis con el paquete Metafor. Puedes hacer clic en el siguiente botón para acceder y descargarte esta base de datos. La contraseña para acceder a esta base es Metalisis.




    Seguir aprendiendo

    Una vez visto cómo se genera la base de datos, es hora de importarla en RStudio. Para ello, haz clic en el siguiente botón para acceder al siguiente contenido y ver cómo importar correctamente la base de datos:



    Jacob Sierra Díaz y Alti

    martes, 4 de febrero de 2025

    RStudio - Metafor | Instalación de la biblioteca

    Metafor es una de las bibliotecas más importantes y conocidas de R para realizar meta-análisis. Por supuesto, para poder usar este programa es necesario tener instalado previamente el entorno R. Sin embargo, en esta ocasión puede ser bastante útil usar RStudio. Haciendo clic en los siguientes botones se puede repasar la forma de instalar R y RStudio respectivamente.




    En esta entrada veremos cómo se instala las bibliotecas necesarias para realizar un meta-análisis básico pero completo con RStudio. En concreto hay que instalar el paquete metafor y tidyverse.


    Biblioteca metafor

    Con RStudio la instalación de paquetes o bibliotecas es prácticamente idéntica a instalar paquetes en el entorno (puro) de R. Básicamente, para instalar cualquier paquete en RStudio se debe poner la instrucción install.packages ("nombre del paquete"). Es importante recalcar que el nombre del paquete debe ir entre comillas. El comando se deberá poner en el editor de código, que se puede activar pulsando el icono que se muestra en la siguiente imagen:


    En la primera línea del documento escribiremos el comando de instalación de metafor (por supuesto, sin el >):

    > install.packages ("metafor")

    Lo que a continuación hay que hacer es seleccionar este comando y pulsar sobre el botón RUN, ubicado en la parte de arriba de la ventana del Script. En la Consola de R (ventana inferior izquierda) veremos cómo se realiza la instalación.


    La instalación se habrá realizado de manera correcta cuando la Consola de R muestre el mensaje del directorio en el que se ha guardado la biblioteca. En este caso particular fue:

    The downloaded binary packages are in 
    /var/folders/gg/29lmc3451z13gwk420zptkykyh0000gn/T//RtmpcutBf6/downloaded_packages


    Biblioteca tidyverse

    Adicionalmente habrá que instalar la biblioteca tidyverse. Para ello seguiremos el mismo procedimiento anterior: (1) escribir el comando, (2) seleccionar con el cursor el comando y (3) hacer clic en RUN.

    > install.packages ("tidyverse")

    Lo cierto es que la instalación de este segundo paquete tarda un poco más que el primero. 


    Nuevamente, cuando aparezca el mensaje The downloaded binary packages are in [ruta o directorio] significará que se ha instalado correctamente.


    Primera (y última) vez

    Recordemos que estas operaciones solo se deben hacer la primera vez. Una vez que la biblioteca esté instalada en RStudio (R en realidad) deberemos abrirlas (y esto deberá de ser así cada vez que abramos una nueva sesión) con los comandos:

    > library (metafor)
    > library (tidyverse)


    Seguir aprendiendo

    En la siguiente entrada veremos cómo debemos crear la base de datos en Excel para poder importarla de manara correcta en RStudio y poder realizar, posteriormente, el meta-análisis. Haz clic en el siguiente botón para acceder a este contenido. 


    Jacob Sierra Díaz y Alti