Stata'rolling'命令:保存变量而不是.dta文件

时间:2014-02-03 20:16:41

标签: stata

我在foreach循环中使用rolling命令:

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  |    ##     |  ##

(PS:第二个问题:是否有快捷方式表示varlist =数据集中的所有变量?)

1 个答案:

答案 0 :(得分:2)

我误读了你的帖子,我的初步答案没有给出你要求的内容。这是一种方式。不优雅也不高效,但它有效(只需更改目录名称):

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

也许可以使用postfile或结合结果向量并使用svmat转换为数据集来提出其他解决方案。我不确定。

原始回答

saving()选项与replace一起使用,并仅提供一个文件名(删除宏后缀):

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