Cómo visualizar porcentajes comparados junto con el número de entradas.

10

Estoy tratando de encontrar la mejor manera de visualizar el cuadro a continuación y enfatizar la eficacia del tratamiento según el número de pacientes que lo probaron. Aquí está el enlace a la página real: http://curetogether.com/cluster-headaches/treatments/

Leyenda del tratamiento del dolor de cabeza en racimo Tratamientos de cefalea en racimos

¿Cuál es la mejor manera de enfatizar la efectividad y al mismo tiempo facilitar la comparación de tratamientos y ver cuántos pacientes calificaron cada uno? Mi pensamiento era mostrar la efectividad como porcentajes, pero no estoy seguro de cómo hacerlos fácilmente comparables y mostrar el número de pacientes que probaron cada uno.

¡Gracias!

David Hobs
fuente
(Por favor, no use los gráficos circulares.) Por "hacen hincapié en la eficacia sin dejar de hacer que sea fácil para comparar los tratamientos", se está refiriendo al hecho de que, por ejemplo, es difícil ver si caffeineo ibuprofenconducir a una mayor probabilidad de moderate improvementporque las líneas de base ¿diferir de? ¿O algo mas?
gung - Restablece a Monica

Respuestas:

12

Desea comparar la "efectividad" y evaluar el número de pacientes que informan cada tratamiento. La efectividad se registra en cinco categorías discretas y ordenadas, pero (de alguna manera) también se resume en un "Promedio". (promedio), lo que sugiere que se considera una variable cuantitativa.

En consecuencia, deberíamos elegir un gráfico cuyos elementos estén bien adaptados para transmitir este tipo de información. Entre las muchas soluciones excelentes que se sugieren, uno usa este esquema:

  • Representar la efectividad total o promedio como una posición a lo largo de una escala lineal. Tales posiciones se captan más fácilmente visualmente y se leen con precisión cuantitativamente. Haga que la escala sea común a los 34 tratamientos.

  • Representa los números de pacientes con algún símbolo gráfico que se vea fácilmente como directamente proporcional a esos números. Los rectángulos son adecuados: se pueden colocar para satisfacer el requisito anterior y dimensionarse en la dirección ortogonal para que tanto sus alturas como sus áreas transmitan la información del número de paciente.

  • Distinga las cinco categorías de efectividad por un valor de color y / o sombreado. Mantener el orden de estas categorías.

Un enorme error cometido por el gráfico en la pregunta es que los valores visuales más prominentes, las longitudes de las barras, representan la información del número de paciente en lugar de la información de efectividad total. Podemos arreglar eso fácilmente volviendo a centrar cada barra sobre un valor medio natural.

Sin hacer ningún otro cambio (como mejorar el esquema de color, que es excepcionalmente pobre para cualquier persona daltónica), aquí está el rediseño.

Figura

Agregué líneas punteadas horizontales para ayudar al ojo a conectar las etiquetas con los gráficos, y borré una delgada línea vertical para mostrar la ubicación central común.

Los patrones y el número de respuestas son mucho más evidentes. En particular, esencialmente obtenemos dos gráficos por el precio de uno: en el lado izquierdo podemos leer una medida de los efectos adversos, mientras que en el lado derecho podemos ver qué tan fuertes son los efectos positivos . Poder equilibrar el riesgo, por un lado, con el beneficio, por otro, es importante en esta aplicación.

Un efecto fortuito de este rediseño es que los nombres de los tratamientos con muchas respuestas están separados verticalmente de los demás, lo que facilita la exploración y ver qué tratamientos son los más populares.

Otro aspecto interesante es que este gráfico pone en duda el algoritmo utilizado para ordenar los tratamientos por "efectividad promedio": por qué, por ejemplo, el "seguimiento del dolor de cabeza" se coloca tan bajo cuando, entre todos los tratamientos más populares, era el único no tener efectos adversos?

Se Radjunta el código rápido y sucio que produjo esta trama.

x <- c(0,0,3,5,5,
       0,0,0,0,2,
       0,0,3,2,4,
       0,1,7,9,7,
       0,0,3,2,3,
       0,0,0,0,1,
       0,1,1,1,2,
       0,0,2,2,1,
       0,0,1,0,1,
       0,0,3,2,1,
       0,0,2,0,1,
       1,0,5,5,2,
       1,3,15,15,4,
       1,2,5,7,3,
       0,0,4,4,0,
       0,0,2,2,0,
       0,0,3,0,1,
       0,0,2,2,0,
       0,4,18,19,2,
       0,0,2,1,0,
       3,1,27,25,3,
       1,0,2,2,1,
       0,0,4,2,0,
       0,1,6,5,0,
       0,0,3,1,0,
       3,0,3,7,2,
       0,1,0,1,0,
       0,0,21,4,2,
       0,0,6,1,0,
       1,0,2,0,1,
       2,4,15,8,1,
       1,1,3,1,0,
       0,0,1,0,0,
       0,0,1,0,0)
