Giriş sayısı ile birlikte yüzdelerin nasıl görselleştirileceği.


10

Aşağıdaki tabloyu görselleştirmenin ve tedaviyi deneyen hasta sayısına göre tedavi etkinliğini vurgulamanın en iyi yolunu bulmaya çalışıyorum. Asıl sayfanın bağlantısı: http://curetogether.com/cluster-headaches/treatments/

Küme Baş Ağrısı Tedavisi Efsanesi Küme Baş Ağrısı Tedavileri

Tedavileri karşılaştırmayı ve kaç hastanın her birini derecelendirdiğini görmeyi kolaylaştırırken etkinliği vurgulamanın en iyi yolu nedir? Düşüncem, etkinliği yüzde olarak göstermekti, ancak bunları nasıl kolayca karşılaştırılabilir hale getireceğinden ve her birini deneyen hasta sayısını nasıl göstereceğimden emin değilim.

Teşekkürler!


(Pasta grafikler lütfen kullanmayın.) Tarafından "vurgulamak etkinliğini hala kolay uygulamalarını karşılaştırmak için bunu yaparken" ise, örneğin, bu olmadığını görmek zor, aslında kastediyoruz caffeineveya ibuprofenkurşun daha yüksek bir olasılık için moderate improvementtaban çünkü farklılık? Veya başka bir şey?
gung - Monica'yı eski

Yanıtlar:


12

"Etkililiği" karşılaştırmak ve her tedaviyi rapor eden hasta sayısını değerlendirmek istersiniz. Etkinlik beş ayrı, sıralı kategoride kaydedilir, ancak (her nasılsa) bir de "Ort." Olarak özetlenir. (ortalama) değer, bunun nicel bir değişken olarak düşünüldüğünü gösterir.

Buna göre, elemanları bu tür bilgileri iletmek için iyi uyarlanmış bir grafik seçmeliyiz. Kendilerini öneren birçok mükemmel çözüm arasında, bu şema kullanılır:

  • Toplam veya ortalama etkinliği doğrusal bir ölçek boyunca bir konum olarak gösterin. Bu tür konumlar görsel olarak en kolay şekilde kavranır ve nicel olarak doğru bir şekilde okunur. Ölçeği 34 tedavinin tamamında ortak yapın.

  • Hasta sayılarını, bu rakamlarla doğrudan orantılı olduğu görülen bazı grafik sembollerle temsil edin. Dikdörtgenler çok uygundur: önceki gereklilikleri karşılayacak şekilde konumlandırılabilir ve ortogonal yönde boyutlandırılabilir, böylece hem yükseklikleri hem de alanları hasta numarası bilgilerini iletir.

  • Beş etkinlik kategorisini bir renk ve / veya gölgeleme değerine göre ayırt edin. Bu kategorilerin sıralamasını koruyun.

Söz konusu grafik tarafından yapılan muazzam bir hata, en belirgin görsel değerlerin - çubukların uzunluklarının - toplam etkinlik bilgisinden ziyade hasta numarası bilgilerini tasvir etmesidir. Her çubuğu doğal bir orta değere yeniden girerek kolayca düzeltebiliriz .

Başka herhangi bir değişiklik yapmadan (herhangi bir renk körü olan kişi için son derece zayıf olan renk şemasını iyileştirmek gibi), burada yeniden tasarım.

şekil

Gözün etiketleri grafiklerle birleştirmesine yardımcı olmak için yatay noktalı çizgiler ekledim ve ortak merkezi konumu göstermek için ince bir dikey çizgi sildim.

Yanıtların örüntüleri ve sayıları çok daha belirgindir. Özellikle, bir fiyat için iki grafik elde ediyoruz: sol tarafta olumsuz etkilerin bir ölçüsünü okuyabilirken , sağ tarafta olumlu etkilerin ne kadar güçlü olduğunu görebiliriz . Bu uygulamada, bir yanda menfaat karşısında riski dengeleyebilmek önemlidir.

Bu yeniden tasarımın tesadüfi bir etkisi, birçok yanıtı olan tedavilerin adlarının diğerlerinden dikey olarak ayrılması, taranmasını ve hangi tedavilerin en popüler olduğunu görmeyi kolaylaştırmasıdır.

Bir başka ilginç yön, bu grafiğin tedavileri "Ort. Etkinliği" ile sipariş etmek için kullanılan algoritmayı sorgulamasıdır: örneğin, "Baş ağrısı izleme" neden en popüler tedaviler arasında sadece bu kadar düşük olduğunda olumsuz etkileri yok mu?

RBu çizimi oluşturan hızlı ve kirli kod eklenir.

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

Vay canına, inanılmaz net ve kapsamlı cevap için teşekkür ederim. Tüm bilgileri görselleştirmek için harika bir çözüm. Ürettiğiniz örnek grafik, yanıtı da yardımcı olan bir bakışta gerçekten yardımcı olur. Teşekkürler!
David Hobs

2
(+1) İyi görselleştirme. Dikkat çekici bir şekilde, likert ve HH R paketleri, özellikle Likert ölçeklerini hedefleyen yığılmış çubuk grafikler için işlevlere sahiptir. İkinci pakette, her çubuğun yüksekliğinin numune boyutuna göre değişmesine izin verme olasılığı bile vardır ( bu JSS kağıdına bakınız s. 12 ).
chl

3

Kesinlikle her satırı yüzdelere dönüştürebilir ve tüm çubukları aynı uzunlukta olarak çizebilirsiniz, çubuğun yeşil kısmı daha sonra etkinliğin iyi bir görsel göstergesini verir. Sonuçların hangi örnek boyutuna dayandığını belirtmek için sayıyı köşeli parantez içinde tutabilirsiniz.

Örneklerin yanı sıra etkililiğin görsel bir göstergesini korumak istiyorsanız, grafiği olduğu gibi düşünebilirsiniz, ancak çubukları gri bölümün merkezine göre ortalayabilirsiniz. Ardından, çubuğun toplam boyutu görsel olarak örnek boyutunu gösterecek ve merkez çizginin sağına (veya soluna) olan çubuğun oranı bir etkinlik göstergesi (veya başka türlü) verecektir. Kombinasyon halinde, en sağa doğru uzanan barlardan popüler ve puanlanmış etkili tedavinin görsel bir göstergesini alırsınız . Bağladığınız sayfada bulunan üç yoldan herhangi birini sıralayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.