본문 바로가기
SAS

[SAS] SAS proc surveyselect를 이용한 층화랜덤추출방법(빅데이터,bigdata)

by SASBIGDATA김진휘 2014. 2. 6.

빅데이터(bigdata)에서 전수데이터를 사용하지 못해 대부분 표본데이터를 사용할 것이다.

이때 이용되는 표본추출방법 중 하나인 층화표본추출 층화랜덤추출방법이다.

 

SAS에서 모집단으로 부터 표본을 추출할 때 어떤 변수에 대해 층화로 추출하는 방법을 알아보자.

 

표본을 추출할 때 proc surveyselect 를 사용하는데 층화랜덤추출을 하기 전에 층화할 변수에 대해서 먼저 proc sort 구문을 이용해 정렬을 한뒤에 추출을 해야한다.

 

 

sex_tp_cd가 성별을 의미하는데 성별을 기준으로 정렬하여 성별 별로 10%추출을 한다.

method=srs 는 추출방법을 SRS(단순무작위추출)로 추출하겠다는 것을 의미

rate=0.1 은 모집단 대비 10%를 추출하겠다는 의미

 

이외에도 스크린샷에는 없지만 자주 이용되는것이

seed=1000 같은 것인데 이것은 표본을 추출할때 입력하지 않으면 뽑을 때마다 표본이 다르게 뽑힌다.

그것을 방지하기 위해 seed에 아무 정수를 입력하면 그 숫자기준에 맞게 seed를 같은 값을 넣으면

항상 표본이 일정하게 뽑히게 된다.

 

rate 대신 n= 을 입력하면 비율이 아닌 갯수로 뽑을수도 있다.

 

strata는 층별로 뽑을 기준이 되는 변수를 입력해야 한다.

사진에서는 성별을 기준으로 층화추출을 하겠다는 의미이다.

 

 

왼쪽이 모집단의 전체 관측치이고 오른쪽이 표본의 전체 관측치이다. 빨간점 부분

모집단 약 560만건에서 표본이 약 56만건정도로 10%가 잘 뽑힌 것을 확인할 수 있다.

전체적으로는 10%가 뽑혔으니 이제 성별 별로 10% 뽑혔는지 확인을 해보자.아래 그림 참조

 

 

위 사진을 보면 초록색 위쪽이 모집단의 proc means 결과이고, 아래가 표본의 proc means 결과이다.

초록색 점은 총 관측치 갯수를 의미한다. 전체적으로 10%가 뽑혔다는 것을 확인 할 수 있다.

 

빨간부분이 성별 1 남자를 뜻하는 부분인데 모집단에서 성별 1이 260만건인데

표본에서 성별 1이 26만건정도로 10%가 뽑혔다.

 

파란부분 역시 성별 2 여자를 뜻하며, 모집단에서 성별 2가 300만건인데

표본에서 성별 2가 30만건정도로 10% 표본이 뽑혔다.

 

전체적으로 10%가 뽑혔으며 성별 별로 보아도 10%씩 잘 뽑힌 것을 확인 할 수가 있다.

 

www.sasbigdata.com 김진휘

 

댓글