1. 8. 두 개 이상의 변수 탐색하기

- 다루는 변수의 개수에 따라서 하나일 때 일변량 분석(univariate analysis), 상관분석과 같이 두 변수를 취급할 때 이변량 분석(bivariate analysis) 그리고 셋 이상의 변수를 다루는 다변량 분석(multivariate anaylsis)이 있다.

용어 의미
분할표(contingency table) 두 가지 이상의 범주형 변수의 빈도수를 기록한 표
육각형 구간(hexagonal binning) 두 변수를 육각형 모양의 구간으로 나눈 그림
등고 도표(contour plot) 두 변수의 밀도를 등고선으로 표시한 도표
바이올린 도표(violin plot) 상자그림과 비슷하지만 밀도추정을 함께 보여준다.

- 일변량분석과 이변량 분석은 요약 통계를 계산하고 시각화하는 것을 기본으로 한다. 이변량 분석과 다변량 분석의 형태는 데이터가 수치형인지 범주형인지, 데이터의 특성에 따라 달라진다.

1. 8. 1. 육각형 구간과 등고선(수치형 변수 대 수치형 변수를 시각화)

- 산점도는 데이터의 개수가 상대적으로 적을 때는 유용하다. 하지만 데이터의 개수가 많을 때는 사용하기 어려움이 있다. 이를 해결하기 위해서 육각형 구간 그림을 사용한다. 데이터를 점으로 표시하는 대신 기록값들을 육각형 모양의 구간들로 나누고 각 구간에 포함된 기록값의 개수에 따라 색깔을 표시한다. R의 ggplot2 패키지를 사용해서 쉽게 그릴 수 있다.

그림 1. 육각형 구간 그림

- 등고도표는  두 수치형 변수 사이의 관계를 시각화하기 위해 산점도 위에 등고선을 사용한다. 등고선 위의 점들은 밀도가 같다. '꼭대기'쪽으로 갈수록 밀도는 높아진다. R에서 ggplot2의 geom_density2d 함수를 사용해서 그릴 수 있다.

그림 2. 등고 도표

이 외에도 두 수치형 변수의 관계를 나타내는 다른 도표로 히트맵(heat map) 등이 있다.

1. 8. 2. 범주형 변수 대 범주형 변수

- 범주표는 빈도수를 기록한 표를 뜻하는데 두 범주형 변수를 요약하는 데 효과적인 방법이다. R에서 descr 패키지에서 CrossTable 함수를 활용해 분할표를 만들 수 있다.

 

Grade Fully paid Currnet Late Charged off Total
A 20715
0.277
52058
0.695
494
0.0007
1588
0.021
74855
0.161
B 31782
0.232
97601
0.713
2149
0.016
5384
0.039
136916
0.294
C 23773
0.190
02444
0.738
2895
0.023
6163
0.049
125275
0.269
D 14036
0.183
55287
0.719
2421
0.031
5131
0.067
76875
0.165
E 6089
0.170
25344
0.709
2898
0.081
2898
0.081
35752
0.077
F 2376
0.180
8675
0.656
1556
0.118
1556
0.118
13228
0.028
G 655
0.197
2042
0.615
419
0.126
419
0.126
4422
0.007
Total 99426 333451 10207 23139 466223

표 1. 분할표

1. 8. 3. 범주형 변수 대 수치형 변수

- 상자그림은 범주형 변수에 따라 분류된 수치형 변수의 분포를 시각화하여 비교하는 간단한 방법이다. 바이올린 도표는 상자그림을 보완한 형태로, y축을 따라 밀도 추정 결과를 동시에 시각화한다. 바이올린 도표의 장점은 상자그림에서는 보이지 않는 데이터의 분포를 볼 수 있다는 점이다. R에서 ggplot2의 geom_violin 함수를 이용해 만들 수 있다.

그람 3. 바이올린 도표

1. 8. 4. 다변수 시각화하기

- 조건화(conditioning)라는 개념을 통해 두 변수 비교용 도표(산점도, 육각형 구간, 상자그림 등)를 더 여러 변수를 비교하는 용도로 확정하여 활용할 수도 있다. R에서 ggplot2의 facets라는 조건화 변수 개념을 이용한다.

- 그래픽스 시스템에서 조건화 변수라는 개념은 벨 연구소의 연구원들에 의해 개발된 트렐리스 그래픽스에서 처음 도입되었다. 이후 lattice, ggplot2와 같은 R 패키지, 그리고 Seaborn, Bokeh 같은 파이썬 패키지 등 다양한 최신 그래픽스 시스템에 영향을 주었다. 또한 조건화 변수는 태블로(Tableau)나 스폿파이어(Spotfire) 같은 비즈니스 지능형 플랫폼에서도 없어서는 안 될 중요한 요소가 되었다.


