T test 는 가장 기본이면서 쉬운 검정법이지만 시간이 지나면 항상 가물 가물해지면서 사뭇 헛갈리는 경향이 있는 통계의 중요한 부분이다.

이게 시간이 지나면서 헛갈리는 이유는 복잡한 분산공식때문이기도 한데 웹상에 한 번 잘 정리가 된다면 앞으로 쉽게 기억하고 문제 해결을 할 수 있지 않을까 하는 생각에서 정리를 해보았다.
T 검정은 단일그룹검정, 쌍별비교검정, 서로다른 두 그룹에 대한 테스트 이렇게 3개로 나눠 볼 수있는데 ,먼저 단일그룹부터 하나 하나 살펴보도록 하겠다.

아래 데이타는 A 그룹과 B 그룹의 각각의 값을 나타낸다. 이것은 원래 paired 된 데이타인데 분석 방법을 설명하기 위해서 경우에 따라서 분리해서 분석할 것이다.

A 그룹 B 그룹 차이(dif)
97.2 97.2 0
105.8 97.8 8
99.5 96.2 3.3
100 101.8 -1.8
93.8 88 5.8
79.2 74 5.2
72 75 -3
72 67.5 4.5
69.5 65.8 3.7
20.5 21.2 -0.7
95.2 94.8 0.4
90.8 95.8 -5
96.2 98 -1.8
96.2 99 -2.8
91 100.2 -9.2


1. 단일그룹 T 검정법

여기서 "H0: 그룹 A의 평균은 85이다" 를 T검정을 해보자. 어떻게 SAS 명령어를 써야 할까? 이것은 간단하다.

proc ttest data=kkk H0=85;
    
var a;run;

단지 데이타셋 명에 옵션을 H0=85 라고 주면 된다. 그렇게 하면 아래와 같은 결과값을 얻는다.

DF t Value Pr > |t|

14 0.05 0.9628

즉 p value=0.9628로 H0를 기각할 수 없다.

2. 쌍별비교(paired T test)

A와 B 그룹이 각각 쌍을 이루고 있다고 하자. 가령 실험전후 몸무게나 키 같은 것이라고 생각해보자.
그렇다면 이때 T검정은 결국은 전후의 차이가 있는냐 없느냐가 될 것이다. 따라서 전후의 차이(A-B)의 합이 0이냐 혹은 아니냐의 검정이 된다.
이것은 서로를 위의 표에서 처럼 차이를 구한다음 이 차이가 0인지를 검정하는 단일그룹 T 검정법을 사용하는 것과 마찬가지인데 SAS에서는 이렇게 차이를 구하지 않고 서도 T 검정을 하는 옵션이 있다.
그 옵션은 다음과 같은 명령어를 사용하면 된다.

proc ttest data=kkk ;
    
paired a*b ;run;

                                          Variable:  diff

 

                    N        Mean     Std Dev     Std Err     Minimum     Maximum

                   15      0.4400      4.6308      1.1957     -9.2000      8.0000

 

                      Mean       95% CL Mean        Std Dev      95% CL Std Dev

                    0.4400     -2.1244   3.0044      4.6308      3.3903   7.3032

 

                                       DF    t Value    Pr > |t|

                                       14       0.37      0.7184

자유도 14를 갖고 T통계량 0.37를 갖으면 P-value=0.7184이다. 즉 H0를 기각할 수 없다.

아래처럼 명령어를 주면 두 변수의 차이 diff의 분포를 보여준다. 이것을 보면 대충 이게 유의할지 않할지 짐작할 수 있도록 해준다. univariate 는 diff가 0인지 정규근사를 통해서 검정을 해준다. 즉 아래 명령어는 T검정이 맞는지를 더블체크할 수 있는 대략의 감을 준다고 보면된다.

proc univariate data=kkk;
    
var diff ;
     
histogram diff /kernel;run;


* 단일그룹 T검정과 쌍별비교(paired T test)을 위해서 데이타 셋은 다음과 같이 입력되어야 한다.

data
kkk;
input A B diff @@;
cards;
97.2 97.2 0
105.8 97.8 8
99.5 96.2 3.3
100 101.8 -1.8
93.8 88 5.8
79.2 74 5.2
72 75 -3
72 67.5 4.5
69.5 65.8 3.7
20.5 21.2 -0.7
95.2 94.8 0.4
90.8 95.8 -5
96.2 98 -1.8
96.2 99 -2.8
91 100.2 -9.2
;
run;

3. 서로다른 두 그룹의 평균비교

A, B 그룹이 서로 다른 그룹에서 나온 데이타라고 가정해보자. 가령 제주도 사람의 평균키와 서울 사람의 평균키를 비교하는 예라고 하자. 이런 경우는 SAS에서 class라는 명령어를 준다. 그리고 데이타 입력방법도 달라진다. 맨아래 데이타입력하는 방법을 넣었다. 또한 결과 해석을 할때도 두 그룹의 분산이 같은지 다른지에 따라서 T 통계량 값이 다르게되므로 반드시 먼저 분산이 같은지 테스트 결과를 본 다음 T통계량을 봐야 한다.
proc ttest ;class method;var dosage;run;

   method        Method               Mean       95% CL Mean        Std Dev      95% CL Std Dev

   A                               85.2600     73.5220  96.9980     21.1961     15.5182  33.4284

   B                               84.8200     72.8839  96.7561     21.5538     15.7801  33.9925

   Diff (1-2)    Pooled             0.4400    -15.5484  16.4284     21.3757     16.9633  28.9096

   Diff (1-2)    Satterthwaite      0.4400    -15.5486  16.4286

 

                    Method           Variances        DF    t Value    Pr > |t|

                    Pooled         Equal          28    0.06      0.9554

                    Satterthwaite    Unequal      27.992       0.06      0.9554

 

                                       Equality of Variances

 

                         Method      Num DF    Den DF    F Value    Pr > F

                         Folded F        14        14       1.03    0.9510

위에서 Folded F의 P-value가 0.9510으로 두 집단의 분산은 같다고 볼 수 있다. 따라서 우리는 pooled 분산을 이용한 t 검정 결과를 보고 두집단의 평균비교를 해야한다.사실 아래 히스토그램을 보면 두 집단의 분산은 유사할 것이라는 것을 집작할 수 있고 두 평균도 같을 것이라는 것을 대략 알 수 있다.

그리고 이들 각각의 변수의 히스토그램을 보고 싶다면 다음과 같이 명령어를 쓰면 동시에 A그룹과 B 그룹의 히스토그램의 형태를 비교분석할 수 있는 그래프를 준다.

proc univariate data=kkk1;
     class method;var dosage ;
     histogram dosage /kernel;run;

 

 



서로다른 두 그룹의 평균비교를 할때는 아래와 같이 데이타를 입력해야한다.

data kkk1;
input method $ dosage @@;
cards;

A 97.2 B 97.2
A 105.8 B 97.8
A 99.5 B 96.2
A 100 B 101.8
A 93.8 B 88
A 79.2 B 74
A 72 B 75
A 72 B 67.5
A 69.5 B 65.8
A 20.5 B 21.2
A 95.2 B 94.8
A 90.8 B 95.8
A 96.2 B 98
A 96.2 B 99
A 91 B 100.2
;
run;

이상으로 설명을 마치려고 한다.
사실 각각의 값에대한 설명을 수식으로 설명해야 하나 복잡함을 피하고자 한다.
여기서 Standard error는 샘플평균의 표준편차를 의미한다. SAS에서 무조건 Standard error는 샘플평균의 표준편차라는 것을 기억해 두자.




Posted by wishart
,