本文介绍了为大量标量生成自举标准误差的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有四个标量:称它们为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
}

但这不是一个好主意,因为您可以在一个调用中做任何您想做的事情。

这篇关于为大量标量生成自举标准误差的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-02 09:58