当前位置:  开发笔记 > 编程语言 > 正文

Stata foreach回归循环错误

如何解决《Stataforeach回归循环错误》经验,为你挑选了1个好方法。

我目前正在创建一个循环,它将为不同的区域运行回归.我试图运行的回归是:

reg x1 x2 x3 if Region==n

其中n = 1,2,3,4,5,6.

通过手动输入单独运行它们很好但是在尝试运行以下循环时我写了:

local Region "1 2 3 4 5 6"
foreach i of local 'Region' {
reg x1 x2 x3 if Region== 'i'
}

它报告错误:

 'i' invalid name
r(198);

有人可以提出一些建议来解决这个错误吗?



1> Nick Cox..:

报告的问题与使用本地宏无关,foreachregress与您使用本地宏有关.

本地宏引用周围的左右引号不同.否则宏引用无法嵌套,这将是一个严重的问题.这是记录在案的,例如PDF文档中的[U] 18.3.1.

您的代码还有其他问题.让我们先修复它,使用正确的引号并修复另一个语法错误:

local Region "1 2 3 4 5 6"
foreach i of local Region {
    reg x1 x2 x3 if Region == `i'
}

这里的假设是你有一个被调用的变量Region,你也在定义一个具有相同名称的本地宏.如果这是真的并且其他一些假设是正确的,那么上述应该有效.注意如何在宏名在调用引用foreach.

顺便提一下,这个例子可以简化.在这里定义一个本地宏就像将对象放入一个包中,然后立即将它们取出.你不需要这样做.

foreach i in 1 2 3 4 5 6 {
    reg x1 x2 x3 if Region == `i'
}

此外,当列表很简单时,您可以使用forvalues:

forval i = 1/6 {
    reg x1 x2 x3 if Region == `i'
}

除此之外,请statsby查看它是否有帮助.

综上所述:

    语法错误:在引用本地宏时使用不同的引号.

    语法错误:在遍历foreach本地宏的元素时,为其命名,不要引用它.

    样式错误:不要使用您不需要的本地宏.

    样式错误:使用forvalues而不是foreach等同于它.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有