levels <- c("Made it much worse", "Made it slightly worse", "No effect or uncertain",
            "Moderate improvement", "Major improvement")
treatments <-  c("Oxygen", "Gluten-free diet", "Zomig", "Sumatriptan", "Rizatriptan (Maxalt)",
                 "Dilaudid suppository", "Dilaudid-Morphine", "Verapamil",
                 "Magic mushrooms", "Magnesium", "Psilocybine", "Excedrin Migraine",
                 "Ice packs on neck and head", "Passage of time", "Red Bull", "Lidocaine",
                 "Vitamin B-2 (Roboflavin)", "Caffergot", "Caffeine", "Tobasco in nose / on tongue")
treatments <- c(treatments, 
                 "Ibuprofen", "Topamax", "Excedrin Tension Headache", "Acetaminophen (Tylenol)",
                 "Extra Strength Excedrin", "Hot water bottle", "Eletriptan", 
                 "Headache tracking", "Women to Women vitamins", "Effexor", "Aspirin",
                 "Propanolol", "L-Arginine", "Fioricet")
x <- t(matrix(x, 5, dimnames=list(levels, treatments)))
#
# Precomputation for plotting.
#
n <- dim(x)[1]
m <- dim(x)[2]
d <- as.data.frame(x)
d$Total <- rowSums(d)
d$Effectiveness <- (x %*% c(-2,-1,0,1,2)) / d$Total
d$Root <- (d$Total)
#
# Set up the plot area.
#
colors <- c("#704030", "#d07030", "#d0d0d0", "#60c060", "#387038")
x.left <- 0; x.right <- 6; dx <- x.right - x.left; x.0 <- x.left-4
y.bottom <- 0; y.top <- 10; dy <- y.top - y.bottom
gap <- 0.4
par(mfrow=c(1,1))
plot(c(x.left-1, x.right), c(y.bottom, y.top), type="n", 
     bty="n", xaxt="n", yaxt="n", xlab="", ylab="", asp=(y.top-y.bottom)/(dx+1))
#
# Make the plots.
#
u <- t(apply(x, 1, function(z) c(0, cumsum(z)) / sum(z)))
y <- y.top - dy * c(0, cumsum(d$Root/sum(d$Root) + gap/n)) / (1+gap)

invisible(sapply(1:n, function(i) {
  lines(x=c(x.0+1/4, x.right), y=rep(dy*gap/(2*n)+(y[i]+y[i+1])/2, 2),
        lty=3, col="#e0e0e0")
  sapply(1:m, function(j) {
  mid <- (x.left - (u[i,3] + u[i,4])/2)*dx
  rect(mid + u[i,j]*dx, y[i+1] + (gap/n)*(y.top-y.bottom), 
       mid + u[i,j+1]*dx, y[i], 
       col=colors[j], border=NA)
})}))
abline(v = x.left, col="White")
labels <- mapply(function(s,n) paste0(s, " (", n, ")"), rownames(x), d$Total)
text(x.0, (y[-(n+1)]+y[-1])/2, labels=labels, adj=c(1, 0), cex=0.8,
     col="#505050")
whuber
fuente
Wow, gracias por la respuesta increíblemente clara y completa. Es una gran solución para visualizar toda la información. El gráfico de ejemplo que produjo realmente ayuda a comprender la respuesta de un vistazo, lo que también fue útil. ¡Gracias!
David Hobs
2
(+1) Buena visualización. Es de destacar que los paquetes likert y HH R tienen funciones para gráficos de barras apiladas dirigidas específicamente a escalas Likert. En el último paquete, incluso existe la posibilidad de permitir que la altura de cada barra varíe de acuerdo con el tamaño de la muestra (consulte la página 12 en este documento de JSS ).
chl
3

Ciertamente, podría convertir cada fila en porcentajes y trazar todas las barras con la misma longitud, con la fracción de la barra que es verde y luego dar un buen indicador visual de efectividad. Puede retener el número entre paréntesis al lado para indicar en qué tamaño de muestra se basan los resultados.

Si desea conservar un indicador visual del número de muestras y la efectividad, puede considerar el gráfico tal como está, pero centre las barras según el centro de la sección gris. Luego, el tamaño general de la barra indicará visualmente el tamaño de la muestra y la proporción de la barra que está a la derecha (o izquierda) de la línea central dará una indicación de efectividad (o de otra manera). En combinación, obtienes una indicación visual de un tratamiento efectivo popular y calificado de aquellas barras que llegan más lejos a la derecha. Puede ordenar cualquiera de las tres formas disponibles en la página que ha vinculado.

J Richard Snape
fuente