통계 t-test(T검정법)의 모든 것 (한그룹 single ttest, 쌍별비교 paired T test, 서로 다른 두 그룹 평균비교)-SAS이용
Data, Modeling, and Decisions 2011. 3. 26. 13:00이게 시간이 지나면서 헛갈리는 이유는 복잡한 분산공식때문이기도 한데 웹상에 한 번 잘 정리가 된다면 앞으로 쉽게 기억하고 문제 해결을 할 수 있지 않을까 하는 생각에서 정리를 해보았다.
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
아래처럼 명령어를 주면 두 변수의 차이 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
;
이상으로 설명을 마치려고 한다.
여기서 Standard error는 샘플평균의 표준편차를 의미한다. SAS에서 무조건 Standard error는 샘플평균의 표준편차라는 것을 기억해 두자.
'Data, Modeling, and Decisions' 카테고리의 다른 글
표본조사- 오차범위(margin of error 혹은 표본오차범위의 의미, 지지율의 신뢰구간과 샘플크기 결정문제 (0) | 2011.03.28 |
---|---|
맥니마 검정(McNemar test, paired test. 혹은대응표본검정 )- 범주형 자료분석 (0) | 2011.03.26 |
SAS를 활용한 샘플링(sampling) - 비복원추출, 복원추출 그리고 층화추출 (0) | 2011.03.25 |
통계 피터스버그 역설 (Petersburg Paradox) - 한심한 갬블러(기대값이 무한대) (0) | 2011.03.23 |
통계적으로 두 변수의 독립(independence)과 상관계수(correlation)와의 관계 (3) | 2011.03.21 |