BookmarkSubscribeRSS Feed

[SAS 활용 노하우] 기술통계분석

Started ‎08-14-2021 by
Modified ‎08-14-2021 by
Views 2,889

 

 

 

SAS에서 요약통계량, 상자 도표 등을 이용한 기술통계분석에 대해 알아보려 합니다.

기술통계분석은 주로 MEANS 프로시저와 UNIVERATE 프로시저로 수행합니다.

 

score.txt 파일을 이용해서 기술통계분석을 진행하겠습니다. 

score 데이터는 학생의 점수자료로, 각 사람의 학번(id), 성별(gender), 중간시험 성적(midterm), 기말시험 성적(final)이 있습니다.

 

스크린샷_2021-08-15_오전_1.00.31.png

 

다음의 코드는 score가 생성됩니다. 데이터 입력 코드로 INPUT문 끝에 @@를 추가하였습니다.

이 부호는 둘 이상의 관측이 입력된 경우에 사용됩니다.

 

data score;
	infile "/home/u45061472/sasuser.v94/score.txt"
	input id gender $ midterm final @@;
run;

 

 

1. MEANS

 

MEANS 프로시저는 기술통계량의 값을 계산하는 가장 간편한 프로시저이지만 UNIVERATE 프로시저에 비하면 출력되는 통계량이 제한됩니다. UNIVERATE 프로시저는 가장 광범위한 기술통계 분석 결과를 출력하지만 사용자가 출력을 제어할 수 없는 것이 단점입니다.

 

즉, MEANS 프로시저를 사용하면 자신의 통계분석에 꼭 필요한 통계량만을 선별하여 출력할 수 있지만, UNIVERATE 프로시저는 계산 가능한 모든 기술통계량이 자동출력되므로 출력되면 통계량들의 의미를 해석하는데 불편함이 있을 수 있습니다.

 

MEANS 프로시저

 

PROC MEANS DATA = SASdataset options;
     VAR variables;
     BY variables;
     CLASS variables;
RUN;

 

 

어떤 변수값에 따라 그룹지어 독립적으로 처리할 때 BY 문장을 사용합니다. MEANS 프로시저는 이런 목적으로 CLASS를 사용할 수 있습니다. BY문이나 CLASS문은 데이터를 나누어 처리한다는 점에서 동일한 결과를 얻지만 결과의 출력양식이 다릅니다.

 

 

1) VAR : 분석 변수의 선택

 

VAR문은 데이터에 포함된 변수 중 관심이 있는 일부의 변수만 골라 기술통계량을 계산할 때 지정합니다. VAR문이 생략되면 지정된 SAS자료에 포함된 모든 숫자변수에 대하여 기술통계량이 출력됩니다. VAR문에 지정하는 변수들을 분석변수(analysis variable)라고 합니다.

 

다음의 코드에서 MEANS 프로시저를 적용하여 중간시험과 기말시험 성적에 대한 기술통계량을 구합니다.

이와 같이 같이 기술통계량 계산이 필요한 변수의 이름만 지정하는 것이 MEANS프로시저의 가장 간단한 사용형식입니다.

 

proc means data = score;
var midterm final;
run;

 

프로그램의 실행결과입니다.

VAR에 지정한 두 변수에 대하여 관측 수(N), 평균(MEAN), 표준편차(STD), 최솟값(MIN), 최댓값(MAX)의 5개 통계량값이 계산되어 출력됩니다. 이 5가지의 통계량 값이 MEANS 프로시저에서 디폴트로 내보내는 통계량입니다.

 

스크린샷_2021-08-15_오전_1.30.43.png

 

 

위의 실행결과를 보면 소수점이 소수점 이하 7자리까지 출력되어 자료가 읽었습니다. 이런 경우 FW(Field Width)구문을 사용하면 출력되는 값의 자릿수 조절이 가능합니다.

FW는 통계량이 출력될 때 차지하는 칸수를 의미합니다. 디폴트는 12입니다.

 

또한, PROC MEANS 프로시저에 출력하고 싶은 통계량을 문장에 나열하여 지정할 수 있습니다.

아래의 코드를 통해 관측수, 평균, 표준편차, 최솟값, 최댓값, 범위를 지정하고 FW는 6으로 소수점 두자리까지 출력되도록 하였습니다.

 

proc means data = score FW=6 n mean std min max range;
var midterm final;
run;

 

프로그램 실행결과입니다.

 

스크린샷_2021-08-15_오전_1.38.54.png

 

 

 2) CLASS와 BY

 

CLASS문은 지정된 변수가 취하는 값에 따라 자료를 그룹지어 그룹별로 독립적으로 기술통계량을 계산하고자 할 때 사용합니다. 이런 작업은 BY문을 사용할 수 있지만, 차이점은 CLASS문을 사용하면 SORT프로시저를 미리 호출하여 순서화할 필요가 없습니다. 또한, CLASS문을 사용하면 BY문에 비해 출력형태가 보다 자세합니다. CLASS 변수로 둘 이상을 사용해도 상관없습니다.

 

