僕の頁 <SASと臨床試験と雑談と>

徒然なるままにSAS暮らし

0726

密度関数と棒グラフの色塗り  

統計解析の教育資料とかで良く目にする密度関数や棒グラフに色を塗る方法を紹介します。
密度関数の場合はSGプロシジャのbandステートメントを使用するだけなので全く真新しいもの
ではありませんが、Rで簡単にできるのと海外で紹介されているのを見て試してみました。
・密度関数を描画する値を格納する。
・下側と上側を描画するための値だけ格納する変数を用意する。
・SGPLOTプロシジャのbandステートメントで上側と下側を描画する。
という流れです。
*** 連続量の場合 ;
data test ;
low = quantile("normal",0.025) ; *--- 2.5%点 ;
high = quantile("normal",0.975) ; *--- 97.5%点 ;

do x = -5 to 5 by 0.01 ;
pdf = pdf("normal",x) ; *--- 標準正規分布の確率密度関数 ;
if x <= low then a1 = pdf ; else a1 = . ; *--- 2.5%点以下のみ描画用 ;
if x >= high then a2 = pdf ; else a2 = . ; *--- 97.5%点以上のみ描画用 ;
output ;
end ;
run ;

proc sgplot data=test ;
series x=x y=pdf ; *--- 標準正規分布の確率密度関数描画 ;
band x=x upper=a1 lower=0 / fillattrs=(color=blue) ; *--- 2.5%点以下を描画 ;
band x=x upper=a2 lower=0 / fillattrs=(color=pink) ; *--- 97.5%点以上を描画 ;
run ;


結果は以下になります。教育にはもってこいの資料が作れそうです。
Density_band
ついでに棒グラフの場合も載せておきます。
*** 棒グラフの場合 ;
data test2 ;
low = -6 ; *--- 下側 ;
high = 6 ; *--- 上側 ;
do x = -10 to 10 ;
y = 10 - abs(x) ;
if x <= low then a1 = y ; else a1 = . ; *--- 下側描画用 ;
if x >= high then a2 = y ; else a2 = . ; *--- 上側描画用 ;
output ;
end ;
run ;

proc sgplot data=test2 ;
vbar X / response=y outline outlineattrs=(color=black)
nofill ; *--- 色なし ;
vbar X / response=a1 outline outlineattrs=(color=black)
fill fillattrs=(color=red) ; *--- 下側描画 ;
vbar X / response=a2 outline outlineattrs=(color=black)
fill fillattrs=(color=blue) ; *--- 上側描画 ;
run ;

結果は以下になります。
vbar_band




スポンサーサイト

Posted on 2015/07/26 Sun. 19:14 [edit]

CM: 0
TB: 0

プロフィール

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

訪れた人

▲Page top