반응형

[SAS] 독립 표본 T검정 (Independent samples T-test) - PROC TTEST

 

  세상에 존재하는 모든 사람을 대상으로 연구를 하면 참 좋겠지만, 시간적인 이유로, 그리고 경제적인 이유로 일부를 뽑아서 연구를 진행할 수밖에 없다. 모든 사람을 모집단이라고 하고, 뽑힌 일부를 표본이라고 한다. 우리는 표본으로 시행한 연구로 모집단에 대한 결론을 도출해내고자 할 것이다. 

 1000명에게 피검사를 시행하였고, 간 기능 검사의 일환으로 ALT 수치를 모았다. 이 데이터를 기반으로 1000명이 기원한 모집단 인구에서의 ALT평균이 어떻게 될지 예측하는 것이 T-test이다. T-test는 크게 세 가지로 나눌 수 있다.

 

 1) 일표본 T검정 (One sample T-test) : 2022.09.30 - [모평균 검정/SAS] - [SAS] 일표본 T검정 (One-sample T-test) - PROC TTEST

 : 모집단의 평균이 특정 값이라고 할 수 있는가?

 예) 모집단의 ALT 평균이 50이라고 할 수 있는가?

 

 

 2) 독립 표본 T검정 (Independent samples T-test, Two samples T-test)

 : 두 모집단의 평균이 다르다고 할 수 있는가?

 예) 고혈압 환자와 일반인의 수축기 혈압 평균이 서로 다르다고 할 수 있는가?

 

 3) 대응표본 T검정 (Paired samples T-test) : 2022.10.07 - [반복 측정 자료 분석/SAS] - [SAS] 대응 표본 T검정 (Paired samples T-test) - PROC TTEST

 : 모집단의 짝지어진 변수들의 평균이 다르다고 할 수 있는가?

예) 간기능 개선제 복용 전 ALT 평균은 간기는 개선제 복용 후 ALT 평균과 다르다고 할 수 있는가?

 

이번 포스팅에서는 독립 표본 T검정 (Independent samples T-test, Two samples T-test)에 대해 알아볼 것이다.

 

*실습용 데이터는 아래 링크를 클릭하면 다운로드할 수 있습니다.

2022.08.04 - [공지사항 및 소개] - 분석용 데이터 (update 22.08.29)

 

분석용 데이터 (update 22.08.29)

2022년 08월 29일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 통계 프로그램 사용 방법 1) 엑셀 파일 2) CSV 파일 3) 코드북

medistat.tistory.com

 

시작하기 위해 라이브러리를 만들고, 파일을 불러온다.

라이브러리 만드는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 라이브러리 만들기 - LIBNAME

파일 불러오는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 데이터 불러오기 및 저장하기 - PROC IMPORT, PROC EXPORT

 

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

 

목표: 고혈압 환자의 수축기 혈압(SBP) 평균은 정상인의 수축기혈압 평균과 다르다고 모집단 수준에서 말할 수 있는가?

 이번 포스팅의 목적은 1000명의 데이터를 가지고, 이 1000명이 기원한 모집단에서 수축기 혈압 평균이 고혈압 유병 여부에 따라 다르다고 할 수 있는지 판단하는 것이다.

 

전제조건 (정규성) - 코드

 독립표본독립 표본 (Indepent samples, Two tamples) T 검정의 전제조건은 각각의 독립 표본의 분포가 정규성을 따른다는 것이다. 즉, 여기에서는 고혈압 유병 여부에 따라 수축기 혈압 (SBP)의 정규성을 검정하도록 하겠다.

 - 정규성 검정에 관한 분석 내용은 다음 글에서 살펴볼 수 있다. 2022.08.12 - [기술 통계/SAS] - [SAS] 정규성 검정 - PROC UNIVARIATE

 - PROC UNIVARIATE명령문에서 "CLASS"옵션을 사용하는 방법은 다음 글에서 살펴볼 수 있다. 2022.09.23 - [기술 통계/SAS] - [SAS] 기술 통계 (평균, 표준편차, 표준오차, 최댓값, 최솟값, 중위수, 분위수 등) - PROC UNIVARIATE, PROC MEANS

 

