본문 바로가기
오라클 게시판/오라클 함수

【오라클(Oracle) SQL 함수】 STATS_T_TEST_* 함수

by 기서무나구물 2021. 10. 20.

포스팅 목차

     

    STATS_T_TEST_*

     


    The t-test functions are:

    • STATS_T_TEST_ONE : 일 표본 t검정
    • STATS_T_TEST_PAIRED : 이 표본 대응 t검정(crossed t-test로 알려짐.)
    • STATS_T_TEST_INDEP : 같은 분산을 가지는 2개 독립 그룹의 t검정(합동 분산(Pooled variance))
    • STATS_T_TEST_INDEPU : 다른 분산을 가지는 2개 독립 그룹의 t검정(비 합동 분산)

     


    문법

     

    stats_t_test::=

     


    목적 

    t검정은 평균의 차이의 유의성을 측정한다.

    2개 그룹의 평균과 상수값을 가지는 한 개 그룹의 평균을 비교하는데 이용한다. STATS_T_TEST_*함수는 3개의 인수를 취한다. 2개의 식과 VARCHAR2 타입의 반환값을 취한다. 함수는 세 번째 인수의 값에 의해 정의되는 하나의 수자를 반환한다. 만약 3번째 인수를 생략하면, 기본값은 TWO_SIDED_SIG이다. 반환값의 의미는 Table 7-9 참조.

     

    Table 7-9 STATS_T_TEST_* 반환값

    STATISTIC t의 관측치값
    DF 자유도
    ONE_SIDED_SIG t의 한쪽 꼬리 유의성
    TWO_SIDED_SIG t의 양쪽 꼬리 유의성

    t의 관측값의 유의성은 t의 값이 우연에 의해 획득되는 확률 값이다.(0과 1 사이의 수자) 이 수치가 작으면, 평균 사이의 유의성은 더 커진다.

    자유도는 t의 관측값 결과는 t검정의 타입에 의존한다. 예를 들어, 일표본 t검정(STATS_T_TEST_ONE)은, 자유도는 표본에서 관측된 값에서 1을 뺀 값이다.

     


    관련 함수

    함수명 함수내용
    STATS_BINOMIAL_TEST 두 개의 유효한 값이 존재하는 이분형 변수(이분 변수, 두 개의 배타적인 값을 가지는 변수)에 대해서 동질성 검증을 위한 정확도 검증 작업(Exact probability test)을 수행한다.
    STATS_CROSSTAB 두 개의 명목 변수를 분석하는 방법이다. 
    STATS_F_TEST 두 개의 분산이 유의한 차가 있는지 테스트(F 검정)한다.
    STATS_KS_TEST 두 개의 표본이 같은 모집단에 속하고 있는지 또는 동일한 분포를 가지는 모집단에 속하고 있는지 테스트하는 Kolmogorov-Smirnov함수이다.
    STATS_MODE 값의 집합을 인수로 취하여, 가장 큰 빈도를 가지는 값(최빈값, mode)을 반환한다.
    STATS_MW_TEST A Mann Whitney test는 2개의 독립 표본(independent samples)을 비교한다.
    STATS_ONE_WAY_ANOVA 일원분산분석 함수(STATS_ONE_WAY_ANOVA)는 분산의 다른 2개 추정치 비교하여 통계적 유의성에 대한 평균(그룹 또는 변수에 대한)의 유의한 차이를 검증한다. 
    STATS_T_TEST_* t검정은 평균의 차이의 유의성을 측정한다.

    • STATS_T_TEST_ONE: 일 표본 t검정
    • STATS_T_TEST_PAIRED: 이 표본 대응 t검정(crossed t-test로 알려짐.)
    • STATS_T_TEST_INDEP: 같은 분산을 가지는 2개 독립 그룹의 t검정(합동 분산(Pooled variance))
    • STATS_T_TEST_INDEPU: 다른 분산을 가지는 2개 독립 그룹의 t검정(비 합동 분산)
    STATS_WSR_TEST 대응쌍 표본의 윌콕스 부호 순위 검증(Wilcoxon Signed Ranks test)을 수행하여 표본간의 차이가 유의한 차이가 있는지 여부를 검정한다.

     


    예제 

    • STATS_T_TEST_ONE

    STATS_T_TEST_ONE함수에서, expr1은 표본이고, expr2는 표본 평균과 비교되는 상수 평균이다. 이 함수는 표본 평균과 알려진 평균과의 차이를, 평균의 표준오차로 나눈 t의 값을 획득한다.(STATS_T_TEST_PAIRED에서는, 오히려 평균의 차이의 표준 오차로 나눈다.) STATS_T_TEST_ONE 예제

    다음 예제는 평균 표시 가격과 상수값 60 사이의 차이의 유의성을 정의한다.

    Oracle Programming
    SELECT AVG(prod_list_price) group_mean,
           STATS_T_TEST_ONE(prod_list_price, 60, 'STATISTIC') t_observed,
           STATS_T_TEST_ONE(prod_list_price, 60) two_sided_p_value
    FROM   sh.products;

     

    Results
    GROUP_MEAN T_OBSERVED TWO_SIDED_P_VALUE
    ---------- ---------- -----------------
    139.545556 2.32107746        .023158537

     


    • STATS_T_TEST_PAIRED

    STATS_T_TEST_PAIRED함수에서는, expr1과 expr2는 평균이 비교되는 2개의 표본이다. 이 함수는 표본 평균 사이의 차이를 평균의 차이의 표준오차로 나눈 t의 값을 획득한다.(STATS_T_TEST_ONE에서는 오히려 평균의 표준오차로 나눈다.

     


    • STATS_T_TEST_INDEP and STATS_T_TEST_INDEPU

    STATS_T_TEST_INDEP와 STATS_T_TEST_INDEPU함수에서는, expr1은 그룹 열이고, expr2는 값의 표본이다. 합동 분산 버전(STATS_T_TEST_INDEP)은 같은 분산을 가지는 2개의 분포에 대하여 평균이 같은지 또는 다른지를 검증한다. 비합동 분산 버전(STATS_T_TEST_INDEPU)은 만약 2개의 분포가 유의하게 비록 다른 분산을 가졌다고 알려졌지만, 평균이 같은지 다른지를 검증한다.

    이 함수를 이용하기 전에, 표본의 분산이 유의한 차이가 있는지 판단하기를 추천한다. 만약 유의한 차가 있다면, 데이터는 다른 모양을 가지는 분포일 가능성이 있어서, 평균의 차이가 유효하지 않은 경유가 있다. 분산의 차이를 판단하기 위해서 f검정을 실행할 수 있다. 만약 유의한 차이가 없다면, STATS_T_TEST_INDEP함수를 이용한다. 만약 유의한 차이가 있다면, STATS_T_TEST_INDEPU함수를 이용한다. STATS_T_TEST_INDEP 예제

    다음 예제는 분포가 유사한(합동) 분산을 가진다고 가정되는 남자와 여자에 대한 평균 판매액 사이의 차이의 유의성을 정의한다.

    Oracle Programming
    SELECT SUBSTR(cust_income_level, 1, 22) income_level,
           AVG(DECODE(cust_gender, 'M', amount_sold, null)) sold_to_men,
           AVG(DECODE(cust_gender, 'F', amount_sold, null)) sold_to_women,
           STATS_T_TEST_INDEP(cust_gender, amount_sold, 'STATISTIC') t_observed,
           STATS_T_TEST_INDEP(cust_gender, amount_sold) two_sided_p_value
    FROM   sh.customers c, sh.sales s
    WHERE  c.cust_id = s.cust_id
    GROUP BY ROLLUP(cust_income_level);

     

    Results
    INCOME_LEVEL           SOLD_TO_MEN SOLD_TO_WOMEN T_OBSERVED TWO_SIDED_P_VALUE
    ---------------------- ----------- ------------- ---------- -----------------
    A: Below 30,000          105.28349    99.4281447 -1.9880629        .046811482
    B: 30,000 - 49,999       102.59651    109.829642 3.04330875        .002341053
    C: 50,000 - 69,999      105.627588    110.127931 2.36148671        .018204221
    D: 70,000 - 89,999      106.630299     110.47287 2.28496443        .022316997
    E: 90,000 - 109,999     103.396741    101.610416 -1.2544577        .209677823
    F: 110,000 - 129,999     106.76476    105.981312 -.60444998        .545545304
    G: 130,000 - 149,999    108.877532     107.31377 -.85298245        .393671218
    H: 150,000 - 169,999    110.987258    107.152191 -1.9062363        .056622983
    I: 170,000 - 189,999    102.808238     107.43556 2.18477851        .028908566
    J: 190,000 - 249,999    108.040564    115.343356 2.58313425        .009794516
    K: 250,000 - 299,999    112.377993    108.196097 -1.4107871        .158316973
    L: 300,000 and above    120.970235    112.216342 -2.0642868        .039003862
                            107.121845     113.80441 .686144393        .492670059
                            106.663769    107.276386 1.08013499        .280082357
    
    14 rows selected.

     


    • STATS_T_TEST_INDEPU 예제

    다음 예제는 분포가 유의한 차이의 분산(비합동분산)을 가졌다고 알려진 남자와 여자에 대한 평균 판매액 사이의 유의성을 정의한다.

    Oracle Programming
    SELECT SUBSTR(cust_income_level, 1, 22) income_level,
           AVG(DECODE(cust_gender, 'M', amount_sold, null)) sold_to_men,
           AVG(DECODE(cust_gender, 'F', amount_sold, null)) sold_to_women,
           STATS_T_TEST_INDEPU(cust_gender, amount_sold, 'STATISTIC') t_observed,
           STATS_T_TEST_INDEPU(cust_gender, amount_sold) two_sided_p_value
    FROM   sh.customers c, sh.sales s
    WHERE  c.cust_id = s.cust_id
    GROUP BY ROLLUP(cust_income_level);

     

    Results
    INCOME_LEVEL           SOLD_TO_MEN SOLD_TO_WOMEN T_OBSERVED TWO_SIDED_P_VALUE
    ---------------------- ----------- ------------- ---------- -----------------
    A: Below 30,000          105.28349    99.4281447 -2.0542592        .039964704
    B: 30,000 - 49,999       102.59651    109.829642 2.96922332        .002987742
    C: 50,000 - 69,999      105.627588    110.127931  2.3496854        .018792277
    D: 70,000 - 89,999      106.630299     110.47287 2.26839281        .023307831
    E: 90,000 - 109,999     103.396741    101.610416 -1.2603509        .207545662
    F: 110,000 - 129,999     106.76476    105.981312 -.60580011        .544648553
    G: 130,000 - 149,999    108.877532     107.31377 -.85219781        .394107755
    H: 150,000 - 169,999    110.987258    107.152191 -1.9451486        .051762624
    I: 170,000 - 189,999    102.808238     107.43556 2.14966921        .031587875
    J: 190,000 - 249,999    108.040564    115.343356 2.54749867        .010854966
    K: 250,000 - 299,999    112.377993    108.196097 -1.4115514        .158091676
    L: 300,000 and above    120.970235    112.216342 -2.0726194        .038225611
                            107.121845     113.80441 .689462437        .490595765
                            106.663769    107.276386 1.07853782        .280794207
    
    14 rows selected.

     


    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

     

    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크

     

    반응형

    댓글