我目前正在尝试创建一个循环来延迟数百个时间序列,其中包括搜索查询,从词典中获取的与经济相关的单词。 (工作)命令我的deseasonal化基于这样的
sum ACCRUE, meanonly
local mACCRUE =r(mean)
reg ACCRUE January February March April May June July August September October November December, nocons
predict double ACCRUESA, residual
replace ACCRUESA=ACCRUESA+`mACCRUE'
所以最后我从基准时间序列ACCRUE创建了一个名为ACCRUESA的新的延长时间序列。
在下一步中,我想为其余查询自动化命令。我尝试了以下
foreach var of varlist a-z {
sum `var', meanonly
local mu =r(mean)
reg `var' January February March April May June July August September October November December, nocons
predict double `var'SA, residual
replace `var'SA=`var'SA+`mu'
}
我使用a-z循环查询,但也许这是错误的方法。我的目标是排除每月的假人。无论如何,在执行之后我得到一个变量未知的错误。您将观察到我尝试使用`var'和后缀创建一个新变量,但我不确定这种方法是否可行。
有人知道如何改进我的命令吗?
答案 0 :(得分:1)
问题似乎是您为循环提供的变量列表:a-z
。我最初建议您使用_all
。
@NickCox正确地指出_all
会在<varlist>
(即月份)中包含不需要的变量。您可以从<varlist>
中删除这些内容。下面是一个例子。
clear all
set more off
*------------------- Create example data -----------------------
sysuse auto
foreach var in `=c(Months)' {
gen `var' = 0
}
*------------------ Remove some variables ----------------------
* All variables
ds
local allvars = r(varlist)
display "`allvars'"
* Strings to remove
local removethis = c(Months)
* modified local (no months)
local myvars: list allvars - removethis
display "`myvars'"
*-------------------------- Process ----------------------------
foreach var of varlist `myvars' {
display "`var'"
sum `var', meanonly
display r(mean)
}
这涉及使用宏列表。输入help macrolists
了解详情。