2008年12月9日 星期二

利用ODS抓取報表上的結果

一般使用SAS都是先經過proc程序所提供的統計計算去獲得結果並且進一步去轉出該結果的資料。然而當有結果是在報表上的某一個值時,例如利用迴圈的方式想要獲得多組AIC值時,或是參數估計報表內的係數轉換如poisson regression係數轉換為RR值等
如下圖紅框處是我想要擷取的報表


然而很多程序未能支援輸出(output)類似係數估計的報表

固然需要利用其他語法來彌補這樣的問題

如下為人口統計中計算相對危險性所會用到的語法

proc genmod data= deathPoisson;
model _COL10 =class1 class2 class3 class4 class5 / link=log dist=poisson offset=logP lrci;
run;

然而我們僅能在SAS求出Poisson迴歸係數如上圖
但我們會希望能夠求出RR以及信賴區間等資料

可以利用ODS的語法將該係數報表轉換出來,其語法如下


ODS trace on;

proc genmod data= deathPoisson;
model _COL10 =class1 class2 class3 class4 class5 / link=log dist=poisson offset=logP lrci;
run;

ODS trace off;


上述語法中以 ODS trace on; 為開頭, ODS trace off; 為結尾將欲轉出的報表語法包起來
此時先做執行運算動作,並且到log視窗去
會看到如下報表


此為各結果報表的內定值,若對欲特定報表想要轉出時找出該報表對應名稱(Label)

例如欲取出Analysis Of Parameter Estimates這張報表的係數加以換算為RR時在語法中其對應的檔案為ParameterEstimates


找出該張報表的語法後
再把原來的語法改為如下

ods output ParameterEstimates = classparameter;
proc genmod data= deathPoisson;
model _COL10 =class1 class2 class3 class4 class5 / link=log dist=poisson offset=logP lrci;
run;
data CIclass;
set classparameter ;
RR=exp(Estimate);
RRL95=exp(LowerLRCL);
RRU95=exp(UpperLRCL);
proc print data=CIclass;
var Parameter RR RRL95 RRU95;
run;

增加ods output ParameterEstimates = classparameter;宣告即為轉出該結果的係數資料,classparameter則是新取名的檔案名稱
其結果如下圖將轉出的係數再計算其自然數e,即為RR值



沒有留言: