我正在运行面板回归,我必须尝试组合变量。
我一直在尝试运行以下代码:
local x0 elec_qtr_dummy
local x1 elec_qtr_dummy elec_qtr_1b
local x2 elec_qtr_dummy elec_qtr_1b elec_qtr_2b
local x3 elec_qtr_dummy elec_qtr_1b elec_qtr_2b elec_qtr_3b
local x4 elec_qtr_dummy elec_qtr_1b elec_qtr_2b elec_qtr_3b elec_qtr_4b
local x5 elec_qtr_dummy elec_qtr_1b elec_qtr_2b elec_qtr_3b elec_qtr_4b elec_qtr_1a elec_qtr_2a
local x6 elec_qtr_dummy elec_qtr_1b elec_qtr_2b elec_qtr_3b elec_qtr_4b elec_qtr_5b elec_qtr_6b
xtset companyid
forvalue v = 0/6 {
eststo,title("log_stqf_deal"): xi: xtreg log_stqf_deal `x`v'' i.year,fecluster(state_code)
est2vec table`v', e(N) vars(`x`v'') name(lstqf_deal) replace
eststo,title("log_totln"): xi: xtreg log_stqf_deal `x`v'' i.year,fe cluster(state_code)
est2vec table`v', addto(table`v') name(ltotln)
est2rowlbl `x`v'', saving replace path(`file') addto(table`v')
est2tex table`v', preserve path(`file') mark(starb)fancy levels(90 95 99) label replace
estimates clear
}
但是,Stata拒绝承认forvalues
循环内存在本地人。
如果有人可以指出一个有效的替代方案,那将是非常有帮助的。
我使用的是Stata 12.0版。
答案 0 :(得分:1)
报价不好。他们应该是:
xi: xtreg log_stqf_deal `x`v'' i.year,fe
但是,我无法判断它们是否良好,并且您的原始格式混淆了它们。你应该确认。
一个工作示例:
clear
set more off
sysuse auto
local x0 mpg
local x1 mpg rep78
forvalue v = 0/1 {
reg price `x`v''
}
你没有引用Stata给你的错误,这是一件令人向往的事情。
您也可以查看stepwise
命令,但这可以明智地使用。
答案 1 :(得分:1)
正如@Roberto Ferrer正确指出的那样,这里没有什么是可以重现的。事实上,“Stata拒绝承认......”的说法只是用拟人的术语表达,而这些术语本身并不能说明发生了什么。但问题的关键似乎是本地宏对正在执行的代码不可见。
本地宏的一个基本错误是如此常见以至于值得回答,因为即使它不是OP问题的答案,也是可能在类似标题下发布的许多问题的答案。
本地宏本地到它们所定义的空间,这恰恰意味着其中一个
主要互动环节
特定计划
特定的文件
(部分)特定文件编辑器窗口的内容
请注意,最后的“(部分)”真的可以咬人,就像(例如)你分别执行代码块一样。所引用的本地宏的定义必须在同一代码空间内对Stata可见。
在该空间之外,本地宏将是不可见的,这意味着对它们的引用将被解释为引用不存在的宏和空字符串非法。引用不存在的宏本身并不违法,但结果语句可能是非法的,或者可能不是用户想要的,这可能是这里的情况。
要测试本地宏的问题,您可以
set trace on
查看代码的逐行解释。如果宏引用被空代码替换,则Stata无法看到本地宏;它们确实不是本地的,而是代码中的其他地方。
在使用之前尝试使用display
个宏。与#1相同的故事。
使用macro list
列出适用于您的代码的Stata已知的(全局和)本地宏。与#1相同的故事。