세 가지 범주 형 변수 사이의 관계를 어떻게 시각화 할 수 있습니까?


21

세 가지 범주 형 변수가있는 데이터 세트가 있고 하나의 그래프에서 세 가지의 관계를 시각화하고 싶습니다. 어떤 아이디어?

현재 다음 세 가지 그래프를 사용하고 있습니다. 여기에 이미지 설명을 입력하십시오

각 그래프는 일정 수준의 우울함 (가벼움, 보통, 심각)에 대한 것입니다. 그런 다음 각 그래프에서 치료 (0,1)와 우울증 개선 (없음, 보통, 실질적) 사이의 관계를 살펴 봅니다.

이 3 개의 그래프는 3 방향 관계를 확인하는 데 효과적이지만 하나의 그래프로이를 수행하는 알려진 방법이 있습니까?


4
데이터를 게시하면 사람들이 놀 수있게됩니다.
Nick Cox

1
3 가지 기준 범주, 2 가지 치료 범주 및 3 가지 우울증 결과가 있습니다. 마지막으로 주어진. 각 우울증 유형의 비율은 삼각형 (삼선 형, 삼항) 플롯에서 6 포인트 씩 표시 될 수 있습니다.
Nick Cox

4
이 그래프의 문제점은 무엇입니까?
Aksakal

@NickCox 요청에 따라 데이터를 제공 할 수 있습니까? 나는 단지 18 숫자입니다 수집합니다.
gung-복직 모니카

답변:


12

이것은 실제로 범주 적이 지 않기 때문에 부분적으로 그래픽으로 표현하려고하는 흥미로운 데이터 세트입니다. 모두 3 레벨 요소는 순서이며, 그들 사이의 가능한 상호 작용이있다 (아마도, 그것은가 더 어렵 mild baseline가지고 substantial improvement- 아니면 substantial improvement각각에 대해 뭔가 다른 의미 baseline).

여러 변수를 사용하면 일반적으로 관심있는 모든 기능을 보여주는 단일 뷰가 없습니다. 일부 요소는 다른 요소보다 비교하기가 쉽습니다. 닉 콕스의 제안에 따르면 원본보기가 좋으며 더 좋을 것이라고 생각합니다. 중복 범례를 제거하고 서수 색상 스케일을 사용하십시오.

처리 간의 차이를 보는 데 가장 관심이있는 경우 누적 막대 대신 누적 영역 그림을 사용하여 변경을 강조 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

나는 보통 중간 값을 읽기가 어렵 기 때문에 일반적으로 스태킹에주의하지만이 데이터의 고정 합계 특성을 강화합니다. 그리고 관련이있는 경우 합계 moderate+를 쉽게 읽을 수 있습니다 substantial. improvement주파수가 높을수록 레벨 순서를 바꿨습니다 .

스태킹이 없으면 해당하는 기울기 그래프입니다.

여기에 이미지 설명을 입력하십시오

각 레벨을 읽는 것이 더 쉽지만 상호 작용을 이해하기는 어렵습니다. 세 번째 줄은 다른 두 줄에 직접적으로 의존한다는 것을 명심해야합니다.

데이터의 서 수적 특성을 고려할 때, improvement종종 Likert 데이터에서 수행되는 것처럼 값을 숫자 점수로 변환하는 것이 도움이 될 수 있습니다 . 예를 들어, none=0, moderate=1, substantial=2. 그런 다음 해당 변수를 연속 스케일로 그래프로 표시 할 수 있습니다. 단점은 합리적인 점수를 찾아야한다는 것입니다 (예 : 0, 1 및 5가 더 사실적인 표현 일 수 있음).

여기에 이미지 설명을 입력하십시오

Colophon :이 플롯은 소프트웨어 패키지 JMP ( 그래서 개발하는 데 도움이 됨) 의 Graph Builder 기능으로 만들어졌습니다 . 대화식으로 만들어졌지만, 예를 들어, 채색 사용자 지정이없는 영역 그림의 스크립트는 다음과 같습니다.

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

2
+1. 여기에 훌륭한 아이디어가 있습니다. 스택에 대해 불안하지만 첫 번째 그래프가 가장 효과적이라고 생각합니다. 흥미로운 상호 작용을 이끌어냅니다. 치료 1은 항상 더 많은 실질적인 개선을 가져 오지만 더 많은 것을 만들어냅니다!
Nick Cox

좋은 포스트. 어쨌든 R에 표시하는 첫 번째 그래프를 작성할 수 있습니까? 한동안 JMP를 사용하지 않았습니다.
Alejandro Ochoa

1
@AlejandroOchoa ggplot에는 지역 도형이 있습니다. ggplot2를 사용하여 누적 영역 플롯 만들기를 참조하십시오 .
xan

10

