상세 컨텐츠

본문 제목

[SAS]PROC MEANS로 기술통계분석 끝내기(feat. 집단별 분석)

SAS

by 대학원생D군 2023. 3. 5. 05:11

본문

반응형

안녕하세요,

이전 포스팅에서 SAS 프로그램을 이용해서 기술통계분석부터 회귀분석까지 한방에 끝낼 수 있는 코드를 소개해드렸습니다. 이번 포스팅에서는 지난번에 소개해드린 매크로의 첫 번째 프로시저인 PROC MEANS를 조금 더 자세히 알아보도록 하겠습니다.

 

[SAS]기술통계분석부터 회귀분석까지 한방에 끝내는 매크로

안녕하세요, 사회과학 분야의 석사학위 논문을 살펴보면 최근에는 중급, 고급 통계기법이 많이 사용되고 있지만, 여전히 기술통계분석, 상관분석, 다중회귀분석으로 이어지는 연구를 어렵지 않

paratussemper.tistory.com

제가 생각할 때 SAS에서 가장 많이 사용되는 프로시저를 뽑아보라고 한다면 PROC MEANS일 것입니다. 이번에도 SAS 기본 데이터셋인 SASHELP.CLASS 데이터셋을 활용해 보겠습니다. 우선 옵션 없이 아래와 같이 단순하게 코드를 입력하셔도 데이터셋에 있는 모든 변수의 평균, 표준편차, 최솟값, 최댓값을 확인할 수 있습니다. 

PROC MEANS DATA=SASHELP.CLASS;
RUN;

그러나 위의 코드는 소수점이 지나치게 많이 나오고 데이터셋의 변수가 많은 경우 시간이 오래 걸린다는 단점이 있습니다. 그리고 논문을 쓰다보면 변동계수, 왜도, 첨도 등의 통계량이 필요할 때도 있습니다. 이러한 경우 위의 코드에 옵션과 VAR 문장을 추가하면 됩니다. 아래의 코드로 설명해 보면 다음과 같습니다.

  • SASHELP.CALSS 데이터셋을 사용해서 표본 수(N), 평균(MEAN), 중위수(MEDIAN), 최솟값(MIN), 최댓값(MAX), 표준편차(STD), 변동계수(CV), 왜도(SKEWNESS), 첨도(KURTOSIS)를 구하는데 소수점 3자리까지만 출력(MAXDEC=3)
  • WEIGHT라는 변수의 기술통계량 제시
PROC MEANS DATA=SASHELP.CLASS N MEAN MEDIAN MIN MAX STD CV SKEWNESS KURTOSIS MAXDEC=3;
	VAR WEIGHT;
RUN;

아래의 결과 테이블을 보시면 위에서 입력한 것처럼 WEIGHT 변수의 기술통계량이 나왔습니다.

그런데 분석을 하다보면 집단별로 분석을 해야 되는 경우가 있습니다. 아래의 코드는 성별에 따라 몸무게와 키의 차이를 분석하는 코드입니다. 이를 위해서는 우선 데이터셋을 오름차순 또는 내림차순으로 정렬을 해야 합니다. 그리고 SASHELP.CLASS의 경우 SAS 기본 데이터셋이기 때문에 정렬을 하는 경우 새로운 데이터셋을 생성해야 합니다.

  • PROC SORT : 데이터셋을 성별에 따라 정렬한 후 CLASS라는 이름의 데이터로 저장(OUT=CLASS)
  • PROC MEANS에 BY 문장에 집단을 입력
PROC SORT DATA=SASHELP.CLASS OUT=CLASS;
	BY SEX;
RUN;

PROC MEANS DATA=CLASS N MEAN MEDIAN MIN MAX STD CV SKEWNESS KURTOSIS MAXDEC=3;
	VAR WEIGHT HEIGHT;
	BY SEX;
RUN;

위의 코드를 사용하면 SAS는 아래와 같은 결과표를 제공합니다. 그런데 분석결과가 하나의 테이블로 나타나지 않아서 아쉬운 느낌입니다.

이번에는 BY 대신 CLASS 문장을 넣어보았습니다.

PROC MEANS DATA=CLASS N MEAN MEDIAN MIN MAX STD SKEWNESS KURTOSIS MAXDEC=3;
	VAR WEIGHT HEIGHT;
	CLASS SEX;
RUN;

CLASS를 넣으면 아래와 같은 하나의 표에 분석결과를 확인할 수 있습니다. CLASS, BY 모두 장단점이 있으니 필요에 맞게 활용하시면 됩니다.  

분석을 하다보면 단순히 하나의 집단이 아닌 집단 1*집단 2 분석이 필요한 경우가 있습니다. SAS의 PROC MEANS를 활용하면 집단 1*집단 2 분석도 가능합니다. PROC MEANS 프로시저의 CLASS 문장에 아래와 같이 집단 1 집단 2를 나열하시면 됩니다.

  • DATA STEP을 이용해서 WEIGHT가 평균(100)을 넘는 사람을 H, 평균을 넘지 못하는 사람을 L로 구분
  • PROC MEANS CLASS에 성별(SEX), WEIGHT 구분(TEST) 변수를 나란히 입력
DATA CLASS_2;
	SET CLASS;
	IF WEIGHT>100 THEN TEST="H";
	ELSE TEST="L";
RUN;

PROC MEANS DATA=CLASS_2 MAXDEC=3;
	VAR WEIGHT HEIGHT;
	CLASS SEX TEST;
RUN;

위의 코드를 실행하면 성별과 몸무게 평균 초과 여부에 따른 표본의 기술통계량을 확인할 수 있습니다. 굉장히 유용한 코드입니다.

제 포스팅이 논문 데이터 분석의 가장 첫걸음인 기술통계분석에 도움이 되시기 바랍니다.

 

궁금하신 점은 언제든 댓글로 담겨주세요:)

감사합니다!

☆ 제 코드는 정답이 아니며 틀린 부분이 있을 수 있으니 주의하여 활용하시기 바랍니다.

반응형

관련글 더보기

댓글 영역