1.4K Views
March 29, 24
スライド概要
[第8回大阪sas勉強会] 森田祐介
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
第8回 大阪SAS勉強会 小さく始める SGPLOT・ SGPANEL ノーベルファーマ株式会社 データサイエンス室 森田 祐介
イントロ:可視化で価値化 • データを集める時代から、データが集まる時代へ • データを価値ある情報へ • データを可視化する技術の重要性UP • Risk Based Monitoring • 大規模データに対するクリーニング:Central Statistical Monitoring • 可視化に関する本も増えているような… • SASの進化 • GPLOTからSGPLOTへ • SGPANELも便利 • RやSpotfireに負けそうだけど 2
SGPLOT/SGPANELを小さく始める • いろいろオプションはあるけども、はじめの一歩を踏み出す • 手を動かしていただきたい • 眠気防止 • 治験でよく作るグラフだけ紹介 • • • • • 箱ひげ図 散布図/回帰 個別症例の推移図 平均±SDの推移図 異なるグラフを重ねる • SGPANELも紹介 • SGPLOTと文法は似ている 、まとめて習得がお得 3
箱ひげ図 proc sgplot data = test; X軸の変数 vbox CHG / group=TRTP category=AVISITN; run; Y軸の変数 群の変数 4
散布図/回帰 proc sgplot data = test3; run; scatter x = CHG4 y = CHG12/group=TRTP; X軸の変数 Y軸の変数 群の変数 proc sgplot data = test3; run; reg x = CHG4 y = CHG12/group=TRTP; 線形回帰はregに変更するだけ 5
個別症例の推移図 proc sgplot data = test; run; 被験者を識別するための変数 series x = AVISITN y = CHG/markers group=USUBJID; データの位置にシンボルを表示 6
平均±SDの推移図 proc sgplot data = test; Y軸の変数 群の変数 群別にずらして表示 平均を結んで vline AVISITN /response = CHG group = TRTP groupdisplay = cluster stat = mean limitstat = stddev limits = both markers ; run; ひげはSD ひげは上下に表示 X軸の変数 SGPLOTが 平均値とSDを 計算して作図 7
異なるグラフを重ねる(蜂峰図) proc sgplot data = test; 同じ値(Y)はずらして表示 scatter x = AVISITN y = CHG/group=TRTP groupdisplay=cluster jitter; vbox CHG /group=TRTP category=AVISITN nofill nooutliers; run; 箱ひげ図は塗りつぶさない 外れ値は表示しない (scatterに任せる) 散布図と箱ひげ図 の重ね合わせ 8
異なるグラフを重ねる(散布図と回帰) proc sgplot data = test3; scatter x = CHG4 y = CHG12/group=TRTP; run; reg x = CHG4 y = CHG12/nomarkers /*group=TRTP*/; 個別データは表示しない (scatterに任せる) 群別の散布図と 群を区別しない回帰 の重ね合わせ 9
SGPANEL(施設別の散布図) proc sgpanel data = test3; 黄色マーカー以外はSGPLOT の文法と同じ panelby SITEID/rows=2 columns=3; run; scatter x = CHG4 y = CHG12/group=TRTP; 施設別に 群別の散布図を 作成 10
SGPANEL(群別の個別推移図) proc sgpanel data = test noautolegend/*凡例非表示*/; 黄色マーカー以外はSGPLOT の文法と同じ panelby TRTP/rows=1 columns=2 novarname; run; series x = AVISITN y = CHG/markers group=USUBJID; パネルの上部に変数名を表示しない 群別に 個別症例の推移図を 作成 11
困ったら…「SGPLOT」で画像検索 ChatGPTも相談に 乗ってくれそう • 同じ問題に出会って解決した賢い先人がいる • 検索結果からイメージに近いグラフを見つけてサンプルコードを入手 12
まとめ:SGPLOT/SGPANELを小さく始めた • いろいろオプションはあるけども、はじめの一歩を踏み出した • 手を動かした • 誰も眠っていない? • 治験でよく作るグラフだけ紹介した • • • • • 箱ひげ図 散布図/回帰 個別症例の推移図 平均±SDの推移図 異なるグラフを重ねる • SGPANELも紹介 • SGPLOTと文法は似ている、まとめて習得がお得 • 質は量に比例する • たくさん手を動かして体得する 13
Backup:テストデータ作成 data test; proc transpose data = test out = test2 prefix=CHG; call streaminit(20230324); STDDEV = 4; do USUBJID = 1 to 40; TRTPN = mod(USUBJID, 2); if TRTPN = 0 then TRTP = "Placebo"; else TRTP = "Active"; SITEID = mod(USUBJID, 5); do AVISITN = 0 to 12 by 4; by USUBJID SITEID TRTP:; var CHG; id AVISITN; run; data test3; set test2; label CHG4 = "Change from Baseline (Week 4)" CHG8 = "Change from Baseline (Week 8)" CHG12 = "Change from Baseline (Week 12)"; run; if AVISITN = 0 then CHG = 0; else CHG = rand("Normal", AVISITN * TRTPN, STDDEV); output; end; end; label TRTP = "Planned Treatment" SITEID = "Site ID" AVISITN = "Analysis Visit (N)" CHG = "Change from Baseline"; run; 14