全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3106 4
2010-08-23
悬赏 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次抽样的问题。。万分感谢。。。
二维码

扫码加我 拉你入群

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

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

全部回复
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
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

2011-9-7 13:06:38
抽取30%的样本有很简单的命令:
sample 30
就可以解决问题了
二维码

扫码加我 拉你入群

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

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

2011-9-9 11:53:28
其实,楼主所说的问题就是bootstrap吧,可以在回归命令前面加上bootstrap就可以实现了:
bootstrap,reps(1000):reg y x
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群