EDA의 핵심은 바로, 데이터를 다루는 모든 프로젝트에서 가장 우선적이며 가장 중요한 과정이 데이터를 들여다보는 것에 있다는 것이다. 데이터를 요약하고 시각화하는 것을 통해, 프로젝트에 대한 가치있는 통찰과 이해를 얻게 된다.
EDA은 모든 데이터 과학 프로젝트의 초석이 되어야 한다.

 

※ R에서 ggplot2을 비롯한 시각화 패키지를 조사하고 추후 다른 글을 통해서 소개할 수 있도록 한다. 이 외에서 파이썬, 태블로, 스폿파이어에 대해서 학습할 기회를 가진다. 

<참고자료>
1. Peter Brucs & Andrew Brucs (2018), 데이터 과학을 위한 통계. 한빛미디어. 이용준 옮김.
2. Hexagonal Binning, Datavizproject(https://datavizproject.com/data-type/hexagonal-binning/)
3. Contour Plot, Datavizproject(https://datavizproject.com/data-type/contour-plot/#)
4. Violin Plot, Datavizproject(https://datavizproject.com/data-type/violin-plot/)

탐색적 데이터 분석(EDA : exploratory data analysis)

- 기존의 통계학에서는 추론, 즉 적은 표본을 가지고 더 큰 모집단에 대한 결론을 도출하기 위한 일련의 복잡한 과정에 관해 다루었다. 1962년 존 투키는 "데이터 분석의 미래"라는 논문을 통해 통계적 추론을 하나의 구성 요소로보는 데이터 분석(data analysis)이라는 새로운 과학적 학문을 제안했다. 이후 탐색적 데이터 분석이라는 분야는 1997년 존 투키의 "탐색적 데이터 분석"을 통해 정립되었다.

- 탐색적 데이터 분석은 데이터의 주요 특성을 요약하기 위해 데이터를 분석하는 접근법이며, 주로 시각적인 방법을 사용한다. 예시로는 박스 플롯, 히스토그램 등이 있다.

 

1. 5. 데이터 분포 탐색하기

용어 의미
상자그림(box plot) 투키가 데이터의 분포를 시각화하기 위한 간단한 방법으로 소개한 그림
도수분포표(frequency table) 어떤 구간에 해당하는 수치 데이터 값들의 빈도를 나타내는 기록
히스토그램(histogram) x축은 구간들을, y축은 빈도수를 나타내는 도수 테이블의 그림
밀도 그림(density plot) 히스토그램을 부드러운 곡선으로 나타낸 그림. 커널밀도추정을 주로 사용한다.

1. 5. 1. 백분위수와 상자그림

- 상자그림(box plot)은 백분위수를 이용해 데이터의 분산을 시각화하는 방법이다.

그림 1. 상자그림

용어 의미
최솟값(Minimum) 이상치를 제외하고 가장 작은 값. 상자를 기준으로 수염 아래의 끝에 있는 수평선.
최댓값(Maximum) 이상치를 제외하고 가장 큰 값. 상자를 기준으로 수염 위의 끝에 있는 수평선.
이상치(outlier) 그림에서 수염 외부에 점으로 존재한다.
수염(whisker) 상자를 기준으로 위아래로 점선으로 나타난 부분.
1분위수($Q_1$/25백분위수) 상자그림에서 상자의 아래쪽을 의미한다.
2분위수($Q_2$/50백분위수)
중간값(Median)
상자그림에서 상자 안에 있는 굵은 선으로 표시한다.
3분위수($Q_3$/75백분위수) 상자그림에서 상자의 위쪽을 의미한다.
IQR $IQR=Q_3-Q_1$

1. 5. 2. 도수분포표와 히스토그램

- 도수분포표는 변수의 범위를 동일한 크기의 구간으로 나눈 다음, 각 구간마다 몇개의 변수 값이 존재하는지를 보여주기 위해 사용된다.

- 히스토그램은 바로 이 도수분포표를 시각화하는 방법이다. R에서 hist 함수로 나타낸다.

hist(x, …)
# S3 method for default
hist(x, breaks = "Sturges",
     freq = NULL, probability = !freq,
     include.lowest = TRUE, right = TRUE,
     density = NULL, angle = 45, col = NULL, border = NULL,
     main = paste("Histogram of" , xname),
     xlim = range(breaks), ylim = NULL,
     xlab = xname, ylab,
     axes = TRUE, plot = TRUE, labels = FALSE,
     nclass = NULL, warn.unused = TRUE, …)

그림 2. 히스토그램

  • 그래프에 빈 구간들이 있을 수 있다.

  • 구간은 동일한 크기를 갖는다.

  • 구간의 수(혹은 구간의 크기)는 사용자가 결정할 수 있다.

  • 빈 구간이 있지 않은 이상, 막대 사이는 공간 없이 서로 붙어 있다.

통계학에서 말하는 모멘트

- 통계학에서 위치와 변이는 각각 분포의 일차 및 이차 적률(혹은 모멘트)이라고 한다. 삼차, 사차 모멘트는 각각 왜도(skewness), 첨도(kutosis)라고 부른다. 왜도는 데이터가 큰 값이나 작은 값 쪽으로 얼마나 비스듬히 쏠려 있는지를 나타내고, 첨도는 데어티가 극단값을 갖는 경향성을 나타낸다. EDA에서는 모멘트 값들을 직접 구하기보다는 상자그림이나 히스토그램과 같이 시각화해서 직접 확인한다.

1. 5. 3. 밀도 추정

- 밀도 그림은 데이터의 분포를 연속된 선으로 보여준다. 다시 말해서 좀 더 부드러운 히스토그램이라고 생각해볼 수 있다. 커널밀도추정을 통해 데이터로부터 직접 계산한다. R의 density 함수로 나타낸다.

density(x, …)
# S3 method for default
density(x, bw = "nrd0", adjust = 1,
        kernel = c("gaussian", "epanechnikov", "rectangular",
                   "triangular", "biweight",
                   "cosine", "optcosine"),
        weights = NULL, window = kernel, width,
        give.Rkern = FALSE,
        n = 512, from, to, cut = 3, na.rm = FALSE, …)

그림 3. 밀도 추정

EDA에서 상자그림과 히스토그램을 제외한 다양한 방법과 밀도추정 부분에서 커널밀도추정 방법에 대한 심도있는 추가적인 학습이 필요하다.


1. 6. 이진 데이터와 범주 데이터 탐색하기

용어 의미
최빈값(mode) 데이터에서 가장 자주 등장하는 범주 혹은 값
기댓값(expected value) 범주에 해당하는 어떤 수치가 있을 때, 범주의 출현 확률에 따른 평균
막대도표(bar chart) 각 범주의 빈도수 혹은 비율을 막대로 나타낸 그림
파이그림(pie chart) 각 범주의 빈도수 혹은  비율을 원의 부채꼴 모양으로 나타낸 그림

막대도표는 어떤 범주형 자료를 보여줄 때 주로 사용되며 가장 흔한 시각화 방법이다. R에서 barplot 함수로 나타낸다.

barplot(height, …)
# S3 method for default
barplot(height, width = 1, space = NULL,
        names.arg = NULL, legend.text = NULL, beside = FALSE,
        horiz = FALSE, density = NULL, angle = 45,
        col = NULL, border = par("fg"),
        main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
        xlim = NULL, ylim = NULL, xpd = TRUE, log = "",
        axes = TRUE, axisnames = TRUE,
        cex.axis = par("cex.axis"), cex.names = par("cex.axis"),
        inside = TRUE, plot = TRUE, axis.lty = 0, offset = 0,
        add = FALSE, ann = !add && par("ann"), args.legend = NULL, …)

# S3 method for formula
barplot(formula, data, subset, na.action,
        horiz = FALSE, xlab = NULL, ylab = NULL, …)

막대도표와 히스토그램은 매우 유사하다. 다만 막대도표의 x축은 각 요인변수(factored variable)의 서로 다른 범주들을 나타내는 반면, 히스토그램의 x축은 수치적으로 나타낼 수 있는 하나의 변수의 값을 의미한다. 또한 히스토그램에서 막대들은 일반적으로 서로 붙어 있고, 중간에 틈이 있다는 것은 그 부분에 해당하는 값들이 존재하지 않는다는 것을 의미하지만 막대도표에서 막대들은 서로 떨어져있다.

1. 6. 1. 최빈값

- 데이터에서 가장 자주 등장하는 값 혹은 값들. 범주형 데이터를 분석하는데 간단히 사용된다. 하지만 수치데이터에는 잘 사용하지 않는다.

1. 6. 2. 기댓값

공간 $S$를 갖는 이산형 확률변수 $X$의 pmf가 $f(x)$이고 총합

$\sum_{x\in{S}}^{}u(x)f(x)$

가 존재하면, 그 합을 $u(X)$의 수학적 기댓값(mathematical expectation) 또는 기댓값(expected value)이라 하고 $E[u(X)]$로 표기한다. 즉,

$E[u(X)]=\sum_{x\in{S}}^{}u(x)f(x)$.

 

간단히 말하면 기댓값은 가중평균과 같은 꼴이다.

 

※ 범주 데이터와 기댓값에 대한 추가적인 학습이 필요하다.

<참고자료>
1. Peter Brucs & Andrew Brucs (2018), 데이터 과학을 위한 통계. 한빛미디어. 이용준 옮김.
2. Exploratory data analysis, Wikipedia(en.wikipedia.org/wiki/Exploratory_data_analysis)
3. Box plot, Wikipedia(en.wikipedia.org/wiki/Box_plot)
4. Histogram, Wikipedia(en.wikipedia.org/wiki/Histogram)
5. Density estimation, Wikipedia(en.wikipedia.org/wiki/Density_estimation)
6. R 코드 정보, R Documentation(www.rdocumentation.org/)
7. Hogg & Tanis & Zimmerman (2016), 수리 통계학. 자유아카데미. 백장선 & 송영숙 옮김.

+ Recent posts