In [1]:
from __future__ import print_function, division

자료 안내: 여기서 다루는 내용은 아래 사이트의 내용을 참고하여 생성되었음.

https://github.com/rouseguy/intro2stats

모집단 분산 점추정

안내사항

지난 시간에 다룬 21장 내용을 활용하고자 한다. 따라서 아래와 같이 21장 내용을 모듈로 담고 있는 파이썬 파일을 임포트 해야 한다.

주의: GongSu21_Statistics_Averages.py 파일이 동일한 디렉토리에 있어야 한다.


In [2]:
from GongSu21_Statistics_Averages import *

주요 내용

  • 모집단과 표본
  • 모집단 분산의 점추정

주요 예제

21장에서 다룬 미국의 51개 주에서 거래되는 담배(식물)의 도매가격 데이터를 보다 상세히 분석한다.

특히, 캘리포니아 주를 예제로 하여 주(State)별로 담배(식물) 도매가 전체에 대한 거래가의 평균과 분산을 점추정(point estimation)하는 방법을 다룬다.

주요 모듈

  • pandas: 통계분석 전용 모듈
    • numpy 모듈을 바탕으로 하여 통계분석에 특화된 모듈임.
    • 마이크로소프트의 엑셀처럼 작동하는 기능을 지원함
  • datetime: 날짜와 시간을 적절하게 표시하도록 도와주는 기능을 지원하는 모듈
  • scipy: 수치계산, 공업수학 등을 지원하는 모듈

주의: 언급된 모듈은 이미 GongSu21_Statistics_Averages.py 모듈에서 임포트 되었음.

오늘 사용할 데이터

  • 주별 담배(식물) 도매가격 및 판매일자: Weed_Price.csv

아래 그림은 미국의 주별 담배(식물) 판매 데이터를 담은 Weed_Price.csv 파일를 엑셀로 읽었을 때의 일부를 보여준다.

주의: 언급된 파일이 GongSu21_Statistics_Averages 모듈에서 prices_pd 라는 변수에 저장되었음. 또한 주(State)별, 거래날짜별(date) 기준으로 이미 정렬되어 있음.

따라서 아래에서 볼 수 있듯이 예를 들어, prices_pd의 첫 다섯 줄의 내용은 알파벳순으로 가장 빠른 이름을 가진 알라바마(Alabama) 주에서 거래된 데이터 중에서 가정 먼저 거래된 5개의 거래내용을 담고 있다.


In [3]:
prices_pd.head()


Out[3]:
State HighQ HighQN MedQ MedQN LowQ LowQN date
20094 Alabama 339.65 1033 198.04 926 147.15 122 2013-12-27
20859 Alabama 339.65 1033 198.04 926 147.15 122 2013-12-28
21573 Alabama 339.75 1036 198.26 929 149.49 123 2013-12-29
22287 Alabama 339.75 1036 198.81 930 149.49 123 2013-12-30
22797 Alabama 339.42 1040 198.68 932 149.49 123 2013-12-31

모집단과 표본

Weed_Price.csv 파일에 담긴 담배(식물) 도매가는 미국에서 거래된 모든 도매가 정보가 아니라 소수의 거래 정보만을 담고 있다. 이와같이 조사대상의 소수만을 모아 둔 데이터를 표본(Sample)이라 부른다. 반면에 미국에서 거래되는 모든 담배(식물) 도매가 전체는 현재 조사하고자 하는 대상들의 모집단이라 부른다.

여기서는 Weed_Price.csv 파일에 담긴 표본을 이용하여 모집단에 대한 분산과, 주별로 이루어진 거래 사이의 상관관계를 확인하고자 한다.

참고: 모집단과 표본, 점추정에 대한 보다 자세한 설명은 아래의 두 파일을 참조한다.

  • GongSu22_Statistics_Sampling_a.pdf
  • GongSu22_Statistics_Sampling_b.pdf

모집단 평균값과 분산의 점추정

  • 모집단의 평균값 점추정: 표본의 평균값을 그대로 이용한다. $$\hat{x} = \bar x = \frac{\Sigma_{i=1}^{n} x_i}{n}$$
    • $\hat x\,\,$는 모집단 평균값의 점추정 기호
    • $\bar x$는 표본 데이터들의 평균값 기호
  • 모집단의 분산 점추정: 표본 데이터를 이용해서 모집단의 분산을 추정할 수 있다. $$\hat\sigma\,\, {}^2 = s^2 = \frac{\Sigma_{i = 1}^{n}(x_i - \bar x)^2}{n-1}$$
    • $\hat \sigma\,\, {}^2$는 모집단 분산의 점추정 기호

주의:

  • $s^2$을 계산할 때 $n$ 대신에 $n-1$로 나누는 것에 주의한다.
  • 모집단의 분산은 일반적으로 표본의 분산보다 좀 더 크기 때문이다.

캘리포니아 주에서 거래된 HighQ 담배(식물)의 도매가 전체에 대한 분산의 점추정

먼저 prices_pd에 포함된 데이터 중에서 캘리포니아 주에서 거래된 상품(HighQ) 담배(식물)의 가격들에 대한 연산이 필요하다. 즉, 아래 공식의 분자를 계산하기 위한 준비과정이다.

$$s^2 = \frac{\Sigma_{i = 1}^{n}(x_i - \bar x)^2}{n-1}$$

주의: 캘리포니아 주에서 거래된 상품(HighQ) 담배(식물)의 도매가의 평균값은 ca_mean으로 이미 계산되었다.


In [4]:
california_pd['HighQ_dev'] = (california_pd['HighQ'] - ca_mean) ** 2
california_pd.head()


Out[4]:
State HighQ HighQN MedQ MedQN LowQ LowQN date HighQ_dev
20098 California 248.77 12021 193.44 12724 193.88 770 2013-12-27 11.518389
20863 California 248.74 12025 193.44 12728 193.88 770 2013-12-28 11.315657
21577 California 248.76 12047 193.55 12760 193.60 772 2013-12-29 11.450612
22291 California 248.82 12065 193.54 12779 193.80 773 2013-12-30 11.860277
22801 California 248.76 12082 193.54 12792 193.80 773 2013-12-31 11.450612

이제 캘리포니아 주 거래된 상품(HighQ) 담배(식물)의 거래가 전체 모집단에 대한 분산 점추정을 계산할 수 있다.

주의: 표본의 크기는 ca_count이다.


In [5]:
ca_HighQ_variance = california_pd.HighQ_dev.sum() / (ca_count - 1)
ca_HighQ_variance


Out[5]:
2.982686287981227

주의:

  • DataFrame 자료형의 연산은 넘파이 어레이의 연산처럼 항목별로 실행된다.
  • sum 메소드의 활용을 기억한다.

표준편차의 점추정

모집단 분산의 점추정으로 얻은 값에다가 루트를 씌우면 된다.


In [6]:
# 캘리포니아에서 거래된 상품(HighQ) 담배(식물) 도매가의 표준편차
ca_HighQ_SD = np.sqrt(ca_HighQ_variance)
ca_HighQ_SD


Out[6]:
1.7270455373212448