楼主: funwin
8209 37

有谁知道 如何用宏语言实现bootstrap resampling? [推广有奖]

  • 0关注
  • 2粉丝

硕士生

85%

还不是VIP/贵宾

-

威望
0
论坛币
177 个
通用积分
0
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
2256 点
帖子
192
精华
0
在线时间
131 小时
注册时间
2007-11-7
最后登录
2016-1-22

楼主
funwin 发表于 2010-4-6 08:27:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有谁知道 如何用宏语言实现bootstrap resampling?

假如样本如下:
co
date
resid
resid_boot1
……..
resid_boot1000
10001
200501
0.00865



10001
200502
-0.00635



…..
…..
……



10001
200812
0.00025



10006
200207
0.00358



10006
200208
-0.00254



…..
…..
…..



10006
200612
0.00098



……
……
…….




现在,想对每家公司coresid进行有放回的再抽样,比如1000148obs,就有放回的抽取48次得到一组新的resid_boot1; 10006公司,有54obs,就有放回的抽取54次也得到一组新的resid_boot1…….以此类推,对所有公司都进行一遍。
然后再重复一遍,形成resid_boot2……,以此类推,进行1000遍。

不知上述步骤用SAS如何进行?好像要用到%MACRO 语句,哪位高人指点一下!?
万分感激!!

二维码

扫码加我 拉你入群

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

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

关键词:Resampling Bootstrap Sampling Bootstra boots 语言 Bootstrap Resampling

沙发
horace_chen 发表于 2010-4-6 08:41:24
http://www.pinggu.org/bbs/thread-542652-1-1.html

不知道是不是楼主要找的

藤椅
funwin 发表于 2010-4-6 09:44:08
非常感谢,下载下来,好好看看。好像语句很复杂。
不知道我所需要的完成的这个事,是否要这么复杂的句子?

板凳
nkwilling 发表于 2010-4-6 12:44:43
bootstrapping resampling只是一个抽样方法,SAS里面可以用MACRO的DO循环语句加上PROC SURVEYSELECT过程步解决。

报纸
funwin 发表于 2010-4-6 20:31:55
能否请版主 就我上面的例子 给出具体的code?
非常感激!

地板
funwin 发表于 2010-4-6 21:39:38
刚看了些书,可以用下面code实现对一个公司的resid再抽样,但是这个句子不能识别公司,但又不能加by语句,如何是好?
data n.boots;
  do sampnum=1 to 1000;
    do i =1 to nobs;
      x=round(ranuni(0)*nobs);
     set n.mydata nobs=nobs point=x;
      output;
     end;
    end;
stop;
run;

7
funwin 发表于 2010-4-6 21:40:01
刚看了些书,可以用下面code实现对一个公司的resid再抽样,但是这个句子不能识别公司,但又不能加by语句,如何是好?
data n.boots;
  do sampnum=1 to 1000;
    do i =1 to nobs;
      x=round(ranuni(0)*nobs);
     set n.mydata nobs=nobs point=x;
      output;
     end;
    end;
stop;
run;

8
funwin 发表于 2010-4-6 21:40:25
刚看了些书,可以用下面code实现对一个公司的resid再抽样,但是这个句子不能识别公司,但又不能加by语句,如何是好?
data n.boots;
  do sampnum=1 to 1000;
    do i =1 to nobs;
      x=round(ranuni(0)*nobs);
     set n.mydata nobs=nobs point=x;
      output;
     end;
    end;
stop;
run;

9
funwin 发表于 2010-4-6 21:41:36
附上我的数据,希望高手帮帮忙!

10
funwin 发表于 2010-4-6 22:54:59
将公司先编上序号t,然后将原数据分拆成t 个数据,进行再抽样,可以得到:假设only四个公司
%marco boot;
  data boots1 (where=(t=1))
          boots2 (where=(t=2))
          boots3 (where=(t=3))
           boots4 (where=(t=4));
  set mydata;
run;
data bootstrap;
   %do t=1 %to 4;
      do sample=1 to 1000;
         do i =1 to nobs;
          x=round(ranuni(0)*nobs);
         set boots&t  nobs=nobs point=x;
         output;
         end;
       end;
   %end;
stop;
run;
%mend;
%boot;
只是 抛砖引玉!如果现在我有2000家公司(t=1 to 2000), 怎么能将这个语句子写得更简单些???
data boots1 (where=(t=1))
          boots2 (where=(t=2))
          boots3 (where=(t=3))
           boots4 (where=(t=4));
  set mydata;
已有 1 人评分热心指数 收起 理由
crackman + 3 热情

总评分: 热心指数 + 3   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 02:41