3つのカテゴリ変数間の関係をどのように視覚化できますか?


21

3つのカテゴリ変数を含むデータセットがあり、3つすべての関係を1つのグラフで視覚化したい。何か案は?

現在、次の3つのグラフを使用しています。 ここに画像の説明を入力してください

各グラフは、ベースライン低下のレベル(軽度、中度、重度)に対応しています。次に、各グラフ内で、治療(0,1)とうつ病の改善(なし、中程度、実質)の関係を調べます。

これらの3つのグラフは3方向の関係を確認するために機能しますが、1つのグラフでこれを行う既知の方法はありますか?


4
データを投稿すると、人々は遊ぶことができます。
ニックコックス

1
3つのベースラインカテゴリ、2つの治療カテゴリ、3つのうつ病の結果があります。最後を考える。各うつ病タイプの割合は、三角形(3線形、3成分)プロット上の6ポイントで表示できます。
ニックコックス

4
これらのグラフの何が問題になっていますか?
アクサカル

@NickCoxリクエストとしてデータを提供できますか?私はそれがわずか18個の数字だ収集します。
GUNG -復活モニカ

回答:


12

これは、実際にはカテゴリーではないこともあり、グラフィカルに表現しようとする興味深いデータセットです。両方の3レベルの要因は順序であり、それらの間に相互作用が存在する可能性があります(おそらく、mild baseline持っているのは難しいsubstantial improvementでしょう-またはsubstantial improvement、それぞれ異なることを意味するかもしれませんbaseline)。

複数の変数を使用する場合、通常、気になるすべての機能を示す単一のビューはありません。いくつかの要因は他のものよりも比較しやすいでしょう。ニック・コックスの提案では、重複する凡例を削除し、通常のカラースケールを使用することで、元のビューは良好で、改善されると思います。

治療法の違いを見ることに最も興味がある場合は、積み上げ棒の代わりに積み上げ面積プロットを使用して、変更を強調できます。

ここに画像の説明を入力してください

中間の値を読み取るのは難しいため、通常は一般的にスタックに注意しますが、このデータの固定合計の性質を強化します。そして、それは、和読みやすいことになりますmoderate+をsubstantialそれが関連するかどう。improvement周波数が高いほど良いように、レベルの順序を反転しました。

スタッキングを使用しない場合、同等の機能は勾配グラフです。

ここに画像の説明を入力してください

各レベルを読むのは簡単ですが、相互作用を理解するのは難しくなります。3行目は他の2行に直接依存していることに注意してください。

データの順序的な性質を考えると、リッカートデータでimprovementよく行われるように、値を数値スコアに変換すると役立つ場合があります。たとえば、、、。次に、その変数を連続的なスケールでグラフ化できます。欠点は、妥当なスコアリングを見つけなければならないことです(たとえば、0、1、および5がより正確な表現になる場合があります)。none=0moderate=1substantial=2

ここに画像の説明を入力してください

Colophon:これらのプロットは、ソフトウェアパッケージJMPのグラフビルダー機能を使用して作成されました(開発を支援しています)。インタラクティブに作成されましたが、たとえば、色のカスタマイズなしのエリアプロット用のスクリプトは次のとおりです。

Graph Builder(
    Graph Spacing( 15 ),
    Variables( X( :treatment ), Y( :frequency ),
        Group X( :baseline ), Overlay( :improvement )
    ),
    Elements( Area( X, Y ) )
);

2
+1。ここでいくつかの優れたアイデア。スタックについては気が進まないのですが、最初のグラフが最適だと思います。それは興味深い相互作用をもたらします:治療1は常に実質的な改善のインスタンスをより多く生成し、何も生成しません!
ニックコックス

素晴らしい投稿。とにかくRで表示する最初のグラフを作成できますか?私はしばらくJMPを使用していません。
アレハンドロオチョア

1
@AlejandroOchoa ggplotにはエリアジオメトリがあります。ggplot2を使用した積み上げ面積プロットの作成を参照してください。
xan

10

まず、プレイしたい人のために提供されたデータのグラフからの私の読書です(あなたが好きなら、実験)。重大なエラーと同様に、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方向の棒グラフまたはテーブルプロットデザインで棒を分離します。

グラフィックスの詳細の多くは、まさにその詳細です。グラフのいくつかの小さな弱点は、グラフの有効性を損なう可能性があり、いくつかの小さな改善も役立ちます。

ここに画像の説明を入力してください

それを綴るには:

  1. ここでは、軸、凡例、テキストが繰り返される3つのパネルは必要ありません。

  2. 伝説は常に祝福と同様に呪いであり、読者に精神的に「行き来する」ことを義務付けます(または、たとえ簡単であっても、魅力的なものではなく、伝説を暗記します)。バーのすぐ近くにある有益なテキストの方がわかりやすい。

  3. フルーツサラダの色分けは不要です。「実質的な」改善は大したことですが、強い黄色でさえ落ち着いた色であることがわかります。しかし、説明するテキストがある場合、色は必要ありません。

  4. 図と表の区別に違反することを恐れる人もいますが、頻度も示すことができます。「このカテゴリの4人」と考えることができると便利です。

  5. ここでは、オリジナルと同様に、垂直軸での従来の応答プロットに敬意を表しています。

