公告

[公告]
2014/01/17
由於已經是faculty的關係,不太有足夠時間寫部落格。因此更新的速度會相當緩慢。再加上近幾年來SAS GLOBAL FORUM沒有出現讓我覺得驚艷的技術文件,所以能分享的文章相對也減少許多。若有人推薦值得分享的SAS技術文件,請利用『問題討論區』告知。

2013/07/19
臉書留言板的功能因為有不明原因故障,因此特此移除。而intensedebate的留言板因管理不易,也一併移除。目前已經開啟內建的 G+ 留言系統,所以請有需要留言的朋友,可直接至『問題討論區』裡面留言。


2011年6月4日 星期六

Creating Forest Plots from Pre-computed Data using PROC SGPLOT and Graph Template Language

原文載點:http://support.sas.com/resources/papers/proceedings10/195-2010.pdf

Forest plot 是研究環境流行病學的人經常會用到的一種圖表,主要是可以將許多變數或樣本的參數估計值以及信賴區間畫成一條一條的橫線,以供其他人易於判讀相對大小以及有無顯著。我在自己的博士論文裡面也放了相當多這種圖型,但之前我都是自己用 R 寫程式畫的,過程挺複雜的,沒想到 SAS 裡面有現成的語法可以畫這種圖。
假設用 PROC LOGISTIC 來估計一個模型,如下所示:
ods output "Odds Ratios"=orci; 
proc logistic data=uis descending; 
      model dfree=age beck ivhx ndrugtx race treat site ; 
run; 
估計好後把所有參數的 Odds Ratio 另存成 orci 這個新資料集,內容如下所示:

然後用 PROC SGPLOT 直接來畫 Forest plot:
title "SGPLOT: Forest Plot"; 
proc sgplot data=orci; 
  scatter x=oddsratioest y=effect / xerrorlower=lowercl                
                                    xerrorupper=uppercl  
                                    markerattrs=or(symbol=DiamondFilled size=8); 
  refline 1 / axis=x;   
  xaxis label="OR and 95% CI " min=0; 
  yaxis label="Covariates"; 
run;
陽春一點的圖型只需要四個語法:
  1. scatter:後面的 x= 放估計參數變數名稱,y= 放參數本身變數的名稱。後面三個選項分別是:
    • xerrorlower = 信賴區間下限
    • xerrorupper = 信賴區間上限
    • markerattrs = 設定估計量的符號形式及大小
  2. refine:設定在哪一個軸畫基準線
  3. xaxis:設定 x 軸
  4. yaxis:設定 y 軸
做出來的圖型如下所示:

原文內還有其他的教學,主要著重於如何調整圖型品質,但根據自己的經驗是上述這種圖就差不多可以拿去放在 paper 裡面了,所以就不多做介紹。有興趣的人可以再去參閱原文後段的進階內容。

CONTACT INFORMATION
Zoran Bursac, PhD, MPH
Associate Professor
Biostatistics
Fay W. Boozman College of Public Health
University of Arkansas for Medical Sciences
4301 W. Markham, Slot 781
Little Rock, AR 72205
Work Phone: (501) 526-6723
Fax: (501) 526-6729
E-mail: zbursac@uams.edu
Web: www.uams.edu/biostat/bursac/
CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; height:200px; // for IE6 line-height: 1.2em; }