실행결과로서 성별에 따라 출력되었습니다.

 

proc means data = score FW=6 n mean min max;
class gender;
var midterm final;
run;

 

스크린샷_2021-08-15_오전_1.43.01.png

 

 

 

 3) BY문과 MENAS프로시저

 

BY문을 사용했을 때와 MEANS 프로시저를 비교하고자 합니다.

BY문은 사용하려면 SORT프로시저를 호출하여 순서화된 자료를 만들어야 합니다. 출력 내용은 동일하나 출력형식이 다릅니다.

 

 

/*sort - BY문 */
proc sort data = score out = new; by gender; run;

 

/*proc means*/
proc means data = new fw = 6 mean min max;
by gender;
var midterm final;
run;

 

 

스크린샷_2021-08-15_오전_1.59.06.png

 

 

 

 

2. UNIVERATE 프로시저

 

UNIVARIATE 프로시저는 숫자변수에 대한 가장 포괄적인 기술통계량을 출력하는 프로시저로서 기술통계량뿐 아니라 자료의 분포형태 연구에 도움이 되는 분위수(quantiles), 줄기 - 잎 그림, 상자그림 등이 출력됩니다.

 

UNIVARIATE 프로시저의 사용형식은 다음과 같습니다.

 

PROC UNIVERATE DATA = SASdataset PLOT;
VAR variables;
BY variables;
RUN;

 

 

1) 기술통계량

 

score에 대하여 UNIVARIATE 프로시저를 적용하는 프로그램을 예로 기말시험 성적 final 에 대한 상세한 기술통계분석 결과를 얻을 수 있습니다.

VAR문을 사용하지 않으면 처리할 자료 내의 모든 숫자변수에 대하여 자동적으로 분석결과가 출력됩니다.

 

PROC UNIVARIATE DATA = score PLOT;
VAR final;
RUN;

            스크린샷_2021-08-15_오전_2.22.19.png스크린샷_2021-08-15_오전_2.22.51.png

 

 

 

 

2) PLOT 구문

 

PROC UNIVARIATE 문에서 PLOT을 지정하면 수평막대도표와 상자그림이 출력됩니다.

아래에 있는 '분포와 확률 도표' 윗부분의 왼쪽에 주어진 final 변수에 대해서 수평막대 그래프를 그려 대략적인 분포형태를 알 수 있고, 오른쪽은 상자그림(boxplot)이 나타냅니다.

boxplot에서 중앙의 마름모꼴 부호는 표본평균의 위치를 나타내고 상자 양끝에서 각각 1.5배의 사분위범위 밖에 위치한 관측은 특이점으로 '°'로 표시하여 출력합니다. 특히, 3배의 사분위범위 밖에 위치한 관측은 '*' 표시를 하여 출력하는데, * 표시가 되어 출력된 특이점은 극단점 특이점 (extreme outlier)입니다.

°이나 * 표시가 된 관측이 나타나면 때에 따라 특이점을 빼고 다시 통계분석을 하는 편이 예측력이 향상됩니다. 지금의 그래프에서는 특이점이 없습니다.

 

수평막대 그래프와 상자 그림 아래에 있는 plot은 Q-Q plot(Quantile-Quantile Plot)은 일반적으로 이론적인 정규분포의 분위수에 대해 주어진 자료상 변수의 분위수를 순서쌍으로 하는 좌표를 2차원 좌표평면 위에 위치함으로 변수의 확률분포가 정규분포를 따르는지를 대략적으로 알아보기 위해 작성하는 도표입니다.

직선상에 순서쌍 좌표가 많이 존재할수록 변수가 정규분포를 따른다고 할 수있습니다.

 

 

 스크린샷_2021-08-15_오전_2.14.45.png

 

 

 3) BY 그룹별 상자그림

 

PROC UNIVARIATE 프로시저에 PLOT문과 함께 BY문이 사용되면 BY변수의 수준에 따라 수직축의 축척이 통일된 상자그림이 나란히 출력됩니다. 이는 비슷한 속성을 갖는 여러 자료를 동시에 비교하고자 할 때 사용하는 기법으로 자료마다 상자도표를 동일 축척하에 나란히 그려 분포형태 등을 한눈에 볼 수 있습니다.

 

아래의 코드를 실행하면 성별로 순서화된 자료 new를 처리하여 성별로 구분한 중간시험 성적 midterm에 대한 상자그림이 출력됩니다.

 

proc univariate data = new plot;
var midterm;
by gender;
run;

 

중간시험 성적 변수값을 성별로 상자그림을 그립니다.

 

스크린샷_2021-08-15_오전_2.29.56.png

 

 

Version history
Last update:
‎08-14-2021 01:33 PM
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