Gráficos para comparar medias
A continuación, vamos a ver cómo comparar medias de diferentes grupos con gráficos. Para ello, vamos a utilizar el paquete ggpubr
que nos permite hacer comparaciones de medias de manera sencilla y visual.
Datos
- Vamos a trabajar con el conjunto de datos
ToothGrowth
que contiene información sobre el crecimiento de dientes de 60 cobayos. Estos cobayos fueron asignados a uno de tres tratamientos diferentes: dosis de vitamina C (0.5, 1, 2) y medimos la longitud de los dientes de los cobayos después de 60 días. - El conjunto de datos tiene tres variables:
len
: longitud de los dientes de los cobayos.supp
: tipo de suplemento (VC o OJ).dose
: dosis de vitamina C (0.5, 1, 2).
Existen muchos tipos de gráficos que nos permiten comparar medias, algunos de los más comunes son:
- Box plots: gráficos de caja y bigotes, útiles para comparar medias de diferentes grupos, visualizando la distribución de los datos. También se pueden añadir puntos individuales para visualizar cada observación del conjunto de datos. Por último, también permite visualizar valores atípicos o outliers.
- Violin plots: gráficos de violín, útiles para comparar medias de diferentes grupos, visualizando la distribución de los datos. También se pueden añadir box plots dentro de los violines para visualizar la mediana, cuartiles y valores atípicos. Son preferibles a los box plots cuando se tienen muchos datos/grupos y se quiere visualizar la densidad de todos los datos.
- Bar plots: gráficos de barras, útiles para comparar medias de diferentes grupos, visualizando la media y el error estándar de cada grupo. También se pueden añadir barras de error para visualizar la variabilidad de los datos. Son preferibles a los box plots cuando se tienen pocos datos/grupos y se quiere visualizar la media y la variabilidad de los datos.
- Line plots: gráficos de líneas, útiles para comparar medias de diferentes grupos, visualizando la media y el error estándar de cada grupo. Son preferibles cuando se quiere visualizar la tendencia de los datos a lo largo del tiempo o de una variable continua.
Box plots and violin plots
- vamos a usar la función
ggboxplot()
para crear un box plot y la funciónggviolin()
para crear un violin plot (ambas del paqueteggpubr
).- Nota que podemos decirle a R que utilice una función de un paquete en particular con la notación
::
(por ejemplo,ggpubr::ggboxplot()
). Esto es útil cuando dos paquetes tienen funciones con el mismo nombre y queremos especificar cuál queremos usar.
- Nota que podemos decirle a R que utilice una función de un paquete en particular con la notación
- En el box plot, vamos a cambiar el color de los contornos de las cajas por grupos de dosis y vamos a añadir puntos jitter y cambiar la forma de los puntos por grupos de dosis.
- En este gráfico, podemos ver que la longitud de los dientes de los cobayos aumenta con la dosis de vitamina C.
- El siguiente paso es añadir p-valores a nuestro gráfico para comparar las medias de los diferentes grupos. Para ello, vamos a usar la función
stat_compare_means()
del paqueteggpubr
.- Para añadir p-valores a nuestro gráfico, necesitamos especificar las comparaciones que queremos hacer. En este caso, vamos a comparar las medias de los grupos 0.5, 1 y 2. Esto se guarda en la variable
my_comparisons
. Nota que las comparaciones se hacen en el orden en el que se especifican (por ejemplo, la primera comparación es entre los grupos 0.5 y 1, la segunda comparación es entre los grupos 1 y 2, y la tercera comparación es entre los grupos 0.5 y 2). - Para añadir los p-valores al gráfico, usamos la función
stat_compare_means()
y especificamos las comparaciones que queremos hacer con el argumentocomparisons = my_comparisons
. - Luego, especificamos el método que queremos usar para calcular los p-valores con el argumento
method = "t.test"
. En este caso, vamos a usar la prueba t de Student para hacer las 3 comparaciones. Idealmente, deberíamos ajustar los p-valores para múltiples comparaciones, pero por simplicidad, no lo haremos en este primer caso. - Por último, para obtener los p-valores en el gráfico como asteríscos en lugar del valor exacto, usamos el argumento
aes(label = after_stat(p.signif))
.
- Para añadir p-valores a nuestro gráfico, necesitamos especificar las comparaciones que queremos hacer. En este caso, vamos a comparar las medias de los grupos 0.5, 1 y 2. Esto se guarda en la variable
Por convención, los p-valores se representan con asteríscos en los gráficos. Los asteríscos representan el nivel de significancia de la comparación de medias:
- p < 0.05
- ** p < 0.01
- *** p < 0.001
- Algunos consideran un cuarto nivel **** p < 0.0001, pero en otros casos solaente se usan los tres primeros niveles.
Si el p-valor es mayor a 0.05, no se añade ningún asterísco al gráfico.
Ahora, vamos a hacer lo mismo, pero con un gráfico de violín. En este caso, vamos a cambiar el color de relleno de los violines por grupos de dosis y vamos a añadir un box plot con relleno blanco.
bar plots
Bar plots Demo data set
Load and prepare data:
Gráficos de barras y de líneas
- Vamos a usar la función
ggbarplot()
para crear un gráfico de barras y la funciónggline()
para crear un gráfico de líneas (ambas del paqueteggpubr
). - En ambos gráficos, vamos a representar la media y el error estándar.
- Para comparar medias de más de un factor, podemos usar gráficos de barras o de líneas con dos factores (por ejemplo, dosis y tipo de suplemento).
- Para hacer esto, podemos usar la función
facet.by
de la funciónggbarplot()
oggline()
y especificar el factor por el que queremos dividir el gráfico. - En este caso, vamos a comparar las medias de los grupos de dosis y tipo de suplemento.
- Nota que también podemos añadir p-valores a los gráficos de barras y de líneas con dos factores. En este caso, como estamos comparando dos grupos de suplemento en cada dosis, no especificamos las comparaciones y R hace las comparaciones automáticamente (por ejemplo, compara los grupos VC y OJ en cada dosis, es decir una prueba de t en cada caso).