viernes, 7 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.  


4.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)


4.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. 




jueves, 6 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.




3.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).




3.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:





miércoles, 5 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)



2.1 | 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. 


martes, 4 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

lunes, 3 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

domingo, 2 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

sábado, 1 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