10 votos

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

Estoy intentando encontrar la mejor manera de visualizar el siguiente gráfico y hacer hincapié en la eficacia del tratamiento en comparación con el número de pacientes que lo han probado. Aquí está el enlace a la página real: http://curetogether.com/cluster-headaches/treatments/

Cluster Headache Treatment Legend Cluster Headache Treatments

¿Cuál es la mejor manera de destacar la eficacia y, al mismo tiempo, facilitar la comparación de tratamientos y ver cuántos pacientes han valorado cada uno? Mi idea era mostrar la eficacia en porcentajes, pero no sé cómo hacer que sean fácilmente comparables y mostrar el número de pacientes que probaron cada uno.

Gracias.

0 votos

(Por favor, no utilice gráficos circulares). Con "hacer hincapié en la eficacia sin dejar de facilitar la comparación de los tratamientos", ¿se refiere al hecho de que, por ejemplo, es difícil ver si caffeine o ibuprofen conducen a una mayor probabilidad de moderate improvement porque las líneas de base difieren? ¿O por otra cosa?

12voto

jldugger Puntos 7490

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

En consecuencia, debemos 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, una utiliza este esquema:

  • Representar la eficacia total o media como una posición a lo largo de una escala lineal. Estas posiciones son más fáciles de captar visualmente y de leer cuantitativamente con precisión. Haga que la escala sea común a los 34 tratamientos.

  • Representar los números de pacientes mediante algún símbolo gráfico que se vea fácilmente que es directamente proporcional a esos números. Los rectángulos son adecuados: pueden colocarse de forma que satisfagan el requisito anterior y dimensionarse en la dirección ortogonal para que tanto su altura como su área transmitan la información sobre el número de pacientes.

  • Distinga las cinco categorías de eficacia mediante un color y/o un valor de sombreado. Mantenga el orden de estas categorías.

Un error enorme que comete el gráfico de la pregunta es que los valores visuales más destacados -las longitudes de las barras- representan la información sobre el número de pacientes en lugar de la información sobre la eficacia total. Podemos solucionarlo fácilmente recentrado cada barra sobre un valor medio natural.

Sin hacer ningún otro cambio (como mejorar la combinación de colores, que es excepcionalmente pobre para cualquier daltónico), aquí está el rediseño.

Figure

He añadido líneas de puntos horizontales para ayudar al ojo a conectar las etiquetas con las parcelas, y he borrado una fina 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 concreto, obtenemos dos gráficos por el precio de uno: en el lado izquierdo podemos leer una medida de efectos adversos mientras que a la derecha podemos ver la fuerza de la efectos positivos son. En esta aplicación es importante poder sopesar el riesgo, por un lado, y el beneficio, por otro.

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 el escaneo hacia abajo y ver qué tratamientos son los más populares.

Otro aspecto interesante es que este gráfico pone en tela de juicio el algoritmo utilizado para ordenar los tratamientos por "Eficacia media": ¿por qué, por ejemplo, el "Seguimiento del dolor de cabeza" se sitúa tan abajo cuando, entre todos los tratamientos más populares, fue el único que no tuvo efectos adversos?

Lo más rápido R que produjo este gráfico.

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")

0 votos

Vaya, gracias por esta respuesta tan clara y completa. Es una gran solución para visualizar toda la información. El gráfico de ejemplo que has elaborado ayuda mucho a comprender la respuesta de un vistazo, lo cual también ha sido muy útil. Muchas gracias.

2 votos

(+1) Buena visualización. Cabe destacar likert y HH Los paquetes de R disponen de funciones para gráficos de barras apiladas orientadas específicamente a las escalas Likert. En este último paquete, existe incluso la posibilidad de dejar que la altura de cada barra varíe en función del tamaño de la muestra (véase la p. 12 en este documento JSS ).

3voto

J Richard Snape Puntos 244

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 entonces dando un buen indicador visual de la eficacia. Se podría mantener 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, así como de la eficacia, podría considerar el gráfico tal cual, pero centrar las barras en función del centro de la sección gris. Entonces, el tamaño total de la barra indicará visualmente el tamaño de la muestra y la proporción de la barra que está a la derecha (o a la izquierda) de la línea central dará una indicación de la eficacia (o no). De este modo, se obtiene una indicación visual de la popularidad de un producto. y calificación del tratamiento efectivo a partir de las barras que llegan más a la derecha. Podría ordenar de cualquiera de las tres formas que están disponibles en la página que ha enlazado.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X