In [1]:
from __future__ import print_function, division
In [2]:
import numpy as np
import pandas as pd
from scipy import stats
또한 GongSu25 내용 전체를 임포트한다.
In [3]:
from GongSu25_Statistics_Sampling_Distribution import *
In [4]:
weed_pd.head()
Out[4]:
In [5]:
ca_2014_01 = weed_pd[(weed_pd.State=="California")\
& (weed_pd.year==2014)\
& (weed_pd.month==1)].HighQ
자료형을 어레이로 변환한다.
이유: stats 모듈은 데이터프레임 대신에 어레이를 활용한다.
In [6]:
weed_ca_jan2014 = np.array(ca_2014_01)
2014년 1월 거래가 평균
In [7]:
weed_ca_jan2014.mean()
Out[7]:
In [8]:
ca_2015_01 = weed_pd[(weed_pd.State=="California")\
& (weed_pd.year==2015)\
& (weed_pd.month==1)].HighQ
In [9]:
weed_ca_jan2015 = np.array(ca_2015_01)
2015년 1월 거래가 평균
In [10]:
weed_ca_jan2015.mean()
Out[10]:
In [11]:
weed_ca_jan2014.mean() - weed_ca_jan2015.mean()
Out[11]:
앞서 살펴 보았듯이 캘리포니아 주에서 2014년 1월에 거래된 상품 담배(식물) 도매가의 평균이 2015년 1월에 비해 4.84 달러 정도 높았다. 이 정도 차이가 유의미한지 여부를 판단해 보자. 즉, 2015년 1월의 도매가 1년 전에 비해 현저하게 떨어졌는지, 아니면 그 정도는 인정할 수 있는 오차범위 안에 있는 것인지 여부를 판단해야 한다.
여기서는 t-검정 방식을 이용하여 평균 도매가의 차이의 유의미성을 판단한다. 이를 위해 영가설을 아래와 같이 세운다
H0: 2014년 1월과 2015년 1월 상품 담배(식물) 도매가 평균값의 차이는 별 의미가 없다.
이제 t-검정을 이용하여 p-값을 결정한다.
ttest_ind
함수를 이용하면 간단하게 p-값을 구할 수 있다.
In [12]:
stats.ttest_ind(weed_ca_jan2014, weed_ca_jan2015, equal_var=True)
Out[12]:
In [13]:
weed_jan2014 = weed_pd[(weed_pd.year==2014) & (weed_pd.month==1)][["HighQN", "MedQN", "LowQN"]]
weed_jan2014.head()
Out[13]:
In [14]:
weed_jan2015 = weed_pd[(weed_pd.year==2015) & (weed_pd.month==1)][["HighQN", "MedQN", "LowQN"]]
weed_jan2015.head()
Out[14]:
In [15]:
Expected = np.array(weed_jan2014.apply(sum, axis=0))
Expected
Out[15]:
In [16]:
Observed = np.array(weed_jan2015.apply(sum, axis=0))
Observed
Out[16]:
이제 2014년도 데이터를 기대도수로, 2015년도 데이터를 관측도수로 활용하여 카이-제곱 통계량 $\chi^2$을 계산할 수 있으며, 그 값을 이용하여 p-값을 계산할 수 있다.
하지만, 여기서는 p-값을 구하는 과정은 설명하지 않고, stats 모듈의 chisquare 함수를 활용하여 p-값을 구한다.
In [17]:
stats.chisquare(Observed, Expected)
Out[17]: