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

徒然なるままにSAS暮らし

----

スポンサーサイト  

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Posted on --/--/-- --. --:-- [edit]

CM: --
TB: --

0304

GTLによる3Dプロットあれこれ  

SASによる3Dプロットの描画方法はいくつかありますが、
GTLによる下記二つの3Dプロットの描き方をメモしておきます。

①3Dのデータをプロットするsurfaceplotparm
②3Dのヒストグラムをプロットするbihistogram3dparm

双方とも、layout overlay3dステートメントで記述して、x,y,z軸の
変数をそれぞれ指定します。また、①の注意点は、事前にy軸とx軸の
変数でデータをソートしておく必要がある点です。

まずはsurfaceplotparmの使用例を見てみましょう。GTLでは各軸の変数を
指定します。x軸とy軸の変数を正規乱数(相関係数は0.6)で生成し、z軸の
変数にはFREQプロシジャで度数を格納します。描画にはSGRENDERプロシジャ
を使用します。
*** テストデータ作成 ;
data _XYZ ;
call streaminit(100) ;
do I = 1 to 200 ;
_X = round(rand('normal', 3, 2),1.) ;
_Y = round(rand('normal', 2 + 0.6*3*(_X-3)/2, 3*sqrt(1-0.6**2)),1.) ;
output ;
end ;
run ;
*** 度数をカウント ;
ods listing close ;
ods output crosstabfreqs=_FREQ(where=(_TYPE_='11')) ;
proc freq data=_XYZ ;
table _Y*_X / nocol norow ;
run ;
ods output close ;
ods listing ;
data _OUT ;
set _FREQ ;
rename Frequency=_Z ;
keep _Y _X Frequency ;
run ;
*** Surfaceplotは事前にソートが必要 ;
proc sort data=_OUT ;
by _Y _X ;
run ;
*** Surfaceplotの定義 ;
proc template;
define statgraph _surface;
begingraph;
entrytitle "3D Graph";
layout overlay3d / cube=false ;
surfaceplotparm x=_X y=_Y z=_Z / surfacetype = fill ;
endlayout;
endgraph;
end;
run;
*** 出力 ;
proc sgrender data=_OUT template=_surface ;
run ;
>


結果は以下になります。何やら良く分かりませんが、とりあえず
各軸の値を結んだ3Dプロット図が出力されます。
Surfaceplotparm.png

ついでにヒストグラムもbihistogram3dparmステートメントで描画します。
データによってはなぜかwarningが出ますが、全てのbinのデータがそろってないからでしょうか。
*** ヒストグラム(Warningは全Binのデータがないから?) ;
proc template;
define statgraph _histo ;
begingraph;
entrytitle "3D Graph";
layout overlay3d / cube=false ;
bihistogram3dparm x=_X y=_Y z=_Z ;
endlayout;
endgraph;
end;
run;
*** 出力 ;
proc sgrender data=_OUT template=_histo ;
run ;


結果は以下になります。
bihistogram3dparm.png

色んなオプションもありそうですがおいおい・・・。
スポンサーサイト

Posted on 2014/03/04 Tue. 00:32 [edit]

CM: 0
TB: 0

プロフィール

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

訪れた人

▲Page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。