먼저, 연주하고자하는 사람들 (원하는 경우 실험)에 대한 데이터가 제공된 그래프를 읽은 것입니다. NB off-by-one 오류는 총 오류와 마찬가지로 가능합니다.

    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. 일부는 그림과 표의 차이를 위반할 때 공포로 비명을 지지만 빈도도 보여줄 수 있습니다. "이 카테고리의 4 명"을 생각하는 것이 도움이됩니다.

  5. 원래와 마찬가지로 수직 축에 대한 전통적인 반응 플롯에 대한 경의가 있습니다.

그러나이 데이터에서 많은 구조를보기는 어렵습니다. 그렇다면 (a) 많은 구조가없는 데이터와 (b) 예측 변수뿐만 아니라 가능한 상호 작용을 선택하기위한 그래픽 디자인의 약점간에 책임을 공유하기도 어렵습니다. 치료는 기본 상태보다 덜 중요해 보입니다. 그러나 기준선이 "경량"이라면 "실질적인"개선 범위는 어느 정도입니까? 정신 건강 데이터에 대한 연구가 확실히 전문성이 아닌 경우, 특히 데이터가 가짜로 판명 된 경우에는 저 자신을 속이는 것을 그만두겠습니다. 그러나 실제 크기라면 훨씬 더 큰 표본 크기를 사용할 수 있습니다. (우리는 보통 그렇게 말하지만 거기에 있습니다.)

편집 원하는 경우 순서 색 구성표에 따라 그래프가 자연스럽게 복잡해질 수 있습니다.

여기에 이미지 설명을 입력하십시오

기록을 위해 : 그래프는 Stata 코드를 사용했으며 내 프로그램을 tabplot사용하여 다운로드 할 수 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)) 

어쨌든 데이터의 서수 특성을 반영하는 색 구성표로 그래프를 업로드 할 수 있습니까? 또한 비주얼을 만드는 데 어떤 소프트웨어를 사용 했습니까?
Alejandro Ochoa

이것은 매우 잘 생긴 음모입니다
shadowtalker

4

나는 이와 같은 데이터에 2 레벨 x 축을 사용하는 것을 좋아합니다. 따라서 단일 차트의 x 축 범주는 다음과 같습니다.

  • 치료 = 0, 기준선 = 경량
  • 치료 = 0, 기준선 = 보통
  • 치료 = 0, 기준선 = 심각한
  • 치료 = 1, 기준선 = 경량
  • 치료 = 1, 기준치 = 보통
  • 치료 = 1, 기준치 = 중증

... [없음 / 보통 / 실질적인] 히스토그램 막대 범주별로 동일한 수를가집니다.


+1. 내 대답에 구현 된 것처럼 여기의 주요 아이디어에 동의합니다. 막대 차트 디자인이 상상했던 것과 얼마나 가까운 지 알 수 없습니다.
Nick Cox

감사합니다. 차트가 멋지게 보입니다. 외부 범주로 처리 0/1을, x 축에 가까운 범주로 기준선 = 약간 / 중간 / 심각으로 보려고 했습니까? 당신이 그런 식으로 그것을 제시했다면, 치료 = 0에서, 기준선이 마일드 / 보통 / 심하게 상승함에 따라 "실질적인"개선 막대가 꾸준히 증가하는 것을 보게 될 것입니다. 그리고 당신은 treatment = 1 내에서 같은 패턴을 보게 될 것입니다. 일반적으로 외부에 더 적은 범주의 변수 (예 : 처리)를 넣습니다. 하지만 어쩌면 이미 그렇게 보았을 것입니다.
최대 전력

다른 방법으로 시도하지는 않았지만 연구원은 기준선에 따라 치료 효과를 비교하고 싶을 것입니다.
Nick Cox

그것은 나에게 의미가 있습니다.
최대 전력

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)

각 범주 형 변수는 제곱의 한 모서리로 이동하며 레이블로 세분화됩니다. (따라서 각 모서리를 한 수준으로 세분화하면 최대 4 개의 범주 형 변수를 나타낼 수 있습니다. IMHO는 3을 초과하면 지저분하고 해석하기가 더 어려워집니다). 사각형의 크기는 주파수에 비례합니다. 이것은 모자이크 플롯의 주요 아이디어이며이 답변과 Paweł Kleka의 답변에서도 동일합니다.

