SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 9521|回复: 13
打印 上一主题 下一主题

sas 抽样过程

[复制链接]

6

主题

16

帖子

86

积分

超级版主

Rank: 8Rank: 8

积分
86
跳转到指定楼层
楼主
发表于 2014-4-15 12:45:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bxfly 于 2014-4-15 12:47 编辑

1、         系统抽样
它是首先将总体中各单位按一定顺序排列,根据样本容量要求确定抽选间隔,然后随机确定起点,每隔一定的间隔抽取一个单位的一种抽样方式。
Sas代码(1):
data quan;
set sashelp.prdsale;
     if mod(_n_,4)=0 then output ;
run;
Sas代码(2):
data quan1;
    do i= 1 tonumber by 10;
     set sashelp.prdsale nobs=number point=i;
    output ;
    end;
    stop;
run;
sas代码(3):利用过程步surveyselect ,其中方法为systematic sampling(简写为sys)
proc surveyselect data=sashelp.prdsale n=100 method=sys out=quan;
run;

2、         简单抽样
随即抽取分为重复抽样不重复抽样。在重复抽样中,每次抽中的单位仍放回总体,样本中的单位可能不止一次被抽中。不重复抽样中,抽中的单位不再放回总体,样本中的单位只能抽中一次。
sas代码(1):
data quan2;
   set sashelp.prdsale nobs=number;
   x=uniform(0);
run;
proc sort data=quan2 out=quan3;
    by x;
      run;
data quan;
       set quan3;
         if _n_<30 then output;drop x;
run;
这个代码很有意思的,产生一组随即数,然后根据随机数排序进行选择。
Sas代码(2):
data quan;
do i =1 to 50;
p=ceil(1440*ranuni(0));
set sashelp.prdsale  point=p;
   output;
   end;
   stop;
   drop p;
run;
这个例子也是通过随机数来产生随机的位置,然后抽取相应的数据。
另外如果不知道初始样本的数据量,可以使用nobs设置。
data quan;
do i =1 to 50;
p=ceil(number*ranuni(0));/*向上取整,这样就可以使p指在【1number】中。
set sashelp.prdsale  point=p nobs=number;
   output;
   end;
   stop;
   drop p;
run;
Sas代码(3):利用过程步surveyselect,其中method= srs(即simple random sampling
proc surveyselect data=sashelp.prdsale n=100 method=srs out=quan;
run;
3、         分层抽样
分层抽样先将总体的单位按某种特征分为若干次级总体(层),然后再从每一层内进行单纯随机抽样,组成一个样本的方法。
Sas代码(1):
proc sort data=sashelp.prdsale out=quan;
by country region;
run;
proc surveyselect data=quan rate=0.1 method=srs out=quan1;
strata country region;
run;
这里有一点要提醒:就是必须先排序。排序后在进行抽样。
4、bootstrap 方法
Bootstrap的思想,是生成一系列bootstrap伪样本,每个样本是初始数据有放回抽样。通过对伪样本的计算,获得统计量的分布。例如,要进行1000次bootstrap,求平均值的置信区间,可以对每个伪样本计算平均值。这样就获得了1000个平均值。对着1000个平均值的分位数进行计算,即可获得置信区间。已经证明,在初始样本足够大的情况下,bootstrap抽样能够无偏得接近总体的分布。
有关bootstrap sas代码可见:
http://www.lexjansen.com/phuse/2005/pk/pk02.pdf



总结:
Data步虽然可以做一些抽样工作,但是不如surveyselect简洁、方便。

参考:
几种简单抽样方法的SAS实现–surveyselect http://yanyk.dxyer.cn/8215_10/
如何利用SAS进行随机抽样?http://blog.sina.com.cn/s/blog_5fc375650102dszz.htmlSas advance programming
Sas编程与商业数据挖掘


分享到:  微信微信
收藏收藏4
回复

使用道具 举报

2

主题

41

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
沙发
发表于 2014-4-15 12:59:54 | 只看该作者
不错很实用的东西。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
发表于 2014-4-16 00:22:56 来自手机 | 只看该作者
确实总结的很好!赞!
回复 支持 反对

使用道具 举报

0

主题

6

帖子

72

积分

注册会员

Rank: 2

积分
72
地板
发表于 2014-4-16 00:45:26 | 只看该作者
总结的很好!赞!
回复 支持 反对

使用道具 举报

6

主题

31

帖子

293

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
293
5#
发表于 2014-4-16 09:00:45 | 只看该作者
嗯,这个总结比较全面。
SAS资源
1. SAS 微信:mysasnet
2. SAS QQ群:348941365
3. SAS Blog:编程|统计|医药
回复 支持 反对

使用道具 举报

3

主题

17

帖子

213

积分

中级会员

Rank: 3Rank: 3

积分
213
6#
发表于 2014-5-8 14:24:58 | 只看该作者
再加上匹配抽样的更好,哈哈~~~
回复 支持 反对

使用道具 举报

6

主题

16

帖子

86

积分

超级版主

Rank: 8Rank: 8

积分
86
7#
 楼主| 发表于 2014-5-23 21:32:16 | 只看该作者
chenli9045 发表于 2014-5-8 14:24
再加上匹配抽样的更好,哈哈~~~

好的 之后研究研究
回复 支持 反对

使用道具 举报

10

主题

39

帖子

1070

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1070
QQ
8#
发表于 2014-5-25 11:15:45 | 只看该作者
赞一个!!!
回复

使用道具 举报

6

主题

16

帖子

86

积分

超级版主

Rank: 8Rank: 8

积分
86
9#
 楼主| 发表于 2014-5-25 18:56:27 | 只看该作者

slash大牛过奖了
回复 支持 反对

使用道具 举报

11

主题

49

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
10#
发表于 2014-5-30 23:09:02 | 只看该作者
一直怀疑boostrap, 简单的随机重复以增加obs,和原始数据区别在哪?
就想问一下, 无限接近真实值,干吗不直接用原始数据?
mean的CI,难道用原始数据就无法算出来吗?
thx!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2024-11-22 14:08 , Processed in 0.194399 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表