<Visualization> 어떤 그래프를 그릴 것인가? (random data 생성과 함께)
R의 시각화 패키지들을 가지고 이리저리 만져보다 보니, 기술적인 측면도 물론 디테일하게 들어가면 끝이 없겠으나
워낙 패키지들이 잘 되어 있어 그래프를 만드는 것 자체는 어렵지 않았다.
다만, 내가 가진 변수와 데이터들의 특성에 따라 어떤 그래프를 그릴지가 더 중요한 문제로 다가왔다.
이에 통상적으로 많이 쓰이는 그래프들을 조사해보고,
- 변수의 종류
- 데이터의 특징
- 보여주려는 정보의 성격
에 따라 어떤 그래프가 적합한지 정리해보고자 한다.
이미 많은 좋은 자료들이 있었고, 그 중 다음의 링크들을 참고하였다.
https://medium.com/@DataPlay/selecting-the-right-chart-for-your-data-501af25dc693
Selecting the Right Chart for Your Data
Data is only as good as how well you can communicate what it means. Charts and graphs should make the information clear. If you select the…
medium.com
https://www.i-boss.co.kr/ab-74668-1747
데이터, 목적에 맞게 보려면?
… 사람은 80% 이상의 정보를 시각을 통해 얻는다.– Computing, Control, Information and Education Engineering, Liu, sung &yao, 2015photo created by freepik인간은 시각의 동물이라는 말을 들어본 적 있을 것이다....
www.i-boss.co.kr
The Data Visualisation Catalogue
datavizcatalogue.com
또한 ggplot2 package에서 제공하는 cheatsheet도 아주 유용하다.
https://www.maths.usyd.edu.au/u/UG/SM/STAT3022/r/current/Misc/data-visualization-2.1.pdf
의학 영역에서 잘 쓰이지 않는 여러 차트들도 소개하고 있어서, 참고할 만 하다.
위의 글들은 참고만 하고, 나의 언어로 다시 정리해 보자.
변수수
의학에서의 데이터를 이루는 변수들은 다음의 하나 이다.
이산형 변수(discrete) = 범주형 변수(categorical)
- 명목변수 (nominal)
- 순위변수 (ordinal)
연속형 변수(continuous)
- 간격변수 (interval)
- 비율변수 (ratio)
구분은 이렇게 한다.
변수가 취할 수 있는 값의 수를 셀 수 있다면 -> 이산형 변수
- 변수 간 우열이 없다면 명목변수, 있다면 순위변수
변수가 취할 수 있는 값이 무한하다면 -> 연속형 변수
- 더하기 빼기는 가능하지만 곱하기 나누기는 안되고, 0이 실제 zero의 의미가 없으면 간격변수 (온도 등)
- 가감승제가 모두 가능하고, 0이 zero의 의미를 가지면 비율변수 (키, 몸무게, 시간 등)
예시 데이터를 만드는 연습을 해 보자.
종류별로 변수를 2개씩은 넣고 싶어서
- 명목변수 - 성별 : 남, 여
- 명목변수 - 거주대륙 : Asia, Africa, Austrailia, North America, South America, Europe
- 순위변수 - 성적 등급 : 1~9
- 순위변수 - 질병 X의 grade : I~IV
- 간격변수 - 체온
- 간격변수 - IQ
- 비율변수 - 키
- 비율변수 - 체중
데이터 생성
데이터를 새로 만들기 위해서는 난수 발생이 필요하다.
연속변수의 경우 간단하지만,
범주형 변수의 경우 검색해보니 wakefield package에서 factor나 ordered factor vector의 난수 발생 함수가 있어서 활용해본다.
R 자체적으로도 sample(), set.seed(), rbinom(), rnorm() 함수 등을 활용할 수 있다.
https://rdrr.io/cran/wakefield/man/r_sample_factor.html
r_sample_factor: Generate Random Factor Vector in wakefield: Generate Random Data Sets
Generate a random vector and coerces to a factor.
rdrr.io
n수는 100개로 하고, 편의 상 변수 종류별로 2개씩 넣었다.
sex <- r_sample_binary_factor(100, x=c("M", "F"), prob = c(.6, .4))
continent <- r_sample_factor(100, x=c('Asia', 'Africa', 'Austrailia', 'North America', 'South America', 'Europe'),
prob = c(.2, .1, .05, .15, .3, .2))
scoreGrade <- r_sample_ordered(100, x=c(1, 2, 3, 4, 5, 6, 7, 8, 9))
diseaseGrade <- r_sample_ordered(100, x=c('IV', 'III', 'II', 'I'))
temp <- rnorm(100, mean = 36.5, sd=0.4)
iq <- r_sample_integer(100, x=80:150)
height <- rnorm(100, mean=165, sd=10)
weight <- rnorm(100, mean=65, sd=10)
위와 같은 난수발생 함수들로 다음과 같은 data.frame이 생성되었다.
변수에 따른 그래프
1. 하나의 변수
하나의 변수에 대해 조사할 수 있는 것은 바로 분포이다. y축은 보통 data의 수(count)가 된다.
1-1. 범주형 변수
1) 명목변수
continent의 예를 들어 보면 우리가 궁금한 것은 'continent 별로 자료가 몇개씩 존재하는 것인지' 이다.
따라서 bar chart가 대표적이다. 색은 다르게 할 수도 있다.
2) 순위변수
순위 변수 또한 마찬가지이다.
다만, 변수 간 상하관계가 존재하기 때문에 증가하는 순서, 혹은 감소하는 순서로 bar chart를 표현한다.
당연히 세로 bar chart 또한 가능하다.
1-2. 연속 변수
연속변수 또한 그 변수만으로는 데이터의 분포를 볼 수 있다.
다만 연속변수는 일반적으로 이산변수보다
- 간격이 촘촘하거나
- 무한하거나
- 크고 작음이 존재하는
차이점이 있다.
따라서 histogram, density plot, violin plot, box plot 등이 가능하다.
비율변수와 간격변수의 그래프로서의 차이는 없고,
다만 내가 관심있는 변수외에 다른 축을 어떻게 표현할 것인지가 차이가 된다.
1) Count, Density
한 축에 변수를 두고, 다른 축에 빈도나 밀도를 두는 경우 density plot이나 histogram, dotplot으로 나타낼 수 있다.
histogram은 계급 간격을 조절할 수 있고,
density plot의 경우에는 band width를 수정할 수 있다.
dot
2) None
다른 축을 아무 의미 없는 축으로 두면, 그 변수 자체의 분포만을 보여주는 violin이나 boxplot, jitter plot을 그릴 수 있다.
마찬가지로 violin plot의 경우 bandwidth를 조절할 수 있다.
2. 두개의 변수
2-1. 범주변수와 범주변수
두 볌주형 변수 사이에는 사실 graphic보다는 table이 적절한 선택이다.
table과 비슷한 다음과 같은 그래프를 그릴 수 있으나, 큰 의미는 없다.
2-2. 연속변수와 범주변수
이런 경우 보통 범주 별 연속변수의 분포를 나타내게 된다.
따라서 boxplot이나 violin plot을 범주변수 별로 그릴 수 있고,
ggplot(df) + aes(continent, iq) + geom_dotplot(binaxis = 'y', stackdir='center')
연속변수의 대표값(평균 등)을 이용하면 bar chart(col)도 가능하다.
2-3. 연속변수와 연속변수
연속변수가 두 개일 경우에는 두 축을 모두 사용하여 좌표를 찍을 수 있다.
따라서 scatter plot이나, 겹치는 데이터까지 보기 위해 jitter plot을 그릴 수 있고
추세선을 그릴 수 있다.
3. 그 이상의 변수
축을 3개 그려서 공간에 그래프를 표시하는 방법이 있으나, 일반적으로 지면에 싣기에는 부적합하고,
보통 그래프를 이루는 점이나 선의 속성을 변화시켜서 표현한다.
다음은 heatmap의 예시이다.
raster, tile 등을 이용한다.
혹은 여러개의 그래프를 하나의 plot에 표현하는 방법도 있다.
마무리
지금까지
- Random dataset을 변수 종류 별로 구성하는 방법
- 변수의 특징, 비교 변수의 갯수에 따른 그래프의 구성
에 대하여 실습하며 연습해보았다.
reference로 모아둔 자료들이 매우 쓸만하기 때문에 자주 들여다보도록 하자.
'Career > 의학 통계' 카테고리의 다른 글
Linear mixed effect model - 이번엔 제발 이해해 보자... (0) | 2023.06.05 |
---|---|
<RCT> #2. 비열등성 연구, 실패한 결과 (0) | 2022.12.30 |
T-test, F-test (0) | 2022.12.28 |
<RCT> #1. Primary outcome, Interim analyses, Randomization (0) | 2022.12.27 |
의학 연구의 방법론, ratio, rate, proportion, RR, OR, HR (0) | 2022.12.13 |