官术网_书友最值得收藏!

1.1 SAS軟件簡介

1.1.1 SAS軟件結構

SAS軟件采取模塊式結構,每個模塊可稱為一個SAS產(chǎn)品。有些SAS產(chǎn)品中僅有具體的SAS過程(即編譯后的SAS程序),如SAS/STAT;有些SAS產(chǎn)品中不僅有SAS過程,還有其他內(nèi)容,如SAS語言、SAS窗口、SAS宏、SAS SQL等,見SAS/BASE;有些SAS產(chǎn)品本身就是一個功能比較齊全的軟件,可以完成一系列相關的功能,如SAS/ASSIST模塊、SAS/ANALYST模塊和SAS/INSIGHT模塊等;還有些SAS產(chǎn)品是其他SAS產(chǎn)品的開發(fā)工具,如SAS/AF等。

1.1.2 SAS界面簡介

不同版本的SAS軟件,其界面不盡相同。比較新的SAS軟件(SAS 9.2)的主界面如圖1-1所示。

圖1-1 進入SAS9.2后的主界面

由圖1-1可知,在SAS 9.2主界面上,頂部有兩行,分別為“菜單欄”和“工具欄”,左邊有一個“SAS資源管理器”窗口,與它重疊的一個窗口叫“結果”窗口;右邊有兩個窗口,上方的窗口叫“日志”窗口,下方的窗口叫“程序編輯器”窗口,通過頂部菜單欄中的“窗口”選項,可以切換到其他窗口,如“輸出”窗口。

可以說,基本的SAS窗口有“SAS資源管理器”、“結果”、“程序編輯”、“日志”和“輸出”窗口,但另外還有30多個窗口可供用戶處理打印和微調(diào)SAS會話之類的操作。這些窗口的名稱和窗口命令的詳細列表從略。若用戶想獲得此列表,可通過下面的方法實現(xiàn):首先選中主界面第2行工具欄最后一個選項(圖標為一本書),即幫助(help);然后,按照“幫助(help)→SAS產(chǎn)品→Base SAS→SAS窗口引用→SAS窗口索引”的步驟顯示全部SAS窗口列表。

1.1.3 SAS過程與SAS程序

SAS過程是SAS軟件中經(jīng)過編譯后的程序,這些程序解決問題所依賴的理論和方法是被公認的,因此,可以做到標準化、程序化和系統(tǒng)化。然而,用戶要解決的問題卻是千變?nèi)f化的,用戶的數(shù)據(jù)是什么,存放在何處,都是事先無法預知的。用戶在調(diào)用某個具體的SAS過程之前,必須將上述信息傳遞給SAS系統(tǒng)。這些信息必須依據(jù)SAS語言規(guī)則來組織,它們稱為SAS引導程序,簡稱為SAS程序。

1.1.4 運行SAS軟件的兩種常用方式

在SAS系統(tǒng)中運行SAS軟件通常有兩種方式:

(1)非編程法(或稱為菜單驅(qū)動法),即用戶不需要編寫SAS程序就可以直接調(diào)用SAS過程實現(xiàn)希望達到的目的。事實上,當用戶通過菜單驅(qū)動系統(tǒng)選擇某些項時,SAS系統(tǒng)內(nèi)部就在進行自動編程(即自動產(chǎn)生SAS程序),等用戶的選擇工作結束時,SAS程序也就全部被產(chǎn)生出來,故也實現(xiàn)了用戶的目的。但并非所有的任務都能通過此法來實現(xiàn)。

(2)編程法,即用戶親自在程序編輯窗口寫SAS程序(或直接調(diào)用別人事先寫好的SAS程序)并提交給SAS系統(tǒng)執(zhí)行。提交SAS程序的方法是單擊圖1-1中工具欄的倒數(shù)第4個圖標(一個小人圖像)按鈕。

用非編程法運行SAS的方法見本書配套光盤,此處從略。本章僅介紹如何用編程法運行SAS軟件。

1.1.5 SAS程序結構

