本文介绍了为大量标量生成自举标准误差的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有四个标量:称它们为dea_1 dea_2 dea_3 dea_4
。它们是从程序samprogram
(此处未显示)输出的。现在,我将Stata中的bootstrap
命令与这些标量一起使用,以获取引导标准错误。
set seed 123
bootstrap dea_1=r(dea_1)dea_2=r(dea_2)dea_3=r(dea_3)dea_4=r(dea_4), reps(100): samprogram
这很好,但在我的原始程序中,我计算了30个标量,dea_1 dea_2 ... dea_30
。现在我想避免在bootstrap
命令中编写这30个标量中的每一个,为此我编写了一个循环,如下所示:set seed 234
forvalues i in 1(1)30{
local k dea_`i'
bootstrap dea_`k'=r(dea_`k'), reps(100): samprogram
}
这是可行的,但每次只给出一个标量的输出。然而,我正在寻找的代码可以避免在bootstrap
命令中写入所有标量,但仍然同时提供所有标量的输出(即,类似于以下命令的输出)
set seed 345
bootstrap dea_1=r(dea_1)dea_2=r(dea_2)dea_3=r(dea_3)dea_4=r(dea_4)[omitted]...dea_30=r(dea_30), reps(100): samprogram
我们非常感谢您在这方面提供的任何帮助。
推荐答案
这将逐步构建本地宏的内容。
set seed 123
forval i = 1/30 {
local call `call' dea_`i'=r(dea_`i')
}
bootstrap `call', reps(100) : samprogram
如果需要,请提前将宏清空
local call
在http://www.stata-journal.com/sjpdf.html?articlenum=pr0005[免费.pdf]
中有更多讨论(稍后)请注意,与您的断言相反,代码
set seed 234
forvalues i in 1(1)30{
local k dea_`i'
bootstrap dea_`k'=r(dea_`k'), reps(100): samprogram
}
不会按预期工作。例如,第一次,bootstrap
将查找r(dea_dea_1)
,并为每个样本返回MISSING。重复调用bootstrap
的代码可以是
set seed 234
forvalues i = 1/30 {
bootstrap dea_`i'=r(dea_`i'), reps(100): samprogram
}
但这不是一个好主意,因为您可以在一个调用中做任何您想做的事情。
这篇关于为大量标量生成自举标准误差的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!