简单随机抽样sas实现
来源:互联网 发布:手机广告声音制作软件 编辑:程序博客网 时间:2024/06/06 03:50
简单随机抽样,就是以相同概率从N个总体单位中抽取n个单位。根据有无放回,它又分为无放回的简单随机抽样和有放回的简单随机抽样。支持以上观点的书籍很多,如《Elements of sampling theory and methods》、《抽样调查的理论及其应用方法》、《抽样技术》等等。另外,《survey Samling》《data preparation for analytics using sas》等书中引用了限制随机抽样和无限制随机抽样的叫法。他们认为,不放回的叫简单随机抽样(限制随机抽样),而有放回的随机抽样叫做无限制抽样。
总之,对于两种随机抽样的实现都殊途同归,分清就好。很多书籍都讨论了对简单随机抽样的实现问题。如:
《data preparation for analytics using sas》一书中介绍了重点介绍了简单随机抽样,分层抽样和整群抽样以及其软件实现方式。《SAS编程与数据挖掘商业案例》一书中,姚志勇给出了自己处理简单无重复抽样、分层等比例和不等比例抽样及随机抽样的宏代码。
《多元统计和sas》一书在试验设计一讲中,针对随机试验设计原则,给出了服从标准正态分布和一般正态分布的随机数实现方式。
不同理解的代如下:
1、以10%的概率无限制从总体中抽取,我们会得到近似10%的概率。
data all;
do i=1 to 100;
output;
end;
run;
data sample1;
set all;
if ranuni(0)<0.1 then output;
run;
data sample2;
set all;
if ranuni(0)<10/100 then output;
run;
2.限制性的随机抽样
data all;
do i=1 to 100;
output;
end;
run;
data sample3;
set all;
if nobs < 10 then do;
if ranuni(0)*(100-_N_)<=(100-nobs) then do;
output;
nobs+1;
end;
end;
run;
该种抽样的宏代码如下(姚书):
%let sampsize=100;
data tmp;
set sashelp.prdsale nobs=nobs;
retain_cnt_0;
if &sampsize>_cnt_ and ranuni(0)*(nobs+ _n_) < (&sampsize-_cnt_) then do;
_cnt_+1;
output;
end;
drop _cnt_;
run;
该书中还介绍了利用uniform函数以及surveyselect过程对该种抽样的实现,详情见该书。
3.简单随机抽样的宏代码
%MACRO SAMPLE(EMDS,SAMPLE,RAND,MRSS=,OVERSAM=0.05);DATA _NULL_; FSS=CEIL(&MRSS*(1+&OVERSAM)); CALL SYMPUT('FSS',LEFT(PUT(FSS,8.))); RUN; /* get the number of FSS and store it in &FSS */DATA _NULL_; IF 0 THEN SET &EMDS NOBS=EM; CALL SYMPUT('EM', LEFT(PUT(EM,8.))); STOP;RUN;/* get the number of EM and store it in &EM at compile time */DATA &EMDS; SET &EMDS; OBSNUM=_N_;/*use OBSNUM to track chosen members */RUN;DATA _NULL_; N=FLOOR(&EM/&FSS); START=MAX(ROUND(&RAND*N),1);/* round START using .5 rule */ CALL SYMPUT('N', LEFT(PUT(N,8.))); CALL SYMPUT('START',LEFT(PUT(START,8.)));RUN;DATA &SAMPLE(DROP=I); LENGTH LIST $7; DO I=1 TO &FSS; OBSIN=&START+FLOOR((I-1)*(&EM/&FSS)); SET &EMDS POINT=OBSIN;/*draw members by their observation #*/ IF I <= &MRSS THEN LIST='PRIMARY'; ELSE LIST='AUXILIA'; OUTPUT; END; STOP;RUN;%PUT EM=&EM MRSS=&MRSS FSS=&FSS N=&NSTART=&START;/* output the values of these macrovariables to SAS LOG */%MEND SAMPLE;DATA A;INPUT GROUP $ FREQ;CARDS;A 11B 12C 13D 14E 15F 16G 17H 18J 19K 20L 21M 22N 23P 24A 11B 12C 13D 14E 15F 16G 17H 18J 19K 20L 21M 22N 23P 24B 12C 13D 14E 15F 16G 17H 18J 19K 20L 21M 22N 23P 24A 11B 12C 13D 14E 15F 16G 17H 18J 19K 20L 21M 22N 23P 24;RUN;%SAMPLE(A,B,0.5,MRSS=20,OVERSAM=0.10);PROC PRINT DATA=B;RUN;
- 简单随机抽样sas实现
- SAS随机抽样
- 在SAS中进行随机抽样
- SAS随机抽样以及程序初始环境
- java实现随机抽样
- 实现随机抽样【随机数生成问题】
- python实现的分层随机抽样
- Excel在统计分析中的应用—第六章—抽样与抽样分布-Part1(简单随机抽样)
- matlab随机抽样
- 随机抽样算法
- 随机抽样一致-RANSAC
- 随机抽样一致性算法
- 随机抽样一致 RANSAC
- 蓄水池随机抽样算法
- 随机抽样一致性算法
- 随机抽样一致性算法
- 随机抽样一致-RANSAC
- 编程珠玑-随机抽样
- Q-Kevin的编程随笔(三)
- 读《Java核心技术:卷Ⅰ基础知识》有感
- JSON 概念
- Android画图学习总结
- 关于移动通信行业从业人员自律和自卫的【通知】
- 简单随机抽样sas实现
- [转]Fedora 14 yum 高速源设置
- 关于隐马尔可夫模型的一点信息
- 复制文件时,如何显示进度条
- vc++ 做的一个redo/undo
- 求助
- 制作多页浏览器的解决方案
- linux文件的访问权限和文件模式
- spring声明事务管理~之细节session.getCurrentSession()~~~~