SAS程序通常由兩部分組成:一部分用于提供待分析的數(shù)據(jù),稱為SAS數(shù)據(jù)步;另一部分調(diào)用SAS系統(tǒng)中已編譯過的能處理某個具體問題的真正程序,稱為SAS過程步。一段SAS程序可以有多個SAS數(shù)據(jù)步和多個SAS過程步,有時,也可以僅有其中的一種。若僅有SAS數(shù)據(jù)步,就需要利用SAS語言編寫程序,以達到某個特定的研究目的;若僅有SAS過程步,必須事先提供可供調(diào)用的數(shù)據(jù)(稱為SAS數(shù)據(jù)集)。先通過下面的一個簡單實例,來直觀了解這些抽象的概念。

【例1-1】從兩個同類和規(guī)模相近的大工廠里隨機地各抽取254個相同規(guī)格的零件,其中甲廠出現(xiàn)的次品數(shù)為5個;乙廠出現(xiàn)的次品數(shù)為10個。請問:甲、乙兩工廠生產(chǎn)的這種零件的次品率之間的差別是否具有統(tǒng)計學意義?

【分析與解答】這是兩樣本率比較問題,更確切地說,是關于兩個總體率是否相等的假設檢驗問題,通常稱為四格表資料的統(tǒng)計分析。可通過在SAS編程窗口中輸入下面的SAS程序來實現(xiàn),設程序名為SASTJFX1_1.SAS。

        DATA rate;
             DO a=1 TO 2;    DO b=1 TO 2;
                      INPUT f @@; OUTPUT;
             END; END;
        CARDS;
        5    249
        10   244
        ;
        RUN;
        ODS HTML;
        PROC FREQ DATA=rate;
             WEIGHT f;   TABLES a*b / CHISQ;
        RUN;
        ODS HTML CLOSE;

程序說明與修改指導:

(1)SAS數(shù)據(jù)步。從“DATA rate;”語句開始到第1個“RUN;”語句結束的這一段SAS程序稱為SAS數(shù)據(jù)步,其功能是創(chuàng)建SAS數(shù)據(jù)集,即為SAS系統(tǒng)提供待分析的數(shù)據(jù)所需要的SAS程序,包括與數(shù)據(jù)有直接聯(lián)系的變量名。這里,變量a代表工廠類別,即代表兩行的總名稱,a=1代表第一行上的甲工廠,a=2代表第2行上的乙工廠;變量b代表產(chǎn)品檢查結果,即代表兩列的總名稱,b=1代表次品,b=2代表合格品;f代表與特定工廠及特定檢查結果對應的產(chǎn)品數(shù),即四格表資料中每個格子上的頻數(shù),如249代表來自甲工廠的合格品。

(2)SAS過程步。介于“ODS HTML;”與“ODS HTML CLOSE;”兩語句(其作用是使SAS輸出結果以網(wǎng)頁格式呈現(xiàn))之間的語句段稱為過程步,即從“PROC FREQ DATA=rate;”到最后的“RUN;”語句的這段SAS程序稱為SAS過程步,其功能是調(diào)用SAS軟件中能達到用戶要求的真正程序(即FREQ過程)并產(chǎn)生相應的輸出結果。

1.1.6 簡單SAS程序中的SAS語句簡介

全部SAS語句內(nèi)容十分豐富,因篇幅所限,詳見本書配套光盤。這里僅介紹SAS程序SASTJFX1_1.SAS中所涉及的幾個SAS語句的大致含義。

每個SAS語句以分號(注意:必須是英文狀態(tài)下的分號)結束,一行上可寫多個SAS語句;不區(qū)分字母的大小寫。上節(jié)這段SAS程序的數(shù)據(jù)步涉及8種SAS語句,現(xiàn)扼要介紹如下。

(1)DATA語句,創(chuàng)建一個名為rate的臨時SAS數(shù)據(jù)集(一旦退出SAS系統(tǒng),它就消失了)。

(2)DO語句,循環(huán)體的起始語句。

