반응형
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;
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 과 동일합니다.
'의학통계 > SAS Tip' 카테고리의 다른 글
SAS에서 Index 만드는 3가지 방법 (0) | 2022.07.09 |
---|---|
SAS에서 Wide, Long 포맷 데이터 변환하기 (0) | 2022.07.04 |
성능향상을 위한 SAS코딩 Tip (0) | 2022.06.30 |
SAS에서 중복된 데이터 제거하기 (0) | 2022.06.23 |
Proc Rank 를 이용한 SAS 순위 정하기 (0) | 2022.06.23 |
댓글