Stata&x27;滚动';命令:保存变量而不是.dta文件

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向量保存为一个变量。 我希望得到的最终结果是一个数据集,其中包含时间变量和每个滚动

我正在foreach循环中使用滚动命令:

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