
隨機抽樣及SAS實現(xiàn)
在統(tǒng)計研究中,針對容量無限或者容量很大以至于無法直接對其進行研究的總體,都是通過從中抽取一部分個體作為研究對象,以考察總體的特征。被抽取的部分個體稱為該總體的一個樣本。從總體中抽取樣本的過程,稱為抽樣。
抽樣包括隨機抽樣和非隨機抽樣。非隨機抽樣是從總體中抽取指定的個體,具有主觀意向性,這里不做討論。
隨機抽樣是按照隨機原則,保證個體都有一定概率被抽取到的抽樣方法。常見的隨機抽樣方式有:簡單隨機抽樣、系統(tǒng)抽樣、分層抽樣、整群抽樣、多階段抽樣、二重抽樣以及比率抽樣。
以下將依次介紹各種隨機抽樣方法的原理、應用場景及其SAS實現(xiàn)。在論述之前,需要準備好測試數(shù)據。我們從互聯(lián)網上找了一批數(shù)據形成一張表,數(shù)據的內容是國內股票市場各只股票的若干財務數(shù)據,字段如下:
該表共有2472條觀測(記錄),按照Source(來源板塊)進行統(tǒng)計,則各組觀測數(shù)如下:
創(chuàng)業(yè)板 351
滬市主板 948
深市主板 473
中小板 700
構建程序初始環(huán)境:
data_null_;
workspace = "D:\SASWorkspace\練習"; *工作區(qū)根目錄;
call symput("workspace", workspace);
run;
libname Practice"&workspace.\中間數(shù)據\";
然后把原始數(shù)據上傳到Practice邏輯庫中,并命名為MainIndex_2012sea3。
*為了不破壞原始數(shù)據,把表copy到work邏輯庫中;
data Work.MainIndex_2012sea3;
setPractice.MainIndex_2012sea3;
run;
下面逐一介紹各種隨機抽樣方法及其SAS實現(xiàn)。
(1)簡單隨機抽樣
簡單隨機抽樣,指從總體中等概率地抽取出n個個體組成樣本。在SAS中,可以使用surveyselect過程步來實現(xiàn)隨機抽樣。Surveyselect過程步的基本格式如下:
在第一個程序中,我們來實現(xiàn)最簡單的場景:從2472條觀測中隨機抽取100條。在程序中,除了必要的data和out選項外,還需使用method設置抽樣方法為簡單隨機抽樣,其值為srs;并設置抽取的樣本容量sampsize = 100或n = 100。代碼如下:
*隨機抽取100條記錄,保留所有字段,不打印;
procsurveyselect
data = Work.MainIndex_2012sea3
out = Work.MainIndex_2012sea3_srs1
method = srs
sampsize =100
noprint
;
run;
上面的程序對于結果表保留了原始表的所有字段,如果我們只需要保留其中的某幾個字段,則可以使用id語句。
*隨機抽取100條記錄,只保留StockCode和StockName字段,不打印;
procsurveyselect
data = Work.MainIndex_2012sea3
out = Work.MainIndex_2012sea3_srs2
method = srs
sampsize =100
noprint;
id StockCode StockName;
run;
如果沒有指定隨機數(shù)種子(seed),則SAS程序會使用計算機的時間作為種子??梢允褂胹eed選項設定隨機數(shù)初始種子。Seed的值必須是一個正整數(shù),否則SAS會使用計算機的時間作為種子(零或負整數(shù)的情況),或者出錯(小數(shù)的情況)。
*隨機抽取100條記錄,保留所有字段,不打印;
*指定隨機數(shù)種子;
procsurveyselect
data = Work.MainIndex_2012sea3
out = Work.MainIndex_2012sea3_srs4
method = srs
sampsize =100
seed =1000
noprint;
run;
在實際應用場景中,有時候需要獨立重復抽取多組樣本,這時可以使用rep選項。SAS程序會以rep設定的值獨立重復抽取若干次樣本,每組樣本的容量是sampsize或n選項指定的值。
*隨機抽取100條記錄,保留所有字段,不打印;
*指定獨立重復抽樣的次數(shù);
procsurveyselect
data = Work.MainIndex_2012sea3
out = Work.MainIndex_2012sea3_srs5
method = srs
sampsize =100
rep =3
noprint
;
run;
樣本容量的另一種表述是其占總體的比例。比如,抽取10%的樣本。這時我們使用samprate或rate替代sampsize。Samprate的值可以是正小數(shù),也可以是正整數(shù)。當samprate的值是正小數(shù)時,其值在(0, 1]之間,不可為零;為1時表示100%。當samprate是正整數(shù)時,表示相應的百分比,如10表示10%,需要注意的是,整數(shù)1表示100%,而不是1%。
*隨機抽取總體的10%作為樣本,保留所有字段,不打印;
procsurveyselect
data = Work.MainIndex_2012sea3
out = Work.MainIndex_2012sea3_srs6
method = srs
samprate =0.1
noprint
;
run;
*隨機抽取總體的10%作為樣本,保留所有字段,不打印;
procsurveyselect
data = Work.MainIndex_2012sea3
out = Work.MainIndex_2012sea3_srs7
method = srs
samprate =10
noprint
;
run;
有時候,我們并不需要把原始表的所有觀測都作為研究對象,而只是針對其中的某一子集來抽樣。比如如果我們只需要研究滬市主板的股票,那么只需要在相關的觀測中抽取樣本作為研究對象。Data選項后面可以使用where=語句來實現(xiàn)對總體觀測的篩選。
*如果只想在滬市主板上抽取100個樣本;
procsurveyselect
data = Work.MainIndex_2012sea3(where=(Source ='滬市主板'))
out = Work.MainIndex_2012sea3_srs8
method = srs
sampsize =100
noprint
;
run;
(2)分層抽樣
分層抽樣是將總體按某種特征分為若干次級總體(層),再在每一層中進行隨機抽樣,把結果組成一個樣本的方法。描述層次特征的變量稱為分層變量,比如在我們的測試數(shù)據中,我們可以使用Source(來源板塊)變量把原始數(shù)據分為滬市主板、深市主板、中小板、創(chuàng)業(yè)板四類(層)。Surveyselect過程步使用strata語句來指定分層變量。在抽樣之前,需要對原始數(shù)據按照strata指定的分層變量進行排序。最簡單的分層抽樣場景是,最總體中的所有樣本,指定一個分層變量,每一層都使用同樣的抽樣比例。以下是最簡單分層抽樣場景的代碼:
*由于分層抽樣需要對原始數(shù)據進行排序,因此我們再復制一張臨時表;
data Work.MainIndex_2012sea3_tmp;
setWork.MainIndex_2012sea3;
run;
*按照分層變量Source排序;
procsortdata =Work.MainIndex_2012sea3_tmp;by Source;
*用Source分層,每一層抽取10%的樣本;
procsurveyselect
data = Work.MainIndex_2012sea3_tmp
out = Work.MainIndex_2012sea3_strata1
method = srs
samprate =0.1
noprint;
strata Source; * 使用Source作為分層變量;
run;
如果各層抽取的比例不一樣,則應賦予samprate一個數(shù)組,數(shù)組的每一個元素的值分別代表各個層的抽樣比例。數(shù)組元素的順序需與分層變量排序后的順序一致。
*用Source分層,一共有4層,各層抽取的比例不一樣,在samprate中定義;
*分層變量Source的排序順序是:創(chuàng)業(yè)板 滬市主板 深市主板 中小板;
procsurveyselect
data = Work.MainIndex_2012sea3_tmp
out = Work.MainIndex_2012sea3_strata2
method = srs
samprate = (0.1,0.3,0.5,0.2)
noprint
;
strata Source; * 使用Source作為分層變量;
run;
同樣,也可以使用sampsize分別指定每一層的抽樣個數(shù)。
*用Source分層,一共有4層,各層抽取的個數(shù)不一樣,在sampsize中定義;
*分層變量Source的排序順序是:創(chuàng)業(yè)板 滬市主板 深市主板 中小板;
procsurveyselect
data = Work.MainIndex_2012sea3_tmp
out = Work.MainIndex_2012sea3_strata3
method = srs
sampsize = (10,60,50,30)
noprint;
strata Source; * 使用Source作為分層變量;
run;
如果層數(shù)較多,且需要對不同層分別指定抽樣比例或抽樣個數(shù),則需要建立抽樣表。抽樣表需要包含分層變量,以及每一層對應的抽樣比例或抽樣個數(shù);如果是抽樣比例,則變量必須命名為_rate_,如果是抽樣個數(shù),則變量必須命名為_nsize_。
*按比例分層抽樣,建立抽樣表;
procsql;
create tableWork.Samptab_rate (
Sourcechar(10),
_rate_num
);
insert intoWork.Samptab_rate values ('創(chuàng)業(yè)板',0.1);
insert intoWork.Samptab_rate values ('滬市主板',0.3);
insert intoWork.Samptab_rate values ('深市主板',0.5);
insert intoWork.Samptab_rate values ('中小板',0.2);
quit;
*按比例分層抽樣,將抽樣表賦值給samprate;
procsurveyselect
data = Work.MainIndex_2012sea3_tmp
out = Work.MainIndex_2012sea3_strata4
method = srs
samprate = Work.Samptab_rate
noprint;
strata Source; * 使用Source作為分層變量;
run;
*按個數(shù)分層抽樣,建立抽樣表;
procsql;
create tableWork.Samptab_size (
Sourcechar(10),
_nsize_num
);
insert intoWork.Samptab_size values ('創(chuàng)業(yè)板',10);
insert intoWork.Samptab_size values ('滬市主板',60);
insert intoWork.Samptab_size values ('深市主板',50);
insert intoWork.Samptab_size values ('中小板',30);
quit;
*按個數(shù)分層抽樣,將抽樣表賦值給sampsize;
procsurveyselect
data = Work.MainIndex_2012sea3_tmp
out = Work.MainIndex_2012sea3_strata5
method = srs
sampsize = Work.Samptab_size
noprint;
strata Source; * 使用Source作為分層變量;
run;
(3)系統(tǒng)抽樣
系統(tǒng)抽樣是把總體的個體進行排序,計算出抽樣距離,然后按照這一固定的抽樣距離抽取樣本的方法。第一個樣本采用簡單隨機抽樣的辦法抽取,此后每隔一個抽樣距離的大小抽取一個樣本。抽樣距離等于總體容量除以樣本容量。
*每隔10個抽取一個1個;
procsurveyselect
data = Work.MainIndex_2012sea3
out = Work.MainIndex_2012sea3_sys1
method = sys
sampsize =248
noprint;
run;
在系統(tǒng)抽樣中,可以使用控制變量來對原始數(shù)據進行排序。控制變量使用control語句。SAS程序首先安裝control中的變量排序,然后采用系統(tǒng)抽樣抽取樣本。
*每隔10個抽取一個1個;
*使用Source作為控制變量,這樣程序會對輸入數(shù)據按照Source進行排序;
procsurveyselect
data = Work.MainIndex_2012sea3
out = Work.MainIndex_2012sea3_sys2
method = sys
sampsize =248
noprint;
control Source;
run;
下面的程序是將系統(tǒng)抽樣與分層抽樣相結合,實現(xiàn)較為復雜的抽樣方式,以滿足實際應用的需求。在這個例子中,程序按照strata指定的變量對原始數(shù)據進行分層,在每一層中使用control變量排序,然后分別進行系統(tǒng)抽樣各抽取248個個體,因此,最終的結果有992條觀測。
*分層系統(tǒng)抽樣;
procsurveyselect
data = Work.MainIndex_2012sea3_tmp
out = Work.MainIndex_2012sea3_sys3
method = sys
sampsize =248
noprint;
strata Source;
control EPS;
run
數(shù)據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經網絡(RNN)家族中,長短期記憶網絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據分析師報考條件詳解與準備指南? ? 在數(shù)據驅動決策的時代浪潮下,CDA 數(shù)據分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據透視表中兩列相乘合計的實用指南? 在數(shù)據分析的日常工作中,數(shù)據透視表憑借其強大的數(shù)據匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據分析師:連接數(shù)據與業(yè)務的價值轉化者? ? 在大數(shù)據與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據查詢到趨勢預判? ? 在數(shù)據驅動決策的時代,預測分析作為挖掘數(shù)據潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據查詢結束后:分析師的收尾工作與價值深化? ? 在數(shù)據分析的全流程中,“query end”(查詢結束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據分析師考試:從報考到取證的全攻略? 在數(shù)字經濟蓬勃發(fā)展的今天,數(shù)據分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據背后的時間軌跡? 在數(shù)據分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據類型:時間維度的精準切片? ? 在數(shù)據的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據分析師認證考試中,Python 作為數(shù)據處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據趨勢與突變分析的有力工具? ? ? 在數(shù)據分析的廣袤領域中,準確捕捉數(shù)據的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據分析師認證作為國內權威的數(shù)據分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網絡(LSTM)作為循環(huán)神經網絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調研數(shù)據中的深度應用? 市場調研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調研數(shù) ...
2025-07-07CDA數(shù)據分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據已成為企業(yè)決策、行業(yè)發(fā)展的核心驅動力,數(shù)據分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據分析師考試作為衡量數(shù)據專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉日期:解鎖數(shù)據處理的關鍵技能? 在數(shù)據處理與分析工作中,數(shù)據格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據分析師視角:從數(shù)據迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據已成為企業(yè)決策的核心驅動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據分析師:開啟數(shù)據職業(yè)發(fā)展新征程? ? 在數(shù)據成為核心生產要素的今天,數(shù)據分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03