公告

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

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


2007年2月26日 星期一

You Can’t Stop Statistics: SAS/STAT Software Keeps Rolling Along

原文載點:http://www2.sas.com/proceedings/sugi31/185-31.pdf

兩位 SAS 內部人員 Maura Stokes 和 Robert Rodriguez在 2006 年的 SUGI 31 發表了一篇相當重要的文章,內容主要在說明最新版本的 SAS 9.2 新功能。其中比較重要的是增加了一些舊版沒有的「內建」的程序,如 GLIMMIX、QUANTREG、GLMSELECT(其實這些可以從 SAS 官網下載外掛程式讓舊版的 SAS 使用)。此外,許多高解析的圖表也一併內建到 ODS 裡面,讓使用者可以輕鬆的繪製一些以往要花很多程式碼才能完成的圖形。由於這篇文章涵蓋的範圍太廣,有新的程式碼,有新的輸出報表和新的高解析圖表,因此就僅拿一些比較「炫」的部分來分享一下。

GENERALIZED LINEAR MIXED MODELS

PROC GLIMMIX 程序在 2005 年就已經發表了,不過僅供外掛,在最新的 SAS 中已經加入了這個相當具有威力的程序。程式的寫法和 PROC MIXED 很像,如下所示:

proc glimmix data=Neuralgia; class Treatment Sex;
model Pain= Treatment Age Treatment*Age /solution oddsratio;
ods select ParameterEstimates OddsRatios;
run;


連輸出結果都很像:




當然報表解讀又是另一回事情了。想更進一步瞭解 PROC GLIMMIX 的使用方法可以參考

Schabenberger, O. (2005). “Introducing the GLIMMIX procedure for Generalized Linear Models,” Proceedings of the Thirtieth Annual SAS Users Group International Conference. Cary, NC: SAS Institute Inc.

MODEL SELECTION

一般在配適線性模式時,如果程序裡面已經有內建一些選擇變數的 option,如 PROC REG 的 selection statement 下的 method 指令,可以用 forward、backward 和 stepwise 來挑。如果程序裡面沒有這類 option,如 PROC GENMOD,就要用手動的方式來嘗試。PROC GLMSELECT 程序則是針對任何標準的廣義線性模式來做最佳變數選擇。特別要注意的是,他只能處理 univariate response 的情況,而無法處理 multivariate responses。此外,其相關的圖形也已經完全和 ODS 整合起來,所以讓我們來看看這個範例:

ods graphics on;
proc glmselect data=baseball plots=all;
class league division; model logSalary = nAtBat nHits nHome nRuns nRBI nBB yrMajor crAtBat crHits crHome crRuns crRbi crBB league division nOuts nAssts nError / details=all selection=stepwise(select=sl) stats=all;
run;
ods graphics off;


此處要特別將 ODS 可以產生的效果提出來一下。此程式啟動了 ODS 功能(紅色標示處),並且在 PROC GLMSELECT 後加上 plots=all 的選項,這樣 SAS 就會自動產生所有在此程序可以生出來的圖形。當然,如果妳只想指定某一張圖形的畫,就要指定特定名稱。這些名稱都有紀錄在 SAS 官網上面,供使用者免費下載。如果指定 plots=criterionpanel ,則 SAS 只會產生 Criteron Panel 這張圖。該圖秀出所有可供判斷最佳模式的圖表。為免仍有人看不懂這張表,SAS 乾脆在圖上標上☆符號,告訴使用者這個就是最佳模式!如下圖所示:



ANNOUNCING NEW SOFTWARE: SAS STAT STUDIO

新版 SAS 還可以呼叫一個新的軟體名為 SAS STAT STUDIO。這整合了包含 SAS 資料、程式、輸出報表和圖形,且可以利用表單點選的方式來完成分析(類似SPSS吧)。但文內並沒有特別敘述如何操作,只秀了一張很 fancy 的圖,不過我們可以拭目以待。



EFFECT PLOT IN PROC LOGISTIC

其實 logistic regression model 並沒有什麼太重要的圖需要特別繪製,因為重點都是在如何解釋那個 Odds Ratio。不過新的 ODS 仍舊聊勝於無地加了幾張圖。只要在 PROC LOGISTIC 後面指定 plots option 就可完成。裡面用了一個範例如下:

ods graphics on;
proc logistic data=one plots=(effect(clband yview=(.5,1)));

class Treatment Diagnosis / param=ref; model Cured/N= Diagnosis Treatment;
ods select effectplot;

run;

ods graphics off;


這個程式可以生出一張 Predicted Probabilities Plot:



BAYESIAN ANALYSIS FOR THE PIECEWISE EXPONENTIAL MODEL IN PROC PHREG

