




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
千里之行,始于足下朽木易折,金石可鏤Word-可編輯SAS教程:所用版本為SASforWindows6.12版,向下兼容至6.04版。大部分來自華西醫科大學研究生用內部教材《SAS上機實習指導》SAS第一課:SAS界面及基本操作概述SAS第二課:SAS/ASSIST視窗簡介SAS第三課:SAS程序基本語法入門SAS第四課:如何用SAS做統計圖SAS第五課:定量資料的統計描述和t、u檢驗SAS第六課:分類資料的統計描述與容易判斷SAS第七課:方差分析與協方差分析SAS第八課:直線回歸、直線相關與Logistic回歸(上)SAS第八課:直線回歸、直線相關與Logistic回歸(下)SAS第九課:非參數檢驗SAS第十課:隨訪資料的生存分析--非參數法與半參數Cox比例風險模型第一章Hello,SASforwindows!(醫學統計之星)歡迎進入SAS世界!十幾年來,SAS系統憑借其強大而完備的功能在統計軟件界獨占鰲頭。如今,操作系統已進入了Windows時代,SAS的Windows版本也已日漸成熟。因此我們將以其Windows6.12版本為主講述SAS系統的使用。在本章,我們將首先對SAS系統的界面及各部分的功能作簡要推薦,隨后以一個容易的SAS程序為例,講述一些常用的操作,為以后深入學習SAS打下基礎。§1.1SAS界面簡介1.1.1SAS的啟動
在進入Win95系統后,你在Windows桌面上將可以看到形如“”的,看上去象一個不怎么可口的草莓冰淇淋的SAS圖標。將鼠標移到圖標上(注重:是圖標上而不是圖標下方的說明文字上),雙擊該圖標,則很快浮上SAS的啟動畫面,等待4~7秒鐘,系統即徹低進入SAS環境。1.1.2SAS的圖形窗口界面進入SAS后,展示在大家面前的界面如下圖所示,在其中我們用藍色線條將各個部分分開了,請將鼠標在各位置停歇,會有相應位置的名稱彈出。現將其主要部分分離描述如下:控制鈕在窗口的左上角,顯示為程序相應的圖標,圖中則顯示為SAS圖標。用鼠標點一下控制鈕,則會彈出其所代表窗口的控制菜單。標題條顯示所在窗口內容的名稱或者標題,圖中則顯示為程序名“SAS”。最小、最大/中間化、關閉按鈕形如“”,在窗口的右上方依次羅列,最左側為最小化按鈕,用鼠標單擊該按鈕,則系統窗口回縮到Windows狀態欄上成為一個圖標,再用鼠標單擊已經最小化了的窗口圖標,則窗口恢復本來的大小;中間的一個按鈕,當該按鈕為單框時,為最大化按鈕,按一下該按鈕則窗口擴大到全屏幕,此時該按鈕變為雙框的中間化按鈕形如“”,按下此按鈕則窗口又回到中間狀態;最右側的按鈕為關閉按鈕,按下此按鈕時,則系統異常有禮貌的彈出一個對話框,咨詢你是否真的要退出SAS,用鼠標義無反顧地按下決定按鈕,我們就退出系統,回到了Win95桌面(快回來,我還要繼續推薦呢!)。菜單條又叫下拉菜單,是Windows程序的重要組成部分,利用它我們可以完成各種功能,從而輕巧的駕馭SAS系統。以“Edit”菜單為例,用鼠標點一下Edit項,該菜單項就會彈出其相應的下拉菜單,請注重第三項“Cut”為灰色,表示該命令現在不可用,而倒數第2項“Checkspelling”右側有一個小黑三角,這表示該菜單項有自己的次級菜單,將鼠標移到該處,則次級下拉菜單自動彈出,如此反復,直至找到所需命令為止,然后將鼠標指向項目所需菜單項,單擊左鍵,則該命令開始運行。快捷工具欄使用菜單命令偶爾要移動好幾次鼠標,比較棘手,因此程序設計者將常用命令作成快捷工具欄,以便大家使用。以最右側形如“”的按鈕為例,請將鼠標移到該按鈕上方靜止不動,很快Windows彈出該按鈕的提醒“Help”,表明該按鈕為協助按鈕,用鼠標點一下該按鈕,則可以打開協助視窗。命令框可以將它和DOS狀態下的命令行相對應。SAS命令就由該命令框輸入。對于SAS系統的熟練使用者來說,使用系統最快捷的方式就是在命令框打入命令。以退出SAS為例,只要在命令框中點一下鼠標,使字符光標進入命令框(即其中浮上閃耀的光標),在其中輸入“bye”,然后回車,SAS系統就和我們徹底Bye-bye了。窗體這一部分就是除了其余7部分外的,占屏幕絕大部分的――部分。不幸的是,在這里無法看到,因為里面塞滿了其它東西。1)
PGM視窗即programeditor窗口,但稱做PGM視窗以增強奧秘感。偶爾該視窗內可能自動給出程序行號,不用管它。PGM視窗也是一個Windows窗口,因此有自己的控制鈕、標題條等。注重和LOG視窗相比,它的標題條為深色,表示它為當前(子)窗口。除了這些以外,這里還浮上了一個新玩意――滾動條。水平/垂直滾動條形如“”,用來左右/前后移動窗口中的內容,注重倘若現有內容可以所有被顯示出來,則滾動條出現。滾動條的長度代表所有內容的長度,中間的小塊叫滑塊,代表現在窗口內容在所有內容中占的比例和所在位置。單擊滑塊兩側的空白區域可使顯示內容翻頁,單擊滾動條兩側的小黑三角則可使顯示內容移動一行/列。我們也可以采用拖動滑塊的主意迅速找到想看的內容。
2)
LOG視窗用于輸出程序在運行時的各種有關信息。主要有以下幾種內容:程序行黑色,以系統給出的順序行號123...開始。忠實的記錄了執行過的每一條語句。提示藍色,以NOTE開始。提供系統或程序運行的一些常規信息,大多數時候我們可以視而不見。警告綠色,以WARNING開始。普通在程序中含有系統可以自動更正的小錯誤時浮上,此時會提供錯誤序列號。但偶爾也提供內存不足、軟件執照即將到期等信息(使用正版軟件可真煩人)。浮上警告時普通應注重閱讀,如程序有錯誤應趕緊改正。錯誤紅色,以ERROR開始。SAS異常老實,你的程序輕微難懂一點它就大驚小怪地報錯,把問題全推給了你,弄得你不得不重來一遍(有些學生從這里受到啟發,程序一有問題不自己動腦,趕緊就找帶習教師,唉!)。現在在LOG視窗中惟獨兩條提醒信息,第一條是SAS研究所的版權聲明,第二條則標出了軟件版本號和軟件執照擁有單位。其余三種信息我們以后會逐漸見到(可能有的學生還會看到其它信息,沒關系,只要不是紅色的就行)。因為SAS是一個典型的MDI(多文檔界面)程序,因此在其窗體內可以有多個子窗口,但當前子窗口惟獨一個(即標題欄深色顯示的那個),我們所做的操作均是針對當前子窗口的,倘若要對其它子窗口舉行操作,則普通均需切換當前子窗口。SAS的子窗口有十幾個,但我們常用的惟獨四個:PGM視窗、LOG視窗、用于輸出統計結果的OUTPUT視窗和輸出繪圖結果的GRAPH視窗。狀態欄它在系統中又被分為兩部分。當前文件夾表明系統當前的所在位置。我們所做的讀、寫文件等操作均默認在該文件夾中舉行,在圖中當前文件夾為“C:\SAS”。消息欄對于系統在運行中發生的任何情況,在消息欄上都會顯示出相應的信息。仍以剛才協助按鈕為例,當系統顯示協助按鈕的提醒時,在消息欄中也同時會顯示如下的信息“Commandsfordisplayinghelp”,它可以協助我們及時了解系統所處的狀態。雙擊“C:\SAS”處即可改變當前文件夾。Windows中的文件夾=DOS中的子目錄倘若你發出命令而沒有得到預料中的結果,一定要先看看消息欄,往往在這里會有出錯信息或警告。§1.2SAS界面操作入門1.2.1編寫您個人歷史上的第一個SAS程序在上一節我們推薦了SAS系統的界面,現在讓我們一起來編寫您個人歷史上的第一個SAS程序(請記住這個時刻,人類歷史將很可能由此而翻開新的一頁),首先,請在PGM視窗中鍵入以下程序:title"Whosaidwecan'tholdtheworld!";datatemp;
inputxy@@;
cards;
345678903567891023657745;prcprintrun;quit;可千萬不要敲錯呀!1.2.2程序的運行挑選下拉菜單LocalsRun或直接按下F3鍵,程序即被提交運行。大家可以看到視窗中不斷浮上各種信息,最后浮上了紅色的“Error”提醒,表明該程序有錯。下拉菜單會隨著當前窗口的改變而改變,倘若在Local菜單中沒有找到Run項,則請注重你的當前窗口是否為PGM視窗。1.2.3程序的修改唉!第一次放飛就碰到下雨,哪里錯了呢?為了了解程序執行的詳細情況,我們拖動垂直滾動條瀏覽所有LOG視窗輸出,以得到詳細的錯誤提醒。LOG視窗的輸出如下:1title"Whosaidwecan'tholdtheworld!";2datatemp;3inputxy@@;4cards;NOTE:SASwenttoanewlinewhenINPUTstatementreachedpasttheendofaline.NOTE:ThedatasetWORK.TEMPhas6observationsand2variables.NOTE:TheDATAstatementused2.85seconds.6;7prcprint148run;2029quit;WARNING14-169:AssumingthesymbolPROCwasmisspelledasPRC.ERROR202-322:Theoptionorparameterisnotrecognized.NOTE:TheSASSystemstoppedprocessingthisstepbecauseoferrors.NOTE:ThePROCEDUREPRINTused0.28seconds.LOG視窗將運行的程序加上行號并逐行輸出,同時給出相應的提醒,但在第七和第八行時,分離在它們下面畫了紅色的橫線,并標以相應的數字。這表明SAS系統發現了錯誤,數字代表相應的錯誤號,再往下有相應錯誤的詳細解釋。可以看到:系統警告我們可能將“proc”拼成了“prc”;同時指出錯誤:“run”這個參數無法解釋。經過檢查發現,“print”后面少了一個分號,而SAS語句是以分號為語句結束符的,從而使系統認為7、8兩句是一個程序行,因此將“run”判為“print”的參數,天然無法識別。這樣我們就找到了所有的錯誤。要將“prc”改為“proc”,并且在“print”后加一個分號。可是PGM視窗已經空了,怎樣喚回已經逝去了的程序呢?只要挑選Localsrecalltext或直接打“F4”鍵,就可以呼叫回上一次所提交的程序。現在改正剛才的錯誤,再次提交運行該程序。這次LOG視窗信息表明程序已經勝利運行,大多數時候OUTPUT視窗會自動彈出,倘若沒有彈出,則請注重系統窗口的左下方,可能OUTPUT視窗在此處縮小為最小化圖標,將該圖標最大化即可看到輸出結果。如何切換子窗口?挑選Globals下拉菜單,前四項依次是常用的四個窗口的列表,從其中挑選您所青睞的那個即可。1.2.4程序的存儲SAS不是一個字處理軟件,因此它的文件保護功能很弱。倘若你不保存文件,在退出系統時它會自作聰明地以為你因為對生活失去了信心而不想保存,從而不忍心提醒你,其結果則是――洗白(統計之星工作室注:這個詞是四川話特有的,意為徹底打敗,一場空等)。現在我們已經勝利的運行了這個程序,作為紀念,我們想將這個第一個程序存在磁盤上,則挑選菜單FileSave,系統彈出Save對話框如下:請注重存為類型框,將該框右側的小三角點一下,則會彈出類型列表如下。該列表給出了系統所指定的五種存盤文件類型,它們分離是:*.sasSAS程序文件。*.logLOG視窗輸出文件。*.lisOUTPUT視窗輸出文件。*.dat純文本格式的數據文件。*.rtf與WORD兼容的RTF格式文件。我們要存的文件類型顯然為*.sas類型,因此用鼠標挑選*.sas類型,然后再看保存位置框,它顯示當前文件夾位置為C:\SAS文件夾,而我們想將該文件存入C:\USER文件夾,因此要首先改變當前文件夾。先按向上一級按鈕“”,此時文件夾退回C盤盤根,在對話框主框體中尋找,可以看到文件夾列表中已經浮上了USER文件夾(倘若沒看見,拖動滾動條的滑塊找一下),用鼠標雙擊,則進入該文件夾。現在在文件名框中點一下,讓字符光標進入該框,鍵入文件名“Myfirstsasprogram”,再按保存按鈕,則該文件被存儲,系統退回到SAS界面。請注重消息欄顯示“NOTE:9line(s)writtentoexternalfile.”,表明文件已經勝利存盤,而且PGM視窗中的標題也已經改變為“PROGRAMEDITOR-Myfirstsasprogram”。好了,以后PGM視窗里的任何改動就所有算在這個程序的頭上啦!1.2.5如何打開一個存儲的程序如何打開?異常容易,挑選菜單FileOpen,系統就會不顧一切地彈出Open對話框,在里面把你要的東西找到就行了。1.2.6文件的換名存儲該做的好象都做完了,不過好象還缺點什么――糟糕,這本教材的讀者不止我一個,他們豈不是將自己的程序都取這個名字?不可,我得給我的寶物程序換個名字,叫Taitanic如何?好,首先在PGM視窗中將原程序調出,然后選FileSaveas菜單,系統彈出和Save對話框徹低相同的Saveas對話框,象剛才一樣操作即可。(原著:張文彤)第二章SAS/ASSIST視窗簡介(醫學統計之星)上次更新日期:SAS是一個龐大的系統,它由許多模塊組成,每個模塊分離完成不同功能。因為SAS最初是為專業統計人員設計的(這一點和SPSS恰恰相反),因此使用上以編程為主,初學者控制較為艱難。現在,微機操作系統已經進入了WINDOWS時代,而WINDOWS軟件的一個重要特點就是易學易用。要想在市場中繼續率先,SAS必須推出能體現WINDOWS軟件這一特色的新界面,SAS/ASSIST視窗就是這一努力的結果。固然它還有許多不足之處,但這一新界面使得初學者較快地學會使用SAS成為可能。本章將向大家推薦這一SAS的全新界面――SAS/ASSIST視窗。持久以來,對于統計軟件界面的易用性有兩種理論:一種認為統計軟件也是軟件,美觀易用的界面是它必備的功能;另一種理論則認為統計軟件有其異常用途,現在有許多統計主意實際上是在被濫用,而倘若任何人都可以通過容易方便(即“友好”)的界面來使用自己實際上并不了解的復雜統計模型,則等同于是在助長這一現象。這兩種理論都有一定的道理,看來SAS傾向于后者:ASSIST視窗只能提供較常用的統計功能,并且看上去也不怎么優美。2.0.1ASSIST視窗的啟動ASSIST視窗的啟動主意也是比較多的。倘若從下拉菜單啟動,則請單擊Globals-->SAS/ASSIST,系統將開始啟動ASSIST視窗,幾秒鐘后進入ASSIST視窗主界面如下圖所示:ASSIST視窗的正上方為主菜單名(PrimaryMenu),下面的12個按鈕分離表示了在該視窗中可用的各種功能。常用的按鈕有:TUTORIAL按鈕
由此可以進入SAS提供的教學程序DATAMGMT按鈕
由此進入數據庫管理模塊GRAPHICS按鈕
由此進入繪圖模塊DATAANALYSIS按鈕
由此進入統計分析的有關模塊INDEX按鈕
提供所有可用命令的索引,倘若對菜單項的分類不清晰,可以從這里直接尋找所需功能EXIT按鈕
使我們可以退出ASSIST視窗我們主要推薦統計分析功能,對于其它功能,有興趣的學生可以自行試探。單擊DATAANALYSIS,則視窗進入二級菜單――數據分析菜單(DataAnalysisMenu),它的布局和主菜單界面基本一致,各種按鈕中常用的有:ELEMENTARY按鈕
提供基本的統計分析,如描述、相關、頻數表REGRESSION按鈕
提供線性回歸、Logstic回歸和時光序列回歸統計ANOVA按鈕
提供方差分析、非參數檢驗和t檢驗MULTIVARIATE按鈕
提供主成分分析等多元分析主意QUALITYCNTL按鈕
進入質量控制模塊TIMESERIES按鈕
提供時光序列分析功能DATAMGMT按鈕
與主菜單的該按鈕相同,進入數據庫管理模塊INDEX按鈕
提供所有可用功能的索引GOBACK按鈕
退回主菜單HELP按鈕
啟動HELP視窗2.0.2ASSIST視窗的使用主意下面我們以一個例子來說明ASSIST視窗的使用主意。現有數據集SASUSER.CLASS記錄了某班學生的年齡、身高和體重情況,我們要對該數據舉行容易的描述,則用ASSIST視窗的操作主意如下:①單擊數據分析菜單中的按鈕ELEMENTARY,則系統開啟一個新的ELEMETARY對話框如下圖所示:②請注重Summarystatistics是以深色顯示的,表示該項為默認值。用鼠標單擊該項目,則系統開啟下一個對話框――SummaryStatistics對話框如下圖所示:③SummaryStatistics對話框就是統計描述的主窗口,它由一些按鈕和復選框(Checkbox)組成,注重Activedataset:按鈕和Variables:按鈕的右側寫著“-REQUIRED-”,表示這兩項必須加以定義,否則程序沒有充足的信息來運行。首先定義所分析的數據集:單擊Activedataset:,則系統開啟新對話框如圖A所示:圖A④在該對話框中列出了可用的所有數據集名,從左到右依次為庫名、數據集名和數據集類型,拖動滑塊使SASUSER.CLASS數據集浮上在窗口中,用鼠標單擊數據庫名,因為當前數據集只能有一個,所以對話框自動關閉,退回SummaryStatistics對話框。倘若我們再次進入Activedataset對話框,則可見SASUSER.CLASS數據集的左側有一個星號,如圖B所示,這表示該數據集已被選中為當前數據集。倘若要改變挑選,直接單擊需要的數據集名,系統會自動替換。圖B⑤請注重右圖,Activedataset:按鈕的右側顯示為SASUSER.CLASS,表示當前分析數據集為SASUSER庫的數據集CLASS。現在我們可以定義分析變量了:單擊Variables:,系統開啟一個變量挑選對話框供我們挑選變量。⑥SASUSER.CLASS中可供分析的延續變量均顯示在變量窗口中,我們想對這三個變量都做描述,則依次單擊三個變量名,單擊后變量名的左側浮上一個星號,表示該變量被選中;再單擊一次則星號出現,表示撤消挑選。將三個變量所有選中,如圖C所示。然后后按OK,該窗口關閉,系統退回上一級窗口。圖C⑦Variables按鈕右側顯示為AGE、HEIGHT、WEIGHT三個變量。現在我們輸入的信息已經滿意了運行程序的最低要求,但是我們還想將結果按性別分開輸出,則單擊Class:,系統開啟變量挑選窗口如圖D所示。用鼠標單擊變量名“SEX”,再單擊OK,圖D此時變量描述窗口如下圖所示:⑧變量的挑選告一段落,現在開始挑選所需要的統計量。變量描述窗口的下方為一些復選框,右側為復選框名,左側為復選框的狀態。以SUM復選框為例,用鼠標單擊SUM左側的小方框,此時該方框內打勾,表示該項被挑選;再點一下則復選框恢復原狀態。如此挑選所需的所有統計量,最后變量描述窗口的狀態如下圖所示:⑨現在是最后一步――運行程序了,挑選下拉菜單Locals-->Run,則系統開始執行程序,最后OUTPUT視窗自動彈出,顯示總算的運行結果。可能有的學生覺得神奇,為什么我總是說系統在執行程序,剛才沒有寫程序啊?!事實上,SAS/ASSIST視窗是一個程序自動產生器,我們所做的每一個挑選都被寫成了程序,最后系統執行這個自動產生的程序來向我們交差。倘若想看所產生的程序,則挑選下拉菜單LocalsView-->Sourse。以剛才的挑選為例,系統產生的程序其主要部分如下:procmeansdata=SASUSER.CLASSvardef=DFMINMAXRANGESUMMEANVARSTDSTDERRCV;varAGEHEIGHTWEIGHT;classSEX;;run;通過這個例子,我們控制了使用SAS/ASSIST視窗時將會碰到的窗口界面的用法。為了使大家在學習SAS時能打下較堅實的基礎,本書依然以講述SAS語言為主線。但是在例題的解中,我們將盡可能給出程序和ASSIST視窗兩種操作主意。學生們可按照詳細情況自行挑選使用哪種解法。第三章SAS程序初步從本質上講,SAS是一種完美的第四代計算機語言。因此要真正控制它,我們依然要拋開其樸素的外表,從學習它的核心――SAS程序開始。現在,讓我們將SAS看成一個計算能力極強的統計學白癡(之所以這樣說,是因為它計算能力固然極強,卻只能幫你計算而不能提出自己的實驗設計計劃或研究方向來),而你有一個異常小的關于數據分析的問題要請它輔助。天然你要開口提出哀求,無論措辭是委婉婉轉還是直截了當,你的大實話無非是“喂,老兄,我有這樣一些數據,我想做這樣一種統計分析,您能幫我嗎?”。他疾馳檢查您的要求,在認為合情、合理并且合法后,就開始舉行計算,并且在很短的時光內給出計算結果。好的,計算機語言就是我們和計算機對話時所用的語言。和以上人類對話的例子相對照,“我有這樣一些數據”對應SAS程序中的數據步;而“我想做這樣一些統計處理”對應SAS程序中的程序步;最后的那一句哀求“您能幫我嗎”則對應了Submit命令。在默認情況下,運行結果或者出錯信息將自動給出(固然你也可以強制不讓它輸出)。此外,還有一些系統環境控制語句,如Libname、title等。SAS程序就是由一個或多個數據步和/或程序步加上一些亂七八糟的環境控制語句組成。在本章中,我們將首先學習SAS對數據的管理方式,然后會了解到什么是數據步和程序步,最后則推薦一下SAS語言中結構化語句的語法。§3.1SAS系統對數據的管理在SAS系統中惟獨SAS數據集才干被SAS過程直接調用,SAS數據集的結構和DBF數據庫徹低相同,因此無須多講。而SAS數據集存儲在被稱為SAS數據庫的文件擴散,在PC系統中,SAS數據庫與某一個文件夾相對應,我們要為每一個數據庫指定一個庫標記(庫名)來識別該庫,使用Libname命令可以指定庫標記。它的普通格式如下:Libname庫標記’文件夾位置’選項;例如要指定目錄“C:\USER”為庫標記A,可以在視窗中提交如下語句:libnamea’c:\user’;數據庫可分為永遠庫和暫時庫兩種。暫時庫惟獨1個,名為WORK,它在每次啟動SAS系統后自動生成,關閉SAS時庫中的數據集被自動刪除;永遠庫可有多個,用戶可以使用Libname語句指定永遠庫的庫標記,永遠庫中的所有文件都將被保留。但庫標記仍是暫時的,每次啟動SAS系統后都要重新指定。不過為了方便用戶,SAS在每次啟動時都會自動指定兩個庫標記:SASUSER:指明為永遠庫,即庫中的數據集被保存起來,以便下次啟動系統時使用。WORK:指明為暫時庫,對于開辟和檢查新程序異常實用,但每次SAS運行結束后WORK庫中的所有文件將被刪除。在程序中引用該庫中的數據集可以省略庫標記,即它被認為是缺省的數據庫。SAS數據庫對應文件夾,如SASUSER對應c:\sas\sasuser,WORK對應c:\sas\saswork,SAS數據集則對應文件,每個數據集實際上是在硬盤的相應文件夾內產生一個文件名為數據集名,而擴展名為.sd2的文件,因此倘若你勝利的建立了一個數據集,理論上你就可以反復使用它直到硬盤報廢。每一個數據集都有一個兩級名,第一級是庫標記,第二級是數據集名,中間用“.”隔開,在程序中通過指定兩級名來識別文件。文件兩級名的普通形式如下:庫標記.數據集名如在a庫中的數據集abc可以這樣來引用:a.abc。§3.2SAS程序的數據步3.2.1決定知識SAS程序的語句從上一個語句結束處開始,以一個分號結束,可占多行。3.2.2數據步以DATA語句開始,用于創建和處理數據集。其中最常用的語句有:DATA語句它的主要功能是:標志數據步的開始。命名將要創建的SAS數據集。DATA語句的普通形式如下:DATA數據集名;INFILE語句用于從外部文件讀入數據,必須浮上在INPUT語句之前。它的主要功能是:決定一個包含原始數據的外部文本文件。INFILE語句的格式如下:INFILE’外部文件的所在位置及名稱’選項;CARDS語句用于直接輸入數據,標志著數據塊的開始。格式如下:CARDS;數據塊;
INPUT語句用于向系統表明如何讀入每一條記錄。它的主要功能有:讀入由語句指定的數據列。為相應的數據域定義變量名。決定變量的讀入模式。INPUT語句的格式如下:INPUT變量名[變量類型起止列數]...;方括號表示其中的內容為可選,倘若不輸入,系統會以默認值代替。3.2.3數據的兩種輸入方式上面我們學到了INFILE語句和CARDS語句,它們分離對應了兩種數據輸入的方式:【直接輸入方式】實際上我們在第一章已經用到了直接輸入方式,仍以那個程序為例,其中的數據步如下:datatemp;命名將要建立的數據集為work.tempinputxy@@;要輸入的變量為x、y,并且延續輸入cards;直接輸入數據,數據塊開始345678903567891023657745數據塊;數據塊結束變量y后面的@@表示數據可以在一行里延續讀入,SAS默認按列來分隔變量,可是這里惟獨兩個變量,輸成兩列數據太長,因此加上兩個@@,SAS見到這個符號,在按變量名依次讀取完數據后,不是跳到下一行,而是繼續在該行讀數據,直至本行結束或到達分號為止。倘若你對這段講述無法理解,請去掉兩個@@,重新運行一遍程序,看看LOG視窗中的提醒都有些什么變化。【外部文件讀入方式】倘若剛才的數據已經事先輸好,在硬盤上的“C:\USER”文件夾內存為temp.dat文件,該文件內容如下(純文本):345678903567891023657745則我們可以輸入程序如下:datatemp;命名將要建立的數據集為work.tempInfile’c:\user\temp.dat’;指定外部數據文本文件名inputxy@@;要輸入的變量為x、y,并且延續輸入Run;數據步結束,以上語句可以執行了數據步以DATA語句開始,那么在哪里結束?在碰到run語句或另一個數據步/程序步時就結束了。為什么程序的最后都要加一句run?這個問題還不太好解釋,每一個程序應至少在最后有一個run語句,表明前面的所有語句可以提交運行了,倘若沒有這一句,SAS會以為你后面還有語句要輸入,從而將一些非趕緊執行的語句保留在編譯緩沖區中,等待后續命令發出后一起執行,這偶爾會把事情弄得很糟。出于減少棘手的需要,建議大家養成在每一個數據步或程序步后都寫上一句run的習慣。Submit命令和run語句有什么區別?這是初學者最愛問的一個問題,也同樣是一個難以回答的問題。容易地講,run是程序語句,可在程序中多次浮上,它表示前面的程序段已經所有寫完,可以作為一個或幾個整體提交運行了,而Submit則是SAS命令,只在最后程序運行的時候發出,表示將程序正式提交運行。倘若你還不明了,那么我還是來給你打個比喻,run語句是你對SAS說“我想讓您做的就是這些了”,而Submit命令就是對SAS說“現在開始為我做這些事,好嗎”,明了了嗎?【讀入其他格式的數據文件】除了以上的兩種通過數據步創建數據集的主意,SAS還提供了一些其他的方式可以用來讀入其他格式的數據文件。6.11版本以上的SAS可以利用FILE菜單上的import命令將其他格式的數據文件導入SAS系統,創建SAS自己的數據集。可以導入的數據文件格式有:dBase數據庫,EXCEL工作表,LOTUS的數據庫,純文本的數據文件等。導入的操作徹低是對話式的,界面友好,簡便實用。以下容易講述導入的步驟,倘若例1.1的數據輸成一個dBASEIII數據庫文件temp.dbf,已經存放在"c:\user"下,要導入成數據集work.li1_1。挑選FILE菜單上的import,彈出一個對話框,按照向導的提醒舉行下去。
1.挑選導入的數據格式,從下拉式菜單上挑選DBF格式,單擊NEXT按鈕。
2.給出數據文件的位置和文件名,在對話框中鍵入C:\USER\temp.DBF,或點BROWSE直接從上面挑選文件,選好后單擊NEXT按鈕。
3.挑選導入的目的地,即指定要創建的數據集的名字和存放的數據庫名,先在左面的對話框挑選數據庫名WORK(暫時庫),在右面的對話框鍵入數據集的名字li1_1,此名可隨意起,少于8個字符,挑選完后,單擊FINISH按鈕,就完成了此次操作。
這時已經建好了一個數據集,名為WORK.li1_1,與我們前面建立的數據集徹低一致。§3.3SAS程序的程序步通俗的講,SAS的程序步(有的書中也稱過程或過程步)就是已經編好了的用于數據收拾和統計的計算機程序,你只需要調用它們就是了。程序步總是用一個PROC語句開始,后面緊跟著程序步名,用以區別不同的程序步。以下是一些常用的程序步的名稱及功能。程序步名功能SORT將指定的數據集按指定變量排序PRINT將數據擴散的數據列表輸出MEANS對指定的數值變量舉行容易的統計描述FREQ對指定的分類變量舉行容易的統計描述TTEST對指定的變量做t檢驗ANOVA對指定的變量做方差分析NPAR1WAY對指定的變量做非參數檢驗REG對指定的變量做回歸分析CORR對指定的變量做相關分析CHART繪出低分辨率的統計圖PROC就是程序(procedure)的縮寫,而程序步的名字大都是其功能相對應的單詞或詞組的縮寫。可見SAS的許多功能就是通過程序步來體現的,可如此多的種類也使我們難以總結出一個程序步的通式來。不過仍可大致給出如下結構:PROC過程名[DATA=數據集名][選項];
該過程的專用語句描述;
[VAR變量序列;]
[WHERE條件表達式...;]
[BY變量序列;]Run;方括號里的語句均可以省略,在這時該過程按最通常的情況來處理,即:處理最新建立的SAS數據集。處理所有的變量(或對一個計算過程來說處理所有數值變量)。一次處理囫圇數據集而不是某個子集。我們在第一章中用到的PRINT程序步就是采用的這種默認方式。但偶爾我們的要求超出了默認方式所提供的范圍,這時就要動用方括號里的秘密武器了。DATA參數指明所需處理的數據集名,請注重在這里它是一個參數而不是語句。VAR語句倘若只想分析某一個或幾個特定的變量,則可用VAR語句指定它們。例如只想顯示變量x的列表,則PRINT過程如下:Procprint;
Varx;Run;倘若想顯示x和y兩個變量,則將VAR語句改為如下形式即可:varxy;固然,也可以將VAR語句刪除,結果相同。Where語句倘若你想處理的不是囫圇數據集而只是其中符合某種條件的子集,那么WHERE語句將會異常實用,如上例中我們只想顯示大于50的x變量的值,則在PRINT過程中參加where語句如下:Wherex>50;倘若條件變為x、y兩個變量的值都要大于50,則where語句改為:wherex>50andy>50;SAS語言中常用的邏輯表達符號有and(和)、or(或)、xor(異或)、ne(不等)等。By語句倘若你需要分組處理數據,例如要按性別分組輸出統計結果,你有兩種挑選,一是用不同的where語句將同一個程序步反復寫幾遍;另一種顯然更酷的主意就是采用by語句。如上例我們想按不同的y值輸出x值,則參加by語句如下:Byy;使用BY語句要求數據集已經按BY語句中指定的變量排序。倘若沒有排序,則程序無法準確運行。可以用SORT過程來排序,語法結構如下:PROCSORTDATA=數據集名;
BY變量名列;RUN;§3.4結構化語句簡介每一種結構化語言編寫的程序都由順序、分支、循環三種結構構成,SAS語言也不例外。在這里簡要推薦一下分支和循環語句的語法。這些語句均可直接在數據步和程序步中使用,適當地使用它們可以大大簡化我們的工作。3.4.1分支(條件)語句【語法格式】語法格式如下:IF條件THEN
程序塊;ELSE
程序塊;可見其語法和FOXBASE語言十分相似,只是前面多了THEN,結尾沒有ENDIF,可以將兩者相比較來理解。其中程序塊倘若惟獨一句,則可直接寫出,否則應以DO開始,以END結束。【應用實例】例3.1在產生數據集temp的同時為其增強變量class,當x>50時class=1,否則class=2。解:程序如下:datatemp;數據步開始,定義要建立的數據集為WORK庫的TEMP
inputxy@@;要輸入的變量為X和Y,并且采用數據延續讀入方式
ifx>50thenclass=1;建立新變量CLASS,倘若X>50,則CLASS=1
elseclass=2;否則,CLASS=2cards;數據塊開始345678903567891023657745數據塊;數據塊結束procprint;列表輸出數據擴散的數據,檢查有無錯誤run;程序結束,開始運行以上程序以上程序在書寫時采用了縮進格式,使程序的結構更清晰。固然大家可以左對齊寫完所有的語句,但這樣書寫的程序在較長時難以閱讀。為什么可以這樣寫?在這里有須要解釋一下數據步的執行過程,input語句按變量順序將數據讀入內存緩沖區,直至每一個變量都有值相對應。然后數據步繼續向下執行,從而其它語句可以修改內存緩沖區,如修改值、增強變量等,在執行到數據步結束后,程序又回到input語句處繼續執行,直到數據讀完為止。現在再看看這個程序,大家可以理解它了吧!3.4.2循環語句【語法格式】語法格式如下:DO起始條件TO終止條件;
程序塊;END;該語句主要用于建立數據集。【應用實例】例3.2在產生數據集temp的同時為其增強變量class,取值依次為1、2。解:程序如下:Datatemp;數據步開始,定義要建立的數據集為WORK庫的TEMP
doclass=1to2;循環開始,循環控制變量為CLASS,取值從1到2
inputxy@@;要輸入的變量為X和Y,并且采用數據延續讀入方式
output;用OUTPUT語句將循環控制變量寫入數據擴散
end;循環結束cards;數據塊開始345678903567891023657745數據塊;數據塊結束run;程序結束,開始運行以上程序注重在數據步中,我們不需要用語句改變循環變量的大小,系統會自動改變。現在,SAS語言的基本知識算是推薦完了。在理論上,你現在可以坐在計算機前,自立編寫程序以做出你的統計作業或者是向SAS公司發射核導彈。但為了使你能盡可能地少走彎路(我指的是做統計作業而不是后者),在以后的各章中我們將重點推薦一些常用的程序步,并且在須要的時候推薦一些較為深入的內容。Areyouready?Let’sgo!(原著:張文彤田曉燕)第四章統計圖(醫學統計之星)上次更新日期:統計圖是統計描述的重要工具,它可以直觀的反映出事物間的數量關系。因此,許多統計軟件均提供了強大的統計做圖功能。SAS的許多程序步,如Univariate過程等,也附有相應的繪圖功能,這些我們擬在相關章節中講述。本章將向大家推薦兩個專門用于繪圖的程序步――GCHART過程和GPLOT過程。前者用于繪制各種常用的統計圖,而后者則用于繪制散點圖。在早期的DOS版本中,SAS只提供低分辨率圖形(即用鍵盤字符模擬輸出的圖形)。而在WINDOWS時代,美觀優美也成為了軟件最重要的性能指標之一,因此SAS公司推出了高分辨率圖形。固然比起EXCEL等軟件來,它的高分辨率圖形依然不那么令人愜意,但至少已經跟上了時代的潮流。高分辨率圖形在專門的GRAPH視窗中輸出,而低分辨率圖形在OUTPUT視窗中一同輸出。只要將繪圖過程名中的字母G去掉,做出的就是低分辨率圖形,你可以比較一下兩種圖形的“天壤之別”。§4.1GCHART過程Gchart過程可以繪制水平/豎直條圖(直方圖)、立體直方圖、餅圖和星狀圖。我們可以用這些圖來了解單個變量的分布或者多個變量之間的關系。4.1.1語法格式PROCGCHART[DATA=<數據集名>[選項]];指定要分析的數據集名及一些選項HBAR<變量名列>/[選項];繪出條形圖VBAR<變量名列>/[選項];繪出水平條形圖BLOCK<變量名列>/[選項];繪出三維直方圖PIE<變量名列>/[選項];繪出餅圖STAR<變量名列>/[選項];繪出星狀圖AXISn[選項];控制坐標軸的形狀和色彩BY<變量名列>;按該變量取值分層繪制,要求數據集已按該變量排序方括號中的為可選項,倘若不寫,系統會以默認值代替或者忽略該功能;而尖括號中的為必選項,表示倘若寫了該語句,則必須提供尖括號中的信息,否則可能出錯。如[DATA=<數據集名>],表示你可以不寫這一項,此時系統默認處理的是最新建立的數據集;而倘若寫了DATA=這一項,你就必須指定一個數據集名,不然SAS跟你沒完。4.1.2語法說明事實上,繪圖程序步中的選項極為繁雜,倘若合理地使用這些選項可以做出異常優美的統計圖來。但這些選項也給大家的學習帶來很大的不便,因此在這里我們只簡要推薦幾個常用的繪圖語句中的選項。【繪圖語句選項】MISSING指定繪圖時要將變量的缺失值也包括在內。TYPE=做圖類型關鍵字指定要做圖的類型,即圖中條塊代表的含義:缺省值是頻數(FREQ);倘若指定了挑選項SUMVAR,則缺省值為總和(SUM)。可選的關鍵字有:FREQ要求按指定變量的頻數做圖。PERCENT要求按在橫軸刻度表示范圍內浮上的頻數占總數的百分比做圖。CFREQ按累計頻數做圖。CPERCENT按累計百分比做圖。SUM只能與SUMVAR選項同時使用,要求圖中的每一條代表:變量在橫軸表示的取值范圍內時,SUMVAR指定變量的總和。MEAN只能與SUMVAR選項同時使用,要求圖中的每一條代表:變量在橫軸表示的取值范圍內時,SUMVAR指定變量的均數。SUMVAR=求和變量指定使用TYPE=SUM或MEAN時,用于求總和、均值的變量。LEVAL=n倘若繪圖變量是延續變量,用該選項產生有N個組段的圖形。GROUP=分組變量要求產生以分組變量的值分組的并排圖。SUBGROUP=亞組變量要求每個圖形內部再按亞組變量的值分塊。CAXIS=色彩指定坐標軸的色彩。CTEXT=色彩指定坐標軸文本的色彩。4.1.3應用實例例4.1繪制《衛生統計學》第三版習題1.1的直方圖,數據存在c:\user\wt1_1.dat中。解:程序如下:libnamea'c:\user';
指定c:\user文件夾為數據庫adataa.wt1_1;數據步開始,指定要建立的數據集為a庫的wt1_1infile'c:\user\wt1_1.dat';采用外部文件讀入方式,文件名為c:\user\WT1_1.datinputx@@;
輸入的變量為x,采用延續輸入的格式procgchartdata=a.wt1_1;調用繪圖程序步gchartvbarx/levels=10;繪出直方圖,用于繪圖的變量為x,分為10組run;
開始運行以上程序事實上ASSIST視窗的輸出圖形是彩色的,和我們用程序做出的有些區別,這是因為ASSIST視窗自動提交了一些繪圖環境語句,對輸出圖形作了修飾的緣故。實際上libname語句只需要運行一次就可以了,但在開始的幾道例題里我們都寫上了這一句,讓大家逐步養成啟動SAS后就運行這一句的習慣。請將C:\USER文件夾指定為A庫,以后我們實習的數據集均放在該庫中。§4.2GPLOT過程GPLOT過程用于繪出散點圖。圖中的橫、縱坐標分離代表兩個變量。4.2.1語法格式PROCGPLOT[DATA=<數據集名>[選項]];PLOT<縱坐標變量*橫坐標變量[=分層變量名]...>/[選項];指定繪圖變量和選項PLOT2<縱坐標變量*橫坐標變量[=分層變量名]...>/[選項];在原圖基礎上重疊繪制第二幅散點圖SYMBOLn[選項]定義符號、添加趨勢線、定義點和線的色彩BY<變量名列>;按該變量取值分層繪制,要求數據集已按該變量排序實際上,SYMBOL語句中定義的選項為系統環境控制選項,這意味著一次定義,終生使用。除非重新定義,否則以后的輸出圖形都將會是第一個圖形的“孿生兄弟”。在這里SYMBOL后面緊跟了一個n,表示隨意天然數。因為PLOT語句可以在同一坐標系內重疊繪制許多層圖,而這個數字就表示SYMBOL語句是控制的哪一層圖。4.2.2語法說明【GPLOT過程的選項】UNIFORM要求用BY語句分組打印的散點圖的坐標刻度相同,便于比較。VTOH=數值指定縱橫坐標的比例。【PLOT語句說明】分層變量表示所做的散點圖按指定變量的取值分層,默認按不同色彩來區別。語句選項OVERLAY同一語句做的圖重疊在同一個坐標系中顯示。HAXIS=數值定義橫坐標的刻度。VAXIS=數值定義縱坐標的刻度。CAXIS=色彩定義坐標軸的色彩。CTEXT=色彩定義坐標軸文本的色彩。【SYMBOL語句選項】VALUE=符號可用的符號及相應名稱有:+PLUS★STAR■SQUARE
◆DIAMOND▲TRIANGLEI=連線方式①JOIN用直線銜接。②SPLINE用光潔的曲線銜接。NEEDLE向橫坐標畫垂線。RL添加回歸直線。WIDTH=寬度定義數據點和連線的寬度。COLOR=色彩定義數據點和連線的色彩。4.2.3應用實例例4.210名20歲男青年身高(cm)與前臂長(cm)如下,請繪出散點圖(衛統p2365.2題)。身高170173160155173168178183180165前臂長45424441475047464943解:程序如下(注重程序中對輸出圖形作了些修飾)。Libnamea’c:\user’;
指定c:\user文件夾為數據庫adataa.wt5_2;數據步開始,指定要建立的數據集為a庫的wt5_2inputxy@@;輸入的變量為x和y,采用延續輸入的格式cards;數據塊開始1704517342160441554117341數據塊1885017847183461804916543數據塊;數據塊結束procgplotdata=a.wt5_2;調用繪圖程序步gplotploty*x/ctext=blue;繪出散點圖,用于繪圖的變量為x,y,坐標軸文本色彩為藍色symbolvalue=starcolor=pinkwidth=2;
定義散點標記為粉紅色星號,大小為2run;
開始運行以上程序繪制高分辨率統計圖異常耗費系統資源,因此SAS在執行作圖語句時實際上是將這些語句存入程序緩沖區,當用戶打開GRAPH視窗看結果時才正式執行,從而繪出所需的統計圖。倘若用戶沒有看所繪制的圖形,則繪圖語句就向來留在緩沖區內,此時用戶再執行任何程序,程序語句就所有在緩沖區內排隊,等待繪圖語句執行完畢,因此就無法得到相應的輸出結果,這是學生們在上機時常犯的一個錯誤。適當地使用統計圖可以協助我們越發深入的了解數據的分布邏輯。這里的例子只是繪圖語句的容易用法,而繪圖語句的復雜用法將結合例題在以后的各章中逐步推薦。(原著:張文彤) 第五章定量資料的統計描述和t、u檢驗(醫學統計之星)上次更新日期:從本章開始,我們將正式開始使用SAS解決我們的統計問題。先前面的幾章可知,SAS的主要功能是由不同的程序步來體現的。因此在以后的各章中,我們將對每種問題重點推薦一些常用的程序步,以及它們的輸出結果的解釋。對于定量資料的統計描述和容易判斷,SAS提供了三個強有力的程序步,它們是:UNIVARIATE過程提供單個變量的詳細描述和對其分布類型的檢驗。MEANS過程提供單個或多個變量的容易描述,對于多個變量,它的輸出格式緊湊,便于閱讀。TTEST過程對變量舉行t/u檢驗。§5.1引例例5.1文本文件“C:\USER\WTLI1_1.DAT”中已存入某市110名7歲男子童的身高資料(cm),請計算均數、標準差s、變異系數CV(衛統第三版p6例2.1)。解:該題應首先用數據步建立一個數據集,然后調用UNIVARIATE過程或MEANS過程來求出所需要的統計量。詳細的程序如下:①設定數據庫環境:LIBNAMEA'C:\USER';②數據步,建立數據集:DATAA.WTLI1_1;INFILE'C:\USER\WTLI1_1.DAT';INPUTX@@;RUN;③UNIVARIATE或MEANS過程,求出所需要的統計量:PROCUNIVARIATEDATA=A.WTLI1_1;PROCMEANSDATA=A.WTLI1_1NMEANSTDCV;VARX;VARX;RUN;RUN;例5.2某醫生測得18例慢支炎患者與16例健康人的尿17酮類固醇排出量(mg/dl)分離為X1和X2,問兩者均數是否不同(醫統第二版P19例2.17)?解:這是成組設計的兩樣本均數比較的t檢驗,程序應首先建立數據集,然后調用TTEST過程舉行檢驗,在檢驗的同時也可以得到兩個樣本的容易描述。①設定數據庫環境:LIBNAMEA'C:\USER';②數據步,建立數據集,這里采用直接輸入數據的主意:DATAA.YTLI2_17;INPUTGROUPVALUE@@;CARDS;13.1415.8317.3514.6214.0515.0814.9814.2214.3512.3512.8912.1615.5515.9414.415.3513.814.1224.1227.8923.2426.3623.4826.7424.6727.3824.9524.0825.3424.2726.5424.6225.9225.18;RUN;③TTEST過程,舉行兩樣本的t檢驗。PROCTTESTDATA=A.YTLI2_17;VARVALUE;CLASSGROUP;RUN;§5.2UNIVARIATE過程Univariate過程對數值變量給出比較詳細的變量分布的描述,其中包括:變量的極端值。常用的百分位數,包括四分位數和中位數。用幾個散點圖描繪變量的分布。頻數表。決定數據為正態分布的檢驗。5.2.1語法格式Univariate過程的語法格式如下:PROCUNIVARIATE[DATA=<數據集名>[選項]];指定要分析的數據集名及選項[VAR<變量名列>;指定要分析的變量名列BY<變量名列>;按變量名列分組統計,要求數據集已按該變量名列排序FREQ<變量名>;表明該變量為分析變量的頻數WEIGHT<變量名>;表明分析變量在統計時要按該變量權重ID<變量名>;輸出時加上該變量作為索引OUTPUTOUT=<數據集名>指定統計量的輸出數據集名關鍵字=<新變量名列>...指定統計量對應的新變量名pctlpts=<百分位數,...>指定需要的百分位數pctlpre=<新變量名列>];指定所需百分位數對應的輸出變量名倘若省略所有非必須的語句和選項,則UNIVARIATE過程按默認情況輸出所有變量的所有常用統計量。5.2.2語法說明【選項】Univariate過程常用的選項如下:NOPRINT禁止統計報告在OUTPUT視窗中輸出PLOT繪出莖葉圖、箱式圖和正態概率圖FREQ給出頻數表NORMAL對變量舉行正態性檢驗【關鍵字】SAS中用關鍵字來指定所需要的統計量,事實上結果輸出中用的就是各種關鍵字,常用的關鍵字有:基本統計量NMEANSTD(標準誤)CVSUMVAR(方差)RANG百分位數描述MINP1P5P10Q1MEDIANQ3P90P95P99MAX與假設檢驗有關的統計量STDMEAN(標準誤)T5.2.3結果解釋在默認的情況時,Univariate過程會輸出絕大部分統計量,此時的輸出結果如下:Variable=變量名變量標簽Moments和矩有關的統計量Quantiles(Def=5)分位間距統計量N樣本量SumWgts權重總和100%Max最大值99%99%百分位數Mean均數Sum總和75%Q375%百分位數95%95%百分位數StdDev標準差Variance方差50%Med50%百分位數90%90%百分位數Skewness偏度系數Kurtosis峰度系數25%Q125%百分位數10%10%百分位數USS未校正平方和CSS校正平方和0%Min最小值5%5%百分位數CV變異系數StdMean標準化均數1%1%百分位數T:Mean=0變量總體均數為0的t檢驗Pr>|T|t檢驗的p值Range全距Num^=0變量值非0的例數Num>0變量值大于0的例數Q3-Q1四分位間距M(Sign)變量總體均數為0的符號檢驗Pr>=|M|符號檢驗的p值Mode眾數SgnRank變量總體均數為0的秩和檢驗Pr>=|S|秩和檢驗的p值Extremes極端值統計LowestObsHighestObs老幺(看見值序號)五大值(看見值序號)次小值(看見值序號)四大值(看見值序號)三小值(看見值序號)三大值(看見值序號)四小值(看見值序號)次大值(看見值序號)五小值(看見值序號)大哥大(看見值序號)5.2.4應用實例例5.3某地101例健康男子血清總膽固醇值測定結果已存入文本文件“c:\user\WT1_1.dat”中,請繪制直方圖,計算均數、標準差s、變異系數CV、中位數M、p2.5和p97.5(衛統p2331.1題)。解:UNIVARIATE過程的默認輸出中并不給出p2.5和p97.5,因此程序中要加以相應修改,最后在OUTPUT視窗中只會輸出所需的幾個統計量,詳細程序如下:libnamea'c:\user';指定c:\user文件夾為數據庫adataa.wt1_1;數據步開始,指定要建立的數據集為a庫的wt1_1infile'c:\user\wt1_1.dat';采用外部文件讀入方式,文件名為c:\user\WT1_1.datinputx@@;輸入的變量為x,采用延續輸入的格式procgchartdata=a.wt1_1;調用繪圖程序步gchart,所用數據集為a.wt1_1vbarx;繪出豎直條圖,用于繪圖的變量為xprocunivariatedata=a.wt1_1noprint;調用程序步univariate,并且禁止在OUTPUT視窗中輸出varx;要分析的變量為xoutputout=temp指定輸出數據集為work.temp,n=nmean=xbarstd=scv=cvmedian=m將n、mean、std、cv、median按指定變量名存入pctlpts=2.5,97.5pctlpre=per;指定輸出p2.5和p97.5,其輸出變量名以per開始。procprintdata=temp;將數據集work.temp的內容打印輸出run;開始運行以上程序例5.450例鏈球菌咽峽炎患者的埋伏期如下,計算其均數、中位數和幾何均數(衛統p2331.3題)。12~24~36~48~60~72~84~96~108~12017111175422解:因為幾何均數無法直接得到,因此將數據集加以對數變換,求出均數后再行反駁數變換得到幾何均數,程序如下:libnamea'c:\user';指定c:\user文件夾為數據庫adataa.wt1_3;數據步開始,指定要建立的數據集為a庫的wt1_3inputxf@@;輸入的變量為x和f,采用延續輸入的格式x=x+6;將變量x的值更正到每個組段的組中值處logx=log(x);定義新變量logx為變量x的天然對數,用于算出幾何均數cards;數據塊開始121247361148116077258449621062數據塊;數據塊結束procprint;將數據集a.wt1_3的內容打印輸出procunivariatedata=a.wt1_3noprint;調用程序步univariate,并且禁止在OUTPUT視窗中輸出varxlogx;要分析的變量為x和logxfreqf;指定變量f代表分析變量x的頻數outputout=tempn=nmean=xbarlogxmeanmedian=m;輸出數據集和統計量的定義datatemp2;數據步開始,指定要建立的數據集為work.temp2settemp;讓work.temp2繼承work.tmep的所有數據g=exp(logxmean);產生新變量g,它等于elogxmeandroplogxmean;在work.temp2中刪除暫時變量logxmeanprocprintdata=temp2;輸出數據集work.temp2中的數據run;開始運行以上程序請注重,這里UNIVARIATE過程有兩個分析變量X和LOGX,因此在OUTPUT語句中MEAN=后跟了兩個變量名,它們分離存儲兩個變量的均數,而其余的關鍵字后惟獨一個變量名,則它們只存儲分析變量序列的第一個變量X的統計結果。§5.3MEANS過程Means過程提供單個或多個變量的容易描述。和Univariate過程相比,它更傾向于描述已經明確樣本所在總體符合正態分布的變量,因此它不提供百分位數,但可以提供95%可信區間。同時在多個變量輸出時,它的輸出格式緊湊,便于閱讀。5.3.1語法格式PROCMEANS[DATA=<數據集名>[選項]指定要分析的數據集名及一些選項[統計量關鍵字列表]];列出需要的統計量[VAR<變量名列>;要分析的變量名列BY<變量名列>;按變量名列分組統計,要求數據集已按變量名列排序CLASS<變量名列>;按變量名列分組統計,不要求數據集排序FREQ<變量名>;表明該變量為分析變量的頻數WEIGHT<變量名>;表明分析變量在統計時要按該變量權重ID<變量名列>;輸出時加上該變量作為索引OUTPUT<OUT=數據集名>指定統計量的輸出數據集名關鍵字=<新變量名列>...];指定統計量對應的新變量名5.3.2語法說明【選項】Means過程常用的選項如下:NOPRINT禁止統計報告在OUTPUT視窗中輸出MAXDEC=n給出列表輸出的最大小數位數,缺省值為2【統計量關鍵字】MEANS過程中常用的統計量關鍵字有:基本統計量NMEANSTDCVSUMVARRANGMINMAX與假設檢驗有關的統計量STDERR(標準誤)TPRT(與t對應的p值)LCLM(可信區間下限)UCLM(可信區間上限)注重Means過程中標準誤的關鍵字是STDERR,而Univariate過程中為STDMEAN,另外LCLM和UCLM這兩個關鍵字也是Univariate過程所沒有的。5.3.3結果解釋和Univariate過程不同,MEANS過程在默認情況下只輸出樣本量、均數、標準差、最小值和最大值,如例5.1的數據,倘若MEANS過程不加任何選項,則輸出如下:AnalysisVariable:X分析變量名為XNMeanStdDevMinimumMaximum110119.4.108.132.可見Means過程的輸出結構極為緊湊。5.3.4應用實例例5.5給出例5.1的均數、標準差s、變異系數CV和95%可信區間,并檢驗其總體均數是否為0(衛統p2331.1題)。解:倘若數據集a.wt1_1已經建立,則程序如下:procmeansdata=a.wt1_1nmeanstdcvlclmuclmtprt;varx;run;§5.4TTEST過程顧名思義,TTEST過程就是用于舉行兩樣本均數的比較,它給出兩總體方差齊和不齊時的檢驗結果,并同時做方差齊性檢驗。綜合兩者的結果,即可做出判斷。事實上,ttest過程的功能異常有限,只能做普通的兩樣本t檢驗,對于按頻數表格式輸入的資料,我們只能用以后要推薦的ANOVA等過程來分析。5.4.1語法格式PROCTTEST[DATA=<數據集名>指定要分析的數據集名[COCHRAN]];要求在方差不齊時做COCHRAN近似CLASS<變量名>;必須,指定一個兩分類的分組變量[VAR<變量名列>;指定要檢驗的變量名列BY<變量名列>];按變量名列分組統計5.4.2結果解釋以例5.2的TTEST過程為例,它的輸出結果如下:TTESTPROCEDUREVariable:VALUE分析變量名為VALUEGROUPNMeanStdDevStdErrorVariancesTDFProb>|T|樣本量均數標準差標準誤方差統計量t值自由度p值1184.41.40.6Unequal-1.813231.20.07942165.01.00.0Equal-1.817932.00.0785ForH0:Variancesareequal,F'=1.09DF=(15,17)Prob>F'=0.8589可見該結果分為三大部分:第一部分為兩組各種描述統計量的值,第二部分分離給出兩組所在總體方差齊和方差不齊時的t檢驗結果,第三部分為方差齊性檢驗,因此該過程一共舉行了三個假設檢驗。對于無效假設H0:兩總體方差齊的檢驗結果為F'=1.09,DF=(15,17),p=0.8589,可見在本例中方差是齊的,從而應選用方差齊時的t檢驗結果,即t=-1.8179,ν=32,p=0.0785,按α=0.05水準,不否決H0,尚不能認為慢支炎患者與健康人的尿17酮類固醇排出量不同。5.4.3應用實例例5.6某醫院對9例慢性苯中毒患者用中草藥一號抗苯一號治療,得下列白細胞總數(109/L),問該藥是否對白細胞總數有影響(衛統p2252.3題)?病人號123456789治療前6.04.55.03.47.03.86.03.54.3治療后5.98.05.0解:該題為樣本差值均數和總體均數為0比較的t檢驗,TTEST過程無法完成。這里用MEANS過程來處理,程序如下:libnamea'c:\user';dataa.wt2_3;inputxy@@;tempvar=x-y;用新變量tempvar來記錄同一病人治療前后白細胞的差值cards;6.04.24.85.45.06.33.43.83.43.87.04.43.84.06.05.98.05.0;procmeansnmeanstdstderrtprt;利用Means過程檢驗差值總體均數是否為0vartempvar;要分析的變量為tempvarrun;開始運行程序例5.7將鉤體病人的血清分離用標準株和水生株做凝溶實驗,測得稀釋倍數如下。問兩組的平均效價有無區別(衛統p2262.5題)。標準株:1002004004004004008001600160016003200水生株:100100100200200200200400400解:程序如下:libnamea'c:\user';dataa.wt2_5;inputgroupx@@;logx=log(x);將數據做天然對數轉換cards;110012001400140014001400180011600116001160013200210021002100220022002200220024002400;procprint;procttest;調用ttest過程舉行t檢驗classgroup;分組變量為groupvarlogx;要統計的變量為logxrun;(原著:張文彤) 第六章分類資料的統計描述與容易判斷(醫學統計之星)最后一次更新時光:在SAS/STAT模塊中FREQ、TABULATE和SUMMARY等過程可用于分類資料的統計描述,其中FREQ過程兼具統計描述和統計判斷的功能,對分類變量計算頻數分布,產生從一維到n維的頻數表和列聯表;對于二維表,可舉行2檢驗,對于三維表,可作Mentel-Hanszel分層分析。FREQ過程是SAS用于分析分類資料的一個常用過程。本章將向大家推薦FREQ過程的用法。§6.1引例例6.1某醫生用國產呋喃硝胺治療十二指腸潰瘍,以甲氰咪胍作對照組,問兩種主意治療效果有無差別(醫統第二版P37例3.10)?處理愈合未愈合合計呋喃硝胺54862甲氰咪胍442064合計9828126解:在建立行列表的數據集時普通需要三個變量――行變量、列變量和指示每個格子中頻數的變量。本例首先建立這樣一個數據集,然后調用FREQ過程輸出行列表,同時利用CHISQ選項舉行2檢驗。①設定數據庫環境:LIBNAMEAC:\USER;②數據步,建立數據集(這里同時給出直接輸入和利用循環語句輸入兩種程序):DATAA.YTLI8_1;DATAA.YTLI8_1;INPUTROWCOLUMNNUMBER;DOROW=1TO2;CARDS;DOCOLUMN=1TO2;1154INPUTNUMBER@@;12
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論