DO語句與END語句成對出現(xiàn),構成一個循環(huán)體。在上節(jié)SAS程序中,第1個DO語句與第2個END語句構成一個外循環(huán),第2個DO語句與第1個END語句構成一個內(nèi)循環(huán)。循環(huán)體的功能是創(chuàng)建標志性變量,同時使循環(huán)體內(nèi)部的語句被重復執(zhí)行規(guī)定的次數(shù)。

兩個DO語句中的a和b稱為循環(huán)變量,DO語句中TO前面的數(shù)稱為循環(huán)變量將取的最小值(或起始值),TO后面的數(shù)稱為循環(huán)變量將取的最大值(或終止值)。因這段SAS程序中的外循環(huán)變量執(zhí)行兩次,內(nèi)循環(huán)變量先后各執(zhí)行兩次,故對循環(huán)體內(nèi)的兩個語句而言,總共被執(zhí)行了4次。

(3)INPUT語句,創(chuàng)建一個名為f的變量,通過它去讀取CARDS語句和空語句(即獨占一行的分號)之間的數(shù)據(jù),該語句中的“@@”為指針控制符,當INPUT語句中變量的個數(shù)少于一行上數(shù)據(jù)個數(shù)時,必須加上這兩個符號,以確保完整地讀入全部數(shù)據(jù)。

若INPUT語句中包含字符型變量,例如,若數(shù)據(jù)中性別變量SEX的具體取值為SEX=MALE代表男性、SEX=FEMALE代表女性,則在INPUT語句中,變量SEX應寫成“SEX $”。若數(shù)據(jù)中第1列為人的姓名,其中最長的姓名占18個字符,不僅要將NAME寫成“NAME $”,還應在INPUT語句前加一個定義字符型變量長度的語句,即“LENGTH NAME $ 18.;”

(4)OUTPUT語句,即輸出語句,將INPUT語句變量f讀取的每一數(shù)值送到循環(huán)體外面去(即放入計算機緩沖區(qū)中),以免后讀取的數(shù)據(jù)將先讀取的數(shù)據(jù)覆蓋掉。

(5)END語句,循環(huán)體結束語句。

(6)CARDS語句,標志著其后為數(shù)據(jù)。

(7)空語句,以一個“;”獨占一行的語句稱為空語句,標志著數(shù)據(jù)行的結束。千萬不要將這個分號與最后一個數(shù)據(jù)寫在同一行上。

(8)RUN語句,SAS數(shù)據(jù)步中的該語句標志著SAS數(shù)據(jù)步的結束。此語句可以不寫,但寫上顯得完整。

上節(jié)這段SAS程序的過程步涉及4種SAS語句,現(xiàn)扼要介紹如下。

(1)PROC語句,它是SAS過程步開始的標志,其后跟隨著一個具體的SAS過程名,本例中為FREQ,它是用于分析定性資料的一個SAS過程,其后寫“DATA=rate”,它是一個選擇項,意味著待分析的SAS數(shù)據(jù)集名為rate。若在此之前,程序中只有一個數(shù)據(jù)集,可以不加此選擇項。

(2)WEIGHT語句,指明SAS數(shù)據(jù)集中哪個變量代表列聯(lián)表資料中各格上的頻數(shù),本例為變量f。

(3)TABLES語句,指明SAS數(shù)據(jù)集中哪個定性變量為行變量(本例為a)、哪個為列變量(本例為b),“/”代表其后為選擇項,CHISQ選項要求FREQ過程對SAS數(shù)據(jù)集中的數(shù)據(jù)進行χ2檢驗。

(4)RUN語句,SAS過程步中的該語句標志著SAS過程步的結束,此語句不可省略。

初學者只需將自己的四格表資料中的4個數(shù)正確地替換掉此段程序中的4個數(shù),將SAS程序提交給SAS系統(tǒng)執(zhí)行(單擊SAS窗口上方第2行工具欄中倒數(shù)第4個圖標按鈕)即可。

