loops - 在stata中使用“foreach”循环存储结构断点
问题描述
read.csv("C:\Users\easy\Desktop\workbook.csv")
我需要在我的数据集中的国家列表上估计回归的结构断点,并且我需要为我拥有的每个国家存储这些盈亏平衡点,并在循环完成后以表格形式显示这些盈亏平衡点。我的数据集是面板数据,这就是为什么我需要遍历这些国家。
我估计了我countrynum
的国家列表变量中每个国家的回归。我尝试将每个国家/地区回归估计的盈亏平衡点存储如下
foreach i in countrynum {
by countrynum, sort: reg y x1 x2 x3 if `i'== countrynum
est store `r'(breakdate)
}
Stata 返回以下错误消息:
( invalid name
) invalid name
r(7);
知道我的代码有什么问题吗?
解决方案
不幸的是,您的代码有很多错误,尽管您没有注意到各种错误,因为它们是含义错误,而不是语法错误。
作为一个开始,
foreach i in countrynum {
不会触发对 的不同值的循环countrynum
。它是对变量 name 一项的循环countrynum
。
所以你的测试变成了
if countrynum == countrynum
这总是正确的,并且循环不是循环,但相当于
by countrynum, sort: reg y x1 x2 x3
est store `r'(breakdate)
现在下一个问题是第一个命令运行了多次回归,但只有最后一次回归的结果(对于最后一个命名的国家)将保留在内存中。
Stata 注意到的错误是它不知道你的意思
`r'(breakdate)
您似乎指的是需要额外语法才能获得的结果
`r(breakdate)'
积极的建议。使用statsby
是一个更好的主意。