Stata foreach和forvalues循环

时间:2015-03-09 23:18:52

标签: for-loop stata

这是我的问题: 在第1,000部分重复回归,每次按指定绘制y,X1,X2和u变量的新值。计算估计系数的平均值以及它们的相关性。 我用for循环编写了我的代码,但它只是告诉我没有任何变化。

foreach n in 1000{

  forvalues m = 1/1000 {

        local bb0 = 0
        local bb1 = 0
        local bb2 = 0
        gen u = rnormal(0, 5) if _n <= `n'
        gen x1i = rnormal(0, 1) if _n <= `n'
        gen x2i = exp(x1i) if _n <= `n'
        gen Yi = 2 + 4 * x1i - 6 * x2i + u if _n <= `n'
        regress Yi x1i x2i

        replace bb0 = b[_cons]) if _n <= `n'
        replace bb1 = b[x1i] if _n <= `n'
        replace bb2 = b[x2i] if _n <= `n'

}
}
gen b0 = mean(bb0)
gen b1 = mean(bb1)
gen b2 = mean(bb2)  

1 个答案:

答案 0 :(得分:3)

你的报告最神秘。从表面上看,这段代码永远不会超过几个错误中的第一个。这里提到的任何错误都是致命的,但我还是报告了其他错误。

循环的意图显然是保持1000次回归的结果,但每次循环回归时,最后一次回归的估计系数(其他错误在某种程度上不咬人)会覆盖变量bb0 bb1 bb2中的任何先前估计值。这本身并不是语法错误,但即使是大纲,程序也不会做出预期的事情。

外部循环是一个使用单个参数的循环,它只将最后一次观察设置为1000.本身它不会产生任何迭代。

初始化localbb0 bb1 bb2是无害的,但如果想法与初始化变量bb0有关,则非常不正确, bb1bb2

错误第二次循环,第一个generate语句将失败,因为变量u已经存在。

错误在接下来的三个generate语句中会遇到同样的问题。

错误第一次循环循环时,replace的{​​{1}}语句将失败,因为不存在此类变量(请参见上文:之前的本地宏分配无关紧要) 。

错误相同的bb0语句包含一个迷路括号。

错误同样的问题会在第一次循环循环时设置接下来的两个replace语句,因为不存在这样的变量。

错误 replace系数保留在regress后,而不是_b

错误没有函数b可以在表达式中使用mean()语句。

以下代码至少有效。所报告的问题陈述在各种细节上都不清楚:例如,样本大小和模拟数量可能不同。由于问题的基调在某些过程中暗示了一项任务,至少相关的代码留作练习。

generate