실무에서 모집단 데이터에서 표본을 적게는 몇개부터 많게는 수만개까지 데이터를 추출해 달라는 요구가 많다.

 

sas공부를 하면서도 아~ 간단하게 모집단에서 몇개만 랜덤으로 추출하고 싶은데 sas에서 어떡하지?

 

라는 경우도 생기며, 난수를 생성해서 해야하나? 등 복잡해지기 마련이다.

 

하지만 간단하게 코딩 몇줄로 이런 경우를 해결하는 방법이 있다.

 

바로 그것은!

 

proc surveyselect

 

복잡한 샘플링 방법을 sas 코딩 한 두줄로 끝내버리는 것이다.

 

예를 들어보자

 

기존 데이터(a)가 10000건인데 그중에서 1000건만 추출해서 분석을 하고 싶다.

1000건을 무작위 또는 여러 방법으로 추출하고 싶은데 어떻게 해야하나?

 

단순무작위 추출을 사용할 경우

 

proc surveyselect data=a method=srs n=1000 out=a1;

run;

 

해석하자면

data=a → 기존데이터 a (10000건의 데이터셋) 를 불러와라

method=srs → srs(단순무작위추출) 방법을 사용하겠다.

n=1000 → 1000건을 추출하겠다.

out1=a1  → a1이란 데이터셋을 생성해서 거기로 저장하겠다.

 

이런 식인 것이다. 진짜 이것은 sas책에도 찾기 힘들고 검색해도 잘 나오지가 않는다...

 

간단하게 스크린샷과 설명을 더해 이해도를 높여보자.

 

 

 

  k, j, h라는 3개의 변수와 14개의 관측치를 가진 a라는 데이터셋을 생성하였다.

그리고 14건중 srs(단순무작위추출법)을 사용해서 3건을 추출하는데 총 3번(a1, a2, a3)을 실시해보았다.

과연 무작위로 다르게 뽑힐까?

 

 데이터셋 a 생성 사진

 

 

 

3개씩 3번추출한 데이터셋 a1, a2, a3 사진

 

14건중 3건씩 단순무작위추출로 3번 실행한 결과 무작위로 추출되었음을 보여준다.

 

 

 

그렇다면 단순무작위추출만 가능한것인가???

아니다. 여러가지 방법들이 가능하다. 그러니깐 method= 가 있는거겠지?

 

- 비복원 단순랜덤샘플링 (Simple random sampling without replacement)

예시에서 사용한 method=srs 는 비복원단순랜덤샘플링의 명령이다.

 

proc surveyselect data=a method=srs n=1000 out=a1;

run;

 

데이터셋 a에서 1000건의 데이터를 비복원단순랜덤샘플 방법으로 추출해 a1에 저장하라는 말이다.

 

- 복원 단순랜덤샘플링 (Simple random sampling with replacement)

 

proc surveyselect data=a method=urs n=1000 out=a1;

run;

 

method=urs 에서 urs는 unspecified random sampling의 줄임말이며 복원단순랜덤샘플링을 실시하라는 말이다.

 

- 층화추출 랜덤샘플링(Stratified random sampling)

 

proc sort data=a;

by age type;

run;

 

proc surveyselect data=a method=srs n=1000 out=a1;

strata age type;

run;

 

층화추출 샘플링에서는 strata에 들어가는 변수에 대해 sorting(정렬)을 하고 명령어를 사용해야 한다.

위에서는 age와 type 변수에 따라 층화추출을 한 방식이다.