3.4 기술 통계¶
넘파이는 다음과 같은 데이터 집합에 대해 간단한 통계를 계산하는 함수를 제공한다. 이러한 값들을 통틀어 기술 통계(descriptive statistics)라고 한다.
데이터의 개수(count)
평균(mean, average)
분산(variance)
표준 편차(standard deviation)
최댓값(maximum)
최솟값(minimum)
중앙값(median)
사분위수(quartile)
예를 들어 다음과 같은 데이터 \(x\)가 있다고 하자.
\(x\)를 이루는 숫자 하나하나를 수학 기호로는 \(x_1, x_2, \cdots, x_N\)처럼 표시한다. 위 예에서 \(x_1 = 18\), \(x_2 = 5\)이다.
넘파이에서는 이러한 데이터를 1차원 배열로 구현한다.
x = np.array([18, 5, 10, 23, 19, -8, 10, 0, 0, 5, 2, 15, 8,
2, 5, 4, 15, -1, 4, -7, -24, 7, 9, -6, 23, -13])
표본 평균¶
평균을 통계용어로는 표본 평균(sample average, sample mean)이라고 한다. \(x\) 데이터에 대한 표본 평균은 \(\bar{x}\)라고 표시하며 다음과 같이 계산한다. 이 식에서 \(N\)은 데이터의 개수이다.
np.mean(x) # 평균
4.8076923076923075
표본 분산¶
표본 분산(sample variance)은 데이터와 표본 평균간의 거리의 제곱의 평균이다. 표본 분산이 작으면 데이터가 모여있는 것이고 크면 흩어져 있는 것이다. 수학 기호로는 \(s^2\)이라고 표시하며 다음과 같이 계산한다.
np.var(x) # 분산
115.23224852071006
np.var(x, ddof=1) # 비편향 분산. 추후 공부하게 된다.
119.84153846153846
표본 표준편차¶
표본 표준편차(sample standard variance)는 표본 분산의 양의 제곱근 값이다. \(s\)이라고 표시한다.
np.std(x) # 표준 편차
10.734628476137871
최댓값과 최솟값¶
최댓값(maximum)은 데이터 중에서 가장 큰 값을, 최솟값(minimum)은 가장 작은 값을 의미한다.
np.max(x) # 최댓값
23
np.min(x) # 최솟값
-24
중앙값¶
중앙값(median)은 데이터를 크기대로 정렬하였을 때 가장 가운데에 있는 수를 말한다. 만약 데이터의 수가 짝수이면 가장 가운데에 있는 두 수의 평균을 사용한다.
np.median(x) # 중앙값
5.0
사분위수¶
사분위수(quartile)는 데이터를 가장 작은 수부터 가장 큰 수까지 크기가 커지는 순서대로 정렬하였을 때 1/4, 2/4, 3/4 위치에 있는 수를 말한다. 각각 1사분위수, 2사분위수, 3사분위수라고 한다. 1/4의 위치란 전체 데이터의 수가 만약 100개이면 25번째 순서, 즉 하위 25%를 말한다. 따라서 2사분위수는 중앙값과 같다.
때로는 위치를 1/100 단위로 나눈 백분위수(percentile)을 사용하기도 한다. 1사분위수는 25% 백분위수와 같다.
np.percentile(x, 0) # 최소값
-24.0
np.percentile(x, 25) # 1사분위 수
0.0
np.percentile(x, 50) # 2사분위 수
5.0
np.percentile(x, 75) # 3사분위 수
10.0
np.percentile(x, 100) # 최댓값
23.0