




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章
SAS編程操作預備知識
作者:薛富波
一、SAS系統(tǒng)簡介SAS是一個龐大的系統(tǒng),它目前的版本可以在多種操作系統(tǒng)中運行。當前在國內被廣泛使用的最新版本是8.2版,功能很強大,我深有體會。據(jù)說9.0版已在國外面世,已經(jīng)有一些有關它的搶先報道在網(wǎng)絡上廣為流傳,說它如何如何美妙,令人不禁充滿期待。SAS8.2的完整版本包含以下數(shù)十個模塊。BASE,GRAPH,ETS,F(xiàn)SP,AF,OR,IML,SHARE,QC,STAT,INSIGHT,ANALYST,ASSIST,CONNECT,CPE,LAB,EIS,WAREHOUSE,PCFileFormats,GIS,SPECTRAVIEW,SHARE*NET,R/3,OnlineTutor:SASProgramming,MDDBServer,ITServiceVisionClient,IntrNetComputeServices,EnterpriseReporter,MDDBServercommonproducts,EnterpriseMiner,AppDevStudio,IntegrationTechnologies等。所謂模塊,我的理解是將功能相近的程序、代碼等集中起來組成相對獨立的部分,就稱之為模塊,類似于辦公軟件系統(tǒng)office中包含的word、excel、access等。各模塊具有相對獨立的功能范圍,我們常用的模塊有base,graph,stat,insight,assist,analyst模塊等,分別執(zhí)行基本數(shù)據(jù)處理、繪圖、統(tǒng)計分析、數(shù)據(jù)探索、可視化數(shù)據(jù)處理等功能。其余模塊我用得很少,知道得也很少,所以也就不多說了。SAS系統(tǒng)的長處,體現(xiàn)于它的編程操作功能的無比強大。SAS一直以來也是注重于其編程語言的發(fā)展,對于可視化方式的菜單操作投入較少,其較早的版本僅有很少的菜單操作功能,使用起來也是非常的別扭。這很可能就是在windows人機交互式操作系統(tǒng)占統(tǒng)治地位的今天,SAS較少被人問津的原因之一。到了最新的幾個版本,SAS也對可視化操作方法投入了一定的關注。從8.0版以后,出現(xiàn)了幾個功能強大的可視化操作的模塊,如insight模塊和analyst模塊等,其菜單操作的方便程度以及人機界面的親和性絕不亞于SPSS等著名的可視化統(tǒng)計分析軟件。然而要想完全發(fā)揮SAS系統(tǒng)強大的功能,充分利用其提供的豐富資源,掌握SAS的編程操作是必要的,也只有這樣才能體現(xiàn)出SAS在各個方面的杰出才能。二、SAS系統(tǒng)基本操作及基本概念哪位要是連軟件的安裝和打開都要我啰嗦的話,我勸您還是買一套洪恩的《開天辟地》好好熱熱身先。SAS8.2的界面中間是三個并排(或層疊)的窗口,那個叫做ProgramEditor的窗口(窗口標簽為Editor)就是用來輸入SAS語句的,編程操作的所有內容都是在該窗口內完成的,各位還是要跟它先多熟悉一下。(一)數(shù)據(jù)集(dataset)和庫
統(tǒng)計學的操作都是針對數(shù)據(jù)的,SAS中容納數(shù)據(jù)的文件稱為數(shù)據(jù)集,數(shù)據(jù)集又包含在不同的庫(暫且理解為數(shù)據(jù)庫吧)中。SAS中的庫分為永久性和臨時性兩種。顧名思義,存在于永久庫中的數(shù)據(jù)集是永久存在的(只要你不去刪除它),臨時庫中的數(shù)據(jù)集則在你退出SAS后自動被刪除。至于SAS中庫的概念,最簡單的理解就是一個目錄,一個存放數(shù)據(jù)集的目錄。
數(shù)據(jù)集的結構完全等同于我們一般所理解的數(shù)據(jù)表,由字段和記錄所構成,在統(tǒng)計學中我們習慣將字段稱為變量,在后面的內容中字段和變量我們就理解為同一種東西吧!建立數(shù)據(jù)集的方法很多,編程操作中有專門的數(shù)據(jù)讀入方法來建立數(shù)據(jù)集,但需要將數(shù)據(jù)現(xiàn)場錄入,費時費力。如果數(shù)據(jù)量大,我勸各位還是先以其它方法將數(shù)據(jù)集建好,否則程序語句的絕大部分會浪費在數(shù)據(jù)的輸入上。Whatare其它方法?各位是不是去參考一下別的書籍或資料。要不您是不是可以等一等,我準備若干年后出一本SAS操作大全。(二)SAS程序概述和其它計算機語言一樣,SAS語言(稱為SCL語言,SASComponentLanguage)也有其專有的詞匯(即關鍵字)和語法。關鍵字、名字、特殊字符和運算符等按照語法規(guī)則排列組成SAS語句,而執(zhí)行完整功能的若干個SAS語句就構成了SAS程序。
SAS程序包括多個步驟和一些控制語句,一般情況下均包括數(shù)據(jù)步和過程步,一個或多個、數(shù)據(jù)步或過程步,它們之間任何形式的組合均可成為一段SAS程序,只要能完成一個完整的功能。通常情況下SAS程序還包括一些全程語句,用以控制貫穿整個SAS程序的某些選項、變量或程序運行的環(huán)境。SAS程序的語句一般以關鍵字開始,以一個分號結束,一條語句可占多行(SAS每看到一個分號,就將其以前、上一個分號以后的所有東東當作一條語句來處理,而不管他們處在多少個不同的行中)。SAS語句對字母的大小寫不敏感,你可以根據(jù)個人習慣決定字母的大寫或小寫。1.庫名(庫標記)的定義為了保存寶貴的數(shù)據(jù)和方便操作起見,我習慣于指定自己的庫名及其路徑(目錄),因為SAS系統(tǒng)中已有的永久庫(SASUSER)無論庫名還是其對應的路徑都太過繁瑣,使用太不方便。程序中用到的數(shù)據(jù),都可以永久的保存于該路徑下,保證以后可以重復使用。指定庫名的語句為全程語句,其格式如下:
Libname庫名‘路徑’;
例如我們指定的庫名為“a”,路徑為:“e:\data\”,SAS語句如下:
libnamea‘e:\data\’;
2.數(shù)據(jù)步SAS的數(shù)據(jù)步以data語句開始,用于創(chuàng)建和處理數(shù)據(jù)集。Data語句以關鍵字“data”開始,格式如下:data數(shù)據(jù)集名;例如:dataa.case;將創(chuàng)建在庫a中名為case的SAS數(shù)據(jù)集,語句執(zhí)行后你可在與庫a對應的目錄下看到剛剛建立的數(shù)據(jù)集文件case。Data語句所指定的數(shù)據(jù)集,一般都是以“庫名.數(shù)據(jù)集名”的格式出現(xiàn)的,也可以單獨的“數(shù)據(jù)集名”出現(xiàn),此時的數(shù)據(jù)集系統(tǒng)默認為是臨時庫中的數(shù)據(jù)集,退出系統(tǒng)后將會被刪除。data語句有兩個重要的功能,標志數(shù)據(jù)步的開始和命名將要創(chuàng)建的SAS數(shù)據(jù)集。除data語句外,數(shù)據(jù)步一般情況下還包括infile語句、input語句以及datalines語句等。在不同的數(shù)據(jù)輸入方式下對于它們的使用方式也不一樣。SAS程序有兩種常見的數(shù)據(jù)輸入方式,即從外部文件讀入和直接輸入兩種方式。(1)外部文件讀入方式數(shù)據(jù)若已經(jīng)包含在某個外部文件(文本文件或數(shù)據(jù)文件)中,可用此方法輸入數(shù)據(jù)到數(shù)據(jù)集文件中。在以上介紹的data語句后,寫入以下語句:infile‘外部文件的所在位置及名稱’選項;input變量名1變量名2…變量名n;infile語句用于從外部文件讀入數(shù)據(jù),必須出現(xiàn)在input語句之前。它的功能是指定一個包含原始數(shù)據(jù)的外部文件。input語句用于向系統(tǒng)表明如何讀入每一條數(shù)據(jù)記錄。它的主要功能有:讀入由語句指定的數(shù)據(jù)列,為相應的數(shù)據(jù)域定義變量名,確定變量的讀入模式。例如:
libnamea‘e:\data\’;dataa.student;infile‘e:\data\student.txt’;inputnameheightweight;
以上程序將目錄“e:\data\”下的文本文件“student.txt”中的數(shù)據(jù)輸入數(shù)據(jù)集student中,該數(shù)據(jù)集存放于目錄“e:\data\”下。(2)直接輸入方式
數(shù)據(jù)量較少或操作者意志力堅強的情況下采用此種輸入方式,在data語句之后寫入如下語句:
input變量名1變量名2…變量名n;datalines;(在以前的版本下為cards,新版本下兩者可通用)…………(數(shù)據(jù)行)…………(數(shù)據(jù)行)
…………(數(shù)據(jù)行)
;
datalines語句用于直接輸入數(shù)據(jù),標志著數(shù)據(jù)塊的開始。注意:這里的數(shù)據(jù)行中數(shù)據(jù)之間以空格分隔,當然也可以其它東東如逗號等來分隔,這里大家先以空格來分隔好了。因為不同的分隔方式下input語句要采取相應的控制選項,這些我們以后再討論,這里我們還是省省力氣吧。另外數(shù)據(jù)行輸完后不能像其它語句那樣直接在后面加上分號,而要另起一行輸入分號,這樣SAS才認為這是在輸入原始數(shù)據(jù)而不是在搞別的什么。例如:
libnamea‘e:\data\’;dataa.student;inputname$heightweight;(name后面的$符號表示變量name為字符型變量)
datalines;
Linda17151
Mary16850
Selinna16949
;
以上程序將直接建立數(shù)據(jù)集文件student,該數(shù)據(jù)集文件存放于目錄“e:\data\”下。3.過程步
SAS程序的過程步表示一個處理過程,如排序、T檢驗、方差分析等等。過程步以關鍵字proc開始,后面緊跟著過程名,用以區(qū)分不同的程序步,并以關鍵字run結束。一般的格式如下:proc過程名選項列表;……(其它語句);……(其它語句);run;SAS程序中涉及的過程多達數(shù)百種,實現(xiàn)統(tǒng)計功能時常用的過程也有數(shù)十種之多,現(xiàn)將最為常用的過程名稱及其所能實現(xiàn)的功能列入下表(表1.1),以便各位提前熱熱身。表1.1
常用的過程名稱及其功能過程名功能Sort將指定的數(shù)據(jù)集按指定變量排序Print將數(shù)據(jù)集中的數(shù)據(jù)列表輸出tabulate將數(shù)據(jù)按照指定的分類變量以表格的形式分類匯總Means對指定的數(shù)值變量進行簡單的統(tǒng)計描述Freq對指定的分類變量進行簡單的統(tǒng)計描述Ttest對指定的變量做t檢驗Anova對指定的變量做方差分析npar1way對指定的變量做非參數(shù)檢驗Reg對指定的變量做回歸分析Corr對指定的變量做相關分析Discrim對指定的變量做判別分析Cluster對指定的變量做聚類分析Chart繪出低分辨率的統(tǒng)計圖4.幾個常用的重要過程在進入一般統(tǒng)計學功能實現(xiàn)的內容之前,有關數(shù)據(jù)預處理和執(zhí)行重要公共功能的過程大家有必要預先掌握,這里選出幾個常用的和重要的過程進行討論。(1)對SAS文件進行操作的datasets過程datasets過程是對數(shù)據(jù)文件進行管理操作的工具,利用它我們可以實現(xiàn)以下功能:將SAS文件從一個庫中拷入另一個庫中;對SAS文件進行重命名;修復損壞的SAS文件;刪除SAS文件;列出某一SAS庫中所有的SAS文件;列出一個SAS數(shù)據(jù)集的屬性,如最后修改時間、數(shù)據(jù)是否壓縮、數(shù)據(jù)是否索引等;對SAS文件進行設置密碼的操作;向SAS數(shù)據(jù)集添加記錄;對SAS數(shù)據(jù)集的屬性以及數(shù)據(jù)集內變量的屬性進行修改;創(chuàng)建或刪除SAS數(shù)據(jù)集的索引;創(chuàng)建并管理SAS數(shù)據(jù)集的核查文件;創(chuàng)建或刪除SAS數(shù)據(jù)集的完整性規(guī)則。datasets過程的一般格式如下:procdatasets<選項列表>;
age當前文件名相關文件名列表</選項列表>;
appendbase=數(shù)據(jù)集名<data=數(shù)據(jù)集名其它選項>;
audit文件名<(操作密碼)>;initiate;<其它代碼;>
change舊文件名1=新文件名1<…舊文件名n=新文件名n><選項列表>;
contents<data=數(shù)據(jù)集名><其它選項>;
copyout=庫標記<其它選項>;
exclude文件名<其它選項>;(該語句只能在copy語句后出現(xiàn),不能和select語句同時出現(xiàn))
select文件名<其它選項>;(該語句只能在copy語句后出現(xiàn),不能和exclude語句同時出現(xiàn))
delete文件名<其它選項>;
exchange文件名1=交換文件名1<…文件名n=交換文件名n><選項列表>;
modify文件名<選項列表>;
<modify語句之從屬語句>;
repair文件名<選項列表>;
save文件名<選項列表>;run;是不是太繁瑣了,我都有些不耐煩了。不過我還是得寫,已經(jīng)寫了嘛!不忍心浪費掉,最起碼可以用來充充數(shù),擴大一下篇幅。至于各位,嫌煩的可以略過此部分,想用的時候再來溫習也不遲。下面我就不厭其煩地向各位介紹一下各選項及各條語句的含義和用法。procdatasets語句后各選項的含義及用法見下表(表1.2)。表1.2
procdatasets語句后各選項的含義及用法選項含義及用法alter=轉換保護密碼SAS文件設置有轉換操作密碼時用以驗證操作的合法性,密碼正確時代碼才會被執(zhí)行details/nodetails控制有關SAS文件的詳細信息顯示與否,前者為顯示,后者不顯示,默認值為后者force此選項具有兩個功能:(1)在過程步的語句存在錯誤時仍然強制程序的執(zhí)行;(2)在append語句中,兩個數(shù)據(jù)集的變量不完全相同時仍然強制append語句的執(zhí)行。gennum=控制對衍生數(shù)據(jù)集的處理方式,等號后可為all,hist,revert或某一整數(shù)kill此選項表示刪除待處理的庫中的所有文件,應慎用library=庫標記用以指定所要處理的庫memtype=成員類型指定處理所針對的庫成員類型(文件類型),默認值為all(所有類型)nolist在日志文件中禁止對所處理文件目錄的顯示nowarn在語句中指定的文件不存在等情況下,禁止顯示出錯信息,強制程序繼續(xù)執(zhí)行pw=操作密碼SAS文件設置操作密碼時驗證操作的合法性(包括讀、寫保護以及轉換保護的文件)read=讀保護密碼SAS文件設置讀保護密碼時驗證操作的合法性age語句用于批量地重命名文件,按照當前文件和相關文件的排列順序,依次將后一個文件名重命名給前一個文件,結果是最后一個文件被刪除,當前文件名被廢棄。對此語句我所了解的就這么多,而且還是通過試驗得出的結論,但總感覺還是理解的不對,哪位若有高見還請不吝賜教。append語句執(zhí)行向數(shù)據(jù)集添加記錄的功能,選項“base=數(shù)據(jù)集名”用以指定要添加記錄的數(shù)據(jù)集,“data=數(shù)據(jù)集名”則指定所要添加的記錄所在的數(shù)據(jù)集,此選項若省略則默認為當前數(shù)據(jù)集(最近一次操作的數(shù)據(jù)集)。audit語句用于對文件的核查,生成核查文件并對其進行管理;change語句以新文件名替換舊文件名;contents語句用于顯示指定數(shù)據(jù)集或當前數(shù)據(jù)集的各種屬性;copy語句用于將當前庫中相應的文件拷貝到指定的庫中,選項“out=庫標記”用來指定文件要拷貝到的目標庫;delete語句用于刪除指定的文件;exchange語句的功能是將等號前后兩個文件的文件名進行互換;modify語句用于修改文件各方面的屬性;repair語句用于對指定的文件(受到過某種損壞)進行修復,使其恢復到可以使用的狀態(tài);save語句的功能是將其指定的文件保留,當前庫中的其他所有文件則被刪除。(2)對數(shù)據(jù)文件中記錄進行排序的sort過程sort過程的功能是對指定數(shù)據(jù)集中的記錄按照指定的變量進行排序。由于諸多過程有對數(shù)據(jù)集記錄進行排序的需要,比如過程步中存在by語句(用以將數(shù)據(jù)文件分割為若干部分)的情況下,就需要按照by語句后的變量對數(shù)據(jù)先行排序,所以sort過程非常有用,而且非常常用。sort過程的一般格式如下:procsort選項列表;
by<descending>變量名1<變量名2…變量名n>;run;procsort語句后各選項含義及其用法見下表(表1.3)。表1.3
procsort語句后各選項含義及其用法選項含義及用法data=數(shù)據(jù)集名用以指定sort過程所要處理的數(shù)據(jù)集,若省略則默認為最近建立或處理的數(shù)據(jù)集datecopy此選項指定在不改變文件創(chuàng)建日期和修改日期的條件下對文件進行排序操作out=數(shù)據(jù)集名將排序后文件以指定的文件名存儲,原文件不進行任何修改,若無此選項則將原文件覆蓋sortseq=排序依據(jù)指定對字符型變量排序時依據(jù)的標準reverse/equals/noequals指定輸出數(shù)據(jù)中的排序方式,三者分別表示將字符變量的次序翻轉顯示,在排序變量的各水平內部次序保持不變,在排序變量的各水平內部允許次序的改變nodupkey/noduprecs指定重復變量的消除方式,前者表示除去排序變量值重復的記錄,后者表示除去所有變量值重復的記錄sortsize=用以指定可用最大內存的大小,等號后為表示內存大小的數(shù)值及單位,比如10mforce用以強制執(zhí)行重復排序(對已建立索引的文件排序)過程tagsort指定在臨時文件中僅存儲排序變量和記錄編號,以減少對磁盤空間的使用by語句即用以指定排序所要依據(jù)的變量,變量可為數(shù)值型也可為字符型,其后可指定多個變量,sort過程在按照靠前的變量進行排序的情況下再按照靠后的變量進行排序。by語句中每個變量前可用descending/ascending選項來指定按照其排序的方式(降序或升序),默認狀態(tài)為升序。(3)將數(shù)據(jù)文件輸出顯示的print過程print過程的功能是將SAS數(shù)據(jù)集的記錄以一定的方式顯示到輸出設備(顯示屏),可以顯示其全部的變量或部分變量。利用此過程,你可以創(chuàng)建從簡單列表到可進行數(shù)據(jù)匯總的各種報告的各種不同的表單。print過程的一般格式如下:procprint選項列表;
by<descending>變量名1<變量名2…變量名n其他選項>;
pageby變量名;
sumby變量名;
id變量名;
sum變量名;
var變量名;run;procprint語句后可跟的選項含義及其用法見下表(表1.4)表1.4
procprint語句后選項含義及其用法選項含義及用法contents=文本用以指定html內容文件中指向輸出的鏈接的標識文本,等號后可為任何文本data=數(shù)據(jù)集名指定所要處理的數(shù)據(jù)集,等號后為數(shù)據(jù)集文件名double指定在相鄰的記錄間插入一空行n=字符串在報告的末尾或by變量各水平分組的末尾顯示顯示記錄的數(shù)目,并以等號后的字符串對其進行標識noobs禁止記錄編號在報告中的顯示obs=列標題用以指定記錄編號所在列的列標題round對未進行格式化的數(shù)值變量進行四舍五入,統(tǒng)一格式化為帶兩位小數(shù)的十進制數(shù)值rows=page規(guī)定頁面格式,目前’page’是此選項唯一可用的值,表示在每一頁中只顯示一條記錄的一行變量值,即一行中顯示盡可能多的記錄數(shù)width=列寬度指定列的寬度,可取的值有’full’,’minimum’,’uniform’,’uniformby’等,heading=方向取值可為v(vertical)或h(horizontal),表示列標題顯示的方向(橫向或縱向)label指定以變量標識作為相應的列標題,否則以變量名作為列標題split=字符首先此選項指定以變量標識作為列標題,以指定的字符作為列標題換行的標志style=類型元素指定報告中特定位置所要應用的類型元素(涉及很多內容,詳細內容略)by語句在所有過程中的用法都相同,即將數(shù)據(jù)集分割為若干小數(shù)據(jù)集分別進行處理。pageby語句用來控制換頁時變量的顯示方式,對于其后所指定的變量,相同的值不會顯示在不同的頁中,該變量某一值的記錄在一頁的剩余部分顯示不下時,則從該值的第一條記錄開始換行顯示。sumby語句的作用和pageby語句相似,只不過是將換頁的動作換為求和,對指定變量的每一值計算var變量的總計值。id語句的作用是用指定的變量值代替記錄編號對每一條記錄進行標識。sum語句用于指定報告中要進行求和操作的變量,var語句用于指定要在報告中顯示的變量。以上過程作用較為普遍,使用頻率較高,有必要預先了解,以便于后面所討論內容的順利進行。為節(jié)省篇幅,這里不進行實例演示。內容過于枯燥,可能的錯誤也難免,還請各位多多包涵。SAS程序操作的大概情況就草草的這樣介紹一下吧,說得太多的話我怕各位沒有耐心看下去。更多的內容我想還是留在實際的例子中來介紹,這樣大家可以好好的切身體會一下,然后就會印象深刻,實際運用起來也就得心應手了。在第二章中,我們要討論統(tǒng)計描述的SAS編程實現(xiàn)方法,包括各種描述性統(tǒng)計指標的計算、頻數(shù)表的編制、各種統(tǒng)計圖的繪制等等,各位就請耐心等上幾天吧。第二章
統(tǒng)計描述的SAS編程實現(xiàn)一、計量資料的統(tǒng)計描述計量資料統(tǒng)計描述的內容主要包括平均指標和變異指標的計算、資料分布形態(tài)(或特征)的圖形表現(xiàn)等。(一)實現(xiàn)描述性統(tǒng)計功能的幾個過程描述性統(tǒng)計指標的計算可以用四個不同的過程來實現(xiàn),它們分別是means過程、summary過程、univariate過程以及tabulate過程。它們在功能范圍和具體的操作方法上存在一定的差別,下面我們大概了解一下它們的異同點。相同點:他們均可計算出均數(shù)、標準差、方差、標準誤、總和、加權值的總和、最大值、最小值、全距、校正的和未校正的離差平方和、變異系數(shù)、樣本分布位置的t檢驗統(tǒng)計量、遺漏數(shù)據(jù)和有效數(shù)據(jù)個數(shù)等,均可應用by語句將樣本分割為若干個更小的樣本,以便分別進行分析。不同點:(1)means過程、summary過程、univariate過程可以計算樣本的偏度(skewness)和峰度(kurtosis),而tabulate過程不計算這些統(tǒng)計量;(2)univariate過程可以計算出樣本的眾數(shù)(mode),其它三個過程不計算眾數(shù);(3)summary過程執(zhí)行后不會自動給出分析的結果,須引用output語句和print過程來顯示分析結果,而其它三個過程則會自動顯示分析的結果;(4)univariate過程具有統(tǒng)計制圖的功能,其它三個過程則沒有;(5)tabulate過程不產(chǎn)生輸出資料文件(存儲各種輸出數(shù)據(jù)的文件),其它三個均產(chǎn)生輸出資料文件。以上是它們的主要異同點,其它更為具體的異同點需要在實際應用中去體會。掌握了各種過程的異同點,就可以根據(jù)具體需要選擇最佳的過程進行工作。統(tǒng)計制圖的過程均可以實現(xiàn)對樣本分布特征的圖形表示,一般情況下可以使用的有chart過程、plot過程、gchart過程和gplot過程。大家有沒有發(fā)現(xiàn)前兩個和后兩個只有一個字母‘g’(代表graph)的差別,其實它們之間(只差一個字母g的過程之間)的統(tǒng)計描述功能是相同的,區(qū)別僅在于繪制出的圖形的復雜和美觀程度。chart過程和plot過程繪制的圖形類似于我們用文本字符堆積起來的圖形,只能概括地反映出資料分布的大體形狀,實際上這兩個過程繪制的圖形并不能稱之為圖形,因為他根本就沒有涉及一般意義上圖形的任何一種元素(如顏色、分辨率等)。而gchart過程和gplot過程給出的是真正意義上的圖形,可以用很多的語句和選項來控制圖形的各方面的性質和特征。chart和gchart與plot和gplot的區(qū)別則體現(xiàn)在不同的作圖功能,前兩個過程可以繪制出的圖形主要有條形圖(包括橫條和豎條)、圓圖、環(huán)形圖和星形圖等,后兩個過程通常用一個記錄中的兩個變量值表示點的坐標來繪制圖形,如散點圖和線圖等。(二)描述性統(tǒng)計過程的一般格式1.means過程的一般格式procmeans選項列表;
by變量名稱(分組變量);
class變量名稱(分組變量);
freq變量名稱(數(shù)值變量,用以表示相應記錄出現(xiàn)的頻數(shù))
weight變量名稱(數(shù)值變量,用以表示相應記錄的權重系數(shù))
var變量名稱(待分析的數(shù)值變量);run;Procmeans語句后的選項主要用來指定所要計算的統(tǒng)計量,默認情況下,Means過程會給出頻數(shù)、均數(shù)、標準差、最大值和最小值等,其余統(tǒng)計量的計算均需要在選項中指定。class語句所指定的分組變量用來進行分組,而by語句所指定的分組變量是用來將數(shù)據(jù)分為若干個更小的樣本,以便SAS分別在各小樣本內進行各自獨立的處理。freq語句和weight語句分別引導代表記錄出現(xiàn)頻數(shù)和權重系數(shù)的數(shù)值變量。var語句引導所要進行分析的所有變量的列表,SAS將對var語句所引導的所有變量分別進行描述性統(tǒng)計分析。2.summary過程的一般格式procsummary選項列表;
by變量名稱(分組變量);
class變量名稱(分組變量);
freq變量名稱(數(shù)值變量,用以表示相應記錄出現(xiàn)的頻數(shù))
weight變量名稱(數(shù)值變量,用以表示相應記錄的權重系數(shù))
output<out=數(shù)據(jù)集名><統(tǒng)計量關鍵字=自定義變量名>
var變量名稱(待分析的數(shù)值變量);run;summary過程的格式和means過程可以說是完全相同的,各條語句和選項的含義也是相同的,包括在means過程中未列出的output語句也可以應用于means過程,只是此語句在summary過程應用較多(這樣才能將分析結果顯示出來),所以才將其列入一般格式中。output語句用來對分析結果輸出為數(shù)據(jù)文件進行控制,其后的選項可有可無,若無則SAS按照默認方式進行?!皁ut=數(shù)據(jù)集名”用來定義輸出數(shù)據(jù)文件的文件名稱,文件名的格式和數(shù)據(jù)步中數(shù)據(jù)文件名相同。“統(tǒng)計量關鍵字=自定義變量名”用來自定義輸出數(shù)據(jù)文件中各種統(tǒng)計量的變量名稱,前者是系統(tǒng)定義的(和proc語句后選項中的統(tǒng)計量關鍵字完全相同),必須正確無誤,后者可自行定義。默認狀態(tài)下輸出統(tǒng)計量只有頻數(shù)、均數(shù)、標準差、最大值和最小值,在默認狀態(tài)不能滿足需要時這一選項則是必需的。3.univariate過程的一般格式procunivariate選項列表;
by變量名稱(分組變量);
class變量名稱(分組變量);
freq變量名稱(數(shù)值變量,用以表示相應記錄出現(xiàn)的頻數(shù))
weight變量名稱(數(shù)值變量,用以表示相應記錄的權重系數(shù))
histogram變量名稱/選項列表
output<out=數(shù)據(jù)集名><統(tǒng)計量關鍵字=自定義變量名>
var變量名稱(待分析的數(shù)值變量);run;univariate過程和以上兩個過程的格式非常相似,相同的語句和選項其含義也相同,所不同的是某些統(tǒng)計量只能在univariate過程中計算(如眾數(shù)),以及univariate過程中所具有的繪圖功能。histogram語句即用來指示SAS對其后所指定的變量繪制直方圖,其后的選項用來指示SAS添加不同類型的擬合圖形(如正態(tài)分布的分布密度曲線)。4.tabulate過程的一般格式proctabulate選項列表;
by變量名稱(分組變量);
class變量名稱(分組變量);
freq變量名稱(數(shù)值變量,用以表示相應記錄出現(xiàn)的頻數(shù))
weight變量名稱(數(shù)值變量,用以表示相應記錄的權重系數(shù))
table<<頁變量表達式>,<行變量表達式>,<列變量表達式>></表格選項>
var變量名稱(待分析的數(shù)值變量,統(tǒng)計量列入相應的表單元格);run;tabulate過程和上述幾個過程的格式也基本相似,相同的語句和選項也代表相同的含義。最大的不同也是tabulate過程中最為重要的是table語句,他用來定義表格的具體格式以及表格中所要包括的統(tǒng)計量。5.gchart過程的一般格式procgchart選項列表;
圖形關鍵詞變量名稱/選項列表run;此過程格式簡單,復雜的地方在于圖形關鍵字(每個圖形關鍵字對應一種圖形類型)所引導的語句,這里是控制圖形類型及圖形要素的地方,涉及到眾多的關鍵字和選項。gchart過程可以使用的圖形關鍵字及其所繪制的圖形類型見下表(表2.1)。表2.1
gchart過程可以使用的圖形關鍵字及其所繪制的圖形類型圖形關鍵字繪制的圖形類型圖形關鍵字繪制的圖形類型block方塊圖pie圓圖hbar水平的條形圖pie3d三維圓圖hbar3d水平的三維條形圖donut環(huán)形圖vbar豎立的條形圖star星形圖vbar3d豎立的三維條形圖
圖形關鍵字后的變量名用以指定進行圖形描述時的分組變量,可以是數(shù)值型的(此時以各組的組中值為分組的標志),也可以是字符型的。其后的選項比較重要的有:(1)type=統(tǒng)計量關鍵字,表示以圖形對變量(sumvar所指定的變量)的哪一種統(tǒng)計量進行描述,比如頻數(shù)(freq)、均數(shù)(mean)、總計(sum)、頻數(shù)百分比(pctn)等;(2)subgroup=變量名(分組變量),指定要進行分組(各組段內再分組)的變量;(3)sumvar=變量名(數(shù)值變量),指定要進行統(tǒng)計計算的變量,也就是“type=統(tǒng)計量關鍵字”選項中統(tǒng)計量的計算所依據(jù)的變量。其它的選項較少用到或系統(tǒng)默認值即可基本滿足要求,這里還是少羅嗦,以后用到再說。6.gplot過程的一般格式procgplot選項列表;
bubble散點圖表達式
bubble2散點圖表達式
plot散點圖表達式
plot2散點圖表達式run;從gplot過程的一般格式中我們就可看出,此過程只能繪制兩種類型的圖形,bubble語句指示SAS繪制泡狀散點圖,plot語句指示SAS繪制點狀散點圖。bubble2語句和plot2語句指示SAS在同一區(qū)域內(bubble2和bubble在同一區(qū)域,plot2和plot在同一區(qū)域)繪制第二個圖形,兩者的橫坐標相同(同一變量),縱坐標分別位于左右兩側(可以是同一變量,也可以是兩個不同的變量)。散點圖表達式的一般形式為:(1)bubble和bubble2語句:縱坐標變量名*橫坐標變量名=泡尺寸變量名(變量值以泡的大小表示),三者均應為數(shù)值變量;(2)plot和plot2語句:縱坐標變量名*橫坐標變量名<=n/分類變量名>,此處等號及其后的部分可以省略,此時SAS以默認的散點類型繪制散點圖;若等號后為n(n為正整數(shù),是散點類型的編號),SAS則以指定的編號對應的散點類型繪制散點圖;若等號后為分類變量名(可為字符型或數(shù)值型,為數(shù)值型時作為離散型變量處理,每一個值將被當作一個類別),此變量的具體值(或與每個具體值對應的圖形)將被作為散點用來繪制散點圖。chart過程和plot過程的一般格式及各選項使用方法分別與gchart過程和gplot過程是基本相同的,不同之處僅在于后兩者中涉及到有關三維和圖形元素(顏色等)的語句和選項在前兩者中是無效的。例如vbar3d語句在chart過程中無效,bubble語句在plot過程中無效。其余的語句和選項使用方法完全相同,所以在掌握了gchart過程和gplot過程后,chart過程和plot過程你會不學自通。(三)描述性統(tǒng)計關鍵字及其含義SAS中可計算的描述性統(tǒng)計量多達二十余種,大部分可在以上介紹的前四個過程中計算,個別統(tǒng)計量在某些過程中不能計算,大家需要注意,要不然系統(tǒng)顯示錯誤信息時還不知道是怎么回事。我經(jīng)常遇到這種情況,系統(tǒng)提示錯誤(此類提示信息顯示在log窗口中)時總是摸不著頭腦,費半天勁才能搞明白。沒辦法,摸著石頭過河嘛!不過這樣也并非一無是處,最起碼可以積累很多使用經(jīng)驗。下表(表2.2)列出SAS中可以計算的所有描述性統(tǒng)計量關鍵字及其含義,供大家使用時參考。表2.2
SAS中可以計算的描述性統(tǒng)計量關鍵字及其含義關鍵字所代表的含義n有效數(shù)據(jù)記錄數(shù)nmiss缺失數(shù)據(jù)記錄數(shù)mean均數(shù)std標準差stderr標準誤var方差median中位數(shù)mode眾數(shù)cv變異系數(shù)max最大值min最小值range全距sum總計sumwgt加權值總計css校正的離均差平方和uss未校正的離均差平方和clm可信限(上下界值)lclm可信限下側界值uclm可信限上側界值skew(skewness)偏度kurt(kurtosis)峰度t分布位置假設檢驗之t統(tǒng)計量probt上述t統(tǒng)計量對應的概率值q1第一四分位數(shù)q3第三四分位數(shù)qrange四分位數(shù)間距p1第一百分位數(shù)p5第五百分位數(shù)p10第十百分位數(shù)p90第九十百分位數(shù)p95第九十五百分位數(shù)p99第九十九百分位數(shù)(四)應用實例演示1.大樣本資料的統(tǒng)計描述對于大樣本資料的描述性統(tǒng)計,醫(yī)學統(tǒng)計學教材上一般要求采用編制頻數(shù)表的方法進行各種指標的計算。在用軟件進行工作時大可不必這么辛苦,尤其是在玩SAS時(據(jù)說這家伙在處理成百上千萬的數(shù)據(jù)時都絕不在話下)。但要用直方圖表現(xiàn)資料分布特征時,頻數(shù)表的編制卻是非常必要的。下面我們就用一個實例來演示大樣本資料統(tǒng)計描述的SAS編程實現(xiàn)方法。例2-1
下表(表2.3)為長沙市某大學160名正常成年女子1999年體檢資料中的血清甘油三酯的測量結果(mmol/L),請對其進行統(tǒng)計描述。表2.3
160名正常成年女子的血清甘油三酯(mmol/L)0.910.881.410.961.481.460.911.101.261.680.680.831.771.231.041.080.621.101.330.730.521.011.711.370.511.011.111.090.961.371.200.611.170.711.160.800.731.660.961.370.951.300.761.390.941.251.601.541.341.561.540.851.540.960.821.501.141.701.301.591.071.171.321.441.120.700.681.520.761.601.271.431.271.090.750.640.971.201.341.191.080.661.421.460.591.221.321.671.201.331.311.020.830.901.090.961.100.851.061.670.780.910.891.081.270.851.241.580.711.461.520.911.471.011.201.301.051.450.651.041.241.301.111.650.870.820.761.300.631.140.831.241.481.150.991.491.021.170.990.611.330.790.951.051.641.400.721.06按題目要求我們來計算該指標的均數(shù)、中位數(shù)、標準差和若干個重要的百分位數(shù)以及四分位數(shù),并以直方圖來表現(xiàn)此資料的分布特征。在用SAS進行處理前,我們最好先將數(shù)據(jù)轉換成SAS數(shù)據(jù)集的格式,編程時直接引用就可以了。在這里我就將我一貫的做法展現(xiàn)給大家,歡迎各位參考,更希望大家積極嘗試,找出更為便捷的方法。誰要有了更好的方法,給我也指點指點,大家共同提高嘛!吝嗇鬼是成不了大事的。先將原始數(shù)據(jù)以Excel電子表格的形式錄入,用SAS的import功能轉換成SAS數(shù)據(jù)集文件,或以Analyst模塊直接讀入Excel文件,自動生成SAS數(shù)據(jù)集文件。噢,差點忘了,我還沒給大家介紹這兩部分的內容。而且這些內容也是說來話長,我們留待以后再說吧,大家知道有此方法就行了。感興趣的可以自己去嘗試,或以后掌握了這些內容后再來操練也行。更容易(不一定簡便)的方法是將數(shù)據(jù)以純文本(數(shù)據(jù)間以空格或逗號隔開,一個變量占一列或多列均可)的形式錄入,在SAS程序中以“infile”語句來引用該文件。當然你要不怕麻煩,也可以將原始數(shù)據(jù)全部列在Data步的datalines(或cards)語句中。在這里我就不這么做了,我嫌麻煩,而且易出錯。我們先來計算所要的描述性統(tǒng)計量。計量資料的描述性統(tǒng)計功能通常用Summary過程、Means過程和univariate過程來實現(xiàn)。tabulate過程也可以實現(xiàn)描述性統(tǒng)計功能,但它和以上三個過程來比就顯得復雜了一些,其實tabulate過程的過人之處在于對含有較多分類變量的資料的匯總性分析,以后大家用到的時候會慢慢體會到這一點。這里我們分別以三個過程來完成對該例題的描述性統(tǒng)計分析,使各位能深刻體會這些過程的用法。好了,我們下面就開始操作。將上表中的數(shù)據(jù)以文本文件的形式錄入,文件名為case2_1,存入目錄“e:\data\”下。然后進入SAS操作環(huán)境,在ProgramEditor窗口中編寫相應程序。(1)以means過程進行分析具體操作程序如下libnamea'e:\data\';dataa.case2_1;
infile'e:\data\data2_1.txt';
inputx@@;procmeansnmeanmedianp1p5p95p99q1q3maxmin;
varx;run;以上程序建立了一個永久性數(shù)據(jù)集,以后可重新利用。默認情況下,Means過程會給出頻數(shù)、均數(shù)、標準差、最大值和最小值等,若默認情況滿足需要,則ProcMeans后的所有選項(代表所要求計算的統(tǒng)計量)皆可省略,否則需一一寫出,如以上程序。程序編寫完成后,點擊菜單Run>>Submit或直接點擊快捷工具欄內的那個向右跑的小人,將程序提交給SAS執(zhí)行。以上程序提交執(zhí)行后的結果如下。
TheSASSystemTheMEANSProcedureAnalysisVariable:xNMeanMedian1stPctl5thPtcl95thPctl99thPctlLowerQuartileUpperQuartileMaximumMinimum1601.13118751.13000000.52000000.64500001.65000001.71000000.91000001.33000001.77000000.5100000
程序執(zhí)行結果給出了所有指定的統(tǒng)計量,列表中各項目的含義不用我再啰嗦了吧!我想大家都能看得懂。很是簡單吧!的確,我們在做一般的統(tǒng)計分析時編寫的程序比較簡單,SAS中相當部分的語句和選項是很少用到的,但要想充分利用SAS的強大功能,盡可能的掌握更多的內容是非常必要的。在這里我不想和那些沒完沒了的語句和選項過多地糾纏,等以后的例子中涉及到相應的內容時我們再來仔細研究。(2)以summary過程進行分析操作程序如下libnamea'e:\data\';dataa.case2_1;
infile'e:\data\data2_1.txt';
inputx@@;procsummary;
varx;
outputout=temp1mean=mmedian=mdp1=pt1p5=pt5p95=pt95p99=pt99q1=qt1q3=at3;run;procprintdata=temp1;run;大家要注意在summary過程中對output語句的使用,他將需要顯示的統(tǒng)計量以自定義變量的形式存儲在自命名的輸出數(shù)據(jù)文件中(但還是不能自動在結果中顯示)。最后使用print過程將輸出數(shù)據(jù)文件顯示出來。將程序提交執(zhí)行,結果如下。TheSASSystemObs_TYPE__FREQ_mmdpt1pt5pt95pt99qt1qt3101601.131191.130.520.6451.651.710.911.33結果和means過程相同,只不過統(tǒng)計量名稱變成了自定義的形式。(3)以univariate過程進行分析操作程序如下libnamea'e:\data\';dataa.case2_1;
infile'e:\data\data2_1.txt';
inputx@@;procunivariate;
varx;run;其實在實現(xiàn)描述性統(tǒng)計功能方面,univariate過程和means過程的操作程序差不太多,所不同的是默認狀態(tài)下前者比后者給出的描述性統(tǒng)計量要完整的多,univariate過程在默認狀態(tài)下(不列出任和選項)可以給出幾乎全部的描述性統(tǒng)計量,并顯示樣本位置假設檢驗的t統(tǒng)計量及其對應的雙側概率值。執(zhí)行以上程序,結果如下。
TheSASSystemTheUNIVARIATEProcedureVariable:xMomentsN160SumWeights160Mean1.1311875SumObservations180.99StdDeviation0.29478565Variance0.08689858Skewness0.03492255Kurtosis-0.7165457UncorrectedSS218.5505CorrectedSS13.8168744CoeffVariation26.05984StdErrorMean0.02330485
BasicStatisticalMeasuresLocationVariabilityMean1.131188StdDeviation0.29479Median1.130000Variance0.08690Mode1.200000Range1.26000
InterquartileRange0.42000
Tests
for
Location:
Mu0=0TestStatisticpValueStudent'stt48.53871Pr>|t|<.0001SignM80Pr>=|M|<.0001SignedRankS6440Pr>=|S|<.0001
Quantiles
(Definition
5)QuantileEstimate100%Max1.77099%1.71095%1.65090%1.54075%Q31.33050%Median1.13025%Q10.91010%0.7255%0.6451%0.5200%Min0.510
ExtremeObservationsLowestHighestValueObsValueObs0.51281.671030.52241.69100.59881.70610.611491.71260.61351.7716結果中的第一個表格給出描述樣本分布特征的若干統(tǒng)計量,包括樣本的偏度和峰度等。第二個表格給出的是樣本的基礎統(tǒng)計量值,即反映樣本位置的三個位置參數(shù)(均數(shù)、中位數(shù)、眾數(shù))和反映樣本變異程度的四個指標(標準差、方差、全距、四分位數(shù)間距)。第三個表格顯示關于樣本分布位置假設檢驗的結果,包括三種方法的檢驗結果,即t檢驗、符號檢驗以及符號秩和檢驗的分析結果。后兩個表格分別顯示的是若干個重要的分位數(shù)和最大及最小各五個樣本極端值。感覺是不是有些太詳細了,對于描述性統(tǒng)計分析的一般應用或多或少的有些婆婆媽媽的嫌疑。從以上的例子中各位應該已經(jīng)體會出了各種過程的各自特點,實際應用中我們可以根據(jù)需要選用合適的過程。學習SAS跟學開車沒什么兩樣,學會一般的應用并不難,然而要想成為高手卻不是幾年就能解決的事。下面我們進行第二項工作,繪制直方圖。繪制直方圖可用Chart或Gchart過程來完成。直方圖的繪制需要先編制頻數(shù)表,也就是先要將各觀測值按照其大小歸入相應的組中。完成這一部分的工作我們需要用到SAS程序的條件語句和賦值語句。和大多數(shù)計算機語句相同,SAS中的條件語句也是if…then…<else…>的格式,賦值語句是x=…的格式。在這里我們要建立一個新變量y,以表示不同的組,它的值就等于相應組的組中值。所有160個觀測值中,最大的為1.77,最小的為0.51,我們以0.1為組距,將所有觀測值歸入13個組。以下是以直方圖描述該資料分布的SAS程序。
libnamea'e:\data\';dataa.case2_1;
infile'e:\data\data2_1.txt';
inputx@@;
ifx<0.6theny=0.55;
ifx>=0.6andx<0.7theny=0.65;
ifx>=0.7andx<0.8theny=0.75;
ifx>=0.8andx<0.9theny=0.85;
ifx>=0.9andx<1.0theny=0.95;
ifx>=1.0andx<1.1theny=1.05;
ifx>=1.1andx<1.2theny=1.15;
ifx>=1.2andx<1.3theny=1.25;
ifx>=1.3andx<1.4theny=1.35;
ifx>=1.4andx<1.5theny=1.45;
ifx>=1.5andx<1.6theny=1.55;
ifx>=1.6andx<1.7theny=1.65;
ifx>=1.7thenY=1.75;procgchart;
vbary/type=freqlevels=13inside=freqspace=0width=6;run;
這里的數(shù)據(jù)步和上面我們計算描述性統(tǒng)計量時的基本相同,只是增加了建立新變量y的步驟(看起來是不是很煩瑣,我最煩這一種操作步驟了,不過這是基礎知識,非掌握不可)。大家在此深刻體會一下SAS中利用條件語句給變量賦值的方法。Gchart過程的功能非常強大,這里我們也就使用了它的全部功能的滄海一粟罷了。Gchart過程其實屬于SAS的Graph模塊,因此要運用此過程必須保證Graph模塊的存在。Vbar語句表示我們要做的是豎立的條形圖,其后跟的是作圖所要依據(jù)的分類變量,這里我們以變量y來做直方圖。斜杠后的內容是對所做條形圖進行控制的選項,本段程序所涉及的各選項的含義和功能見下表(表2.4)。表2.4
各選項的含義和功能選項含義和功能type條圖的類型,即用豎條的高度表示哪種統(tǒng)計量,可以是頻數(shù)、百分比、均數(shù)、合計等levels分組的數(shù)目,如果變量為字符型則該選項無效。inside將相應的統(tǒng)計量顯示在豎條的內部,可顯示頻數(shù)、百分比、均數(shù)、合計等space指定豎條之間的距離,以字符寬度為單位(本例設為零,因為我們做的是直方圖)width指定豎條的寬度,以字符寬度為單位還有更多的選項如控制圖形顏色、圖形整體大小、圖例的選項等,這里我們不一一介紹。大家先掌握到基本夠用的程度就行了,用得多了自然會逐步提高。將以上程序提交執(zhí)行,做出的圖形如下(圖2.1)。
圖2.1怎么樣,還湊合吧!你以后還會做出更漂亮的圖形來,你就先暗自竊喜吧!各位是否還記得,univariate過程也具有繪制直方圖的功能,程序中加入histogram語句就可以了,關于此內容我們留待以后再討論吧。2.小樣本資料的統(tǒng)計描述小樣本資料的處理和大樣本資料的處理是大同小異,主要的區(qū)別在于小樣本資料無需進行頻數(shù)表的編制。其實對于SAS來說,無論大樣本還是小樣本,SAS均是同等看待,同等處理,也就是說無論什么方法均可應用于大樣本或小樣本。我們在這里之所以要分開來討論,主要是想貼近醫(yī)學統(tǒng)計學的教學內容,以便大家能進行同步練習,掌握統(tǒng)計學涉及的一般計算過程的SAS編程實現(xiàn)方法。例2-2
1999年長沙市某大學100名正常女子總膽固醇(mmol/L)測定結果如下表(表2.5),請進行統(tǒng)計描述。表2.5
100名正常女子總膽固醇(mmol/L)3.183.783.413.753.553.005.263.603.504.253.583.984.175.083.264.482.702.753.573.875.504.803.514.065.712.783.984.524.535.133.323.074.614.503.705.354.834.284.955.033.023.783.633.902.503.234.834.733.954.125.593.913.843.913.504.784.334.203.522.983.275.254.844.262.584.063.884.343.863.9023.874.503.664.154.904.754.173.843.954.133.963.683.295.353.994.414.363.254.573.904.593.953.924.135.553.803.92和以上例子相同,先將數(shù)據(jù)以文本方式錄入。此處將其錄入“e:\data\case2_2.txt”,然后進行編程。此處各種描述性統(tǒng)計量的計算和例2-1的方法完全相同,大家可以自己練習一下。這里我給出處理后的結果,大家可以對照結果判斷自己的處理是否正確。
TheSASSystemTheMEANSProcedureAnalysisVariable:xMeanMedianStdDev1stPctl5thPtcl95thPctl99thPctlLowerQuartileUpperQuartileMinimumMaximum4.05830003.95500000.71006342.54000002.88000005.35000005.65000003.59000004.52000002.50000005.7100000
下面介紹一種更為簡便的直方圖繪制方法,這種方法不必引入新的分組變量,應用一些選項直接對原變量進行操作,得出完全相同的結果。此處最小值為2.5,最大值為5.71,我們取組距為0.3,共分為11組,SAS程序如下。
libnamea'e:\data\';dataa.case2_2;
infile'e:\data\data2_2.txt';
inputx@@;procgchart;
vbarx/type=freqspace=0width=6midpoints=2.65to5.65by0.3;run;
這里的midpoints選項用來指定直方圖中各組的組中值,可以是一系列數(shù)值的列表,各數(shù)值之間以空格分開,也可以是起始值和中止值加間隔數(shù)(本例即為此種形式),格式為“…to…by…”,還可以是兩者相結合的形式。其它選項和例2-1中的相同。需要說明的是,levels選項在以midpoints選項指定了組中值的情況下是無效的,因為midpoints選項中已經(jīng)包含了分組數(shù)目的信息。提交執(zhí)行以上程序,結果如下圖(圖2.2)。
圖2.2二、計數(shù)資料的統(tǒng)計描述計數(shù)資料的描述性統(tǒng)計量,最為主要的是相對數(shù),即率、構成比、相對比等。統(tǒng)計圖形表述方式有圓圖和百分條圖等。下面我們將例2-1的數(shù)據(jù)轉換為計數(shù)資料的形式,用以展示計數(shù)資料統(tǒng)計描述的SAS編程實現(xiàn)方法。例2-3
我們假設甘油三酯水平高于1.5者為異常,將160名女子劃分為正常和異常兩組。分別計算正常組和異常組占總人數(shù)的構成比,并用圓圖和百分條圖展示其構成情況。此處我們引入一個變量g,用以表示樣本的分組情況,正常組取值為0,異常組取值為1,采用如例2-1中的條件語句為變量g進行賦值。對于計數(shù)資料各組構成比或率等統(tǒng)計量的計算,我的經(jīng)驗是用Tabulate過程比較方便。Tabulate過程的主要功能是按照給定的分組變量制作各種形式的表格,這里我們也只是用到它的強大功能的一小部分。在做百分條圖時,我們用制作水平條圖的hbar語句,將變量g作為某個分組因素中的亞分組因素,所以還要引入一個分組變量i,但i的取值只有一個(因此處只有一個大組)。Pie語句是用來制作圓圖的,它與hbar語句的格式均類似于前面例子中用到的vbar語句,僅在個別選項的使用上存在一些差異。這次我們將計算統(tǒng)計量和作圖過程編入一個程序文件,一次完成兩個步驟。SAS程序如下。libnamea'e:\data\';datatemp;
seta.case2_1;
i=1;
ifx<=1.5theng=0;
ifx>1.5theng=1;proctabulate;
classg;
tableg*(npctn<g>);run;procgchart;
pieg/type=freqdiscreteslice=arrowvalue=inside;
hbari/type=freqdiscretesubgroup=gwidth=8;run;procgchart;
hbari/type=freqdiscretesubgroup=gwidth=8;run;這次的data步不同于以前的例子,這次我們將數(shù)據(jù)定義為臨時文件,然后使用set語句將永久數(shù)據(jù)集文件(例2-1所建立)中的記錄導入當前文件。Set語句的功能就是將其后所跟數(shù)據(jù)集文件中的記錄按照相應選項(set語句后可有相應的控制選項)的控制導入到data語句所指定的文件中。引入的分組變量i我們取唯一值1,直接使用賦值語句,g要根據(jù)不同的x值取0或1,使用條件語句對其賦值。此處還可以將兩個條件語句簡化為一個,即ifx<=1.5theng=0elseg=1;tabulate過程中table語句用來實現(xiàn)具體的表格繪制過程,其后是作為表格三個維度的分組變量,表示三個維度的變量間以逗號分隔,三個維度分別是頁(page)、橫軸(side)和縱軸(top)。三個維度不必全部指定,如果只指定一個維度(如本例),SAS將其當作縱軸處理;如果指定兩個,SAS將其作為橫軸和縱軸處理,前面的變量為橫軸,后面的變量為縱軸;若指定三個維度,在最前的變量為頁,中間的為橫軸,最后的為縱軸。同一維度可以是一個變量,也可以是多個變量的排列組合,多個變量的排列組合形式如下:(1)并列:變量間以空格相間隔,如“ab”的表格形式如下:a1a2a3b1b2b3
(2)交叉:變量間以星號(*)相連接,如“a*b”的表格形式如下:a1a2a3b1b2b3b1b2b3b1b2b3
(3)混合形式:變量間以空格或星號分隔,必要時加圓括號,如“a*(bc)”的表格形式如下:a1a2b1b2c1c2b1b2c1c2另外,和變量一同在table語句中出現(xiàn)的還有一些表示特定統(tǒng)計量的SAS關鍵詞,可以控制相應統(tǒng)計量在表格中的顯示。Tabulate過程可以計算的統(tǒng)計量及其在table語句中的名稱如下表(表2.6)。表2.6
Tabulate過程可以計算的統(tǒng)計量及其在table語句中的名稱名稱所代表的統(tǒng)計量n單元格頻數(shù)nmiss單元格上有遺漏數(shù)據(jù)的記錄個數(shù)mean均數(shù)min最小值max最大值sum合計std標準差range全距,即最大值與最小值之差uss未校正的總平方和pctn頻數(shù)百分比,須指定相應的分母項pctsum某變量(數(shù)值型)合計占指定合計值的百分比css校正的總平方和tderr均數(shù)的標準誤cv變異系數(shù)t用來檢測均數(shù)是否為零的單側t值prt上述t值的統(tǒng)計顯著程度var方差sumwgt加權值的總和本例中語句tableg*(npctn<g>)表示以g為縱軸,并在g的各水平下顯示其頻數(shù)和所占的百分比,百分比的計算需指明計算所需的分母,是以尖括號內的分組變量各水平的相應合計為分母。Gchart過程中,pie語句后的選項discrete表示將變量g當作離散型變量來處理(否則將當作連續(xù)性變量計算其組中值),這樣就等同于g為字符型變量的情況(若g為字符型則不需要此選項)。Silce選項用來指定對代表各組的扇形區(qū)域進行標識的方式,value是用來指定對各扇形區(qū)域標注統(tǒng)計量的位置,slice選項和value選項后所能跟的具體項目名稱和含義是完全相同的,各項目名稱及含義見下表(表2.7)。表2.7
各項目名稱及含義arrowinsidenoneoutside標注在外部,以箭頭連接標注在內部不標注標注在外部百分條圖的制作是通過對變量i做水平條圖實現(xiàn)的,將g看作各i分組中的下層分組變量。Subgroup選項用來在每個組的橫條中按照其指定的下層分組變量再分組,各下層分組的相應部分用不同的顏色表示,這里我們指定下層分組變量為g。程序中有關制圖的兩個gchart過程可以簡化為一個gchart過程的兩個步驟,即procgchart;
pieg/type=freqdiscreteslice=arrowvalue=inside;
hbari/type=freqdiscretesubgroup=gwidth=8;run;將以上程序提交執(zhí)行,結果如下。(1)各組頻數(shù)及其結構百分比g01NPctN(%)NPctN(%)14188.131911.88(2)圓圖(圖2.3)圖2.3
(3)百分條圖(圖2.4)圖2.4好了,這一章的內容先討論這些,因水平有限,錯誤與不足在所難免,還請各位多多指點,互相學習嘛!第三章將討論兩組資料均數(shù)比較的SAS編程實現(xiàn),即t檢驗與u檢驗的編程操作方法,請各位耐心等待。非常歡迎各位的寶貴意見和建議,網(wǎng)站中有我的e-mail地址,大家可直接和我e-mail聯(lián)系。第三章
兩組資料均數(shù)比較的SAS編程實現(xiàn)一、均數(shù)差別比較的t檢驗1.樣本均數(shù)和總體均數(shù)比較的t檢驗樣本均數(shù)和總體均數(shù)差別的比較可以直接進行比較,也可以將其看成每個測量值和總體均數(shù)差值的均數(shù)和0的比較,均為單變量分析的形式,可用前面介紹的三個執(zhí)行描述性統(tǒng)計分析功能的過程來完成。這里我們用univariate過程和means過程分別演示這種分析的SAS編程實現(xiàn)方法,summary過程的操作方法各位可以自己試著練習一下。以Means過程實現(xiàn)對單變量分布位置的t檢驗,只需在procmeans語句后添加t和probt(以前的版本為prt,SAS8.2中也可通用)兩個選項,SAS即給出樣本均數(shù)與0比較的t檢驗值和t分布曲線下該t值對應的雙側尾部面積。univariate過程在默認狀態(tài)下即可給出單變量分布位置的t檢驗結果。例3-1
通過以往大規(guī)模調查,已知某地嬰兒出生體重均數(shù)為3.30kg,今測得35名難產(chǎn)兒出生體重如下表(表3.1),請問該地難產(chǎn)兒出生體重與一般嬰兒出生體重是否不同?表3.13.833.284.053.623.492.863.903.393.544.162.763.803.873.233.483.483.873.503.532.953.723.523.36和以前的方法相同,先將數(shù)據(jù)以文本方式錄入,存入“e:\data\data3_1.txt”,然后編制程序完成分析過程。程序如下:
libnamea'e:\data\';
dataa.data3_1;
Infile'e:\data\data3_1.txt';
inputx@@;procunivariatemu0=3.30alpha=0.05;
varx;
histogramx/normalcbarline=greencfill=redbarwidth=8
midpoints=2.75to4.35by0.2;run;Procunivariate語句后選項mu0=3.30用來指定univariate過程對樣本進行分布位置的假設檢驗時的位置參數(shù),以便進行樣本均數(shù)和指定值之間差別的假設檢驗;alpha=0.05用來指定進行各種總體參數(shù)的估計時可信區(qū)間的置信水平。這里我們順便演示一下univariate過程繪制直方圖的方法。histogram語句用來指示univariate過程對變量x繪制直方圖,其后的normal選項指示在直方圖上擬合并繪制出正態(tài)分布的密度曲線;cbarline=green選項用來指定條形的邊框顏色,此處表示將條形的邊框顯示為綠色;cfill=red選項用來指定條形內部的填充色,此處設置為紅色;這里的‘barwidth=’選項和gchart過程中vbar語句后的‘width=’選項含義完全相同,用來指定條形的寬度,此處設置為8個字符寬度;‘midpoints=’選項則和gchart過程中vbar語句后的‘midpoints=’選項在含義及使用方法上完全相同。提交以上程序,輸出結果如下:
TheSASSystemTheUNIVARIATEProcedureVariable:xMomentsN35SumWeights35Mean3.49457143SumObservations122.31StdDeviation0.37759567Variance0.14257849Skewness0.34778371Kurtosis-0.3363107UncorrectedSS432.2687CorrectedSS4.84766857CoeffVariation10.8052067StdErrorMean0.06382532
BasicStatisticalMeasuresLocationVariabilityMean3.494571StdDeviation0.37760Median3.480000Variance0.14258Mode3.140000Range1.51000
InterquartileRange0.60000NOTE:Themodedisplayedisthesmallestof3modeswithacountof2.
Tests
for
Location:
Mu0=3.3TestStatisticpValueStudent'stt3.048499Pr>|t|0.0044SignM4.5Pr>=|M|0.1755SignedRankS166Pr>=|S|0.0048
Quantiles
(Definition
5)QuantileEstimate100%Max4.3099%4.3095%4.2490%4.0575%Q33.8050%Median3.4825%Q13.2010%3.115%2.861%2.790%Min2.79
ExtremeObservationsLowestHighestValueObsValueObs2.79143.9172.8664.0532.95324.16133.11184.2483.14194.3010
圖3.1結果中第三個表格(標題為‘testforlocation’)是關于樣本分布位置的假設檢驗,這是我們此處所要關心的。大家可以看到,除一般的t檢驗外,univariate過程還給出了非參數(shù)檢驗方法的檢驗結果(符號檢驗和符號秩和檢驗)。這里直方圖的繪制效率很高(圖3.1),簡單的一條語句就繪制出如此標準而復雜的圖形,比起前面所用的gchart過程要高效的多,而且它也可以用各種選項來控制圖形的各種要素,圖形的美觀程度也會絲毫不差。此程序的輸出結果中,還有關于樣本擬合分布的情況,這里不再列出,以節(jié)省篇幅。Means過程也可用相似的方式實現(xiàn)對此類資料的t檢驗,但它不能像univariate過程那樣隨意設置位置參數(shù),只能對樣本均數(shù)和0的差別進行比較,因此必須先在數(shù)據(jù)步對數(shù)據(jù)作適當?shù)奶幚?,也就是先將?shù)據(jù)轉化為原始數(shù)值與某已知數(shù)值(總體均數(shù))的差,在對此差值進行統(tǒng)計分析。以下是用means過程對例3-1進行分析的程序。libnamea'd:\data\';datatemp;
seta.data3_1;
d=x-3.30;procmeansmeanstderrtprobt;
vard;run;執(zhí)行后結果如下:
TheSASSystemTheMEANSProcedureAnalysisVariable:dMeanStdErrort
ValuePr
>
|t|0.19457140.06382533.050.0044結果中從左至右分別為樣本均數(shù)、均數(shù)標準誤、t檢驗值和p值(該t值對應的雙側尾部面積)。大家可以看到,兩種過程的分析結果是一致的,而means過程的分析結果更加簡單明了,大家可以根據(jù)具體需要選用不同的處理過程。2.配對設計資料的t檢驗配對設計的t檢驗與樣本均數(shù)和總體均數(shù)比較t檢驗的過程基本相同,也可用univariate過程、means過程或summary過程來完成。前者與后兩者的不同之處僅在于樣本分布位置的假設檢驗中位置參數(shù)的不同,這里的處理針對的是配對數(shù)據(jù)的差值,位置參數(shù)設置為0(用以檢驗配對數(shù)據(jù)差值的總體均數(shù)是否為零)。例3-2
為判斷簡便法和常規(guī)法測定尿鉛含量的差別有無統(tǒng)計學意義,對12分人尿同時用兩種方法進行測定,所的結果如下表(表3.2),請分析兩種測定方法的測量結果是否不同?表3.2樣品編號簡便法測定結果常規(guī)法測定結果12.412.8022.903.0432.751.8842.233.4353.673.8164.494.0075.164.4485.455.4192.061.24101.641.83111.061.45120.770.92針對以上數(shù)據(jù)和分析要求,編制程序如下:libnamea'e:\data\';dataa.data3_2;
infile'e:\data\data3_2.txt';
inputx1x2;
d=x2-x1;procunivariatemu0=0alpha=0.05;
vard;run;其實這里mu0=0和alpha=0.05兩個選項可以不必寫出,因為在默認狀態(tài)下這兩個選項的取值就是如此。提交以上程序,輸出結果如下:
TheSASSystemTheUNIVARIATEProcedureVariable:dMomentsN12SumWeights12Mean-0.0283333SumObservations-0.34StdDeviation0.60466119Variance0.36561515Skewness0.2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 木材的能源與環(huán)境應用考核試卷
- 秋季心理健康教育活動計劃
- 疫苗接種策略與全球疫情防控的關系
- 建設急診科室人才梯隊的計劃
- 磚廠生產(chǎn)管理新篇章原料質量與節(jié)能共進
- 班級年度工作計劃書
- 贈與合同范本現(xiàn)金
- 眼科臨床實踐中的倫理與法律問題
- 珠寶產(chǎn)業(yè)中的技術創(chuàng)新與商業(yè)模式變革
- 科技助力下的鐵路貨運行業(yè)綠色發(fā)展
- 2023高考數(shù)學藝考生一輪復習講義(學生版)
- 2024年江蘇經(jīng)貿職業(yè)技術學院單招職業(yè)適應性測試題庫含答案
- 冀教版五年級數(shù)學下冊全冊課件【完整版】
- 2024年連云港專業(yè)技術人員繼續(xù)教育《飲食、運動和健康的關系》92分(試卷)
- 《短視頻拍攝與制作》課件-2短視頻前期創(chuàng)意
- 八年級上冊物理期末考試試題附答案(人教版)
- 關注聽力健康知識講座
- 家校合作共育課件
- 2023年全國報關員考試真題試卷及答案
- 中藥藥茶計劃書
- 《電子技術基礎(第2版)》 課件全套 第1-12章 緒論、常用半導體器件-數(shù)模和模數(shù)轉換電路
評論
0/150
提交評論