실무에서 모집단 데이터에서 표본을 적게는 몇개부터 많게는 수만개까지 데이터를 추출해 달라는 요구가 많다.
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 변수에 따라 층화추출을 한 방식이다.
'SAS' 카테고리의 다른 글
[SAS] SAS 그룹별로 가장 큰 값의 데이터만 출력하는 방법 (0) | 2013.11.14 |
---|---|
[SAS] SAS를 이용해 중복된 데이터만 추출하는 방법 (1) | 2013.11.13 |
[SAS] substr 함수 (1) | 2013.10.14 |
[SAS] proc compare 데이터셋 비교하기 (0) | 2013.10.14 |
[SAS] SAS 프로그램 실행과 환경설정 (SAS 9.1) (0) | 2013.10.14 |
댓글