BookmarkSubscribeRSS Feed

[ SAS 활용 노하우 ] 범주형 자료와 독립성 검정

Started ‎08-15-2021 by
Modified ‎08-15-2021 by
Views 3,601

 

 

관심 변수의 수준(범주)에 따라 분류한 자료를 범주형 자료(categorical data)라고 합니다.

사람을 성별로 분류한다면 '남'과 '여'가 범주가 됩니다. 그리고 성별이 분류변수의 역할을 합니다.

분류변수는 하나의 관측이 속하는 범주(category)의 값이 수록된 변수입니다. 범주형 자료에서는 어느 관측이든 반드시 단일 범주에 속할 뿐 동시에 두 범주 이상에 할당될 수 없습니다. 또한, 분류변수에 대해서는 주로 빈도와 비율 등을 계산할 뿐 일반 분석변수처럼 평균이나 분산을 계산하지 않습니다.

 

빈도표(frquency table): 단일 분류변수에 대하여 자료를 정리한 결과표

교차표(crosstable): 둘 이상의 분류변수를 동시에 적용하여 만들어진 표

 

빈도표나 교차표 형식으로 재정리된 자료를 범주형 자료라고 합니다.

열변수와 행변수 간의 독립적으로 분포하는지 테스트가 필요합니다. 테스트를 카이제곱(x^2)독립성 검정이라고 합니다.

 

 

 

[ FREQ ]

 

범주형 자료분석은 FREQ 프로시저를 활용합니다. 일반적인 사용 형식은 아래와 같습니다.

 

PROC FREQ DATA = SASdataset
     TABLES requests / options;
     BY variables;
RUN;

 

ABLES문은 FREQ를 호출할 때 반드시 지정해야 하는 문장으로 빈도표나 교차표를 만들 때 기준이 되는 분류변수를 지정합니다.

 

다음은 TALBES문에서 지정할 수 있는 선택사항입니다.

1) MISSING : 빈도계산에 결측값도 포함하여 계산

2) NOFREQ,NOPERCENT, NOROW, NOCOL, NOCUM : 교차표에서 빈도, 퍼센티지, 행%, 열%, 누적빈도와 %의 출력이 정지됩니다.

3) CHISQ: X^2 (카이스퀘어) 통계량과 연관측도가 출력됩니다.

 

분할표에서 독립성 검정을 하려면 반드시 CHISQ를 지정해야 합니다. 출력된 유의확률이 0에 가까울수록 두 분류간에는 독립성이 없습니다.

 

스크린샷_2021-08-15_오후_5.21.23.png

enqete.txt 데이터는 A대학 대상으로 한 설문조사 중 일부입니다.

15,200명의 전체 학생 모집단에 대하여 단과대학과 학년 층을 기준으로 2단 층화추출 기법을 사용해 400명의 임의표본을 추출하여 설문조사를 실시하였습니다.

 

 스크린샷 2021-08-15 오후 7.09.22.png

 

프로그램에서 IF-THEN / ELSE 문장을 사용하여 학년에 따라 학생들을 저학년과 고학년으로 분류하였습니다. 그리고 이 분류변수의 이름을 status로 지정하고 처음 10개의 케이스를 출력하였습니다.

 

data enqete;
	infile "/home/u45061472/sasuser.v94/enqete.txt";
	input college $ grade q1 q2 @@;
	if grade <= 2 then status = "Low";
	else status = 'High';
	if grade <= 2 then grd_wgt = 1;
	else grd_wgt = 2;
	
run;
proc print data = enqete(obs=10);
run;

 

 스크린샷_2021-08-15_오후_5.58.14.png

 

 

FREQ 프로시저를 이용하여 빈도표와 교차표를 출력하는 방법을 소개하려합니다.

변수 grade 하나만 tables 문장에 지정하여 빈도표를 출력합니다. 출력된 통계량은 각 학년에 해당하는 빈도, 퍼센티지, 누적빈도, 누적 퍼센티지가 출력됩니다.

 

proc freq data = enqete;
tables grade;
run;

 

스크린샷_2021-08-15_오후_6.02.42.png

 

 

