在前面的文章中介紹了運(yùn)用MEANS過程計(jì)算描述性統(tǒng)計(jì)量的基本用法,文本介紹一下MEANS過程的更多功能和用法。
MEANS過程的更多功能
統(tǒng)計(jì)量列表
下面列出了MEANS過程中各種描述性統(tǒng)計(jì)量和位置統(tǒng)計(jì)量的關(guān)鍵字及計(jì)算方法。MEANS過程在處理數(shù)據(jù)時,數(shù)據(jù)可以是詳細(xì)數(shù)據(jù),即每條數(shù)據(jù)代表一個個體或者觀測,也可是分組數(shù)據(jù),即每條數(shù)據(jù)代表一組個體或者觀測,這種分組數(shù)據(jù)在醫(yī)學(xué)統(tǒng)計(jì)上非常常見。
描述性統(tǒng)計(jì)量如表9.2所示。
表9.2 常見描述性統(tǒng)計(jì)量
表9.3 常見位置統(tǒng)計(jì)量
選項(xiàng)WEIGHT=和WEIGHT語句
若計(jì)算描述性統(tǒng)計(jì)量(均值、標(biāo)準(zhǔn)差、標(biāo)準(zhǔn)誤差、總和、權(quán)重和等)時,需要使用權(quán)重變量,可以通過兩種方法指定權(quán)重變量,一種是在VAR語句中使用選項(xiàng)WEIGHT=,第二種是直接在PROC步中使用WEIGHT語句來指定權(quán)重變量。如果既使用了WEIGHT語句,又在VAR語句中使用了選項(xiàng)WEIGTH=,那么系統(tǒng)優(yōu)先使用選項(xiàng)WEIGHT=中指定的變量作為VAR語句中變量的權(quán)重變量。極差、極值和缺失值個數(shù)等統(tǒng)計(jì)量不受權(quán)重變量影響。
需要注意的是,權(quán)重變量必須是數(shù)值型變量。
當(dāng)權(quán)重變量的取值等于0時,系統(tǒng)會將該條觀測計(jì)入非缺失值個數(shù)N中。
當(dāng)權(quán)重變量的取值小于0時,系統(tǒng)將自動將取值轉(zhuǎn)換成0,并將該條觀測計(jì)入非缺失值個數(shù)N中。
當(dāng)權(quán)重變量的取值為缺失時,系統(tǒng)在處理過程中將自動忽略該條觀測。
當(dāng)權(quán)重變量的取值等于0時,系統(tǒng)會將該條觀測計(jì)入非缺失值個數(shù)N中。
當(dāng)權(quán)重變量的取值小于0時,系統(tǒng)將自動將取值轉(zhuǎn)換成0,并將該條觀測計(jì)入非缺失值個數(shù)N中。
當(dāng)權(quán)重變量的取值為缺失時,系統(tǒng)在處理過程中將自動忽略該條觀測。
FREQ語句也可以用來指定觀測的頻數(shù),如果FREQ語句指定的變量的取值為非整數(shù),系統(tǒng)只取其整數(shù)部分;當(dāng)該變量的取值小于1或者缺失時,系統(tǒng)在進(jìn)行分析時會自動忽略該條觀測。
注意:當(dāng)MEANS過程或者UNIVARIATE過程中使用WEIGTH語句時,系統(tǒng)將不會計(jì)算偏度系數(shù)和峰度系數(shù),輸出的偏度系數(shù)和峰度系數(shù)都為缺失值。
輸出SAS數(shù)據(jù)集
默認(rèn)情況下,MEANS過程中計(jì)算的各種描述性統(tǒng)計(jì)量都是輸出到結(jié)果窗口的。但往往在實(shí)際應(yīng)用中,計(jì)算描述性統(tǒng)計(jì)量只是進(jìn)行數(shù)據(jù)分析的第一步,在得到各種統(tǒng)計(jì)量后,需要對其做進(jìn)一步的加工分析。在這種情況下,將輸出結(jié)果保存成SAS數(shù)據(jù)集是非常必要的。OUTPUT語句使得用戶可以自行選擇需要存儲成SAS數(shù)據(jù)集的統(tǒng)計(jì)量。使用方法為:
OUTPUT OUT=輸出數(shù)據(jù)集<統(tǒng)計(jì)量關(guān)鍵字1<變量列表1><=列名1>
<統(tǒng)計(jì)量關(guān)鍵字2<變量列表2><=列名2>…>>/<AUTONAME>;
其中:
選項(xiàng)OUT=指定了輸出數(shù)據(jù)集的名稱,統(tǒng)計(jì)量關(guān)鍵字指定需要輸出到數(shù)據(jù)集中的統(tǒng)計(jì)量關(guān)鍵字,變量列表指定需要計(jì)算描述性統(tǒng)計(jì)量并輸出到數(shù)據(jù)集中的變量的名稱,等號右邊的列名表示存儲到數(shù)據(jù)集中時統(tǒng)計(jì)量關(guān)鍵字的變量名稱。OUTPUT語句中指定統(tǒng)計(jì)量關(guān)鍵字只影響輸出到數(shù)據(jù)集中的統(tǒng)計(jì)量,而PROC MEANS語句中的統(tǒng)計(jì)量關(guān)鍵字序列則影響輸出到結(jié)果窗口的統(tǒng)計(jì)量,兩者不相互影響。
使用選項(xiàng)AUTONAME時,系統(tǒng)自動為存儲到數(shù)據(jù)集中的統(tǒng)計(jì)量指定變量名稱,變量名稱自動置為“分析變量_統(tǒng)計(jì)量關(guān)鍵字”。
選項(xiàng)OUT=指定了輸出數(shù)據(jù)集的名稱,統(tǒng)計(jì)量關(guān)鍵字指定需要輸出到數(shù)據(jù)集中的統(tǒng)計(jì)量關(guān)鍵字,變量列表指定需要計(jì)算描述性統(tǒng)計(jì)量并輸出到數(shù)據(jù)集中的變量的名稱,等號右邊的列名表示存儲到數(shù)據(jù)集中時統(tǒng)計(jì)量關(guān)鍵字的變量名稱。OUTPUT語句中指定統(tǒng)計(jì)量關(guān)鍵字只影響輸出到數(shù)據(jù)集中的統(tǒng)計(jì)量,而PROC MEANS語句中的統(tǒng)計(jì)量關(guān)鍵字序列則影響輸出到結(jié)果窗口的統(tǒng)計(jì)量,兩者不相互影響。
使用選項(xiàng)AUTONAME時,系統(tǒng)自動為存儲到數(shù)據(jù)集中的統(tǒng)計(jì)量指定變量名稱,變量名稱自動置為“分析變量_統(tǒng)計(jì)量關(guān)鍵字”。
例9.4:數(shù)據(jù)集sashelp.shoes中包含了某鞋類公司全球范圍內(nèi)各種產(chǎn)品的銷售和庫存情況,共有7個變量,變量Region代表地區(qū),Product代表產(chǎn)品,Subsidiary代表分公司,Stores代表門店個數(shù),Sales代表銷售額,Inventory代表庫存所占資金,Returns代表退貨。計(jì)算各地區(qū)、各種產(chǎn)品的平均銷售額、平均庫存金額、總銷售金額、總庫存金額及標(biāo)準(zhǔn)差等統(tǒng)計(jì)量,并保存到SAS數(shù)據(jù)集中。
示例代碼如下:
proc means data=sashelp.shoes mean median sum std;
title 'Output Decsriptive Statistics to SAS Dataset';
var sales inventory;
class region product;
output out=work.outstat mean(sales)=sales_mean sum(sales)=sales_sum mean(inventory)=invnt_mean sum(inventory)=invnt_sum;
run;
proc print data=work.outstat;
run;
這里使用CLASS語句指定了兩個分類變量,運(yùn)行上面的程序后,結(jié)果窗口輸出兩個輸出列表,第一個是MEANS過程的輸出結(jié)果,第二個是PRINT過程的輸出結(jié)果,數(shù)據(jù)來自MEANS過程中輸出的SAS數(shù)據(jù)集WORK.OUTSTAT。
圖9.27和圖9.28中是部分輸出結(jié)果。
圖9.27 例9.4中MEANS過程輸出內(nèi)容
圖9.28 例9.4中PRINT過程輸出內(nèi)容
MEANS過程的輸出報(bào)表和輸出到數(shù)據(jù)集work.outstat的數(shù)據(jù)有兩點(diǎn)不同:
第一,在MEANS過程的輸出結(jié)果(第1張報(bào)表)中,含有均值、中位數(shù)、總和和標(biāo)準(zhǔn)差4個統(tǒng)計(jì)量;而SAS數(shù)據(jù)集中,只包含了并未包含統(tǒng)計(jì)量中位數(shù),并且Sales的均值統(tǒng)計(jì)量被命名為Sales_mean,Sales的總和被命名為Sales_sum,Inventory的均值被命名為Invnt_mean,Inventory的總和被命名為Invnt_sum。如果不需要將統(tǒng)計(jì)結(jié)果輸出到結(jié)果窗口,可以在PROC MEANS語句中使用選項(xiàng)NOPRINT。
第二,MEANS過程的輸出結(jié)果和輸出的SAS數(shù)據(jù)集觀測的條數(shù)也不一樣。與MEANS過程的輸出結(jié)果相比較,SAS數(shù)據(jù)集中包含了所有分類變量組合的統(tǒng)計(jì)結(jié)果。系統(tǒng)用_TYPE_變量表示分類變量組合的種類,_TYPE_=0表示不使用分類變量的情形,也就是所有觀測的統(tǒng)計(jì)結(jié)果,_TYPE_=1 或_TYPE_=2表示僅使用一個分類變量的情形,_TYPE_=3表示同時使用兩個分類變量得出的分類結(jié)果。
WAYS語句和TYPES語句
在CLASS語句指定多個分類變量時,MEANS過程提供了WAYS語句、TYPES語句和選項(xiàng)NWAY,便于用戶選擇需要計(jì)算和保存的分類變量組合的統(tǒng)計(jì)結(jié)果。
WAYS語句的基本語法為:
WAYS 數(shù)值1 數(shù)值2 數(shù)值3 …;
數(shù)值的取值為0到分類變量個數(shù)之間的任一整數(shù)(包括0和分類變量個數(shù)),當(dāng)數(shù)值=0時,表示輸出不含分類變量情形下的描述性統(tǒng)計(jì)量;當(dāng)數(shù)值=1時,表示輸出所有只使用一個分類變量情形下的統(tǒng)計(jì)結(jié)果;當(dāng)數(shù)值=2時,表示輸出所有包含兩個分類變量情形下的描述性統(tǒng)計(jì)量。WAYS語句中可以指定多個數(shù)值,以下是WAYS語句的簡單的例子。
class varA varB varC;
ways 1 2;
系統(tǒng)將會輸出分別按varA、varB、varC分類的統(tǒng)計(jì)結(jié)果,及varA*varB、varA*varC及varB*varC交叉組合分類后的統(tǒng)計(jì)結(jié)果。
TYPES語句的基本語法為:
TYPES 分類組合要求;
例如:
class varA varB varC;
types varA varB varC varA*varB varA*varC varB*varC;
上面的TYPES語句和“ways 1 2;”的作用是一樣的。
注意:如果僅需要輸出不使用分類變量的統(tǒng)計(jì)結(jié)果,可以使用“WAYS 0;”或者“TYPES ();”。使用TYPES語句來選擇需要輸出到數(shù)據(jù)集中的分類組合的種類,比在數(shù)據(jù)集后面使用選項(xiàng)WHERE=更加節(jié)約時間和內(nèi)存。
另外,在PROC MEANS語句中使用選項(xiàng)NWAY,可以使得輸出數(shù)據(jù)集中只包含使用所有分類變量的情形。在例9.4中使用選項(xiàng)NWAY的示例如下:
proc means data=sashelp.shoes noprint nway;
title 'Output Decsriptive Statistics to SAS Dataset';
var sales inventory;
class region product;
output out=work.outstat mean(sales)=sales_meansum(sales)=sales_sum mean(inventory)=invnt_mean sum(inventory)=invnt_sum;
run;
proc print data=work.outstat;
run;
輸出內(nèi)容如圖9.29所示。
圖9.29 例9.4使用選項(xiàng)NWAY的輸出內(nèi)容
這里對MEANS過程的各種語句稍作總結(jié)一下。
PROC MEANS DATA=數(shù)據(jù)集<統(tǒng)計(jì)量關(guān)鍵字選項(xiàng)其他選項(xiàng)>;
VAR 分析變量1 <分析變量2 …> ;
CLASS 分類變量1 分類變量2 …;
BY BY變量1BY變量2 …;
FREQ 變量n;
WEIGHT 變量m;
OUTPUT OUT=輸出數(shù)據(jù)集<統(tǒng)計(jì)量關(guān)鍵字1<變量列表1><=列名1> …></AUTONAME>;
TYPES分類組合要求;
WAYS <數(shù)值1><數(shù)值2><數(shù)值3 …>;
RUN;
在MEANS過程中,除了PROC MEANS語句和RUN語句,其他各個語句的順序可以互換,這個性質(zhì)在SAS的其他PROC步中也適用。
SUMMARY過程和MEANS過程的語法和作用非常相似,和MEANS過程不同的地方在于:
SUMMARY過程在默認(rèn)情況下不會將統(tǒng)計(jì)結(jié)果輸出到結(jié)果窗口,如果需要輸出到結(jié)果窗口,則要在PROC SUMMARY語句中使用選項(xiàng)PRINT。
在MEANS過程中,如果不使用VAR語句指定分析變量,系統(tǒng)會默認(rèn)輸出所有數(shù)值型變量的描述性統(tǒng)計(jì)量。但是在SUMMARY過程中,如果在PROC SUMMARY語句中指定了統(tǒng)計(jì)量關(guān)鍵字,卻沒有使用VAR語句,系統(tǒng)將給出ERROR信息,并停止運(yùn)行。
SUMMARY過程在默認(rèn)情況下不會將統(tǒng)計(jì)結(jié)果輸出到結(jié)果窗口,如果需要輸出到結(jié)果窗口,則要在PROC SUMMARY語句中使用選項(xiàng)PRINT。
在MEANS過程中,如果不使用VAR語句指定分析變量,系統(tǒng)會默認(rèn)輸出所有數(shù)值型變量的描述性統(tǒng)計(jì)量。但是在SUMMARY過程中,如果在PROC SUMMARY語句中指定了統(tǒng)計(jì)量關(guān)鍵字,卻沒有使用VAR語句,系統(tǒng)將給出ERROR信息,并停止運(yùn)行。
本系列文章結(jié)束。
結(jié)束語
本系列文章第一部分介紹了統(tǒng)計(jì)學(xué)中一些基本概念,如總體、個體和樣本的定義,簡單隨機(jī)抽樣的基本原理,參數(shù)和統(tǒng)計(jì)量的區(qū)別和聯(lián)系,自由度的定義,隨機(jī)變量和概率分布的定義,以及在統(tǒng)計(jì)學(xué)中具有重大作用的三種概率分布(二項(xiàng)分布、泊松分布和正態(tài)分布)。然后介紹了描述性統(tǒng)計(jì)分析在統(tǒng)計(jì)學(xué)中的重要作用,分別討論了描述數(shù)據(jù)集中趨勢、數(shù)據(jù)離散程度及數(shù)據(jù)分布形態(tài)的描述性統(tǒng)計(jì)量的定義及計(jì)算方法,并通過實(shí)例講解如何運(yùn)用SAS中的MEANS過程和UNIVARIATE過程計(jì)算這些描述性統(tǒng)計(jì)量。
小貼士
讀者回復(fù)關(guān)鍵字“安全”,可以查看“SAS智能平臺安全管理”相關(guān)文章。
讀者可以從以下鏈接獲取SAS公司提供的免費(fèi)環(huán)境:
SAS大學(xué)版(SAS@ University Edition)是SAS為在校大學(xué)生免費(fèi)提供的基于虛擬機(jī)和網(wǎng)頁的SAS環(huán)境。
下載路徑:
https://www.sas.com/en_us/software/university-edition/download-software.html
SAS學(xué)術(shù)版(SAS? OnDemand for Academics)是 SAS 為學(xué)術(shù)屆人士免費(fèi)提供的、在線的、基于SAS 私有云上的應(yīng)用服務(wù)環(huán)境。
用戶首先需要注冊,然后按照提示信息就可登錄。
注冊路徑:
http://odamid.oda.sas.com
本文轉(zhuǎn)自《深入解析SAS — 數(shù)據(jù)處理、分析優(yōu)化與商業(yè)應(yīng)用 》
作者:夏坤莊、徐唯、潘紅蓮、林建偉
如若轉(zhuǎn)載本文,請?jiān)谖恼马敳繕?biāo)注 “本文轉(zhuǎn)自SAS知識 (ID: SASadvisor),摘自《深入解析SAS — 數(shù)據(jù)處理、分析優(yōu)化與商業(yè)應(yīng)用 》”
作者介紹
夏坤莊
《深入解析SAS — 數(shù)據(jù)處理、分析優(yōu)化與商業(yè)應(yīng)用》第一作者, SAS軟件研究開發(fā)(北京)有限公司客戶職能部總監(jiān)。在承擔(dān)研發(fā)工作的同時,夏及其團(tuán)隊(duì)負(fù)責(zé)對SAS非英語市場提供技術(shù)支持,并且與在美國及其它地區(qū)的團(tuán)隊(duì)一起,服務(wù)于SAS的SaaS/RaaS業(yè)務(wù),同時提供和驗(yàn)證關(guān)于SAS產(chǎn)品和技術(shù)在應(yīng)用領(lǐng)域的最佳實(shí)踐。在加入SAS軟件研究開發(fā)(北京)有限公司之前,夏就職于SAS中國公司,歷任資深咨詢顧問、項(xiàng)目經(jīng)理、首席顧問、咨詢經(jīng)理,擁有豐富的咨詢和項(xiàng)目實(shí)施經(jīng)驗(yàn)。在長期的從業(yè)經(jīng)歷中,不但為SAS的金融行業(yè)客戶成功實(shí)施了眾多深受好評的項(xiàng)目,而且在近年領(lǐng)導(dǎo)實(shí)施了非金融行業(yè)的多個大數(shù)據(jù)分析項(xiàng)目。