Chcesz porównać „skuteczność” i ocenić liczbę pacjentów zgłaszających każde leczenie. Skuteczność jest rejestrowana w pięciu odrębnych, uporządkowanych kategoriach, ale (jakoś) jest również streszczona w „Śr.” (średnia) wartość, co sugeruje, że uważa się ją za zmienną ilościową.
W związku z tym powinniśmy wybrać grafikę, której elementy są dobrze dostosowane do przekazywania tego rodzaju informacji. Wśród wielu doskonałych rozwiązań, które się sugerują, jeden wykorzystuje ten schemat:
Reprezentują całkowitą lub średnią efektywność jako pozycję wzdłuż skali liniowej. Takie pozycje najłatwiej uchwycić wizualnie i dokładnie odczytać ilościowo. Spraw, aby skala była wspólna dla wszystkich 34 zabiegów.
Reprezentuj liczby pacjentów za pomocą jakiegoś symbolu graficznego, który jest łatwo zauważalny jako wprost proporcjonalny do tych liczb. Prostokąty są dobrze dopasowane: można je ustawić tak, aby spełniały powyższy wymóg, i zwymiarować w kierunku prostopadłym, aby zarówno ich wysokości, jak i obszary przekazywały informacje o liczbie pacjentów.
Rozróżnij pięć kategorii skuteczności według koloru i / lub wartości cieniowania. Utrzymaj porządek tych kategorii.
Ogromnym błędem popełnianym przez grafikę w pytaniu jest to, że najbardziej widoczne wartości wizualne - długości słupków - przedstawiają informacje o liczbie pacjentów, a nie informacje o całkowitej skuteczności. Możemy to łatwo naprawić poprzez wyśrodkowanie każdego słupka o naturalnej wartości średniej.
Bez wprowadzania jakichkolwiek innych zmian (takich jak poprawa schematu kolorów, który jest wyjątkowo słaby dla osób niewidomych kolorów), oto przeprojektowanie.
Dodałem poziome kropkowane linie, aby oko mogło łączyć etykiety z wykresami, i usunąłem cienką pionową linię, aby pokazać wspólne centralne położenie.
Wzorce i liczba odpowiedzi są znacznie bardziej widoczne. W szczególności otrzymujemy dwie grafiki w cenie jednej: po lewej stronie możemy odczytać miarę negatywnych skutków, natomiast po prawej stronie możemy zobaczyć, jak silne są pozytywne efekty . W tej aplikacji ważna jest umiejętność zrównoważenia ryzyka z jednej strony korzyści, z drugiej strony.
Jednym z nieoczekiwanych efektów tego przeprojektowania jest to, że nazwy zabiegów z wieloma odpowiedziami są pionowo oddzielone od innych, co ułatwia skanowanie i sprawdzenie, które zabiegi są najbardziej popularne.
Innym interesującym aspektem jest to, że ta grafika podważa algorytm używany do zamawiania zabiegów według „średniej skuteczności”: dlaczego na przykład „śledzenie bólu głowy” jest tak niskie, gdy wśród wszystkich najpopularniejszych zabiegów był to jedyny nie mieć żadnych negatywnych skutków?
Dołączono szybki i brudny R
kod, który spowodował ten wątek.
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
lubibuprofen
prowadzą do wyższego prawdopodobieństwamoderate improvement
ponieważ linii podstawowych różnić się? Albo coś innego?