【08】統計分析的核心 – Proc Step介紹

什麼是PROC STEP?

SAS統計分析的核心

用來進行統計分析繪製圖表等功能


Proc Step

在第一篇介紹Data Step的文章中,我們有簡單的提到Proc Step

Proc Step是指由程序(Procedure)所建立的語法,在官方的語法文件中你所看到的Proc開頭都是Proc Step。

Proc Step在SAS中廣為人知的功能主要是統計分析與繪製圖表

但其實它也能執行部分的資料處理功能,例如:Proc Transpose,它可以把資料在橫式與直式之間進行轉換。


功能簡介

以下簡單介紹Procedure的功能與輸出

統計分析

proc reg data=sashelp.cars;
	model invoice=Cylinders EngineSize;
run;

上面這是一個簡單線性回歸的程序,其他統計程序的結果大多是類似的模樣,差別在於不同的統計值與計算

多數統計分析的建模程序都會有觀測值數目模型資訊參數估計值這3大類,部分的程序可能會有圖形或是其他專屬於該統計方法的統計值結果

繪製圖表

proc sgplot data=sashelp.cars;
	histogram msrp;
	density msrp;
run;

上面這是一個繪製圖形的程序,繪製圖形的程序建議使用SG開頭(Proc Sgplot、Proc Sgpanel)的程序,這屬於較近代的繪製程序,在使用上比其他單一繪製圖形的程序更為靈活

多數繪製圖形的程序都會有佈景(layout)、圖例(legend)、主要圖形等參數可以來進行設定

另外還能夠自訂樣式,從圖形裡面的點、線條到字型等大多數的屬性都能夠修改,詳細目錄請見Commonly Used Attribute Options

檔案處理

proc transpose data=sashelp.cars(keep=make invoice) prefix=invoice_;
	by make;
	var invoice;
run;

上面這是用來檔案處理的程序,功能是把資料轉置,可以從左邊的直式轉換成右邊的橫式、或是反過來

這只是檔案處理程序的一小部分使用,其他還有檔案管理(Proc Datasets)、資料排序(Proc Sort)等功能


Procedures中的另類 – Proc SQL

為什麼要特別提出Proc SQL來介紹呢? 因為它可以取代Data Step跟部分Proc Step的功能

相信大部分的人都聽過結構化查詢語言 (Structured Query Language, SQL)

Proc SQL其實是SAS引入進來使用的(1992-ANSI標準),但並不符合目前SQL的ANSI標準(詳見)

但如果有使用過SQL,那麼學習Proc SQL的過程會十分輕鬆

如果沒學過的人也不用擔心,很快就會來介紹Proc SQL的語法與使用,它其實很簡單!

其實除了Proc SQL在Proc Step裡面比較特別以外,Proc Ds2與Proc IML也是比較特殊的程序,但就以泛用性而言,Proc SQL還是遠高於這兩者,所以才特別提出Proc SQL來介紹


Run/Quit結尾差異

在碰過官方的程序語法文件後,一定有眼尖的人會發現怎麼一個程序用Run敘述句做結尾、另一個用Quit敘述句呢?

以下就來進行解答!

Run跟Quit敘述句目的都是用來告訴SAS說:「我要終止這個Proc Step囉,請幫我執行到這個程序完就停止」

但差別在於Run敘述句是用來終止非互動式程序(Non-Interactive Procedures),而Quit敘述句是特別用來終止互動式程序(Interactive Procedures)

互動式程序(Interactive Procedures):可以在同一個Procedure的過程執行多個敘述句的功能,並且每次執行不需要退出後再執行

絕大多數的Proc Step都是非互動式程序,僅有少數為互動式程序,例如:Proc Datsets、Proc SQL、Proc Glm及Proc IML等, 目前來說不需要特別去背哪些程序用哪個結尾,只要了解它們在SAS背後的運作方式即可。

單就效能而言,Quit敘述句可以比Run敘述句減少些微的CPU執行時間,但這個效能對整個程式的影響微乎其微


參考資料:

SQL Procedure

Basic SAS® PROCedures for Producing Quick Results – Kirk Paul Lafler

Running interactive procedures in SAS Studio and SAS University Edition

謝謝閱讀這篇文章,有問題歡迎在下方留言

Categories: Basic