楼主: deem
4809 3

[程序分享] SAS重抽样的两种方法 [推广有奖]

  • 2关注
  • 43粉丝

学科带头人

51%

还不是VIP/贵宾

-

威望
0
论坛币
7022 个
通用积分
1027.0870
学术水平
215 点
热心指数
237 点
信用等级
205 点
经验
71652 点
帖子
979
精华
0
在线时间
2998 小时
注册时间
2009-7-30
最后登录
2024-4-9

楼主
deem 学生认证  发表于 2017-8-16 04:06:20 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
Finance中常常会用到resample,比如(1)做treatment effect时如果是不放回的匹配需要对样本进行随机化以避免匹配顺序对匹配结果的影响,(2)用bootstrap来获得标准误(standard error)。

先生成模拟数据sim_dat


  1. data sim_dat;
  2.     call streaminit(1234);
  3.     do id = 1 to 500;
  4.         ps_score = rand('uniform', 0.3, 0.7);
  5.         treat=id<=150;
  6.         output;
  7.     end;
  8. run;

  9. proc print data=sim_dat (firstobs=148 obs=152); run;
复制代码


1. 有放回的重抽样(resample with replacement)


bootstrap通常需要有放回的抽样,对原样本重抽样形成1000个bootstrap samples,然后对每个每个bootstrap sample计算感兴趣的统计量,形成1000个统计量。


  1. data post_sim_dat (drop=i);
  2.            
  3.     do i=1 to 500*1000;
  4.         sample_id=ceil(i/500);
  5.         pickit=ceil(ranuni(666)*totobs);    /* 设置随机数种子666 */
  6.         set sim_dat point=pickit nobs=totobs;
  7.         output;
  8.     end;
  9.     stop;
  10.     label sample_id='对bootstrap samples编号,用于后续分析'
  11.     ;
  12. run;

  13. proc print data=post_sim_dat (firstobs=498 obs=502);
  14.      title ’1000 Bootstrap Samples’;
  15. run;
复制代码

2. 无放回的重抽样(resample without replacement)
添加一个辅助列,生成一列随机数,按照这列排序即可。


  1. data post_sim_dat_2;
  2.     set sim_dat;
  3.     index=ranuni(666);
  4. run;

  5. proc sort data=post_sim_dat_2; by index; run;

  6. data post_sim_dat_2;
  7.     new_id=_n_;
  8.     set post_sim_dat_2 (drop=index);
  9. run;

  10. proc print data=post_sim_dat_2 (obs=4); run;
复制代码


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:replacement Bootstrap placement treatment Bootstra

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
eijuhz + 3 + 3 + 2 鼓励积极发帖讨论

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 2   查看全部评分

沙发
西门高 发表于 2017-8-16 06:28:44 来自手机 |只看作者 |坛友微信交流群
deem 发表于 2017-8-16 04:06
Finance中常常会用到resample,比如(1)做treatment effect时如果是不放回的匹配需要对样本进行随机化以避 ...
谢谢分享

使用道具

藤椅
albusdzx 发表于 2017-8-18 16:07:52 |只看作者 |坛友微信交流群
LZ尝试过用proc surveyselect重复上述的操作吗

使用道具

板凳
deem 学生认证  发表于 2017-8-18 16:19:52 |只看作者 |坛友微信交流群
albusdzx 发表于 2017-8-18 16:07
LZ尝试过用proc surveyselect重复上述的操作吗
proc surveyselect是更加强大,能完成一些更特别的抽样,特别是在面板结构下

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 17:58