楼主: superzhousi
3134 4

【悬赏求助】 随机抽样 [推广有奖]

  • 0关注
  • 4粉丝

讲师

49%

还不是VIP/贵宾

-

威望
0
论坛币
45231 个
通用积分
21.2073
学术水平
21 点
热心指数
33 点
信用等级
22 点
经验
5745 点
帖子
176
精华
0
在线时间
682 小时
注册时间
2007-10-30
最后登录
2025-11-11
毕业学校
Durham University, UK

楼主
superzhousi 发表于 2010-8-23 16:58:38 |AI写论文
400论坛币
想解决这样一个问题 从回归y=a+bx+e中得到残差e,假设样本容量是T,然后从e中随机抽取组成一个新的残差项e1,这个新的残差项的大小也是T,这样重复1000次,就组成1000组容量是T的新的残差项e1, 然后将e1加到原回归方程中得到1000组新的y, 令其为y1, 即y1=bx+e1,b 的顺序不变就是扩大为1000组b同时假设a=0, 最后再用新得到的y1和原b 做回归。

之前用非mata的语言写过,不过因为有上百组y,光进行一次这样的运算就耗费很长时间,不知道用mata是不是可以更便捷,特别是如果用mata怎么写这个随机1000次抽样的问题。。万分感谢。。。

关键词:随机抽样 悬赏求助 MATA 样本容量 万分感谢 求助 随机 悬赏

沙发
voodoo 发表于 2010-8-30 10:52:58
以下代码不是mata,但运行一遍只需55秒左右,我觉得时间还是可以接受的(最长的时间花在1000次回归上,bsample只用了4秒)。

set rmsg on
clear
set obs 900   // T
gen x1 = runiform()
gen x2 = runiform()
gen y = 2*x1 + 3*x2 + rnormal()
reg y x1 x2
predict yhat
predict res, residual

expand 1000
bysort res: gen n = _n
sort n

preserve
keep res
bsample 900000  // T*1000
save res, replace
restore

drop res
merge 1:1 _n using res, nogen

gen ynew = yhat + res
statsby _b, by(n) clear: reg ynew x1 x2
已有 1 人评分学术水平 热心指数 收起 理由
superzhousi + 1 + 1 非常感谢,不过您写的和我之前有一些相似,就是运行一次只能对一个变量进行抽样,问题

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

巫毒上传,必属佳品!
坛友下载,三思后行!

藤椅
cheerhappy 发表于 2011-9-2 14:38:42
voodoo 发表于 2010-8-30 10:52
以下代码不是mata,但运行一遍只需55秒左右,我觉得时间还是可以接受的(最长的时间花在1000次回归上,bsam ...
你好,看到你的回答,你应该是比较熟悉用stata来抽样的了,我现在有个数据是640万个样本,要抽取30% 的样本,stata打开总体后,写什么语句可以抽取出来这30%的样本呢?希望能够指导下,万分感谢!
不放弃、不抛弃

板凳
h8631986j 在职认证  发表于 2011-9-7 13:06:38
抽取30%的样本有很简单的命令:
sample 30
就可以解决问题了

报纸
h8631986j 在职认证  发表于 2011-9-9 11:53:28
其实,楼主所说的问题就是bootstrap吧,可以在回归命令前面加上bootstrap就可以实现了:
bootstrap,reps(1000):reg y x

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-26 00:44