다음은 grade별로 가중치를 부여한 grd_wgt를 이용한 빈도표를 출력하는 프로그램입니다. 표본가중치를 부여하기 위해 WEIGHT문에 분류변수로 설정했던 grd_wgt를 입력하고 변수 grade 하나만 tables 문에 지정하여 빈도표를 출력합니다. 출력된 통계량은 각 학년마다 가중치가 반영된 빈도, 퍼센티지, 누적빈도, 누적 퍼센티지입니다. 이때 가중치는 1,2학년은 1 만큼 부여하고 3,4학년은 2만큼 부여되었습니다.

 

 

proc freq data = enqete;
weight grd_wgt;
tables grade;
run;

 

스크린샷_2021-08-15_오후_6.31.59.png

 

 

다음은 enqete의 두 변수 grade와 college의 값에 따라 정리하여 이원교차표를 만드는 프로그램입니다. 이원 이상의 교차표를 만들 때는 항상 TABLES 문에서 변수 사이에 *를 사용해야 합니다. 앞의 변수가 세로축 변수, 뒤의 변수가 가로축 변수가 됩니다. 

 

proc freq data = enqete;
tables college * grade;
run;

 

이원교차표에 각 칸은 디폴트로 다음 네 가지 빈도와 퍼센티지가 출력됩니다.

 

- 칸 빈도(cell frequency)

- 칸 퍼센티지(cell percentage)

- 행 퍼센티지(row percentage)

- 열 퍼센티지(column percentage)

 

분할표의 가장자리에는 행합(row total), 행합의 퍼센티지, 열합(column), 열합의 퍼센티지, 그리고 총 빈도(total frequency), 데이터의 총수가 출력됩니다.

 

위의 설문조사에서

' 문항 4. 학교에 상담센터가 있는 것을 알고 있습니까? 에 대한 응답 패턴이 학년별로 차이가 있는가? '를 알고 싶습니다.

학년별로 차이가 있는지 조사하기 위해서는 학년(grade)을 조사하는 문항2에 대한 응답 간에 교차표를 만들고 이 두 변수가 상호 독립인지 아닌지 카이제곱 독립성을 검정해야 합니다.

 

 

proc freq data = enqete;
tables grade*q2 /chisq;
run;

 

학년과 문항2 간 카이제곱 독립성 검정의 유의확률은 0.012로 0.05보다 작습니다.

따라서 학년과 문항2는 서로 독립이 아닙니다. 다시 말해서 학년간 응답 패턴에 차이가 있습니다.

전체적으로 상담센터의 존재 유무가 7:3으로 학생들이 상담센터의 존재를 알고 있습니다. 각 칸의 값을 살펴보면 쉽게 알 수 있지만 주요 원인은 4학년의 응답 패턴이 다른 학년과 다르다는 것을 알 수 있습니다.

 

 

스크린샷_2021-08-15_오후_7.44.35.png

 

스크린샷_2021-08-15_오후_7.44.59.png

 

 

 

 '저학년과 고학년 간에 문항 2의 응답 패턴에 차이가 있는지' 확인해보고자 합니다. 이를 분석하려면 두 변수 status와 q2간의 교차표를 만들어야 합니다. 

 

proc freq data = enqete;
tables status*q2/ chisq;
run;

 

 스크린샷_2021-08-15_오후_7.54.17.png

 

스크린샷_2021-08-15_오후_7.54.43.png

 

 

 

카이제곱 검정법은 근사 검정법입니다. 정확한 검정법이 아니기 때문에 작은 교차표에서 카이제곱 검정은 잘못될 확률이 큽니다. 그래서 카이제곱 통계량 대신 반드시 피셔(Fisher)의 정확 검정에 대한 유의확률값을 읽어 독립성 검정을 해야합니다. 피셔의 정확성 검정에 대한 유의확률은 0.038로 0.05보다 작습니다.

따라서 저학년과 고학년에 따라 문항2에 대한 응답 패턴은 같지 않다는 것을 알 수 있습니다.

 

 

 

Version history
Last update:
‎08-15-2021 10:25 AM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags