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

徒然なるままにSAS暮らし

----

スポンサーサイト  

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

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

CM: --
TB: --

0821

GTLでstyleattrsと同様のグループ属性を指定する  

先日、SGPLOTプロシジャのstyleattrsステートメントを紹介しましたが、同様の出力をGTL(Graph Template Language)で実現する方法を紹介します。GTLでは、begingraphステートメントでdatacontrastcolors等のオプションを指定することができます。まず、テストデータとして、カテゴリ変数2個と色分けしたいグループ変数、Visit変数、分析対象の変数を作成し、平均値をseriesプロットで描画します。GTLではdatalatticeステートメントでカテゴリ変数のパネルごとにグラフを作成し、SGPANELプロシジャで同様のグラフを作成します。datalatticeステートメントについては別途紹介したいと思います。

・テストデータ作成と要約統計量算出
*** テストデータ作成 ;
data test ;
do I = 1 to 200 ;
GRP = rantbl(100,1/3,1/3,1/3) ;
CAT1 = rantbl(100,1/2,1/2) ;
CAT2 = rantbl(100,1/3,1/3,1/3) ;
do VISIT = 1 to 4 ;
VAL = 10 + GRP + CAT1 + CAT2 + GRP*CAT1 + GRP*CAT2 + VISIT + rannor(100) ;
output ;
end ;
end ;
run ;
*** 要約統計量の算出 ;
proc summary data=test nway ;
class CAT1 CAT2 VISIT GRP ;
var VAL ;
output out=_OUT(drop=_TYPE_ _FREQ_ ) mean=mean ;
run ;


・GTLによるグラフ作成(青字部分がグループ変数GRPのスタイル指定箇所)
*** 1. GTLによるGroupのカテゴリごとのスタイル指定 ;
proc template ;
define statgraph _XXX ;
begingraph / datacontrastcolors = (orange purple blue)
datalinepatterns = (1)
datasymbols = (circlefilled trianglefilled diamondfilled)
; *--- SGPLOT/SGPANELのstyleattrsに対応 ;
entrytitle "test" ;
layout datalattice rowvar=CAT1 columnvar=CAT2
/ start = topleft border = false headerlabeldisplay = namevalue skipemptycells = true
columnaxisopts = (type=discrete display=(line ticks tickvalues label) label="Visit")
rowaxisopts = (display=all label='VAL (mg/dL)')
columndatarange = unionall rowdatarange = unionall
columngutter = 5 rowgutter = 1
columns = 3 rows = 2 ; *--- 行と列の数や隙間を指定 ;
layout prototype ;
seriesplot x=VISIT y=mean
/ group=GRP lineattrs=(Thickness=1px) name="G" legendlabel="Group"
groupdisplay=overlay display=(markers) ; *--- lineにmarkersymbolを重ねる ;
endlayout ;
sidebar / align=bottom ;
DiscreteLegend "G" / displayclipped=true location=outside across=3 title="Group" border=false ;
endsidebar ;
endlayout ;
endgraph ;
end ;
run ;
*** グラフ出力 ;
proc sgrender data=_OUT template=_XXX ;
run ;


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

・SGPANELプロシジャによるグラフ作成(青字部分がグループ変数GRPのスタイル指定箇所)
*** 2. sgpanelのstyleattrs ;
title "test" ;
proc sgpanel data=_OUT ;
styleattrs datacontrastcolors = (orange purple blue)
datalinepatterns = (1)
datasymbols = (circlefilled trianglefilled diamondfilled) ;

panelby CAT2 CAT1 / layout=lattice columns=3 ;
series x=VISIT y=mean / group=GRP name="leg" legendlabel="Group" markers ;
keylegend "leg" / position=bottom title="Group" noborder ;
colaxis label="Visit" type=discrete ;
rowaxis label="VAL (mg/dL)" ;
run ;


・結果は以下になります。グラフの間の隙間部分以外、GTLとほとんど同様の出力になります。選択肢が広がって便利です。
GTL_vs_styleattrs_2.png

参考サイト:http://blogs.sas.com/content/sgf/2014/05/30/assigning-graph-style-attributes-easily/
スポンサーサイト

Posted on 2015/08/21 Fri. 01:12 [edit]

CM: 0
TB: 0

0802

styleattrsステートメント  

SAS9.4から利用可能になったstyleattrsステートメントで、ようやくSGPLOTやSGPANELプロシジャ内でグループごとのグラフの属性を指定できるようになりました。9.3以前では、GTLで属性をカスタマイズする必要があったので、非常に重宝します。例のごとくとっくに知ってる人は多いと思いますが、SGプロシジャの大きな弱点が克服されたため、個人的なメモもかねて。
以下のように指定すると、グループ1から順に、色が「青、赤、緑」、線種が「1,2,3」、シンボルが「●、▲、◆」と出力されます。
stylleattrs
datacolors = (blue red green)
datalinepatterns = (1 2 3)
datasymbols = (circlefilled trianglefilled diamondfilled) ;

とりあえず使用例を見てみましょう。臨床試験で投与群ごとに継時的に測定されたデータを想定したテストデータを作成します。続いて、投与群ごとの平均値をプロットします。その際、各投与群のグラフの属性をstyleattrsステートメントで上述のオプションを指定します。
*** フォーマットとテストデータ ;
proc format ;
value TRTF 1 = "Placebo" 2 = "Active 1" 3 = "Active 2" ;
value VITF 1 = "Baseline" 2 = "Week 1" 3 = "Week 2" 4 = "Week 3" 5 = "Week 4" ;
run ;
data _TEST ;
call streaminit(100) ;
do ID = 1 to 90 ;
GRP = rand("table",1/3,1/3,1/3) ; *--- 投与群 ;
do VISIT = 1 to 5 ;
*--- VISITごとのテストデータ生成 ;
VAL = rand("normal",10+(VISIT>1)*GRP+(VISIT>1)*0.5*GRP*VISIT,5) ;
output ;
end ;
end ;
format GRP TRTF. VISIT VITF. ;
run ;
*** グラフの作成 ;
proc sgplot data=_TEST ;
*--- 各投与群の属性を指定 ;
styleattrs
datacolors = (blue red green)
datalinepatterns = (1 2 3)
datasymbols = (circlefilled trianglefilled diamondfilled) ;

*--- 投与群ごとの平均値/SDの推移図を描画 ;
vline VISIT / response = VAL
group = GRP
groupdisplay = cluster
stat = mean
limitstat = stddev
limits = both
markers ;
*--- 軸の指定 ;
xaxis type = discrete display = (nolabel) ;
run ;

結果は以下になります。色、線種、シンボルの種類が指定通りに出力されていることが確認できます。groupdisplayオプションと併用することで、投与群ごとの推移図をこのように単純なステートメントで実現できることは非常に有用だと感じています。
Styleattrs.png

Posted on 2015/08/02 Sun. 12:14 [edit]

CM: 0
TB: 0

プロフィール

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

訪れた人

▲Page top

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