ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Concept] Hypothesis Test
    AI부트캠프 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

    1. Null Hypothesis (귀무가설) 설정 : what we want to test
    2. Alternative Hypothesis (대안가설) 설정 : null hypothesis 외 모두
    3. Confidence level (신뢰도) 설정 : 모수가 신뢰구간 안에 포함될 확률 (주로 95%, 99% 사용)
    4. p-value 확인 : 0~0.05 - 귀무가설이 틀렸다 / 0.05~0.1 - 애매하다 / 0.1 이상 - 귀무가설은 틀리지 않았다
    5. 가설에 대한 결론 내림

     

    • 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
Designed by Tistory.