PROC UNIVARIATE DATA=hong.df NORMAL PLOT;
CLASS HTN;
VAR SBP;
HISTOGRAM SBP/ NORMAL (MU=EST SIGMA=EST);
RUN;

PROC UNIVARIATE : 변수에 대해 알아보는 코드를 작성하겠다.

DATA=hong.df : 데이터는 hong이라는 라이브러리 내에 있는 df를 사용하겠다.

NORMAL : 정규성 검정을 시행해라.

PLOT : 히스토그램과 QQ plot을 그려라

CLASS HTN
VAR SBP : 분석할 변수는 SBP다
HISTOGRAM SBP : SBP의 히스토그램도 그려라

/ NORMAL (MU=EST SIGMA=EST) : 히스토그램에 정규분포 곡선도 덧붙여 그리는데, 정규분포 곡선의 평균은 SBP 데이터로부터 계산한 평균이고, 표준편차도 SBP 데이터의 표준편차다.

 

정규성 검정 - 결과

1) HTN=0 (고혈압을 앓지 않는 정상인 군)

N수가 2,000개 미만이므로 Shapiro-Wilk 통계량의 p-value를 보면 0.05 이상이며, Q-Q Plot은 대부분의 데이터가 선상에 있고, 히스토그램에서도 정규성을 따르는 것처럼 볼 수 있다. 

 

1) HTN=1 (고혈압을 앓는 환자군)

N수가 2,000개 미만이므로 Shapiro-Wilk 통계량의 p-value를 보면 0.05 이상이며, Q-Q Plot은 대부분의 데이터가 선상에 있고, 히스토그램에서도 정규성을 따르는 것처럼 볼 수 있다. 

 

 

전제조건이 성립한다. 즉, 고혈압 유병 여부에 따른 수축기 혈압 (SBP)의 분포가 정규성을 따른다고 할 수 있다. 따라서 독립 표본 T 검정 (Independent samples T test, Two samples T test)을 시행할 수 있다.

 

T-Test 코드

PROC TTEST DATA=hong.df;
CLASS HTN;
VAR SBP;
RUN;

PROC TTEST DATA=hong.df; : T-test를 시행하겠다. 데이터는 hong 라이브러리의 df데이터를 이용한다.
CLASS HTN; : 고혈압 여부에 따라 평균의 차이를 검정하겠다.
VAR SBP; : 검정하고자 하는변수는 수축기 혈압 (SBP)이다.

 

결과

독립 표본 T 검정(Independent samples T-test, Two samples T-test)의 검정 결과는 두 단계에 걸쳐 확인해야 한다.

 1) 등분산성 검정

 등분산성 (Equality of Variances)을 확인해야 한다. 즉 두 분포의 분산이 같다고 할 수 있는지 확인해야 한다. 빨간색 박스의 p-value는 0.9994이다. 그러면 귀무가설을 기각할 수 없다. 그러면 귀무가설은 무엇이었는가?

 귀무가설:  $H_0=$ 두 집단의 모분산은 동일하다.

 대립가설:  $H_1=$ 두 집단의 모분산은 동일하지 않다.

 

귀무가설을 기각할 수 없으므로 모분산은 같다고 생각하기로 한다.

 

2) 평균 차이 검정

PROC TTEST는 평균 차이 검정 결과를 두 가지 제공한다. 분산이 같다고 할 수 있을 때 사용하는 Pooled method, 분산이 다르다고 할 수 있을 때 사용하는 Satterthwaite method이다. 위에서 모분산이 같다고 생각하기로 했으므로 Poold method의 p-value를 보면 <0.0001으로 귀무가설을 기각할 수 있다. 그러면 귀무가설은 무엇이었는가?

 귀무가설:  $H_0=$ 두 집단의 평균 SBP는 동일하다.

 대립가설:  $H_1=$ 두 집단의 평균 SBP는 동일하지 않다.

 

