Як візуалізувати відсотки порівняно з кількістю записів.


10

Я намагаюся знайти найкращий спосіб візуалізації наведеної нижче діаграми та підкреслити ефективність лікування, призначену для кількості пацієнтів, які пробували лікування. Ось посилання на фактичну сторінку: http://curetogether.com/cluster-headaches/treatments/

Легенда лікування кластерного головного болю Лікування головного болю в кластері

Який найкращий спосіб підкреслити ефективність, при цьому полегшуючи порівняння методів лікування та бачити, скільки пацієнтів оцінили кожен? Моя думка полягала в тому, щоб показати ефективність у відсотках, але я не впевнений, як все-таки зробити їх легко порівнянними та показати кількість пацієнтів, які пробували кожного.

Дякую!


(Будь ласка, не використовуйте діаграми пирога.) "Підкреслюючи ефективність, все ще полегшуючи порівняння методів лікування", ви маєте на увазі той факт, що, наприклад, важко зрозуміти, призводить caffeineчи ibuprofenдо більшої ймовірності, moderate improvementоскільки базові лінії відрізняються? Або щось інше?
gung - Відновіть Моніку

Відповіді:


12

Ви хочете порівняти "ефективність" та оцінити кількість пацієнтів, які повідомляють про кожне лікування. Ефективність реєструється в п'яти дискретних, упорядкованих категоріях, але (якось) також підсумовується у "Середній". (середнє) значення, що говорить про те, що воно розглядається як кількісна величина.

Відповідно, нам слід вибрати графіку, елементи якої добре пристосовані для передачі подібної інформації. Серед безлічі відмінних рішень, що пропонують себе, можна використовувати цю схему:

  • Представити загальну чи середню ефективність як позицію по лінійній шкалі. Такі позиції найбільш легко візуалізуються візуально та точно читаються кількісно. Зробіть масштаб спільним для всіх 34 процедур.

  • Представити кількість пацієнтів за допомогою якогось графічного символу, який легко бачити прямо пропорційним цим числам. Прямокутники добре підходять: вони можуть бути розміщені таким чином, щоб задовольнити попередню вимогу і розміром в ортогональному напрямку, щоб і їх висота, і їх ділянки передавали інформацію про номер пацієнта.

  • Розрізняють п’ять категорій ефективності за значенням кольору та / або затінення. Підтримуйте впорядкованість цих категорій.

Одна з величезних помилок, допущена графікою у питанні, полягає в тому, що найвизначніші візуальні значення - довжини смуг - відображають інформацію про номер пацієнта, а не загальну інформацію про ефективність. Ми можемо це легко виправити, переглянувши кожен бар на природне середнє значення.

Не вносячи жодних інших змін (наприклад, покращення кольорової гами, яка є винятково поганою для будь-якого сліпого кольору), ось перепроектування.

Малюнок

Я додав горизонтальні пунктирні лінії, щоб допомогти оку з'єднати мітки з ділянками, і стерв тонку вертикальну лінію, щоб показати загальне центральне розташування.

Закономірності та кількість відповідей значно очевидніші. Зокрема, ми по суті отримуємо дві графіки за ціну однієї: з лівої сторони ми можемо відчитати міру несприятливих наслідків, тоді як з правого боку ми можемо побачити, наскільки сильні позитивні ефекти . Уміння збалансувати ризик, з одного боку, від вигоди, з іншого, є важливою у цій програмі.

Один з надзвичайних ефектів цього перепроектування полягає в тому, що назви методів лікування з багатьма відповідями вертикально відокремлюються від інших, що дозволяє легко сканувати і бачити, які методи лікування є найпопулярнішими.

Ще один цікавий аспект полягає в тому, що ця графіка ставить під сумнів алгоритм, який використовується для замовлення методів лікування "Середня ефективність": чому, наприклад, "стеження за головним болем" розміщується так низько, коли серед усіх найпопулярніших методів лікування це був єдиний не мати несприятливих наслідків?

Швидкий і брудний Rкод, який створив цей сюжет, додається.

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

Вау, дякую за неймовірно чітку і грунтовну відповідь. Це прекрасне рішення для візуалізації всієї інформації. Прикладений вами графік дійсно допомагає зрозуміти відповідь з першого погляду, що було також корисно. Дякую!
Девід Хобс

2
(+1) Приємна візуалізація. Слід зазначити, що пакети likert та HH R мають функції для складених смугових діаграм, зокрема для масштабів Likert . В останньому пакеті є навіть можливість дозволити висоті кожного бруска змінюватися залежно від розміру зразка (див. Стор. 12 у цьому документі JSS ).
chl

3

Ви, безумовно, можете перетворити кожен рядок у відсотки та накреслити всі смужки однаковою довжиною, при цьому частка смужки зелена, що дає хороший візуальний показник ефективності. Ви можете зберегти число в дужках збоку, щоб вказати, на якому розмірі вибірки ґрунтуються результати.

Якщо ви хочете зберегти візуальний показник кількості зразків, а також ефективності, ви можете вважати діаграму такою, яка є, але відцентруйте смуги, спираючись на центр сірого розрізу. Тоді загальний розмір смуги буде візуально вказувати розмір вибірки, а пропорція смуги, яка знаходиться праворуч (або зліва) від центральної лінії, вказуватиме на ефективність (або інакше). У поєднанні ви отримуєте візуальну вказівку на популярне та оцінене ефективне лікування від тих брусків, які досягають далі праворуч. Ви можете сортувати будь-яким із трьох способів, доступних на пов’язаній сторінці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.