SAS/GRAPH 9.2:Statistical Graphics procedure 功能概述 陳冠婷 統計分析師 SAS 統計軟體於 9.2 版本中加入 SAS/GRAPH Statistical Graphics procedure, 其中包含四個以 SG 為開頭的程序 (Procedures), 分別為 SGPANEL, SGPLOT, SGSCATTER 及 SGRENDER, 這些程序對於統計圖形的程式撰寫與編製效率有相當程度的提升 過去若想製作盒鬚圖 散佈圖及長條圖可能須利用 3 種 SAS 程序才能完成, 在 SAS 9.2 的 SAS/GRAPH Statistical Graphics procedure 中, 便可在同一程序內執行 簡介 : SGPANEL 與 SGPLOT 程序幾乎可完成所有的基本統計圖形, 除了透過二十餘種敘述句 (Statement) 繪製出指定圖形外, 亦可設置不同的多圖排列形式, 讓研究者能更輕鬆地去比較多圖間的分布差異, 而 SGSCATTER 為製作散佈圖之程序, 藉由敘述句的選項 (Option) 設定可呈現散佈圖矩陣或插入平滑曲線等相關統計圖形 最後 SGRENDER 程序則須配合 Graph Template Language( 即 TEMPLATE 程序 ) 進行設置, 提供撰寫者非常高的自由性來進行圖內細節的設定, 編繪出更適合研究者的圖片呈現方式, 此用法之程式撰寫難度較高, 適合 SAS 的進階使用者進行編撰, 故後續將僅針對 SGPANEL, SGPLOT, SGSCATTER 三個較常用的 SG 系列程序, 以範例介紹其繪製的圖形及特有功能 註 : 本篇著重於介紹 SGPANEL, SGPLOT, SGSCATTER 三個程序所能完成的圖片及其特殊性, 因此文中將不針對圖內變項關係細作描述, 如欲以自行練習請見後方附錄 : 範例資料說 明 1
範例 : SGPANEL 程序利用不同敘述句繪製出對應的統計圖形, 並可將分類後的多個圖形重疊繪製於同一圖框中, 與 SGPLOT 最大的不同在於可將圖形依類別變項 ( 一至多類 ) 進行分類 ( 如圖 2), 以方便進行比較 圖 1 SGPANEL 程序將總膽固醇以不同圖形 ( 長條圖及密度函數 ) 重疊繪製呈 現其分布情形, 再透過 PANELBY 敘述句, 將圖片分男 女並排顯示 PROC SGPANEL DATA=SGSAMPLE NOAUTOLEGEND; PANELBY GENDER; HISTOGRAM CHOL; DENSITY CHOL; 圖 2 SGPANEL 程序以折線圖 ( 平均膽固醇值 ) 與長條圖 ( 平均年齡 ) 重疊繪製 出每地區之平均年齡及平均膽固醇之分布, 再透過 PANELBY 敘述句, 將圖片 男 女分布且並排顯示 PROC SGPANEL DATA=SGSAMPLE; PANELBY GENDER/NOVARNAME; VBAR AREA / RESPONSE=AGE STAT=MEAN; VLINE AREA / RESPONSE=CHOL STAT=MEAN; 2
SGPLOT 程序與 SGPANEL 一樣能將圖形重疊顯示, 最大的特點在於能在同一圖框中增加另一條不同變項之軸線 (X 或 Y 軸皆可 ), 方便對照每個變項所對應之數值 ( 如圖 4 5) 圖 3 利用 SGPLOT 程序呈現 BMI 之分布, 以不同圖形 ( 直方圖 兩種密度函 數 ) 重疊呈現於同一軸框中 PROC SGPLOT DATA=SGSAMPLE; HISTOGRAM BMI; DENSITY BMI; DENSITY BMI/ TYPE=KERNEL; 圖 4 相似於 圖 2, 差異在於此圖 Y 軸分別呈現年齡及膽固醇兩種座標 軸於兩側 在 SGPLOT 程序中,Y2AXIS 選項能將變項數值顯示於另一條 Y 軸中 PROC SGPLOT DATA=SGSAMPLE; VBAR AREA / RESPONSE=AGE STAT=MEAN; VLINE AREA / RESPONSE=CHOL STAT=MEAN Y2AXIS; 3
圖 5 將身高及糖化血色素與身高及膽固醇兩組散佈圖呈現於同一圖內 在 SGPLOT 程序中, 使用兩個 SCATTER 敘述句堆疊兩組變項之散佈圖, 再結合 Y2AXIS 選項繪製出第二條 Y 軸線以利變項數值之對照 PROC SGPLOT DATA=SGSAMPLE; SCATTER X=HEIGHT Y=CHOL ; SCATTER X=HEIGHT Y=HBA1C / Y2AXIS; SGSCATTER 程序專為散佈圖設計之程序, 與 SGPANEL SGPLOT 一樣能畫出散佈圖與橢圓信賴域 (confidence ellipse), 亦可讓圖形重疊在同一個圖框中, 此程序的特色在於可繪製出散佈圖矩陣, 藉此能通盤呈現出各個連續變項間的相關性 圖 6 分別呈現兩張散佈圖 ( 身高及體重 身高及 BMI) 在 SGSCATTER 程序 中, 可同時繪製一到多張散佈圖, 結合 ELLIPSE 選項繪製出橢圓信賴域 PROC SGSCATTER DATA=SGSAMPLE; PLOT HEIGHT*(WEIGHT BMI)/ELLIPSE=(TYPE=MEAN); 4
圖 7 分別呈現兩張散佈圖(BMI 及膽固醇 BMI 及糖化血色素 ), 跟 圖 6 的差別在於共用同一條 Y 軸軸線 使用 COMPARE 敘述句可讓多圖共用一條軸線, 方便圖形間的分布比較 PROC SGSCATTER DATA=SGSAMPLE; COMPARE Y=BMI X=(CHOL HBA1C)/GROUP=COM; 圖 8 以 SGSCATTER 程序繪製出 BMI 膽固醇 糖化血色素之個別及兩兩變 項之分布 其中 MATRIX 敘述句讓程序繪製出多個連續變項的散佈圖矩陣 PROC SGSCATTER DATA=SGSAMPLE; MATRIX BMI CHOL HBA1C/DIAGONAL=(HISTOGRAM); 由範例可見,SAS 9.2 版本中加入的 SG 系列程序可快速地完成統計圖形, 語法如 何撰寫將在往後的系列文章中做詳細的描述 最後, 在表 1 中我們列出常見的統 計圖形及其對應之敘述句供大家參考 5
表一 : 常用統計圖形及相對應的 SG 系列程序敘述句指令 統計圖形名稱 敘述句 (statement) 程序 SGPANEL SGPLOT SGSCATTER 密度曲線圖 (density curve) DENSITY 點狀圖 (dot plot) DOT 橢圓信賴域 (confidence ellipse) ELLIPSE 長條圖 (bar chart) HBAR(VBAR) 盒鬚圖 (box plot) HBOX(VBOX) 直方圖 (histogram) HISTOGRAM 折線圖 (line chart) HLINE(VLINE) LOESS 平滑曲線圖 (loess curve) LOESS Penalized B-Spline 曲線圖 (penalized B-spline curve) PBSPLINE 迴歸線 (regression line) REG 散佈圖 (scatter plot) SCATTER ( 註 :SGSCATTER 程序中須以其他語法撰寫, 而非以此表標示之敘述句完成 ) 附錄 : 範例資料說明 下表呈現範例檔變項型態 變項名稱 變項說明 資料型態 變項名稱 變項說明 資料型態 COM 公司別 類別 BMI 身體質量指數 連續 AGE 年齡 連續 CHOL 總膽固醇 連續 GENDER 性別 類別 HBA1C 糖化血色素 連續 HEIGHT 身高 連續 AREA 地區 類別 WEIGHT 體重 連續 範例檔下載位址 :http://www2.cmu.edu.tw/~biostat/epaper/062/sgsample.xls 6
LIBNAME IMPORT 'D:\FILE\SGSAMPLE.XLS'; /* 請填入檔案放置路徑 ( 含檔名 )*/ DATA SGSAMPLE; SET IMPORT.' 工作表 1$'N; 程式 1 使用 LIBNAME 語法結合 DATA step 將範例檔匯入成為 SAS 資料檔 ( 請參考 e 報 51 期 -SAS FAQ001 如何將 Excel 資料匯入至 SAS 中 ) 7