데이터가 전반적으로 어떻게 분포하는지 쉽게 알수있는 지표들?을 알아보자.
(이전 포스트까지는 용어 정리를 먼저 하고 했는데, 하나씩 잡고 가는 방식이 좋을 듯 하다. 예제와 함께)
Percentile and Boxplot (백분위수와 상자그림)
(영문책을 번역한거여서 그런가 약간 한국어가 익숙하지 않음)
분포를 알아보는 데에도 백분위수가 유용하다, 특히 사분위수(quartile)나 십분위수(decile)를 사용
특히 백분위수는 분포의 꼬리(tail) 부분을 묘사하는데 좋다.
#quantile를 통해 쉽게 부분별 백분위수를 가지고 올 수 있음
state['Murder.Rate'].quantile([0.05, 0.25, 0.5, 0.75, 0.95])
이 역시 pandas에서 quantile로 쉽게 가지고 올 수 있고, 시각화도 쉽게 가능하다.
bp = (state['Population']/1_000_000).plot.box()
bp.set_ylabel('Population (millions)')
시각화 자료를 보면, 인구수가 높은 이상치가 있음을 볼 수 있고, 중간의 선을 통해 중간값을 알려준다.
Frequency Table and Histogram (도수분포표와 히스토그램)
도수분포표는 변수의 범위를 동일한 크기로 나누고, 각 구간에서의 몇 개의 변수가 존재하는지 확인하기 위해 사용함.
binnedPopulation = pd.cut(state['Population'], 10)
binnedPopulation.value_counts()
pandas.cut 함수에서 각 구간에 매핑하는 시리즈를 만든 후에 빈도 테이블을 구할 수 있다.
hg = (state['Population'] / 1_000_000).plot.hist(figsize=(4, 4))
hg.set_xlabel('Population (millions)')
뭐 사실 꼭 pandas 아니여도 요즘 좋은 패키지가 많아서, 다양하게 보고 시각화가 깔끔한 것을 선택하면 될 듯 하다.
Density Plot and Estimation (밀도 그림과 추정)
밀도 그림은 데이터의분포를 연속된 선으로 같이 보여주고, 약간 부드러운 느낌이라고 생각 할 수있다.
ax = state['Murder.Rate'].plot.hist(density = True, xlim=[0, 12], bins=range(1,12))
#많은 플롯 함수들은 플롯이 동일한 그래프에 추가될 수 있도록 선택적으로 축 인수(ax)를 제공
state['Murder.Rate'].plot.density(ax=ax)
ax.set_xlabel('Murder Rage (per 100,000)')
히스토그램과 큰 차이가 하나 있다면, y축이다.
밀도그림에서는 y축은 비율이다. 그래서 밀도 곡선 아래의 총 면적이 1이고, 구간의 개수 대신 x축의 두점 사이의 곡선 아래 면적을 계산하며, 이는 두 점 사이에 있는 분포의 비율에 해당함
'Machine Learning > Practical Statistics' 카테고리의 다른 글
[Practical Statistics] 상관관계 (0) | 2022.03.14 |
---|---|
[Practical Statistics] 이진 데이터와 범주 데이터 탐색 (0) | 2022.03.12 |
[Practical Statistics] 변이 추정 (0) | 2022.03.03 |
[Practical Statistics] 위치 추정 (0) | 2022.03.01 |
[Practical Statistics] 테이블 데이터 (0) | 2022.02.27 |