Stata&x27;滚动';命令:保存变量而不是.dta文件
我正在foreach循环中使用滚动命令:Stata&x27;滚动';命令:保存变量而不是.dta文件,stata,Stata,我正在foreach循环中使用滚动命令: use "MyFile.dta" tsset time, monthly foreach i of varlist var1 var2 { rolling _b, window(12) saving(beta_`i'): reg `i' DependentVariable } 现在,这段代码为每个滚动回归保存一个不同的文件。我真正想要的是将从滚动估计中获得的每个beta向量保存为一个变量。 我希望得到的最终结果是一个数据集,其中包含时间变量和每个滚动
use "MyFile.dta"
tsset time, monthly
foreach i of varlist var1 var2 {
rolling _b, window(12) saving(beta_`i'): reg `i' DependentVariable
}
现在,这段代码为每个滚动回归保存一个不同的文件。我真正想要的是将从滚动估计中获得的每个beta向量保存为一个变量。
我希望得到的最终结果是一个数据集,其中包含时间变量和每个滚动的“beta_var#”变量:
time | beta_var1 | beta_var2
_________|___________|__________
1990m1 | ## | ##
1990m2 | ## | ##
... | ## | ##
200m12 | ## | ##
1990m1 | ## | ##
(附:第二个问题:是否有一个快捷方式来指示数据集中所有变量的varlist=)我误读了你的帖子,我的初始答案没有给出你的要求。这里有一条路。不优雅也不是很高效,但它可以工作(只需更改目录名): 也许可以使用
postfile
或连接结果向量并使用svmat
转换为数据集来提出其他解决方案。我不确定
原始答案
将saving()
选项与replace
一起使用,只提供一个文件名(删除宏后缀):
您可以使用
\u all
或*
@Giuseppe引用所有变量,我已经编辑了我的答案。原来的一个没有满足你的要求。非常感谢。我只有一个问题。您的代码可以正常工作,但当我转到我的数据集时,我遇到了一个问题:rename(_b_
var'b_cons)(b_depvar'b_cons_
depvar')`给了我:\u oldnames和newnames与您为oldname指定的1个模式或名称不匹配,为newnames指定的2个模式或名称不匹配。删除常量名称中的'depvar'后,prbolem将消失,但随后它将覆盖常量。@Giuseppe,使用重命名时,旧\u名称的数量必须与新\u名称的数量匹配。在调用命令之前,我会检查正在输入的rename
。您可以使用display
进行此操作。您引用的错误表示您提供了一个旧的_名称和两个新的_名称。检查您的代码以验证两个旧名称之间是否有空格。还要检查循环中出现错误的步骤。它是在第一个循环,一个中间循环中吗?这将帮助您确定特定变量名是否有问题。如果需要进一步帮助,您可以发布一个链接(使用一些云服务)到数据库的简化版本(例如,所有变量的前15个观察值)。
clear all
set more off
* Do not mix with previous trials
capture erase "/home/roberto/results.dta"
* Load data
sysuse sp500
tsset date
* Set fixed independent variable
local var open
foreach depvar of varlist high low close volume {
rolling _b, window(30) saving(temp, replace): regress `depvar' `var'
use "/home/roberto/temp.dta", clear
rename (_b_`var' _b_cons) (b_`depvar' b_cons_`depvar')
capture noisily merge 1:1 start end using "/home/roberto/results.dta", assert(match)
capture noisily drop _merge
save "/home/roberto/results.dta", replace
sysuse sp500, clear
tsset date
}
* Delete auxiliary file
capture erase "/home/roberto/temp.dta"
* Check results
use "/home/roberto/results.dta"
browse
clear all
set more off
webuse lutkepohl2
tsset qtr
rolling _b, window(30) saving(results, every(5) replace): regress dln_inv dln_inc dln_consump