Sie möchten die "Wirksamkeit" vergleichen und die Anzahl der Patienten bewerten, die über jede Behandlung berichten. Die Wirksamkeit wird in fünf diskreten, geordneten Kategorien aufgezeichnet, aber (irgendwie) auch in einem "Durchschnitt" zusammengefasst. (Durchschnitts-) Wert, was darauf hindeutet, dass es sich um eine quantitative Variable handelt.
Dementsprechend sollten wir eine Grafik auswählen, deren Elemente gut angepasst sind, um diese Art von Informationen zu vermitteln. Unter den vielen hervorragenden Lösungen, die sich anbieten, verwendet man dieses Schema:
Stellen Sie die Gesamt- oder Durchschnittswirksamkeit als Position entlang einer linearen Skala dar. Solche Positionen lassen sich am leichtesten visuell erfassen und quantitativ genau ablesen. Machen Sie die Skala allen 34 Behandlungen gemeinsam.
Stellen Sie die Anzahl der Patienten durch ein grafisches Symbol dar, das leicht als direkt proportional zu diesen Zahlen erkennbar ist. Rechtecke sind gut geeignet: Sie können so positioniert werden, dass sie die vorhergehende Anforderung erfüllen, und in orthogonaler Richtung dimensioniert werden, sodass sowohl ihre Höhe als auch ihre Bereiche die Informationen zur Patientennummer übermitteln.
Unterscheiden Sie die fünf Effektivitätskategorien durch einen Farb- und / oder Schattierungswert. Behalten Sie die Reihenfolge dieser Kategorien bei.
Ein enormer Fehler der Grafik in der Frage besteht darin, dass die wichtigsten visuellen Werte - die Länge der Balken - eher die Informationen zur Patientennummer als die Informationen zur Gesamteffektivität darstellen. Wir können dies leicht beheben, indem wir jeden Balken um einen natürlichen Mittelwert neu zentrieren .
Ohne weitere Änderungen vorzunehmen (z. B. das Farbschema zu verbessern, das für farbenblinde Personen außergewöhnlich schlecht ist), ist hier die Neugestaltung.
Ich fügte horizontale gepunktete Linien hinzu, um dem Auge zu helfen, Etiketten mit Plots zu verbinden, und löschte eine dünne vertikale Linie, um die gemeinsame zentrale Position anzuzeigen.
Die Muster und die Anzahl der Antworten sind viel offensichtlicher. Insbesondere erhalten wir im Wesentlichen zwei Grafiken zum Preis von einer: Auf der linken Seite können wir ein Maß für die nachteiligen Auswirkungen ablesen, während wir auf der rechten Seite sehen können, wie stark die positiven Effekte sind. In dieser Anwendung ist es wichtig, das Risiko einerseits gegen den Nutzen andererseits abwägen zu können.
Ein zufälliger Effekt dieser Neugestaltung ist, dass die Namen von Behandlungen mit vielen Reaktionen vertikal von den anderen getrennt sind, sodass Sie leicht nach unten scannen und feststellen können, welche Behandlungen am beliebtesten sind.
Ein weiterer interessanter Aspekt ist, dass diese Grafik den Algorithmus in Frage stellt, mit dem die Behandlungen nach "Durchschn. Effektivität" geordnet werden: Warum ist beispielsweise "Kopfschmerz-Tracking" so niedrig platziert, wenn es unter allen beliebtesten Behandlungen die einzige war? keine nachteiligen Auswirkungen haben?
Der schnelle und schmutzige R
Code, der dieses Diagramm erstellt hat, wird angehängt.
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
oder aufgrund der Basislinienibuprofen
eine höhere Wahrscheinlichkeit bestehtmoderate improvement
sich unterscheiden? Oder etwas anderes?