在Stata中,`local` 命令用于定义宏。您已经正确地使用它来创建一个包含多个控制变量名称的宏 `cv1`。
但是,在您尝试使用这个宏进行操作时(如 `sum` 或者 `reg` 命令),需要正确引用宏中的内容。当您直接在命令中写 `cv1`,Stata会将 `cv1` 视为一个变量名而不是将其展开为变量列表。
正确的引用方式是使用双引号和单撇号,如下所示:
对于 `sum` 命令:
```stata
sum `cv1'
```
这个命令是错误的。应该写成这样:
```stata
summarize `cv1'
```
但是,由于 `summarize` 无法直接接受宏中的变量列表,您需要在宏名前后添加空格和单撇号(也就是引号内的反撇号),如下所示:
```stata
summarize "`cv1'"
```
对于 `reg` 命令:
```stata
reg Capex tt `cv1'
```
这个命令同样是错误的。正确的使用方式是:
```stata
regress Capex tt "`cv1'"
```
这样,Stata会将宏中的变量列表展开,并将其作为回归模型的控制变量。
但要注意,直接在命令中用这种方式引用包含空格的宏可能会出问题(例如当 `cv1` 中有变量名如 `SOE ROA`),因此实际使用时需要确保宏中的每个变量名都是单独列出的。更安全的做法是先将宏内容转换成真正由空格分隔的列表,可以使用 `tokens` 来实现这一点:
```stata
local cv1 : word list SOE ROA Lev_Ind Grow Fata Size Top1
regress Capex tt `cv1'
```
但是直接使用 `word list` 的方式在 Stata 16 及其更新的版本中才可用,对于更早的版本,你可能需要使用其他方法来确保宏中的变量被正确引用。例如:
```stata
local cv1 SOE ROA Lev_Ind Grow Fata Size Top1
foreach var in `cv1' {
qui sum `var'
}
regress Capex tt `cv1'
```
这样,`foreach` 循环将确保每个变量被单独引用,并且避免了因宏中的空格而引起的问题。在回归命令中使用时,同样需要使用反撇号和引号来正确展开宏内容。
此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用