본문 바로가기
Data_Analysis/SAS

[SAS] 기술통계량 산출 및 정규성 검정

by Classic! 2021. 1. 4.

아래와 같은 SAS 프로시저로 일변량 자료를 요약할 수 있습니다. 3개 프로시저 모두 대푯값과 산포도를 포함한 기술 통계량 값을 제공합니다. 특히, UNIVARIATE 프로시저는 정규성 검정을 위한 정규 확률도, 상자 그림, 히스토그램을 제공합니다.

1. UNIVARIATE
2. MEANS
3. SUMMARY

 

** 캐글의 BankChurners데이터를 사용했습니다.


1. UNIVARIATE

1) 정규성 검정

- 주어진 통계자료가 정규 분포를 따르는 모집단으로 추출된 표본인지 검정.

- 대부분의 통계 이론은 모집단이 정규분포라는 가정하에 이뤄지므로 추출된 표본이 정규 모집단으로부터의 표본인지를 검정하는 정규성검정은 통계분석에 선행하여 이뤄질 필요가 있음.

- 귀무가설(H0) : 모집단의 분포가 정규분포.

- Shapiro-Wilks : 표본의 크기가 2000이하

- Kolmogorov-Smirnov : 표본의 크기가 2000 이상

 

2) UNIVARIATE PLOT 기본

- NORMAL : 정규성 검정에 필요한 검정 통계량 값과 유의 확률 값(P-VALUE) 제공

- PLOT :  정규성 검정을 위한 정규 확률도와 자료의 전체적인 형태 및 대칭성 파악을 위한 히스토그램과 BOX PLOT 제공

- BY : 주어진 변수에 따른 집단별로 분석 결과를 얻고자 할 때 사용. 프로그램 실행 전에 SORT 프로시저에 의해 정렬되어 있어야 한다.

- VAR : 기술 통계량, 정규 확률도, BOX PLOT, 히스토그램을 얻기 위한 변수명 지정

/* 정렬부터 해줘야 함 */
PROC SORT DATA= work.bankchurnrename;
	BY Gender;
RUN;

/* Total_Revolving_Bal 최솟값, 최대값 제외 */
DATA BANKCHURN_REVOLV_NOT_ZERO;
	SET BANKCHURNRENAME;	
	IF Total_Revolving_Bal>0 AND Total_Revolving_Bal<2517;
RUN;

/* UNIVARIATE */
PROC UNIVARIATE  DATA= BANKCHURN_REVOLV_NOT_ZERO NORMAL PLOT;
	VAR Age Total_Revolving_Bal Total_Trans_Amt;	/* 변수명 나열*/
RUN;

[결과]

> T-검정 통계량이 175.9095, 유의 확률이 <0.0001으로 귀무가설이 기각되므로 평균이 0이 아니라고 결론.

>  Kolmogorov-Smirnov = 0.032473 , Pr > D =  <0.0100  : 정규성을 따른다는 귀무가설을 기각한다.

> 히스토그램과 BOX PLOT 모두 데이터 분포를 보여줌

> 정규 분위수 그래프에서 단위가 아주 작거나 큰 구간에서는 데이터가 직선 위에서 벗어남

 

3) HISTOGRAM

- 히스토그램 출력

- NORMAL: 히스토그램 위에 정규분포 곡선 출력하여 히스토그램과 비교 
- EST : 데이터에서 추정된 평균과 표준편차 값 사용

PROC UNIVARIATE  DATA= BANKCHURN_REVOLV_NOT_ZERO NORMAL PLOT;
	BY Gender;	
	VAR Total_Revolving_Bal ;
	HISTOGRAM Total_Revolving_Bal /NORMAL (MU=EST SIGMA=EST);
RUN;

[결과]

> MU = 1468.3, SIGMA =500

 

 

 

 

2. MEANS

특정 통계량 키워드로 사용자가 원하는 기술 통계량 값만 출력 가능합니다.

1) MEANS : 평균

- MEANS 프로시저에서 얻고자 하는 기술 통계량의 키워드를 지정

- 키워드를 지정하지 않으면 기본적인 5개 기술 통계량 (관측치 수, 평균, 표준편차, 최솟값, 최댓값) 제공

/* 통계량 키워드 미 지정 */
PROC MEANS  DATA= BANKCHURN_REVOLV_NOT_ZERO;
	CLASS Gender;
	VAR Total_Revolving_Bal;
	OUTPUT OUT=MEANS_OF_Revolv;
RUN;

기본 통계량 출력

/* 통계량 키워드 지정 */

PROC MEANS DATA= MEANS_OF_Revolv  N MEDIAN LCLM UCLM MEAN STD VAR NMISS CV SKEWNESS CSS  ;
	CLASS Gender;
	VAR Total_Revolving_Bal ;
RUN;

지정 통계량 출력

- 프로시저로 얻은 기술 통계량 결과를 저장할 파일명은 OUTPUT OUT= 옵션으로 지정

/* OUTPUT OUT= */
PROC MEANS  DATA= BANKCHURN_REVOLV_NOT_ZERO;
	CLASS Gender;
	VAR Total_Revolving_Bal;
	OUTPUT OUT=class_out N(Total_Revolving_Bal)=nn
											  MEAN(Total_Revolving_Bal)=mean
											  MEDIAN(Total_Revolving_Bal)=median
											  VAR(Total_Revolving_Bal)=var
											  STD(Total_Revolving_Bal)=std
											  CV(Total_Revolving_Bal)=cv;
RUN;

PROC PRINT DATA=class_out;RUN;

 

 

 

3. SUMMARY

- 일변량 자료에 대한 기술 통계량을 제공하는 프로시저이지만 결과를 출력 창으로 출력하지 않음. 
- 결과 출력 시에는 PRINT 옵션을 사용.

PROC SUMMARY DATA=bankchurn_revolv_not_zero MEAN STD MEDIAN PRINT;
	 CLASS Gender;
	 VAR Age Total_Revolving_Bal Total_Trans_Amt;
RUN;

 

'Data_Analysis > SAS' 카테고리의 다른 글

[SAS] PROC TABULATE  (0) 2021.01.28
[SAS] 범주형 자료분석  (2) 2021.01.07
[SAS] 자료 행 분할  (0) 2020.12.01
[SAS] Macro  (0) 2020.11.23
[SAS] SQL문  (2) 2020.11.23

댓글