Si desidera confrontare "l'efficacia" e valutare il numero di pazienti che hanno segnalato ciascun trattamento. L'efficacia è registrata in cinque categorie discrete, ordinate, ma (in qualche modo) è anche riassunta in una "Media". valore (medio), suggerendo che è considerata una variabile quantitativa.
Di conseguenza, dovremmo scegliere un grafico i cui elementi siano ben adattati per trasmettere questo tipo di informazioni. Tra le tante eccellenti soluzioni che si suggeriscono, si utilizza questo schema:
Rappresenta l'efficacia totale o media come posizione lungo una scala lineare. Tali posizioni sono prontamente colte visivamente e accuratamente lette quantitativamente. Rendi la scala comune a tutti e 34 i trattamenti.
Rappresenta i numeri dei pazienti con un simbolo grafico che è facilmente visibile direttamente proporzionale a tali numeri. I rettangoli sono adatti: possono essere posizionati per soddisfare il requisito precedente e dimensionati nella direzione ortogonale in modo che sia le loro altezze che le loro aree trasmettano le informazioni sul numero del paziente.
Distingua le cinque categorie di efficacia per un valore di colore e / o ombreggiatura. Mantenere l'ordinamento di queste categorie.
Un enorme errore commesso dal grafico nella domanda è che i valori visivi più importanti - le lunghezze delle barre - descrivono le informazioni sul numero del paziente piuttosto che le informazioni sull'efficacia totale. Possiamo risolverlo facilmente aggiornando ogni barra su un valore medio naturale.
Senza apportare altre modifiche (come migliorare la combinazione di colori, che è eccezionalmente scarsa per qualsiasi persona daltonica), ecco la riprogettazione.
Ho aggiunto linee tratteggiate orizzontali per aiutare l'occhio a collegare le etichette con i grafici e ho cancellato una sottile linea verticale per mostrare la posizione centrale comune.
Gli schemi e il numero di risposte sono molto più evidenti. In particolare, otteniamo essenzialmente due grafici al prezzo di uno: sul lato sinistro possiamo leggere una misura di effetti avversi mentre sul lato destro possiamo vedere quanto sono forti gli effetti positivi . Essere in grado di bilanciare il rischio, da un lato, contro il beneficio, dall'altro, è importante in questa applicazione.
Un effetto fortuito di questa riprogettazione è che i nomi dei trattamenti con molte risposte sono separati verticalmente dagli altri, facilitando la scansione verso il basso e vedere quali trattamenti sono i più popolari.
Un altro aspetto interessante è che questo grafico mette in discussione l'algoritmo utilizzato per ordinare i trattamenti in base a "efficacia media": perché, ad esempio, il "tracciamento del mal di testa" è stato messo così in basso quando, tra tutti i trattamenti più popolari, era l'unico non avere effetti negativi?
Il R
codice rapido e sporco che ha prodotto questo diagramma è stato aggiunto.
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")
caffeine
oibuprofen
portare a una maggiore probabilità dimoderate improvement
perché le linee di base differire? O qualcos'altro?