본문 바로가기

[오라클 레퍼런스 함수] STATS_T_TEST_* - 두 그룹의 평균 차이 검정(test)

by ㅇㅍㅍ 2023. 8. 20.
[오라클 레퍼런스 함수] STATS_T_TEST_* - 두 그룹의 평균 차이 검정(test)
728x90

 

STATS_T_TEST_*

 

t-test 함수는 다음과 같습니다:

STATS_T_TEST_ONE: 단일 샘플 t-test (one-sample t-test)
STATS_T_TEST_PAIRED: 두 개 샘플 t-test 또는 한 쌍의 t-test (two-sample, paired t-test)
STATS_T_TEST_INDEP: 분산이 동일한 두 독립 그룹의 t-test (pooled variances)
STATS_T_TEST_INDEPU: 분산이 다른 두 독립 그룹의 t-test (unpooled variances)

 

구문

{
STATS_T_TEST_ONE ( expr1 [, expr2 ]
|
{ { STATS_T_TEST_PAIRED
| STATS_T_TEST_INDEP
| STATS_T_TEST_INDEPU
} ( expr1, expr2
}
}
[, { { STATISTIC | ONE_SIDED_SIG } , expr3 | TWO_SIDED_SIG | DF } ] )

 

목적

t-test은 평균 차이의 유의성을 측정합니다. 이를 사용하여 두 그룹의 평균 또는 한 그룹의 평균을 상수와 비교할 수 있습니다. 각 t-test 함수는 두 개의 표현식 인수를 취하며, 단일 샘플 함수 (STATS_T_TEST_ONE)의 경우 두 번째 표현식은 선택적입니다. 각 t-test 함수는 선택적으로 세 번째 인수를 사용하며, 이를 통해 함수가 반환하는 NUMBER 값의 의미를 지정할 수 있습니다. 이것은 표 7-9에 표시된 대로 의미를 지정합니다. 이 인수에는 텍스트 리터럴을 지정하거나 상수 문자 값으로 평가되는 바인드 변수 또는 표현식을 사용할 수 있습니다. 세 번째 인수를 생략하면 기본값은 'TWO_SIDED_SIG'입니다.

 

참고:

Oracle Database Globalization Support Guide의 부록 C는 STATS_T_TEST_* 함수의 정렬 결정 규칙(collation determination rules)에 대한 정보를 제공합니다.

 

표 7-9 STATS_T_TEST_* 반환 값

인수 반환 값 의미
'STATISTIC' t의 관측값
'DF' 자유도(Degree of freedom)
'ONE_SIDED_SIG' t의 단측 유의성(significance)
'TWO_SIDED_SIG' t의 양측 유의성(significance)

 

두 독립 STATS_T_TEST_* 함수는 세 번째 인수로 'STATISTIC' 또는 'ONE_SIDED_SIG'가 지정된 경우 네 번째 인수 (expr3)를 사용할 수 있습니다. 이 경우 expr3expr1의 어떤 값이 높은 값 또는 상단 꼬리의 거부 영역에 해당하는 값을 나타냅니다.

t의 관측값의 유의성은 t의 값이 우연히 얻어진 확률로, 0과 1 사이의 수입니다. 값이 작을수록 평균 간의 차이가 유의미합니다. 일측 유의성은 항상 상단 꼬리와 관련이 있습니다. 단일 샘플 및 쌍체 t-검정의 경우 높은 값은 첫 번째 표현식입니다. 독립 t-검정의 경우 높은 값은 expr3에 의해 지정된 값입니다.

자유도는 t-test의 유형에 따라 관측된 t 값에 따라 다릅니다. 예를 들어, 단일 샘플 t-test (STATS_T_TEST_ONE)의 경우 자유도는 샘플 내 관측값 수에서 1을 뺀 값입니다.

 

STATS_T_TEST_ONE

STATS_T_TEST_ONE 함수에서 expr1은 샘플이며 expr2는 샘플 평균이 비교되는 상수 평균입니다. 이 t-test에서만 expr2는 선택적으로 사용할 수 있으며, 상수 평균은 기본적으로 0으로 설정됩니다. 이 함수는 t 값을 얻기 위해 샘플 평균과 알려진 평균의 차이를 평균의 표준 오차로 나누어 계산합니다 (STATS_T_TEST_PAIRED의 경우 평균의 차이의 표준 오차가 아님).

 

STATS_T_TEST_ONE 예제

다음 예제는 평균 목록 가격과 상수 값 60 사이의 차이의 유의성을 결정합니다:

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;

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

 

STATS_T_TEST_PAIRED

STATS_T_TEST_PAIRED 함수에서 expr1expr2는 평균을 비교하는 두 샘플입니다. 이 함수는 t 값을 얻기 위해 샘플 평균의 차이를 평균 차이의 표준 오차로 나누어 계산합니다 (STATS_T_TEST_ONE의 경우 평균의 표준 오차가 아님).

 

STATS_T_TEST_INDEP와 STATS_T_TEST_INDEPU

STATS_T_TEST_INDEPSTATS_T_TEST_INDEPU 함수에서 expr1은 그룹화 열이며 expr2는 값의 샘플입니다. 풀드 분산 버전인 STATS_T_TEST_INDEP는 유사한 분산을 가진 두 분포의 평균이 동일한지 다른지를 테스트합니다. 비풀드 분산 버전인 STATS_T_TEST_INDEPU는 두 분포의 분산이 크게 다른 것으로 알려져 있더라도 평균이 동일한지 다른지를 테스트합니다.

이러한 함수를 사용하기 전에 샘플의 분산이 유의하게 다른지 여부를 판단하는 것이 좋습니다. 그렇다면 데이터는 서로 다른 형태의 분포에서 나올 수 있으며 평균의 차이는 그다지 유용하지 않을 수 있습니다. 분산의 차이를 결정하기 위해 f-테스트를 수행할 수 있습니다. 만약 분산이 유의하게 다르지 않다면 STATS_T_TEST_INDEP를 사용하십시오. 그렇지 않으면 STATS_T_TEST_INDEPU를 사용하십시오. f-test 수행에 대한 정보는 STATS_F_TEST를 참조하십시오.

 

STATS_T_TEST_INDEP 예제

다음 예제는 분포가 유사한(pooled) 분산을 가질 것으로 가정한 상황에서 남성과 여성 간의 평균 판매량 차이의 유의성을 결정합니다:

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', 'F') 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)
  ORDER BY income_level, sold_to_men, sold_to_women, t_observed;

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 예제

다음 예제는 분포가 크게 다른 (unpooled) 분산을 가질 것으로 알려진 상황에서 남성과 여성 간의 평균 판매량 차이의 유의성을 결정합니다:

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', 'F') 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)
  ORDER BY income_level, sold_to_men, sold_to_women, t_observed;

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.

 


출처: 오라클 레퍼런스

원문 링크: Oracle STATS_T_TEST_* 함수 문서

 

반응형

댓글