何為正確替換?就本例而言,來自一個工廠的兩個數(shù)據(jù)必須寫在同一行(或列)上,而同一種檢查結果必須寫在同一列(或行)上。還應注意:檢查結果必須按“次品與合格品”頻數(shù)來表達,不能是“次品數(shù)與被檢查總數(shù)”。

1.1.7 SAS語言簡介

1.SAS語言概述

在編寫像SASTJFX1_1.SAS那樣的SAS程序時,所涉及的全部內(nèi)容可概括為SAS語言。以筆者之見,SAS語言由基本SAS語言(如SAS文件、基本SAS語句、常用SAS函數(shù)、SAS數(shù)組和SAS過程等)和高級SAS語言(如宏、SAS SQL、SAS ODS、SAS/IML等)兩部分組成。這些內(nèi)容十分豐富,需要用大量篇幅才能對它們做一粗略的介紹,請讀者參見本書配套光盤。詳細內(nèi)容請查閱SAS說明書或從SAS軟件的幫助窗口中查詢,下同,不再贅述。

2.SAS函數(shù)概述

SAS中提供的常用SAS函數(shù)近500個,如求?12.3的絕對值,其對應的SAS語句為:“Y=ABS(?12.3);”,也可這樣寫:“X= ?12.3; Y=ABS(X);”;再比如,求49的平方根,其對應的SAS語句為:“Y=SQRT(49);”,也可這樣寫:“X=49; Y=SQRT(X);”。有些函數(shù)使用起來就沒有這么簡單了,因為那些函數(shù)中可能帶有多個參數(shù),需要搞清楚這些參數(shù)的含義,才能正確調(diào)用那些函數(shù),獲得用戶需要的結果。

3.SAS過程概述

SAS軟件中有30多個模塊,每個模塊中一般都有幾十個SAS過程。這些SAS過程都能完成些什么任務,如何正確調(diào)用這些SAS過程,也不是輕而易舉能交代清楚的。像SASTJFX1_1.SAS中所調(diào)用的SAS過程名為“FREQ”,總共寫了4個SAS語句就能完成。其實,僅這一個SAS過程的全部語句和選擇項所涉及的內(nèi)容就相當多,不花上大約一周時間,可能無法全部掌握它。

1.1.8 SAS數(shù)據(jù)集簡介

1.SAS數(shù)據(jù)集的概念

無論采用非編程法還是編程法運行SAS,首先都必須創(chuàng)建SAS數(shù)據(jù)集。直接在SAS編輯窗口錄入原始數(shù)據(jù),將其存儲在某個外部設備上,只能稱其為一個外部數(shù)據(jù)文件,不能稱其為SAS數(shù)據(jù)集。何為SAS數(shù)據(jù)集呢?數(shù)據(jù)只有經(jīng)過SAS系統(tǒng)加工后并按特定方式存儲才能被稱為SAS數(shù)據(jù)集,它將變量名及其取值(即具體數(shù)據(jù))有機地結合在一起。

2.SAS數(shù)據(jù)集的種類

SAS數(shù)據(jù)集分為兩類:一類稱為臨時SAS數(shù)據(jù)集(如程序SASTJFX1_1.SAS中的數(shù)據(jù)集rate),它被存儲在SAS/WORK庫(即文件夾)中,一旦退出SAS系統(tǒng),它就消失了;另一類稱為永久SAS數(shù)據(jù)集,即使退出SAS系統(tǒng),它仍被保留。這種數(shù)據(jù)集必須被保存在非SAS/WORK庫中,可以是SAS系統(tǒng)默認的某個庫,也可以是用戶自己創(chuàng)建的某個庫(即文件夾)。

3.創(chuàng)建SAS數(shù)據(jù)集的方法

