-
[Concept] Hypothesis TestAI부트캠프 2021. 1. 6. 00:02
통계
기술통계치 : 숫자로 데이터에 대해 기술한 것 (mean, median, standard deviation 등등)
- pandas에서는 describe() 함수 사용
추리통계치 : 전수조사가 아닌 일부를 sampling해서 통계치를 내는 것
*sampling 방법
-
simple random sampling
-
systematic sampling (규칙을 기반으로 sampling)
-
stratified random sampling (그룹 나누고 그룹안에서 random sampling)
-
cluster sampling (그룹 나누고 특정 그룹을 선택)
가설 검정 (Hypothesis Test)
주어진 상황에 대해, 하고자 하는 주장이 맞는지 아닌지 확인하는 것
표본평균의 표본오차 : 표본오차는 sample size의 제곱근에 반비례, 즉 sample size가 커지면 가설검정에 대한 신뢰성도 높아진다.
Student t-test
- One sample t-test : 1개 sample 값들의 평균을 '특정값'과 비교 (pandas에서는 stats.ttest_1samp 함수로 계산 가능)
- Two sample t-test : 2개 sample 값들의 평균값들을 서로 비교 (pandas에서는 stats.ttest_ind 함수로 계산 가능, independent t-test)
t-test process
- Null Hypothesis (귀무가설) 설정 : what we want to test
- Alternative Hypothesis (대안가설) 설정 : null hypothesis 외 모두
- Confidence level (신뢰도) 설정 : 모수가 신뢰구간 안에 포함될 확률 (주로 95%, 99% 사용)
- p-value 확인 : 0~0.05 - 귀무가설이 틀렸다 / 0.05~0.1 - 애매하다 / 0.1 이상 - 귀무가설은 틀리지 않았다
- 가설에 대한 결론 내림
- One side test : sample data의 평균이 ~ 보다 크다/작다/크지않다/작지않다 를 판단
- Two side test : sample data의 평균이 ~와 같다/같지않다 를 판단
t-statistic & p-value
*https://youtu.be/AGh66ZPpOSQ 를 참고하여 작성하였습니다.
위 영상에서는 두가지 종류의 커피 브랜드의 맛을 비교하는 실험을 진행했다. 편의상 브랜드A, 브랜드B라고 하자.
한 사람에게 두가지 커피를 맛보게 하고, 각각의 커피 맛을 0점~10점 중 평가하였다.
예를 들어 브랜드A의 커피맛 평균 점수는 7.3이고, 브랜드B의 커피맛 평균 점수는 7.6이라고 할 때,
우리는 'B의 커피가 A의 커피보다 맛있다!' 라고 말할 수 있다. 하지만 확실히 그렇다고 말할 수 있을까?
여기서 우리는 null hypothesis로 앞의 가설을 일단 반론한다.
null hypothesis : "두 커피 브랜드의 커피맛에는 차이가 없다!"
alternative hypothesis : "둘중에 한 브랜드가 더 낫다!"
그럼, null hypothesis를 검정하기 위해 어떻게 해야할까?
여기서는 두가지 sample들의 평균을 비교하였기 때문에 위에서 말한 two sample t-test를 사용한다.
이때 t-statistic은 다음과 같이 정의될 수 있다.
t-statistic = (observed data - what we expect if null is true) / average variation
#observed data는 두 브랜드 커피맛 평균 점수의 차이 (0.3)
#what we expect는 우리가 null hypothesis에서 가정했던 조건, 두 브랜드 커피맛은 다르지 않다 (0)
#average variation은 standard deviation의 제곱근 값
이렇게 했더니 t-statistic이 약 0.438정도로 나왔다.
이 결과값을 어떻게 해석해야 할까?
방법 1) cirtical t-value를 계산하고, 만약 t-statistic이 critical value보다 크다면 --> null hyp. 는 틀렸다!
방법 2) p-value를 계산하여, 만약 p-value가 alpha level보다 작다면 --> null hyp.는 틀렸다!
*여기서 alpha level은 신뢰구간 이외, 여기서는 0.05로 설정하기로 하자.
*alpha level이 0.05라는 것의 의미 : 장기간 관찰도중, null hyp. 가 틀리지 않았음에도 5% 정도의 test결과값이 우연히 맞을 수 있다
critical t-value를 계산 : t-value 중, t-distribution에서 top 5%에 해당하는 값을 계산하여, cut-off 값과 t-statistic 값을 비교
여기에서는 -2.145, 2.145가 cutoff 값으로 나온다. 우리의 t-statistic 값은 0.438로, 절댓값이 작기 때문에, 우리는 null hypothesis 가 틀렸다고 할 수 없다! (null hypothesis가 옳다고 볼 수 있다)
원래는 방법 1이나 2중 한가지만 선택하지만, p-value도 비교해보자면, p-value는 0.6684정도이고, 위에서 언급한 것처럼 이는 0.1보다 크기 때문에 null hypothesis를 reject 할 수 없다!
따라서 두 브랜드간 맛 차이는 거의 없다고 볼 수 있다는 결론을 내렸다.
그런데, 여기서 생각해보아야 할 점이 있다.
나의 경험에 비추어 얘기해보자면, 나는 하루에 평균적으로 커피를 2잔 이상 마시는 전형적인 coffee-lover인데 반해, 내 동생은 카페인 과민증세 때문에 커피는 입도 못댄다. 나와 동생이 동시에 이 설문조사를 응했다면, 나의 점수와 동생의 점수는 확연히 차이가 났을 것이다.
여기서 outlier 들을 그냥 제외하고 계산하는 방법도 있지만, 두 브랜드에 매긴 점수간 차이를 이용하는 방법도 있을 것이다!
예를 들어 내가 A커피에 8.3점을 주고 B커피에 8.5점을 주었다면, 두 커피의 점수 차는 -0.2가 되는 것이고, 이러한 difference들을 평균내어 one sample t-test에 적용할 수 있을 것이다.
마찬가지로 t-statistic = (observed data - what we expect if null is true) / average variation 이 식을 이용한다.
여기서는 average variation에 difference 값의 standard error를 넣어주면 된다.
결과는 t-statistic이 -3.212.
여기서 t-statistic의 의미를 짚어보고 가자면, t-statistic은 몇개의 standard error들이 평균 값에서 떨어져 있는가를 말해주는 지표이다.
t-statistic 값의 절댓값이 3을 넘는데, 이것은 전체 데이터의 0.3%에 해당하고(당연히 critical t-value는 넘겠지?)
p-value가 0.00582로, 0.05보다 한참 작다.
이것으로 우리의 null hypothesis가 reject되었다!
그러므로 둘 중 한브랜드가 더 낫다!!
pandas 에서 어느 브랜드가 더 나은지 확인하기 위해서는, 우선 우리가 B브랜드 커피가 A브랜드 커피보다 맛있다는 것을 증명하고 싶다고 하면,
1. null hypothesis 로 A > B라는 가설을 세운 후, stats.ttest_ind(A, B)로 p-value를 계산한다.
2. 만약 p/2 < 0.05 라면, null hypothesis는 맞다, 그러니까 우리의 처음 가설이 틀렸다!
3. 만약 p/2 >= 0.05 라면, null hypothesis는 틀렸다, 그러니까 우리의 처음 가설이 맞다!
그러니 이 예제에서는 stats.ttest_ind(A, B)의 p/2 값이 0.05보다 클 것이다라고 예상할 수 있다.
'AI부트캠프' 카테고리의 다른 글
[Concept] Intermediate Linear Algebra (0) 2021.01.19 [Concept] Vectors/ Metrices (0) 2021.01.13 [Method] Feature Engineering (2) 2021.01.04 [Method] Data Visualization (2) 2021.01.02 [Method] Data manipulation (1) 2020.12.31 -