首页 > 解决方案 > 在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);

知道我的代码有什么问题吗?

标签: loopstime-seriesregressionstatapanel-data

解决方案


不幸的是,您的代码有很多错误,尽管您没有注意到各种错误,因为它们是含义错误,而不是语法错误。

作为一个开始,

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是一个更好的主意。


推荐阅读