도수분포표와 히스토그램
데이터의 특징을 돋보이게 하는 도구
데이터 자체로는 아무것도 알 수 없기 때문에 통계를 사용
- 단순한 숫자의 나열인 데이터 자체를 뚫어져라 본다고 해서 어떤 정보를 알아낼 수가 없다.
- 80명 학생의 키를 정리한 데이터를 살펴보고 어떤 정보를 이끌어 낼 수 있을까?
- 이 그룹에 속한 학생들의 키는 모두 같지 않고 제각각의 숫자로 나타난다.
- 이렇게 다양한 수치로 나타나는 것을 분포한다(distribute)고 표현한다.
학생 80명의 키(cm) 151 154 160 160 163 156 158 156 154 160 154 162 156 162 157 162 162 169 150 162 154 152 161 160 160 153 155 163 160 159 164 158 150 155 157 161 168 162 153 154 158 151 155 155 165 165 154 148 169 158 146 166 161 143 156 156 149 162 159 164 162 167 159 153 146 156 160 151 151 157 151 156 166 159 157 156 159 156 156 161
- 분포가 생기는 이유?
- 이 수치가 결정된 이면에는 어떤 '불확실성(uncertainty)'이 움직이고 있기 때문
- 불확실성의 구조가 제각각인 키의 수치를 발생시킨다고 생각한다.
- 그러나 이 수치에는 고유한 '특징'이나 '반복되는 것'이 있다. 이를 분포의 특성이라고 한다.
- 분포의 특성을 도출하기 위해 사용하는 방법이 통계이다.
- 축약(summary)
- 데이터로 나열되어 있는 많은 숫자를 어떤 기준으로 정리정돈해서 의미있는 정보만을 추출하는 것으로 두 가지 방법을 사용한다.
- 그래프로 만들어서 그 특징을 파악할 수 있도록 한다.
- 숫자 하나로 특징을 대표하도록 한다.
- 통계량(statistic): 특징을 대표하는 숫자
히스토그램(막대그래프) 만들기
- 히스토그램을 만들기 위해서는 도수분포표를 만들어야 한다.
도수분포표 만들기
- 데이터 중에서 수치가 가장 큰 값(최대값)과 가장 작은 값(최소값)을 찾는다.
- 최대값부터 최소값까지 포함되도록 하여 구간을 자르기 좋게 대강의 범위를 만들고, 그 범위 내에서 5~8개 정도의 작은 범위(구간)으로 나눈다. 이렇게 나눈 범위(구간)을 '계급(class)'이라고 한다.
- 각 계급을 대표하는 수치를 정한다. 기본적으로 아무 값이나 대표로 정해도 되지만, 일반적으로 가낭 가운데 값을 선택하는 경우가 많다. 이 것을 계급값(class value)이라고 한다.
- 각 계급에 들어가 있는 데이터의 총 개수를 센다. 이 것을 도수(frequency)라고 한다.
- 각 계급의 도수가 전체에서 차지하는 비율을 계산한다. 이 것을 상대도수(relative frequency)라고 한다. 상대도수는 합하면 1이 된다.
- 어느 계급까지의 도수를 모두 합한다. 이 것을 누적도수(cumulative frequency)라고 한다. 최종 누적도수는 데이터의 전체 개수와 같다.
계급 |
계급값 |
도수 |
상대도수 |
누적도수 |
141 ~ 145 |
143 |
1 |
0.0125 |
1 |
146 ~ 150 |
148 |
6 |
0.0750 |
7 |
151 ~ 155 |
153 |
19 |
0.2375 |
26 |
156 ~ 160 |
158 |
30 |
0.3750 |
56 |
161 ~ 165 |
163 |
18 |
0.2250 |
74 |
166 ~ 170 |
168 |
6 |
0.0750 |
80 |
도수분포표의 특징
- 도수분포표로 잃어버리는 정보가 있다.
- 데이터에 나타나 있던 수치들 자체
- 예를 들어, 4번째 계급(156~160)의 도수를 통해 30개의 데이터가 있다는 것을 알 수 있지만, 그 세부적인 데이터가 각각 어떤 수치였는지 알 수 없다.
- 도수분포표를 만드는 과정에서 발생하는 축약으로 인한 것
- 도수분포표로 얻을 수 있는 정보가 있다.
- 도수를 통해 다음과 같은 데이터의 특징을 발견할 수 있다.
- 키(데이터)는 균등하게(모두 똑같이) 분포하지 않고, 어느 한 곳(구체적으로 156~160의 계급)에 집중되어 있다.
- 집중되어 있는 곳을 기점으로, 작은 편에 속하든지 큰 편에 속하는 추이를 보인다. 즉, 데이터의 분포가 어느 한 곳을 축으로 좌우 대칭성이 있다.
- 학생들의 키가 정해지게 된 구조 뒤에는 어떤 '불확실성'이 있지만, 여기에는 고유한 특징이 있다.
- 어떠한 수치든지 가능한 것은 아니다.
- 어느 한 키(158cm) 주변에 집중되어 있다.
- 158cm를 기점으로 해서 큰 편과 작은 편은 '수치가 별로 보이지 않는다는 점에서 서로 비슷'하다.
- 이런 특징은 데이터 자체를 그냥 보았을 때에는 몰랐던 정보다.
- 데이터의 축약은 데이터의 세부적인 수치를 희생하지만, 이 희생을 통해 데이터의 분포와 그 이면에 있는 특징들이 돋보이게 된다.
- 데이터의 축약은 요점을 정리하는 작업
import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from matplotlib import font_manager, rc path = "c:/Windows/Fonts/malgun.ttf" font_name = font_manager.FontProperties(fname=path).get_name() plt.rcParams['axes.unicode_minus'] = False plt.rcParams['figure.figsize'] = (10, 8) plt.style.use('seaborn-darkgrid') df = pd.read_csv('./height.csv') sns.set(color_codes=True) ax = sns.distplot(df['height(cm)'], kde=False) plt.xlabel('키(cm)', fontproperties=font_name) plt.ylabel('도수', fontproperties=font_name) plt.title('학생 80명 키의 막대그래프', fontproperties=font_name) plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0) major_y_ticks = np.arange(0, 25, 5) minor_y_ticks = np.arange(0, 25, 1) ax.set_yticks(major_y_ticks) ax.set_yticks(minor_y_ticks, minor=True) ax.grid(which='both') ax.grid(which='minor', alpha=0.5) ax.grid(which='major', alpha=1) plt.show() ax = sns.distplot(df['height(cm)'], kde=True) plt.xlabel('키(cm)', fontproperties=font_name) plt.ylabel('상대도수', fontproperties=font_name) plt.title('학생 80명 키의 상대도수분포표', fontproperties=font_name) plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0) plt.show()
출처: 세상에서 가장 쉬운 통계학 입문
'탐색적 데이터 분석 (Exploratory Data Analysis)' 카테고리의 다른 글
탐색적 데이터 분석의 소개 (0) | 2019.08.30 |
---|---|
평균의 의미 (0) | 2019.07.24 |
통계학이란? (0) | 2019.07.22 |
데이터 위치 추정 (0) | 2019.04.26 |
용어 정리 (0) | 2019.04.26 |