好像SAS R软件也可做rolling regression,但是可能要编程。本人,发现stata的窗口就可以做哦,所以只用输入一些关键要求,鼠标点击几次就OK啦!以下是步骤详解:
1 导入数据。我用的是时间序列,所以除了那些变量的时间序列数据外,还设定了一个“date”变量,里面是日期数据。但是stata对日期数据的格式有自己的要求,大家要自己改好哦!参考以下的小程序
gen stardate=date(date,"DMY")
format %td stardate
这个程序就是把变量“date”的日期格式改成stata所要求的格式,并且变量名换成“stardate”。值得注意的是,rolling要求的时间序列数据必须是连续的。本人用的汇率数据,周末和节假日是没有数据的。如果“stardate”变量中的日期是不连续的(比如只有交易日),又把window设置为130(也就是希望一次rolling用130个交易日的数据,时间跨度大概半年),那么实际上stata做出的一次rolling的number of observation只有90左右。因为rolling 做的确实是130个calendar date数据的回归,但由于没有非交易日的数据,stata可能默认非交易日的数据为空,所以只有90个样本容量。这也与130个calendar date中只有90个trade date的事实相符。那么,对于这个问题要怎么半呢?本人菜嘛,干脆一菜到底,就自己想了个本办法:就当那些时间序列数据是连续的,重新编一次连续的calendar date的日期,用作“stardate”里面的日期数据。但那些汇率数据究竟对应哪一天,本人还是清楚的(excel里面有原始数据)。也就是说,本来我的汇率数据是到今年3月为止的,但日期重新编过后,最后一个汇率数据对应的日期是2009的某一天。但这么做只是为了做rolling 方便,并不影响最终的结果,毕竟数据没变啊,而且window是固定的130。
2 做rolling之前一定要确定数据是时间序列数据,输入程序 “tsset stardate”即可。这样stata就知道变量“stardate”是时间序列了。
3 打开stata工具栏—Statistics—Time Series—Rolling-window and recursive estimation,这样就跳出了一个窗口。本人做的是最简单的rolling regression,所以窗口的操作也是很多功能没有用上哦。具体来看,
“main”窗口中的“Stata command to run”手动输入“reg 因变量 自变量”;“List of statistics”中“Model coefficients”和“SE of model coefficients”前的两个复选框都选上,这样每次回归就会输出系数和系数的标准误。“Other statististical expressions”中我没有输入任何东东。接下来是window啦,大家填一个阿拉伯数字就好。再接下来的“Recursive analysis”大家根据自己需要选。
“if/in”、“Weights”、“Advanced”窗口我没有输入任何东东,也就是这些通通都是省缺值。
“Options”窗口中我有选“save results to file”,自己新建一个文件,用来保存每次回归的系数和系数的标准误。"step size"默认是1,大家也可以根据自己情况更改。
“Reporting”窗口中我选的是“Display any output from command”
操作完这些后,我点击了“OK”,然后最先出现的是对整个样本的一次回归,不是以windows值为样本容量的回归哦。再然后点击“more”就会出现每一次回归的结果,这次是以windows值为样本容量的回归哦。也可以点击工具栏下方的图标Data Editor,所有的每次回归的系数和系数的标准误就会保存到之前新建的那个文件里啦。接着我把每次回归的系数和系数的标准误搬到excel里面,两者除一下就是t值哦,所以t值是可以自己算得,以此判断显著不显著。最后,我要把每次回归的系数值的变化轨迹画一个图,也是在excel里面操作,纵坐标是每次回归的系数,横坐标就是系数所对应的日期,这个日期不是导入到stata里面的日期,而是汇率数据所对应的真实日期,因为导入到stata里面的日期是连续的。当然每一个系数其实对应一段时间,所以横坐标我其实是设定每次回归的起始日。
啰啰嗦嗦说了这么多,大家轻拍吧,这样做也许很麻烦,但希望给不会编程又想用简单rolling regression的各位一点帮助!