고혈압이 있는 군의 평균 SBP는 150.1, 고혈압이 없는 군의 평균 SBP는 120.1이었으므로 고혈압이 있는 환자의 수축기 혈압이 정상군에 비해 유의미하게 높다고 결론지을 수 있다.

 

 

SAS와 SPSS의 차이

그런데, SPSS의 T-test 결과와 비교해보면 약간 서로 다른 것을 알 수 있다.

SPSS에서의 T-test는 다음 링크에서 확인할 수 있다.

2022.11.30 - [모평균 검정/SPSS] - [SPSS] 독립 표본 T검정 (Independent samples T-test)

 

바로, 등분산성 검정 결과가 다르다. SAS에서는 "Fooled F"를 사용하고, SPSS에서는 "Levene의 등분산 검정"을 사용하기 때문이다. 다행히도 SPSS에서도, SAS에서도 모분산이 동일하다는 결론이 났지만, 간혹 서로 다른 결론을 내리기도 한다. 따라서 어떤 등분산성 검정 방법을 사용했는지 알고 있어야 한다. 

 

당연히, SAS에서도 SPSS처럼 Levene의 등분산 검정을 시행할 수 있는데 코드는 다음과 같다.

코드 - Levene의 등분산 검정

PROC GLM DATA=hong.df;
   CLASS HTN;
   MODEL SBP = HTN;
   MEANS HTN / HOVTEST=LEVENE(TYPE=ABS);
RUN;
QUIT;

PROC GLM DATA=hong.df; : Levene의 등분산 검정은 PROC GLM이라는 명령문으로 할 수 있다. PROC GLM을 시행하고, 데이터는 hong 라이브러리에 있는 df를 이용한다.
   CLASS HTN; : 고혈압 여부(HTN)에 따라 분산이 같은지 검정할 것이다.
   MODEL SBP = HTN; : 고혈압 여부(HTN)에 따라 수축기 혈압(SBP)의 분산이 같은지 검정할 것이다.
   MEANS HTN / HOVTEST=LEVENE(TYPE=ABS); : 고혈압의 평균을 구해주어라. 등분산성 검정 (HOmogeneity of Variance TEST)은 Levene방법을 사용 한다. Levene의 등분산 검정은 제곱한 값을 사용하는 SQUARE, 차이를 사용하는 ABS가 있는데 차이를 사용한다.
RUN; : 코드를 실행한다.
QUIT; : GLM코드는 QUIT구문을 실행하거나, 다른 코드를 실행해야만 끝나므로 QUIT을 실행한다.

 

이 방법 이외의 등분산성 검정 방법 (O'Brien, Brwon and Forsythe, Bartlett)에 대한 내용은 다음 링크에서 확인할 수 있다. 

2022.10.05 - [모평균 검정/SAS] - [SAS] 등분산성 검정 (Homogeneity of variance) - PROC GLM

 

결과

p-value는 0.9189로 SPSS와 같음을 알 수 있고, 0.05보다 크므로 귀무가설을 기각하지 못해 모분산이 같다고 결론 내릴 수 있다. 

 

 

코드 정리

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*데이터 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

*고혈압 여부에 따라 정규성 검정하기;
PROC UNIVARIATE DATA=hong.df NORMAL PLOT;
CLASS HTN;
VAR SBP;
HISTOGRAM SBP/ NORMAL (MU=EST SIGMA=EST);
RUN;

*T-test실행하기;
PROC TTEST DATA=hong.df;
CLASS HTN;
VAR SBP;
RUN;

*Levene의 등분산성 검정하기;
PROC GLM DATA=hong.df;
   CLASS HTN;
   MODEL SBP = HTN;
   MEANS HTN / HOVTEST=LEVENE(TYPE=ABS);
RUN;
QUIT;

 

SAS 독립 표본 T검정 (Dependent samples T-test, Two samples T-test) 정복 완료!

작성일: 2022.09.30.

최종 수정일: 2022.11.30.

이용 프로그램: SAS v9.4

운영체제: Windows 10

반응형

+ Recent posts