Ch3. 분포의 특성

  • 최빈값
  • 중앙값
  • 평균
  • 분산
  • 표준편차
  • 왜도

최빈값 ( mode )

최빈값은 빈도수가 가장 많이 발생한 관찰값을 말함

  • ex) 1, 3, 6, 6, 6, 7, 7, 12, 12, 19 있을때, 최빈값은 6이다.

중앙값 ( median )

중앙값은 수치로 된 자료를 크기순서대로 나열할 때, 가장 가운데에 위치하는 관찰값을 말한다.

  • ex) 1, 2, 4, 5, 7, 9, 10 있을때, 중앙값은 5이다.

산술평균 ( arithmetic mean )

우리가 흔히 사용하는 간단한 평균, 그냥 "평균" 이라고도 한다.

$$\bar{X} = \frac{X_1 + X_2 + \cdots + X_n}{n} = \frac{\sum X_i}{n} $$

가중평균 ( weighted arithmetic mean )

같은 모집단에서 표본을 서로 다른 개수로 뽑은 경우(가중치가 존재하는 경우) 평균값을 구할때 사용

$$\bar{X} = \frac{n_1 \bar{X_1} + n_2 \bar{X_2} + \cdots + n_k \bar{X_k}}{n_1 + n_2 + \cdots + n_k} = \frac{\sum n_i \bar{X_i}}{n_i} $$

평균과 최빈값, 중앙값들의 위치 비교

  • 대칭분포
    • 평균 = 중앙값 = 최빈값 모두 같다
  • 왼쪽꼬리분포 ( skewed to the left )
    • 평균은 중앙값보다 작다
  • 오른쪽꼬리분포 ( skewed to the right )
    • 평균은 중앙값보다 크다

분산 ( variance )

: 자료가 평균으로부터 얼마나 떨어져 분포하는지를 가늠하는 숫자
: 분산이란 각각의 관찰값에 대한 평균과의 편차를 제곱하여 그 평균을 구한 것

  • 모집단의 분산 ( ${ \sigma }^{ 2 }$ )
  • 표본의 분산 ( ${S}^2$)
    • $n$ 대신 $(n-1)$을 나누는 이유는, $(n-1)$을 나누어줌으로써 모집단의 $\sigma$를 추정하는데 더 적절한 표준편차를 구하기 위함이다

<img src="http://www.safetygo.com/xe/files/attach/images/384/602/013/02df6495492411476f5dd9608a8718f6.gif",width=450,height=250>

표준편차 ( standard deviation )

: 분산의 양의 제곱근

  • 모집단의 표준편차 ( $\sigma = \sqrt{\sigma ^2}$ )
  • 표본의 표준편차 ( $S = \sqrt{S ^2}$ )

비대칭도, 왜도 ( skewness )

: 관찰값들이 어느 쪽으로 치우쳐 있는가를 알아보는 척도
: 분포의 모양이 대칭분포에서 얼마나 벗어났는가

Q. 연습문제

  • 다음의 학생들 25명의 시험점수에서 평균과 표준편차를 구하라.

In [1]:
import numpy as np

np.random.seed(0)
data = np.random.randint(40, 100, size=(5, 5))
data


Out[1]:
array([[84, 87, 93, 40, 43],
       [99, 43, 79, 49, 59],
       [61, 90, 76, 63, 46],
       [64, 64, 52, 98, 41],
       [78, 79, 63, 86, 64]])
  • 평균

In [2]:
data.mean()


Out[2]:
68.040000000000006
  • 표준편차

In [3]:
data.std()


Out[3]:
18.340076335718997

In [4]:
# X - mean
dev_arr = data - data.mean()
dev_arr


Out[4]:
array([[ 15.96,  18.96,  24.96, -28.04, -25.04],
       [ 30.96, -25.04,  10.96, -19.04,  -9.04],
       [ -7.04,  21.96,   7.96,  -5.04, -22.04],
       [ -4.04,  -4.04, -16.04,  29.96, -27.04],
       [  9.96,  10.96,  -5.04,  17.96,  -4.04]])

In [5]:
# ( X - mean )^2
dev_arr ** 2


Out[5]:
array([[ 254.7216,  359.4816,  623.0016,  786.2416,  627.0016],
       [ 958.5216,  627.0016,  120.1216,  362.5216,   81.7216],
       [  49.5616,  482.2416,   63.3616,   25.4016,  485.7616],
       [  16.3216,   16.3216,  257.2816,  897.6016,  731.1616],
       [  99.2016,  120.1216,   25.4016,  322.5616,   16.3216]])

In [6]:
# sum( ( X - mean )^2 ) / N
a = (dev_arr ** 2 ).sum() / 25
a


Out[6]:
336.35839999999996

In [7]:
np.sqrt(a)


Out[7]:
18.340076335718997