創(chuàng)建臨時SAS數(shù)據(jù)集很簡單,只需要像程序SASTJFX1_1.SAS那樣去做就可以了。下面介紹一種創(chuàng)建永久SAS數(shù)據(jù)集的方法。假定在D盤上有一個文件夾名為SASTJFX,試將程序SASTJFX1_1.SAS中的數(shù)據(jù)步改造成能創(chuàng)建永久SAS數(shù)據(jù)集,并將永久數(shù)據(jù)集存儲在D盤SASTJFX文件夾中。所需要的SAS數(shù)據(jù)步如下,設程序名為SASTJFX1_2.SAS。

        LIBNAME table 'D:\SASTJFX';
        DATA table.rate;
             DO a=1 TO 2;    DO b=1 TO 2;
                    INPUT f @@; OUTPUT;
             END; END;
        CARDS;
         5    249
        10   244
        ;
        RUN;

程序說明:LIBNAME語句是創(chuàng)建文件關聯(lián)名的重要語句,其后引號中的內(nèi)容為路徑(包括盤符和文件夾名),table是用戶自己取的關聯(lián)名(一般不要超過8個字符),它就代表其后所寫的路徑。在DATA語句中,寫“table.rate”,就意味著要創(chuàng)建一個名為rate的永久SAS數(shù)據(jù)集,它被存儲在D盤SASTJFX文件夾中,存儲后的實際數(shù)據(jù)集名為:rate.sas7bdat。

4.SAS數(shù)據(jù)集名的種類

通常,SAS數(shù)據(jù)集名有兩類:一類稱為“一詞名”,另一類稱為“兩詞名”。如上所述,臨時SAS數(shù)據(jù)集為一詞名(如rate),而永久SAS數(shù)據(jù)集為兩詞名(如table.rate)。

在“一詞名”中又可細分為以下三種:

(1)用戶自己取的一個詞(如rate)。

(2)直接將DATA語句寫成“DATA;”的形式,用戶未給數(shù)據(jù)集取名,SAS系統(tǒng)會自動給數(shù)據(jù)集取名,當執(zhí)行一次SAS數(shù)據(jù)步后,系統(tǒng)將所創(chuàng)建的SAS數(shù)據(jù)集取名為DATA1,再運行一次,取名為DATA2……

(3)使用SAS系統(tǒng)保留的特殊數(shù)據(jù)集名,如_DATA_、_NULL_和_LAST_。寫成“DATA _DATA_;”與寫成“DATA;”是等價的,將給各次創(chuàng)建的數(shù)據(jù)集依次命名為DATA1,DATA2,…;若寫成“DATA _NULL_;”則表明SAS系統(tǒng)將執(zhí)行數(shù)據(jù)步,可用“PUT”等SAS語句輸出中間結果,但觀測值并不被寫入SAS數(shù)據(jù)集_NULL_,這樣可以節(jié)省計算機資源;用“DATA _LAST_;”時,表明在此之前(指此次進入SAS系統(tǒng)以來),無論創(chuàng)建了多少個SAS數(shù)據(jù)集,只調(diào)用最后被創(chuàng)建的那個SAS數(shù)據(jù)集。

1.1.9 如何利用SAS幫助窗口

與SAS語言、SAS過程和SAS用法對應的內(nèi)容非常豐富,難以記全那么多內(nèi)容。怎么辦?只要用戶知道一些基本的線索,就可以通過SAS軟件提供的豐富幫助功能來查詢。通過單擊SAS主界面上菜單欄的“幫助”菜單或工具欄的倒數(shù)第4個圖標按鈕,就可進入SAS幫助窗口,也可在SAS主界面左邊的命令盒內(nèi)發(fā)送命令,如HELP FREQ,回車后,就可直接查詢有關SAS中FREQ過程的全部信息。

主站蜘蛛池模板: 克东县| 北宁市| 宁海县| 高青县| 洞头县| 二手房| 云梦县| 通榆县| 靖远县| 资源县| 兴城市| 四会市| 扎赉特旗| 云南省| 都昌县| 泸溪县| 呼和浩特市| 榕江县| 台江县| 汽车| 南靖县| 金阳县| 本溪市| 盱眙县| 弋阳县| 宾阳县| 璧山县| 清镇市| 什邡市| 旺苍县| 十堰市| 雅江县| 临桂县| 星座| 维西| 丹巴县| 松溪县| 涞源县| 乌苏市| 鲁甸县| 锦州市|