data Q1;
call streaminit(2015);
do i= 1 to 100;
X = int(rand('uniform')*100);
output;
end;
run;
パーセント点を算出してデータセットに出力したい場合、
univariateプロシジャを利用して、以下のようにかけます
proc univariate data = Q1 noprint ;
var X ;
output out = A1
p1 =p1
p5 =p5
p10 =p10
q1 =p25
median=p50
q3 =p75
p90 =p90
p95 =p95
p99 =p99
;
run ;
1%点はp1 5%点はp5 といったようにキーワードが決まっていて
結果を格納したい変数を右辺に書くわけです。
q1は25%点、q3は75%点、medianは50%点のことです。
ただ、例えば35%点を算出したいと思って p35= と書いてもエラーになります。
上のコードで指定したポイント以外は、統計量キーワードとして登録されていません。
しかし、じゃあできないと言うわけではなく、そういった場合は
pctlpts= と pctlpre = をセットで使うことで可能になります。
まずpctlpts=で、出したいパーセント点を指定します。
そしてpctlpre=で格納する変数名の接頭部分を指定します。
pctlpts=35 pctlpre = p とするとできる変数名はp35
pctlpts=55 pctlpre = XX とするとできる変数名はXX55
みたいな感じです。
実際に
proc univariate data = Q1 ;
var X ;
output out = A2
pctlpts = 35
pctlpre = p ;
run ;
という感じです。
pctlpts=の指定は、複数指定もできて、例えば以下のように
かけば、0から100まで5%刻みで出力したりできます。
proc univariate data = Q1 noprint ;
var X ;
output out = A3
pctlpts = 0 to 100 by 5
pctlpre = p ;
run ;
画像は途中までです
複数変数の場合は
proc univariate data = Q1 noprint ;
var X i ;
output out = A4
pctlpts = 35
pctlpre = PX_ Pi_ ;
run ;
のようにも書けます。
0 件のコメント:
コメントを投稿