Code › codeit-ai-sprint
평균과 사분위수로 읽는 데이터 분포
데이터의 중심과 퍼짐, 분포 모양을 그래프로 읽는 기초 통계 복습
이번에는 코드잇에서 따로 듣고 있는 기초 통계와 데이터 시각화 강의를 복습했다. 실습은 별도로 진행하고 있어서, 이 글에는 평균과 중간값부터 사분위수, IQR, KDE, 왜도와 첨도, 박스플롯까지 이론만 정리한다.
통계값을 계산하는 방법 자체는 어렵지 않았지만, 각각의 숫자가 데이터의 어느 부분을 설명하는지 연결해서 보는 게 중요했다. 평균 하나만으로는 데이터 전체를 설명할 수 없고, 중심과 퍼짐, 분포의 모양을 같이 봐야 한다.
모집단, 표본, 확률변수
통계 용어를 먼저 나누면 뒤에 나오는 평균과 확률밀도함수를 구분하기 쉽다. 대한민국 성인 남성의 키를 조사한다고 할 때, 관심 대상 전체인 대한민국 성인 남성이 모집단(population)이다. 현실에서는 모집단 전체를 측정하기 어려우므로 그중 일부를 뽑아 키를 재는데, 이렇게 조사 대상으로 선택한 일부가 표본(sample)이다.
표본에 포함된 사람의 키를 실제로 측정해 얻은 172.3cm, 168.7cm 같은 값은 관측값(observation)이다. 모집단 전체의 평균처럼 모집단의 특성을 나타내는 값은 모수(parameter)라고 하고, 표본 평균이나 표본 중간값처럼 관측값에서 계산한 값은 통계량(statistic)이라고 한다. 실제 분석에서는 표본 통계량을 이용해 알 수 없는 모집단의 모수를 추정한다.
그렇다면 확률변수(random variable)는 무엇일까. 모집단에서 한 사람을 무작위로 뽑는 상황을 생각하면, 누가 선택되느냐에 따라 키가 달라진다. 이때 선택 결과를 키라는 숫자로 대응시키는 규칙을 확률변수 X라고 쓴다.
이름에는 변수가 들어가지만, 수학적으로 확률변수는 무작위 실험의 결과를 숫자로 대응시키는 함수다. 동전을 던진 결과에 앞면은 1, 뒷면은 0을 대응시킬 수도 있고, 무작위로 선택한 사람에게 그 사람의 키를 대응시킬 수도 있다. 어떤 결과가 나오느냐에 따라 X의 값이 달라지기 때문에 확률변수라고 부른다.
확률변수는 값의 형태에 따라 나눌 수 있다.
| 구분 | 값의 특징 | 예시 |
|---|---|---|
| 이산확률변수 | 셀 수 있는 값을 가짐 | 하루 방문자 수, 불량품 개수, 주사위 눈 |
| 연속확률변수 | 일정한 구간 안의 연속적인 값을 가짐 | 키, 몸무게, 시간, 온도 |
키를 나타내는 X는 이론적으로 170cm와 170.1cm 사이에도 여러 값을 가질 수 있으므로 연속확률변수로 모델링한다. 그리고 X가 어느 구간에 나타날 가능성이 높은지를 곡선으로 나타내는 함수가 확률밀도함수(probability density function)다. 확률변수 X와 확률밀도함수 는 같은 것이 아니다. X는 무작위 결과를 숫자로 바꾸는 규칙이고, 는 그 숫자들이 분포한 밀도를 설명하는 함수다.
| 용어 | 입력 | 출력 | 역할 |
|---|---|---|---|
| 확률변수 X | 무작위 선택 결과 | 선택된 사람의 키 | 결과를 분석할 숫자로 바꿈 |
| 확률밀도함수 | 가능한 키 x | 그 지점의 확률밀도 | 값들이 어느 구간에 밀집하는지 설명 |
둘 다 수학적으로는 함수지만 입력과 역할이 다르다. 확률변수는 무작위 결과에서 분석할 숫자를 만들고, 확률밀도함수는 그 숫자의 분포를 설명한다.
데이터의 중심을 나타내는 값
기술 통계(descriptive statistics)는 수집한 데이터를 몇 개의 숫자나 그래프로 요약하는 방법이다. 데이터의 중심이 어디인지, 값들이 얼마나 퍼져 있는지, 한쪽으로 치우치거나 유난히 떨어진 값은 없는지를 확인한다.
가장 익숙한 값인 평균(mean)은 모든 값을 더한 뒤 데이터 개수로 나눈다.
평균은 전체 값을 모두 사용하지만 극단적인 값의 영향을 많이 받는다. 대부분의 연봉이 비슷한데 아주 높은 연봉이 몇 개 섞이면, 평균은 실제로 많은 사람이 받는 금액보다 위로 올라갈 수 있다.
중간값(median)은 데이터를 크기순으로 정렬했을 때 가운데에 있는 값이며, 데이터 개수가 짝수라면 가운데 두 값의 평균을 사용한다. 극단값이 있어도 순서의 가운데만 보기 때문에 평균보다 영향을 덜 받는다.
범주형 데이터에서는 평균이나 중간값을 그대로 적용할 수 없는 경우가 많다. 혈액형이나 제품 종류처럼 순서가 없는 범주는 더하거나 가운데를 계산할 수 없으므로, 가장 자주 등장한 값인 최빈값(mode)을 사용한다.
| 데이터 종류 | 대표적인 중심값 | 예시 |
|---|---|---|
| 수치형 데이터 | 평균, 중간값 | 키, 가격, 시험 점수 |
| 순서가 있는 범주형 데이터 | 중간값, 최빈값 | 만족도 등급, 학점 |
| 순서가 없는 범주형 데이터 | 최빈값 | 혈액형, 제품 종류 |
A, B, C처럼 순서가 있는 등급은 중간 등급을 말할 수 있지만, 등급 사이의 간격이 동일하다고 보장할 수는 없다. 그래서 A와 B를 숫자처럼 더해 평균을 구하는 방식은 등급을 어떻게 수치화했는지에 따라 의미가 달라진다.
사분위수와 IQR
데이터를 정렬한 뒤 네 구간으로 나누면 사분위수(quartile)를 구할 수 있다. 1사분위수 Q1은 데이터의 25%가 그 값 이하에 있는 지점이고, 2사분위수 Q2는 50% 지점이라서 중간값과 같다. 3사분위수 Q3는 75% 지점이다.
최솟값과 최댓값이 전체 범위를 보여 준다면, Q1과 Q3는 가운데 절반의 데이터가 놓인 범위를 보여 준다. 두 값의 차이를 사분위 범위(IQR, Interquartile Range)라고 한다.
IQR은 극단값의 영향을 비교적 적게 받으면서 데이터가 얼마나 퍼져 있는지 나타낸다. IQR이 작으면 가운데 50%가 좁은 구간에 모여 있고, 크면 더 넓게 퍼져 있다.
이상치 후보를 찾을 때는 보통 다음 울타리를 사용한다.
울타리 밖에 있는 값은 이상치 후보로 표시한다. 다만 이 기준을 넘었다고 무조건 오류인 것은 아니다. 매출 급등이나 트래픽 폭증처럼 드물지만 실제로 발생한 사건일 수 있으므로, 제거하기 전에 데이터가 만들어진 상황을 확인해야 한다.
한 점의 확률을 면적으로 계산하는 이유
앞에서 정의한 연속확률변수 X를 대한민국 성인 남성 중 무작위로 선택한 한 사람의 키라고 하자. X가 정확히 170cm일 확률을 묻는다면 수학적으로는 0이 된다. 여기서 정확히 170cm는 169.999cm부터 170.001cm까지의 구간이 아니라 소수점 아래가 끝없이 이어지는 단 하나의 값이다.
연속확률분포에서는 확률밀도함수 의 높이를 그대로 확률로 사용하지 않는다. 특정 구간에 해당하는 곡선 아래의 면적이 확률이고, 한 점은 너비가 0이므로 그 아래 면적도 0이다.
확률이 0이라는 말은 그 값이 논리적으로 불가능하다는 뜻이 아니다. 연속된 무한히 많은 값 중 한 점이 차지하는 면적이 0이라는 뜻이다. 실제 측정값은 측정 도구의 정밀도에 맞춰 반올림되므로 170cm라고 기록된 사람은 일정한 구간 안에 들어온 사람이다. 예를 들어 1cm 단위로 반올림했다면 169.5cm 이상 170.5cm 미만인 구간의 확률을 계산해야 한다.
IQR 울타리도 같은 구분이 필요하다. 울타리 선 자체에 값이 놓일 확률을 보는 게 아니라, 하한보다 작거나 상한보다 큰 범위에 관측값이 얼마나 존재하는지를 확인한다. 게다가 IQR 울타리는 특정 확률분포에서 유도한 확률 기준이 아니라, 표본의 사분위수를 이용해 극단값 후보를 찾는 기술 통계 규칙이다.
히스토그램과 KDE로 분포 보기
히스토그램은 값을 여러 구간으로 나눈 뒤 각 구간에 관측값이 몇 개 들어 있는지 막대로 표시한다. 데이터가 어디에 많이 모였는지 바로 볼 수 있지만, 구간의 개수와 폭을 어떻게 정하느냐에 따라 그래프 모양이 달라진다.
KDE(Kernel Density Estimation)는 각 데이터 주변에 작은 곡선을 놓고 모두 더해서 부드러운 밀도 곡선을 만드는 방법이다. 히스토그램의 각진 모양을 부드럽게 표현하지만, KDE의 세로축 값도 그 지점의 확률 자체가 아니라 확률밀도다. 구간 아래의 면적을 계산해야 확률이 된다.
KDE에서는 대역폭(bandwidth)이 중요하다. 대역폭이 너무 작으면 개별 데이터의 작은 변화까지 따라가서 곡선이 울퉁불퉁해지고, 너무 크면 서로 다른 분포의 특징이 한 덩어리로 뭉개질 수 있다. 따라서 부드러워 보인다는 이유만으로 곡선을 그대로 해석하지 않고, 히스토그램과 함께 확인해야 한다.
왜도와 첨도
왜도(skewness)는 분포가 좌우 어느 방향으로 치우쳤는지를 나타낸다. 오른쪽 꼬리가 길면 양의 왜도, 왼쪽 꼬리가 길면 음의 왜도라고 한다.
오른쪽으로 긴 극단값이 있으면 평균이 그 방향으로 끌려가므로 보통 평균이 중간값보다 커진다. 반대로 왼쪽 꼬리가 길면 평균이 중간값보다 작아질 수 있다. 이 관계는 분포를 빠르게 읽는 단서지만, 모든 데이터에서 반드시 같은 순서를 보장하는 공식은 아니다.
첨도(kurtosis)는 분포의 뾰족함으로 소개되는 경우가 많지만, 정확히는 평균에서 멀리 떨어진 값과 꼬리 부분에 얼마나 무게가 실리는지를 반영한다. 첨도가 높으면 극단값이 나타날 가능성과 꼬리의 영향이 커질 수 있다. 정규분포의 첨도를 3으로 두기도 하고, 여기서 3을 뺀 초과 첨도(excess kurtosis)를 사용해 정규분포를 0으로 두기도 하므로 어떤 정의를 사용했는지 확인해야 한다.
박스플롯에 표시되는 것
박스플롯(box plot)은 사분위수와 이상치 후보를 한 번에 보여 준다. 상자의 아래쪽은 Q1, 가운데 선은 중간값 Q2, 위쪽은 Q3이고 상자의 높이가 IQR이다.
상자 밖으로 이어지는 선을 수염(whisker)이라고 한다. 기본적인 1.5 IQR 규칙에서는 수염이 단순히 최솟값과 최댓값까지 가는 것이 아니라, 아래쪽과 위쪽 울타리 안에 있는 실제 관측값 중 가장 바깥 값까지 이어진다. 울타리 밖의 관측값은 점으로 따로 표시되며 이상치 후보가 된다.
이상치 후보 아래 수염 Q1 중간값 Q3 위 수염 이상치 후보
• ├──────────[──────────│──────────]──────────┤ •
<----------- IQR ----------->
박스플롯만으로 분포의 봉우리가 하나인지 여러 개인지까지 알 수는 없다. 서로 다른 분포도 사분위수가 같으면 비슷한 박스플롯을 만들 수 있어서, 히스토그램이나 KDE와 함께 봐야 분포의 실제 모양을 더 정확히 확인할 수 있다.
이번 복습에서는 평균이나 중간값 하나를 계산하는 것보다, 어떤 데이터에 어떤 요약값을 써야 하는지가 더 중요했다. 평균은 전체 값을 사용하지만 극단값에 민감하고, 중간값과 IQR은 순서를 이용해 중심과 퍼짐을 보여 준다. 히스토그램과 KDE는 숫자만으로 보이지 않는 분포의 모양을 보완하고, 박스플롯은 사분위수와 이상치 후보를 짧게 요약한다.
앞으로 Seaborn으로 그래프를 그릴 때도 모양만 확인하지 않고, 세로축이 개수인지 밀도인지, 박스플롯의 점이 왜 이상치 후보인지, 평균과 중간값이 왜 벌어졌는지를 함께 확인해보려고 한다.