차이점은 이러한 유형의 플롯에 사용되는 특정 R- 패키지에서 제공하는 사각형과 "기쁨"의 레이아웃에 있습니다. Paweł Kleka의 답변에서 알 수 있듯이 graphics패키지는 오른쪽 가장자리를 사용하는 대신 위쪽 가장자리를 2 단계로 세분화합니다. vcd색상을 변수 사이의 연관 정도를 나타내도록 패키지를 기본 옵션과 함께 사용했습니다 . 회색은 데이터가 변수 독립성과 일치 함 (가설을 기각 할 수 없음)을 의미합니다. 파란색은 "0"과 "1"처리 모두에 대해 "심한"기준선과 "실질적인"개선 사이에 긍정적 인 연관성이 존재 함을 의미합니다. (놀람, 놀랍습니다! 나는 이것을 다음과 같이 번역합니다. 심한 우울증이 있으면 치료를 받든 없든 실질적으로 좋아질 것입니다.

필요에 따라 줄거리를 조정할 수 있습니다 (예 : here 참조) . 패키지에는 여러 가지 비 네트, google "vcd mosaic example"(방금 전과 같이)이 있습니다. 처음에 인용 된 Wikipedia 기사는 이러한 유형의 음모와 그 직관을 구성하는 방법을 설명합니다.

여기에 이미지 설명을 입력하십시오

Paweł Kleka의 답변에서 내 사진을 사진과 비교할 때 '치료'가 각 사진의 왼쪽 가장자리에 있다는 것은 중요 하지 않습니다 . 내 코드의 마지막 줄을 변경하여 가장자리 위치를 쉽게 변경하고 필요에 따라 레이아웃을 조정할 수 있습니다. 일반적으로 왼쪽에는 가장 중요한 변수 또는 레이블 수가 가장 적은 변수가 왼쪽에 있습니다. R의 순서 에 따라 해당하는 요인을 변수로 만들고 수준을 조정하여 레이블 순서를 변경할 수도 있습니다 (예를 들어 오른쪽 가장자리에서 순서가 "중간 정도 중요하지 않음") .


모자이크 플롯에 두 가지 답변을 쓸 때가 있습니다. 음모가 매우 다르기 때문에 음모가 표시하는 내용과 그것이 왜 유용한 지에 대해 확장한다면 도움이 될 것입니다.
Nick Cox

@ NickCox 이것은 확실히 다른 것과 다르게 보입니다. 그들은 거의 같은 디스플레이가 아닙니다
shadowtalker

그들은 둘 다 y 축에 치료를합니다. 지지자들로부터 금이 될 것은 각 디스플레이의 장점과 한계에 대한 논평입니다.
Nick Cox

답변을 확장 해 주셔서 감사합니다. 치료와 기준선에 대한 반응을 비교하는 데 관심이 있다고 생각합니다. 나는 자연스럽게 어느 변수가 어디로 갈지 고민 할 수 있지만 다른 가능성을 시도해 보았으며 어떤 것이 가장 잘 작동합니까? 여기에서 응답을 볼 때 독자는 두 행의 블록을 동시에 비교해야합니다.
Nick Cox

@Nick Cox 귀하의 의견에 감사드립니다. 내가 확장하도록 동기를 부여한 유일한 방법이었습니다. 나는 않았다 하지 다른 가능성을 시도해보십시오. 실제로 질문의 저자가 이런 유형의 음모가 유용하다고 생각되면 모든 것을 시도한 다음 커뮤니티의 결과를 게시하고 설명해야한다고 생각 합니다. 그건 그렇고, 나는이 유형의 음모가 다른 것보다 낫다는 말은 아닙니다. 요점은 다음과 같습니다. 범주 형 변수와 독립성 및 / 또는 독립성 위반을 시각화하기 위해 특별히 설계되었습니다.
lanenok

3

모자이크 플롯 사용을 자제합니다.

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

mosaicplot ()


모자이크 플롯에 두 가지 답변을 쓸 때가 있습니다. 음모가 매우 다르기 때문에 음모가 표시하는 내용과 그것이 왜 유용한 지에 대해 확장한다면 도움이 될 것입니다.
Nick Cox

2

내가 고려해야 할 옵션은 병렬 세트를 사용하는 것입니다. 일부 비교는 다른 것보다 쉬울 수 있지만 세 가지 범주 형 변수 간의 관계를 여전히 볼 수 있습니다.

다음은 타이타닉 서바이벌 데이터의 예입니다.

다음은 타이타닉 생존 데이터를 사용한 예입니다.

R (태그를 제공함 )에서 나는 그것을 구현하기 위해 ggparallel 을 사용 했습니다. 일부 사람들 다른 방법 으로 CV 를 구현하는 방법을 CV에서 논의 했습니다.


나는 이것을 상상하는 데 어려움을 겪고있다. 예를 모의 할 수 있습니까?
shadowtalker

플롯의 선은 두 범주의 동시 발생 빈도에 비례하여 너비가 있습니다. 원래 질문의 도표에 사용 된 데이터의 경우 기준 축 우울증, 치료 및 우울증 개선의 세 가지 수평 축이 있습니다. 각각에는 해당 카테고리의 각 레벨마다 별도의 영역이 있습니다. Coocurrence는 빈도를 나타내는 너비와 연결되어 있습니다.
nazareno

2

다음의 간단한 꺾은 선형 차트를 사용하여 정보를 전달할 수도 있습니다.

여기에 이미지 설명을 입력하십시오

개선 사항은 서로 다른 선 종류로 표시되고 기준선 그룹은 색상으로 표시됩니다. 원하는 경우 이들과 x 축 파라미터 (여기에서 처리)를 교환 할 수도 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.