본문 바로가기
의학통계/SAS Tip

Univariate 를 이용하여 percentile 구하기

by boogler 2022. 6. 23.
반응형

Univariate 를 이용하여 percentile 구하기

 

Proc univariate 를 이용해서 백분위수(percentile)를 구할 수 있습니다. 제일 작은 값을 0, 제일 큰 값을 100이라고 한다면, 이 데이터의 25분위수는 25가 되고, 50 분위수는 중앙값(median)이 됩니다. 


S000 ~ S100의 ID를 가지는 0~100까지의 숫자(var_num)를 변수로 가지는 데이터를 생성합니다.

 

< Sample data 생성 >

 

data test_Data;
length ID $5.;

do i=1 to 101;
     j=i-1;
     len=length(compress(j));
     if len=1 then ID=compress('S')||'00'||compress(j);
     else if len=2 then ID=compress('S')||'0'||compress(j);
     else if len=3 then ID=compress('S')||compress(j);
     else ID=.;

     var_num=j; 
     output;
end;
drop i j len;
run;

Sample data 예제

 

Percentile (백분위수) 여러가지 방법으로 구하기
1. Proc univariate 의 pctlpts 이용하기

proc univariate data=test_data noprint;
var var_num;
output out=out_percen1 pctlpts=10 20 30 40 50 60 70 80 90 100 pctlpre=var_num_
pctlname=P10 P20 P30 P40 P50 P60 P70 P80 P90 P100;
run;
proc print data=out_percen1;run;

* pctlpts : 구하고자 하는 percentile 을 적을 수 있다.
* pctlpre : 각 pctlpts 에 해당하는 변수의 변수명 prefixes
* pctlname : 각 pctlpts 에 해당하는 변수의 변수명 suffixes

2. Proc univariate 의 p1 ~ p99 이용하기

proc univariate data=test_data noprint;
var var_num; output out=out_percen2 p10=p10str p90=p90str;
run;

proc print data=out_percen2;run;

* 단지 p1, p5, p10, p25, p75, p90, p95, and p99 percentile 만 적용이 가능합니다.

3. Proc means 의 p1 ~ p99 이용하기

proc means data=test_data p10 p25 p50 p75 p90;var var_num;run;

*
단지 p1, p5, p10 p20 p25 p30 p40 p50 p60 p70 p75 p80 p90 p95 p99 만 적용이 가능합니다.

interquartile range (IQR)을 구할때에는 proc means 의 p25 p50 p75를 이용하는 것이 제일 편리합니다.

 

< SAS Output >

1,2 번 방법으로 구한 p10, p90 값은 각각 10, 90 과 동일합니다.

 

1,2,3 경우의 percentile output

댓글