エントリ数と比較したパーセンテージを視覚化する方法。


10

私は下のグラフを視覚化し、治療を試みた患者の数に応じて治療の有効性を強調するための最良の方法を理解しようとしています。実際のページへのリンクは次のとおりです。http//curetogether.com/cluster-headaches/treatments/

群発頭痛治療の伝説 群発性頭痛の治療

治療を簡単に比較し、それぞれが何人の患者を評価したかを確認しながら、効果を強調するための最良の方法は何ですか?私の考えは有効性をパーセンテージで示すことでしたが、それでも簡単に比較できるようにして、それぞれを試みた患者の数を示す方法はわかりません。

ありがとう!


(円グラフを使用しないでください。)「まだ治療法との比較を容易にすること、それをしながら有効性を強調する」ことで、あなたは例えば、それはかどうかを確認するのは難しい、という事実に言及しているcaffeineibuprofenの確率が高いとリードmoderate improvementベースラインなぜなら異なる?または、他の何か?
ガン-モニカの回復

回答:


12

「有効性」を比較し、各治療を報告している患者の数を評価したいとします。有効性は、5つの個別の順序付けられたカテゴリに記録されますが、(どういうわけか)「平均」にもまとめられます。(平均)値。これは量的変数と見なされることを示唆しています。

したがって、この種の情報を伝えるために要素がうまく適合しているグラフィックを選択する必要があります。多くの優れた解決策の中で、自分たちが提案しているのは、このスキーマを使用することです。

  • 全体的または平均的な効果を線形目盛に沿った位置として表します。そのような位置は視覚的に最も簡単に把握され、正確に定量的に読み取られます。スケールを34の治療すべてに共通にします。

  • 患者の数を、それらの数に正比例することが容易にわかるいくつかのグラフィック記号で表します。長方形は非常に適しています。それらは、前述の要件を満たすように配置でき、直交方向にサイズ設定できるため、高さと面積の両方が患者番号情報を伝えることができます。

  • 5つの効果カテゴリを色やシェーディング値で区別します。これらのカテゴリの順序を維持します。

問題のグラフィックによって引き起こされた1つの巨大なエラーは、最も顕著な視覚的値(バーの長さ)が、全体の有効性情報ではなく、患者番号情報を示していることです。各バーを自然な中間値にリセンタリングすることで、簡単に修正できます。

他の変更を加えることなく(色覚異常は色覚障害者には非常に貧弱です)、ここでは再設計を行います。

図

目がラベルとプロットを結びつけるのを助けるために水平の点線を追加し、共通の中心位置を示すために細い垂直線を削除しました。

応答のパターンと数ははるかに明白です。特に、基本的に1つの価格で2つのグラフィックスを取得します。左側では、悪影響の測定値を読み取ることができ、右側では、プラスの効果がどれほど強いかを確認できます。このアプリケーションでは、リスクとメリットのバランスをとることが重要です。

この再設計の偶然の影響の1つは、多くの反応を示す治療の名前が他の治療と垂直方向に分離されているため、スキャンして最も人気のある治療を簡単に確認できることです。

もう1つの興味深い側面は、このグラフィックが「平均有効性」によって治療を順序付けるために使用されるアルゴリズムに疑問を投げかけていることです。たとえば、「すべての最も人気のある治療の中で唯一、悪影響がないようにするには?

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

うわー、信じられないほど明確で完全な答えをありがとう。これは、すべての情報を視覚化するための優れたソリューションです。作成したサンプルグラフは、答えを一目で把握するのに役立ちます。これも役に立ちました。ありがとう!
デビッドホブス2015年

2
(+1)素晴らしい視覚化。特にリッカートおよびHH Rパッケージには、特にリッカートスケールを対象とする積み上げ棒グラフの機能があります。後者のパッケージでは、各バーの高さをサンプルサイズに応じて変化させることもできます(このJSSペーパーの p。12を参照)。
2015年

3

確かに、各行をパーセンテージに変換し、すべてのバーを同じ長さでプロットできます。バーの一部が緑色になっていると、効果を視覚的に示すことができます。横の角括弧内の数値を保持して、結果の基準となるサンプルサイズを示すことができます。

サンプル数と有効性の視覚的なインジケーターを保持したい場合は、グラフをそのまま考えることができますが、灰色のセクションの中心に基づいてバーを中央揃えにします。次に、バーの全体的なサイズがサンプルサイズを視覚的に示し、中心線の右側(または左側)にあるバーの比率が有効性(またはその他)を示します。組み合わせでは、人気の視覚的な表示を取得し、右に遠い達するそれらのバーから定格効果的な治療を。リンクしたページで使用できる3つの方法のいずれかで並べ替えることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.