Tengo un conjunto de datos con tres variables categóricas y quiero visualizar la relación entre las tres en un gráfico. ¿Algunas ideas?
Actualmente estoy usando los siguientes tres gráficos:
Cada gráfico es para un nivel de depresión basal (leve, moderado, severo). Luego, dentro de cada gráfico, miro la relación entre el tratamiento (0,1) y la mejora de la depresión (ninguna, moderada, sustancial).
Estas 3 gráficas funcionan para ver la relación de 3 vías, pero ¿hay alguna forma conocida de hacer esto con una gráfica?
r
data-visualization
categorical-data
Alejandro Ochoa
fuente
fuente
Respuestas:
Este es un conjunto de datos interesante para tratar de representar gráficamente, en parte porque no es realmente categórico. Ambos factores de 3 niveles son ordinales y existe una posible interacción entre ellos (presumiblemente, es más difícil de
mild
baseline
tenersubstantial
improvement
, o tal vezsubstantial
improvement
significa algo diferente para cada unobaseline
).Con múltiples variables, generalmente no hay una sola vista que muestre todas las características que podrían interesarle. Algunos factores serán más fáciles de comparar que otros. Creo que su vista original es buena y sería mejor con las sugerencias de Nick Cox: eliminar leyendas duplicadas y usar una escala de color ordinal.
Si es más interesante al ver la diferencia entre los tratamientos, puede enfatizar el cambio utilizando un gráfico de área apilada en lugar de barras apiladas.
Por lo general, desconfío del apilamiento en general porque es más difícil leer los valores medios, pero sí refuerza la naturaleza de suma fija de estos datos. Y hace que sea fácil leer la suma
moderate
+substantial
si es relevante. He cambiado el orden de losimprovement
niveles para que mayor sea mejor para la frecuencia.Sin apilamiento, el equivalente es un gráfico de pendiente.
Es más fácil leer cada nivel, pero es más difícil entender la interacción. Debe tener en cuenta que la tercera línea depende directamente de las otras dos.
Dada la naturaleza ordinal de los datos, puede ser útil convertir el
improvement
valor en una puntuación numérica, como a menudo se hace con los datos de Likert . Por ejemplo,none=0
,moderate=1
,substantial=2
. Luego puedes graficar esa variable en una escala continua. La desventaja es que debe encontrar una puntuación razonable (por ejemplo, tal vez 0, 1 y 5 serían una representación más verdadera).Colofón : Estas parcelas se hicieron con la función Graph Builder en el paquete de software JMP (que ayudo a desarrollar). Aunque se hizo de forma interactiva, un guión, por ejemplo, para el diagrama del área, sin las personalizaciones de colores, es:
fuente
Primero, aquí está mi lectura del gráfico provisto de los datos para aquellos que desean jugar (experimente, si lo desea). NB errores off-by-one son ciertamente posibles, como son los errores graves.
Aquí hay una reelaboración del diseño original. Un detalle de los datos originales simplifica las cosas: el número de personas en cada una de las combinaciones de predictores es el mismo, por lo que las frecuencias de trazado y los porcentajes de trazado son los mismos. Aquí, en lugar de un gráfico de barras apiladas (subdivididas, segmentadas), separamos las barras en un diseño de diagrama de tabla o gráfico de barras bidireccional.
Gran parte del detalle en los gráficos es solo eso, detalle. Varias pequeñas debilidades en un gráfico pueden socavar su efectividad y varias pequeñas mejoras también pueden ayudar.
Para deletrearlo:
Aquí no se necesitan tres paneles, con su repetición de ejes, leyenda y texto.
Una leyenda es siempre una maldición y una bendición, obligando al lector a ir "hacia adelante y hacia atrás" mentalmente (o memorizar la leyenda, no algo que atraiga, por fácil que sea). El texto informativo junto a las barras es más fácil de seguir.
La codificación de color de la ensalada de frutas es prescindible. También parece arbitrario: la mejora "sustancial" es un gran problema, pero incluso el amarillo fuerte es un color tenue. Pero no necesitamos color cuando tenemos texto para explicar.
Aunque algunos gritarán de horror al violar la distinción entre Figura y Tabla, también podemos mostrar las frecuencias. Es útil poder pensar "4 personas en esta categoría".
Aquí se rinde homenaje al trazado tradicional de la respuesta en el eje vertical, al igual que en el original.
Dicho todo esto, es difícil ver mucha estructura en estos datos. Cuando es así, también es difícil compartir la culpa entre (a) datos sin mucha estructura y (b) las debilidades de un diseño gráfico para seleccionar no solo los efectos predictores sino también las posibles interacciones. El tratamiento parece menos importante que la condición basal. Pero entonces, si la línea de base fue "leve", ¿cuánto margen había para una mejora "sustancial"? Me detendré allí para dejar de hacer el ridículo cuando el estudio de los datos de salud mental ciertamente no sea una especialidad, especialmente si los datos resultan ser falsos. Pero si son reales, podríamos hacerlo con un tamaño de muestra mucho mayor. (Normalmente decimos eso, pero ahí lo tienes).
EDITAR El gráfico puede complicarse naturalmente por un esquema de color ordinal si así se desea:
Para el registro: los gráficos usaron el código Stata, incluido mi propio programa
tabplot
descargable usandossc inst tabplot
.fuente
Me gusta usar un eje x de 2 niveles para datos como este. Por lo tanto, las categorías del eje x para un solo gráfico pueden ser:
... con los mismos recuentos por categorías [ninguno / moderado / sustancial] barras de histograma.
fuente
¿No es la trama de mosaico especialmente diseñada para este propósito?
En R sería como
Cada variable categórica va a un borde del cuadrado, que está subdividido por sus etiquetas. (Por lo tanto, si subdivide cada borde en un solo nivel, como máximo se pueden representar 4 variables categóricas. En mi humilde opinión, más allá de 3 se vuelve desordenado y más difícil de interpretar). El tamaño de los rectángulos es proporcional a la frecuencia. Esta es la idea principal detrás de la trama de mosaico y es la misma en esta respuesta y la respuesta de Paweł Kleka.
Las diferencias están en los diseños de esos rectángulos y "detalles" proporcionados por un paquete R específico utilizado para este tipo de diagrama. Como puede ver en la respuesta de Paweł Kleka, el
graphics
paquete subdivide el borde superior en 2 niveles en lugar de usar el borde derecho. Utilicé elvcd
paquete con opciones predeterminadas, de modo que el color indica el grado de asociación entre las variables. Gris significa que los datos son consistentes con (no se puede rechazar la hipótesis de) la independencia variable. Azul significa que existe una asociación positiva entre la línea de base "severa" y la mejora "sustancial" para el tratamiento "0" y "1". (¡Sorpresa, sorpresa! Lo traduzco de la siguiente manera: si tiene una depresión severa, es probable que mejore sustancialmente si tiene un tratamiento o no.Uno puede ajustar la trama de acuerdo a las necesidades de uno, ver, por ejemplo, aquí . El paquete también tiene varias viñetas, google "ejemplo de mosaico vcd" (como acabo de hacer). El artículo de Wikipedia citado al principio también explica cómo construir este tipo de argumento e intuición detrás de él.
Cuando compara mi imagen con la imagen en la respuesta de Paweł Kleka, no importa, ese 'tratamiento' está en el borde izquierdo de cada imagen. Puede cambiar fácilmente la ubicación del borde cambiando la última línea de mi código y ajustando el diseño según sus necesidades. La práctica común es que a la izquierda va la variable más importante o la variable con el menor número de etiquetas. También puede cambiar el orden de las etiquetas (por ejemplo, para que en el borde derecho el orden sea "ninguno moderado sustancial") haciendo que el factor correspondiente sea variable en R ordenado y ajustando sus niveles.
fuente
Sugerí usar mosaico
fuente
Una opción que consideraría es usar conjuntos paralelos. Algunas de las comparaciones serán más fáciles que otras, pero aún puede ver las relaciones entre tres variables categóricas.
Aquí hay un ejemplo con los datos de supervivencia del Titanic:
En R (dadas tus etiquetas) he usado ggparallel para implementarlo. Algunas personas han discutido aquí en CV cómo implementarlo de otras maneras.
fuente
La información también se puede transmitir utilizando el siguiente gráfico de líneas simple:
La mejora se muestra mediante diferentes tipos de línea, mientras que el grupo de línea de base se muestra en colores. Estos y el parámetro del eje x (tratamiento aquí) también se pueden intercambiar si se desea.
fuente
De forma similar a los conjuntos paralelos, tal como lo publicó Nazareno arriba, puede usar gráficos aluviales que están disponibles en el paquete aluvial R. http://www.r-bloggers.com/alluvial-diagrams/
fuente