3つのカテゴリ変数を含むデータセットがあり、3つすべての関係を1つのグラフで視覚化したい。何か案は?
現在、次の3つのグラフを使用しています。
各グラフは、ベースライン低下のレベル(軽度、中度、重度)に対応しています。次に、各グラフ内で、治療(0,1)とうつ病の改善(なし、中程度、実質)の関係を調べます。
これらの3つのグラフは3方向の関係を確認するために機能しますが、1つのグラフでこれを行う既知の方法はありますか?
3つのカテゴリ変数を含むデータセットがあり、3つすべての関係を1つのグラフで視覚化したい。何か案は?
現在、次の3つのグラフを使用しています。
各グラフは、ベースライン低下のレベル(軽度、中度、重度)に対応しています。次に、各グラフ内で、治療(0,1)とうつ病の改善(なし、中程度、実質)の関係を調べます。
これらの3つのグラフは3方向の関係を確認するために機能しますが、1つのグラフでこれを行う既知の方法はありますか?
回答:
これは、実際にはカテゴリーではないこともあり、グラフィカルに表現しようとする興味深いデータセットです。両方の3レベルの要因は順序であり、それらの間に相互作用が存在する可能性があります(おそらく、mild
baseline
持っているのは難しいsubstantial
improvement
でしょう-またはsubstantial
improvement
、それぞれ異なることを意味するかもしれませんbaseline
)。
複数の変数を使用する場合、通常、気になるすべての機能を示す単一のビューはありません。いくつかの要因は他のものよりも比較しやすいでしょう。ニック・コックスの提案では、重複する凡例を削除し、通常のカラースケールを使用することで、元のビューは良好で、改善されると思います。
治療法の違いを見ることに最も興味がある場合は、積み上げ棒の代わりに積み上げ面積プロットを使用して、変更を強調できます。
中間の値を読み取るのは難しいため、通常は一般的にスタックに注意しますが、このデータの固定合計の性質を強化します。そして、それは、和読みやすいことになりますmoderate
+をsubstantial
それが関連するかどう。improvement
周波数が高いほど良いように、レベルの順序を反転しました。
スタッキングを使用しない場合、同等の機能は勾配グラフです。
各レベルを読むのは簡単ですが、相互作用を理解するのは難しくなります。3行目は他の2行に直接依存していることに注意してください。
データの順序的な性質を考えると、リッカートデータでimprovement
よく行われるように、値を数値スコアに変換すると役立つ場合があります。たとえば、、、。次に、その変数を連続的なスケールでグラフ化できます。欠点は、妥当なスコアリングを見つけなければならないことです(たとえば、0、1、および5がより正確な表現になる場合があります)。none=0
moderate=1
substantial=2
Colophon:これらのプロットは、ソフトウェアパッケージJMPのグラフビルダー機能を使用して作成されました(開発を支援しています)。インタラクティブに作成されましたが、たとえば、色のカスタマイズなしのエリアプロット用のスクリプトは次のとおりです。
Graph Builder(
Graph Spacing( 15 ),
Variables( X( :treatment ), Y( :frequency ),
Group X( :baseline ), Overlay( :improvement )
),
Elements( Area( X, Y ) )
);
まず、プレイしたい人のために提供されたデータのグラフからの私の読書です(あなたが好きなら、実験)。重大なエラーと同様に、NBのオフバイワンエラーも確かに可能です。
improvement treatment baseline frequency
none 0 mild 5
moderate 0 mild 41
substantial 0 mild 4
none 1 mild 19
moderate 1 mild 19
substantial 1 mild 12
none 0 moderate 19
moderate 0 moderate 24
substantial 0 moderate 7
none 1 moderate 20
moderate 1 moderate 14
substantial 1 moderate 16
none 0 severe 7
moderate 0 severe 21
substantial 0 severe 22
none 1 severe 12
moderate 1 severe 15
substantial 1 severe 23
以下は、元のデザインの再加工です。元のデータの詳細の1つは、物事を単純にします。各予測子の組み合わせの人数は同じであるため、頻度のプロットとパーセントのプロットは同じです。ここでは、積み重ねられた(細分化された、セグメント化された)棒グラフの代わりに、2方向の棒グラフまたはテーブルプロットデザインで棒を分離します。
グラフィックスの詳細の多くは、まさにその詳細です。グラフのいくつかの小さな弱点は、グラフの有効性を損なう可能性があり、いくつかの小さな改善も役立ちます。
それを綴るには:
ここでは、軸、凡例、テキストが繰り返される3つのパネルは必要ありません。
伝説は常に祝福と同様に呪いであり、読者に精神的に「行き来する」ことを義務付けます(または、たとえ簡単であっても、魅力的なものではなく、伝説を暗記します)。バーのすぐ近くにある有益なテキストの方がわかりやすい。
フルーツサラダの色分けは不要です。「実質的な」改善は大したことですが、強い黄色でさえ落ち着いた色であることがわかります。しかし、説明するテキストがある場合、色は必要ありません。
図と表の区別に違反することを恐れる人もいますが、頻度も示すことができます。「このカテゴリの4人」と考えることができると便利です。
ここでは、オリジナルと同様に、垂直軸での従来の応答プロットに敬意を表しています。
とはいえ、これらのデータに多くの構造を見ることは困難です。その場合、(a)構造のないデータと(b)予測子効果だけでなく可能な相互作用を選択するためのグラフィックデザインの弱点の間で責任を共有することも困難です。治療はベースライン状態よりも重要性が低いようです。しかし、ベースラインが「軽度」だった場合、「実質的な」改善の範囲はどれくらいでしたか?特にデータが偽物であることが判明した場合、メンタルヘルスデータの研究が確かに専門分野ではない場合、私はそこで停止します。しかし、もしそれらが本物であれば、もっと大きなサンプルサイズで行うことができます。(通常はそう言いますが、そこに行きます。)
編集グラフは、必要に応じて通常の配色により複雑になることがあります。
記録のために:グラフは、をtabplot
使用してダウンロード可能な自分のプログラムを含むStataコードを使用しましたssc inst tabplot
。
tabplot improvement group [w=frequency] , showval ///
xmla(1.5 "mild" 3.5 "moderate" 5.5 "severe", noticks labgap(*4) labsize(medsmall)) ///
xla(1 "0" 2 "1" 3 "0" 4 "1" 5 "0" 6 "1") ///
xtitle(baseline and treatment) xsc(titlegap(*4)) bfcolor(emerald*0.2)
tabplot improvement group [w=frequency] , showval ///
xmla(1.5 "mild" 3.5 "moderate" 5.5 "severe", noticks labgap(*4) labsize(medsmall)) ///
xla(1 "0" 2 "1" 3 "0" 4 "1" 5 "0" 6 "1") ///
xtitle(baseline and treatment) xsc(titlegap(*2)) ///
sep(improvement2) bar3(bfcolor(emerald*0.2)) bar2(bfcolor(emerald*0.6)) ///
bar1(bfcolor(emerald)) barall(blcolor(green))
このようなデータに2レベルのX軸を使用するのが好きです。したがって、単一のチャートのx軸カテゴリは次のようになります。
...カテゴリごとのカウントが同じ[なし/中程度/実質]ヒストグラムバー。
この目的のためにモザイクプロットは特別に設計されていませんか?
Rでは次のようになります
library(vcd)
d = read.table("data.dat", header=TRUE)
tab = xtabs(frequency ~ treatment+baseline+improvement, data=d)
mosaic(data=tab,~ treatment+baseline+improvement, shade=TRUE, cex=2.5)
各カテゴリ変数は、ラベルで細分化される正方形の1つのエッジに移動します。(したがって、各レベルを1レベルで細分化すると、最大4つのカテゴリ変数を表すことができます。3つを超えると、面倒で解釈しにくくなります)。長方形のサイズは周波数に比例します。これはモザイクプロットの背後にある主要なアイデアであり、この回答とPawełKlekaの回答でも同じです。
違いは、これらの長方形のレイアウトと、このタイプのプロットに使用される特定のRパッケージによって提供される「素敵」です。PawełKlekaの答えからわかるように、graphics
パッケージは、右端を使用する代わりに、上端を2レベルに分割します。vcd
パッケージにデフォルトオプションを使用したので、色は変数間の関連度を示します。灰色は、データが変数の独立性と矛盾しない(仮説を棄却できない)ことを意味します。青は、「0」および「1」治療の両方で「重度の」ベースラインと「実質的な」改善の間に正の関連性が存在することを意味します。(驚き、驚き!私はそれを次のように翻訳します:あなたが重度のうつ病を患っているなら、あなたは治療を受けているかどうかに関係なく実質的に良くなるでしょう。
必要に応じてプロットを調整できます。たとえば、ここを参照してください。このパッケージには、Googleの「vcdモザイクの例」というビネットも含まれています(先ほど説明しました)。冒頭で引用したウィキペディアの記事は、このタイプの陰謀とその背後にある直感を構築する方法も説明しています。
私の写真とPawełKlekaの答えの写真を比較するとき、「治療」が各写真の左端にあることは重要ではありません。コードの最後の行を変更してエッジの位置を簡単に変更し、必要に応じてレイアウトを調整できます。一般的には、左から最も重要な変数、またはラベルの数が最も少ない変数に進みます。また、Rの対応する因子変数を順序付けし、そのレベルを調整することにより、ラベルの順序を変更できます(たとえば、右端で順序が「中程度の実質的でない」ように)。
私が検討するオプションは、並列セットを使用することです。一部の比較は他の比較より簡単ですが、3つのカテゴリ変数間の関係を確認できます。
ここにタイタニックの生存データの例があります:
R(タグを指定)では、ggparallelを使用して実装しています。一部の人々は、CVで他の方法でそれを実装する方法についてここで議論しました。
上記のnazarenoが投稿したパラレルセットと同様に、沖積Rパッケージから入手できる沖積プロットを使用できます。http://www.r-bloggers.com/alluvial-diagrams/