這回連 PROC PHREG 裡面都加入了新的指令可以用 Bayesian analysis 來配適 piecewise exponential model。我在 2005 年修 Bayesian analysis 時有學到這段,可是當時只有 WINBUGS 這個軟體可以比較有效率的估計參數和繪製圖表(但語法還是很難學,而且還要上工作站去跑程式)。現在 SAS 也加入了這個功能,方法相當簡單:

ods graphics on;
proc phreg data=Exposed;
model Days*Status(0)=Treatment Sex;
bayes piecewise=loghazard;
run;
ods graphics off;


令人訝異地,只需要補上紅色那段程式碼,就可以完全搞定。要產生相關圖表甚至不需要在 PROC PHREG 後面加上 plots 選項,只要直接呼叫出 ODS 即可。

在這裡僅列出圖表。



想要進一步地瞭解貝氏理論在倖存分析上的應用,可以參考下面這本教科書:

Ibrahim, J. G., Chen, M., and Sinha, D. (2001). Bayesian Survival Analysis, New York: Springer.

附帶一提的是,本書的作者 Joe Ibrahim 是北卡大生統系的貝氏理論權威,當年教我貝氏理論和高等數理統計學的就是這位大師。Joe 人是不錯,可是他的考試每次沒耗個六七個小時是不可能寫的完的。。。。。

BAYESIAN ANALYSIS FOR THE POISSON REGRESSION MODEL IN PROC GENMOD

同樣地,在 PROC GENMOD 下,貝氏理論也可以輕鬆套用了!^^

ods graphics on;
proc genmod data=liver;
model y = x1-x6 / dist=poisson;
bayes;
run;

ods graphics off;


這回連 bayes statement 後面啥東西都不用加了!Orz

THINGS GO BETTER WITH PROC TTEST

連最簡單的 T-test 都有新的花樣!除了使用 ODS 可以產生長條圖和常態曲線外,一個很炫的「交叉分析」也出現在報表當中。讓我們來先看看程式怎樣寫:

ods graphics on;
proc ttest data=asthma;
var PEF1 PEF2 / crossover= (Drug1 Drug2);

run;
ods graphics off;


紅色那段程式碼就是 SAS 9.2 為 PROC TTEST 程序新增的指令。這個指令新到連目前 SAS 線上手冊的 PROC TTEST 程序指令集都還沒有加入。

他會產生下面這些圖形:



REGRESSION DIAGNOSTICS FOR GEE MODELS IN THE GENMOD PROCEDURE

早期要使用 GEE 在 PROC GENMOD 時,並沒有任何關於模式診斷的指令可供使用。我和一位老師討論過為什麼大家在做 GENMOD 時不重視模式診斷,他自己也說不上來,總之結論就是這一部份的理論很晚才發展出來,因此 SAS 在一開始時沒有加入相關程式。這部分的理論大約是在 90 年代末期才陸續有一些論文發表出來。我們先來看一下程式:

ods graphics on;
proc genmod data = preqaq99 descending plots=(cooksd clustercooksd);
class pract_id ;

model bothered = female age dayacc severe toilet/d=bin itprint ;
repeated sub=pract_id/corr=exch modelse;
run;

ods graphics off;


紅色部分的程式碼可以呼叫大家最經常拿來鑑定 influential data 的 Cooks' D 值。如下所示:



關於這部分的理論,可以參考下面這篇論文:

Preisser JS, Qaqish BF (1999), “Robust Regression for Clustered Data with Application to Binary Responses”, Biometrics, 55, 574–579.

其中 John Preisser 是我的 committee member 之一,而 Qaqish 是他的博士論文指導教授。Qaqish 本人以前是 GEE 的發明者之一梁賡義博士的博士論文指導學生。Preisser 和 Qaqish 目前仍在北卡大生統系執教著。

POWER AND SAMPLE SIZE APPLICATION

SAS 其實已經有可以計算 power analysis 的程序,如 PROC POWER 和 PROC GLMPOWER。其中 PROC GLMPOWER 在 9.2 版前要外掛。文內並沒有特別說 9.2 版會加入這個程序。不過倒是有研發一個視窗介面的程式讓使用者用點選的方式就可以完成 power analysis。這對於一些對程式不熟悉的人來說應該是相當方便。

圖就不另外列了,文章裡面有。

ENHANCEMENTS TO SAS/STAT PROCEDURES

除此之外,還有其他一些林林總總的新增項目,僅列出我覺得比較重要的:

  • PROC GENMOD 新增可以做 model selection criteria 的 AIC 和 QIC 值。
  • PROC MIXED 新增 method=laplace。
  • 在 survery analysis 程序中加入 Jackknife 法。
  • PROC PHREG 新增 class statement。
  • 新增 PROC QUANTREG 程序。
  • PROC NPAR1WAY 新增 conover test 和中位數差的 Hodges-Lehmann 信賴區間。
  • PROC GENMOD 和 PROC PHREG 可算出 cumulative residuals。


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; }