とはいえ、これらのデータに多くの構造を見ることは困難です。その場合、(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)) 

とにかく、データの順序的な性質を反映した配色でグラフをアップロードできますか?また、ビジュアルの作成に使用したソフトウェアは何ですか?
アレハンドロオチョア

これらは非常にハンサムなプロットです
シャドウトーカー

4

このようなデータに2レベルのX軸を使用するのが好きです。したがって、単一のチャートのx軸カテゴリは次のようになります。

  • 治療= 0、ベースライン=軽度
  • 治療= 0、ベースライン=中程度
  • 治療= 0、ベースライン=重度
  • 治療= 1、ベースライン=軽度
  • 治療= 1、ベースライン=中程度
  • 治療= 1、ベースライン=重度

...カテゴリごとのカウントが同じ[なし/中程度/実質]ヒストグラムバー。


+1。私の答えに実装されているように、ここでの主な考えに同意します。私の棒グラフのデザインがあなたが想像していたものにどれほど近いかわかりません。
ニックコックス

ありがとう、あなたのチャートは見栄えがいい。外側のカテゴリとしてトリートメント0/1を使用し、x軸により近いカテゴリとしてベースライン=軽度/中程度/重度でそれを見てみましたか?そのように提示すると、より明確なパターンが表示されると思います-治療= 0の場合、ベースラインが軽度/中程度/重度から上昇すると、「実質的な」改善バーは着実に上昇します。また、treatment = 1内に同じパターンが表示されます(程度は低い)。一般に、私は外側にカテゴリーの少ない変数(例えばここでの処理)を置きます。しかし、おそらくあなたはすでにそれをそのように見ていました。
最大電力

私は他の方法を試しませんでしたが、研究者はベースラインを与えられた治療の効果を比較したいと思うかもしれないことを念頭に置いていました。
ニックコックス

それは理にかなっています。
最大電力

4

この目的のためにモザイクプロットは特別に設計されていませんか?

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の対応する因子変数を順序付けし、そのレベルを調整することにより、ラベルの順序を変更できます(たとえば、右端で順序が「中程度の実質的でない」ように)。


執筆時点では、モザイクプロットに2つの回答があります。特に、プロットがまったく異なるため、各自がプロットが示すものと、なぜそれが役立つのかを拡張すると役立ちます。
ニックコックス

@NickCoxこれは確かに他のものとは異なって見えます。それらはほとんど同じディスプレイではありません
シャドウトーカー

どちらもy軸に処理があります。彼らの支持者から金になるものは、各ディスプレイの利点と制限についての解説です。
ニックコックス

回答を増やしてくれてありがとう。ここでの関心は、治療とベースラインを与えられた反応を比較することにありそうだと思います。私は当然、どの変数がどこに行くのかをいじくり回すことができることに同意しますが、他の可能性を試しましたか?ここでの応答を見る際、読者は2行のブロックを同時に比較する必要があります。
ニックコックス

@Nick Coxコメントありがとうございます。それが私を拡大させた唯一の動機でした。私は他の可能性を試しませんでした。実際、質問の著者がこのタイプのプロットを有用であると思う場合、はすべてを試して、コミュニティのために結果を投稿して説明するべきだと思います。ところで、私はこの種のプロットが他のものより優れていると言っているのではありません。要点は、カテゴリ変数と、独立性および/または独立性の侵害を視覚化するために特別に設計されたということです。
lanenok

3

モザイクプロットの使用を推奨します

mosaicplot(table(moz), sort = c(3,1,2), color = T)

mosaicplot()


執筆時点では、モザイクプロットに2つの回答があります。特に、プロットがまったく異なるため、各自がプロットが示すものと、なぜそれが役立つのかを拡張すると役立ちます。
ニックコックス

2

私が検討するオプションは、並列セットを使用することです。一部の比較は他の比較より簡単ですが、3つのカテゴリ変数間の関係を確認できます。

ここにタイタニックの生存データの例があります:

タイタニックの生存データの例を次に示します。

R(タグを指定)では、ggparallelを使用して実装しています。一部の人々は、CVで他の方法でそれを実装する方法についてここで議論しました


これを想像するのに苦労しています。例をモックアップできる可能性はありますか?
シャドウトーカー

プロットの線の幅は、2つのカテゴリの共起の頻度に比例します。元の質問のプロットで使用されるデータには、3つの水平軸があります。ベースラインのうつ病、治療、うつ病の改善です。それぞれに、そのカテゴリの各レベルの個別の領域があります。Coocurrenceはリンクされ、幅はその頻度を表します。
nazareno

2

情報は、次の単純な折れ線グラフを使用して伝達することもできます。

ここに画像の説明を入力してください

ベースライングループは色で表示されますが、改善はさまざまな線種で表示されます。必要に応じて、これらとx軸パラメーター(ここでは処理)を交換することもできます。


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