목차8개 항목
출처와 참고
팔만코딩경(42Seoul 커뮤니티 위키)의 「데이터의 위치 추정 ① : 평균」을 바탕으로 재구성한 노트다.
위치 추정이란
집값, 버스 요금, 시험 점수처럼 수치 데이터는 그대로 나열하면 너무 많아 읽을 수 없다. 그래서 데이터 전체를 값 하나로 대표하는데, 이를 대푯값 또는 위치 추정(estimates of location)이라 한다. 데이터가 어디쯤 몰려 있는지, 즉 중심 경향성(central tendency) 을 나타내는 값이다. 탐색적 데이터 분석(EDA)에서 가장 먼저 구하는 값이기도 하다.
| 추정값 | 계산 | 이상치에 대한 강건성 | 쓰는 때 |
|---|---|---|---|
| 산술평균 | 합 ÷ 개수 | 약하다 | 분포가 대칭이고 이상치가 없을 때 |
| 절사평균 | 양 끝 일부를 버린 뒤 평균 | 강하다 | 이상치가 있지만 대부분의 값은 믿을 만할 때 |
| 가중평균 | 가중치를 곱한 합 ÷ 가중치 합 | 가중치 설계에 따라 다르다 | 데이터마다 중요도·표본 크기가 다를 때 |
| 중앙값 | 정렬했을 때 가운데 값 | 매우 강하다 | 소득·집값처럼 한쪽으로 긴 꼬리가 있을 때 |
산술평균
x̄ = (x₁ + x₂ + … + xₙ) / n가장 단순하고 계산이 쉬운 위치 추정이다. 전통 통계학은 모집단 크기를 N, 표본 크기를 n으로 구분하지만, 데이터 분석 실무에서는 둘을 엄격히 나누지 않고 쓰는 경우가 많다.
평균의 함정: 이상치
평균은 모든 값을 똑같이 반영하기 때문에, 유난히 크거나 작은 값 하나가 전체를 끌고 간다. 이런 값을 이상치(outlier)라 한다.
- 국회의원 재산 평균이 수십억 원대였는데, 재산이 조 단위인 의원 한 명이 포함되자 평균이 100억 원을 넘었다. 다른 의원들의 재산은 그대로인데도 그렇다.
- 평균 수명은 영유아 사망과 사고사까지 포함한다. 노화로 인한 사망 시점을 알고 싶다면 평균 대신 사망 원인별 분석이나 최빈 사망 연령을 함께 본다.
그래서 평균을 구하기 전에는 항상 이상치가 있는지부터 확인한다. 탐지에는 정규분포를 가정한 z-점수, 사분위 범위(IQR) 규칙, Isolation Forest, DBSCAN 같은 방법을 쓴다.
절사평균
데이터를 정렬하면 이상치는 양 끝에 몰린다. 양쪽에서 같은 수(p개)를 잘라 내고 남은 값으로 평균을 내면 이상치의 영향이 대부분 사라진다. 이것이 절사평균(trimmed mean)이다.
정렬된 x₁ ≤ x₂ ≤ … ≤ xₙ 에서
Tmean = (x_{p+1} + … + x_{n−p}) / (n − 2p)절사평균을 쓴다는 것은 표본 일부를 잃는 대신 남은 값이 중심을 더 잘 대표한다고 믿는다는 뜻이다. 올림픽 다이빙 개인 종목이 대표적이다. 심판 7명의 점수 중 가장 높은 2개와 가장 낮은 2개를 버리고, 남은 3개의 합에 난이도 계수를 곱한다. 한두 심판의 치우친 판정이 결과를 좌우하지 못하게 하는 장치다. 다만 잘라 내는 비율이 너무 크면 남은 표본이 대표성을 잃으므로, 보통 양쪽 5~25% 정도를 자른다.
가중평균
데이터를 버릴 수 없지만 값마다 중요도가 다를 때는 가중평균(weighted mean)을 쓴다.
Wmean = (w₁x₁ + w₂x₂ + … + wₙxₙ) / (w₁ + w₂ + … + wₙ)가중치 벡터와 데이터 벡터의 내적을 가중치의 합으로 나눈 값이다. 산술평균은 모든 가중치가 1인 특수한 경우라서 분모가 n이 된다.
| 쓰임 | 예 |
|---|---|
| 변동이 크거나 근거가 약한 값의 영향 줄이기 | 소비자물가지수는 품목마다 지출 비중을 가중치로 준다 |
| 크기가 다른 그룹을 공정하게 비교하기 | 표본이 적게 모인 그룹에 가중치를 더 줘 모집단 비율에 맞춘다 |
| 이미 요약된 값 합치기 | 반별 평균을 학생 수로 가중해 학년 평균을 구한다 |
중앙값
중앙값(median)은 데이터를 정렬했을 때 정가운데 값이다. 개수가 짝수면 가운데 두 값의 평균을 쓴다. 값의 크기가 아니라 순서만 보므로, 최댓값이 아무리 커져도 중앙값은 변하지 않는다. 소득·집값처럼 오른쪽 꼬리가 긴 분포에서 "보통 사람"을 보여 줄 때는 평균보다 중앙값이 낫다. 평균과 중앙값의 차이가 크다는 것 자체가 분포가 치우쳤다는 신호다.
파이썬으로 계산하기
import numpy as np
from scipy import stats
x = np.array([3, 4, 4, 5, 5, 5, 6, 6, 7, 120]) # 120은 이상치
w = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 0.1])
np.mean(x) # 16.5 ← 이상치에 끌려감
stats.trim_mean(x, 0.1) # 5.25 ← 양쪽 10%씩 제거
np.average(x, weights=w) # 약 6.26
np.median(x) # 5.0pandas에서는 df["col"].mean(), df["col"].median()을 쓰고, df.describe()로 평균·사분위수를 한 번에 본다.
정리
- 위치 추정은 데이터의 중심을 값 하나로 요약하는 일이다.
- 산술평균은 이상치에 약하므로, 평균을 구하기 전에 이상치부터 확인한다.
- 절사평균은 양 끝을 잘라 강건성을 얻고, 가중평균은 값마다 다른 중요도를 반영한다.
- 꼬리가 긴 분포에서는 중앙값을 함께 보고, 평균과 중앙값의 차이로 치우침을 읽는다.
- 대푯값 하나만 보고 결론 내리지 말고, 어떤 대푯값을 왜 골랐는지 함께 밝힌다.
관련 노트: 파이썬 데이터 분석 프로세스, 머신 러닝 기초: 네 단계 추상화