如何解决尝试在其中运行循环时,Stata错误我是歧义的缩写
我试图按状态对下面的变量进行回归以比较它们,但是我无法使循环运行。这是我到目前为止的经验
<dependencies>
<!-- Rest Easy -->
<!-- Implementation de jaxrs -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>${resteasy.version}</version>
</dependency>
<!-- Provider pour server Tomcat -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>${resteasy.version}</version>
</dependency>
<!-- Gestion du servelet -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-servlet-initializer</artifactId>
<version>${resteasy.version}</version>
</dependency>
<!-- jackson -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>${resteasy.version}</version>
</dependency>
<!-- Permet d'envoyer des appels rest -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>${resteasy.version}</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.6.Final</version>
</dependency>
<!-- Mysql Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
解决方法
就Stata而言,您已经在一个项目statefip
上建立了一个循环。
此外,您声明的宏称为i
。在循环中不引用它是非法的,但是如果您确实引用了它,则需要使用以下语法来引用它:
sysuse auto,clear
foreach i in mpg weight price {
su `i'
}
请注意在本地宏名称周围的单引号。
由于您没有引用宏,因此Stata只能将您对i
的引用解释为对变量(或标量)的引用,事实证明,在数据集中该引用是不明确的。所以,这是眼前的错误。
但是有一个更深层次的问题。您将in
解释为意味着Stata将在您提到的变量内查找并循环其不同的值。这根本不是如何遍历任何变量的不同值。 foreach
不能那样工作。
在这里使用by:
更容易,所以更像
bysort statefip : reg lnwage female parent age fulltime educfin
更有可能起作用。但这不一定是理想的,具体取决于您要对结果执行什么操作。但目前我不知道您要如何处理结果,所以我会停在那里。
常见问题解答here可能是一个好的开始。
,要使用循环变量,您需要将其用前导左引号和尾随单右引号引起来:
foreach i in statefip {
reg lnwage female parent age fulltime educfin `i'
}
但是,不清楚statefip
是什么,因为您没有对本地宏`statefip'
使用引号括起来,也不对全局宏$
使用美元符号$statefip
。如上所述,只有 one 回归将在循环中运行,您在其中将statefip
作为回归调用的最后一个变量进行传递:
reg lnwage female parent age fulltime educfin statefip
如果statefip
是数据集中的变量,并且您希望针对每个唯一值运行迭代,则需要迭代其级别并在回归调用中使用if
过滤数据。下面针对statefip
变量中包含的每个唯一值分别运行回归。
levelsof statefip,local(fips)
foreach f in `fips' {
display "************ `f' ***********"
reg lnwage female parent age fulltime educfin if statefip == "`f'"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。