之前是一直在用 Eviews 做 X-12 的季节调整,但是调整选项和 Stata 的相比确实有点少了,影响精度。
另外,做 BigData 的模型动则 几千个 个体不可能一个个在 Eviews 里手动调整,有人提到过用 Eviews 命令行批量执行,但是控制选项又很困难(我也没试过,命令行能不能跑起来也是个问题),总的来说用 Stata 季节调整是最优的。
二、问题:
用 Stata 最大的问题就是不好批量做季节调整,于是踩了一些坑,思考了一套最快的批量调整方案。
1. 在调整前你需要具备 Stata 季节调整程序,可以在这里下:
https://bbs.pinggu.org/thread-2625052-1-1.html
2. 下完之后只需要把 x12a 文件夹里的 x12a.exe 放到你的 Stata 的 plus 目录就可以,下面介绍如何找 plus 目录:
(1)在 Stata 里执行 sysdir ,就会显示你的 PLUS 目录
(2)直接把 x12a.exe 放到 plus 目录下即可
P.S. 感谢 niuniuyiwan 提供本步教程参考,原帖子:
https://bbs.pinggu.org/thread-3742755-1-1.html
3. 安装季节调整包,命令:
- findit sax12
三、解决方案
注:假如你只需要调整几个变量,不需要查看本教程,直接输入命令 db sax12 调整即可,可以参考 Lee_iris 这套不错的设定方案:
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=6945402
1. 先把大量数据导进 Stata ,我们这里假设的是 多变量 、 面板数据 ,注意变量名字统一用英文,中文 x12a.exe 不识别,建议使用 var01 这种形式的命名,为后续操作提供便利。
2. 生成时间序列,确定时间区间。在 Stata 执行以下代码:
- gen t=tm(2009m1)+_n-1
- tsset t, monthly
(1)其中 tm() 函数要根据你的时间形式来选取,如果是 2009m1 也就是只有到月度的数据(最常用的),使用 tm() 函数即可,如果是精确到 日 ,请自行百度找到相应函数替换。
(2)其中 tm() 函数内是数据的起始时间,这里是假定为了 2009m1 开始,可以自行替换自己的起始时间,注意 tsset 之后根据显示的确认一下你的时间区间是否正确。
3. Python 批量拼接生成执行代码,举例:
- sax12 var01, satype(single) inpref(z1.spc) outpref(z1) transfunc(none) regpre( const td ) ammaxlag(2 1) ammaxdiff(2 1) ammaxlead(12) x11mode(add) x11seas(x11default)
(1)有三个需要拼接的地方,第一个是变量 var01,第二个是 .spc 文件,我们这里假定为了 z+序号 形式的,为了给后续操作提供便利,建议使用相同格式,第三个是输出前缀,这里同样使用 z+序号 的前缀格式。
(2)设定参数生成语句。
- # 需要自己修改的只有 n 参数:面板个体数 + 1
P.S.
如果你不熟悉 Python ,可以参考格式自行用熟悉的语言拼接生成。另外如果你只有 几十个个体 ,文件里还提供了生成好的 几十个 命令行,无需进行这一步。
4. 将批量生成的代码在 Stata 里跑完,执行过程会不断有 控制台 窗口弹出,不要点击,否则会导致暂停。另外,还会自动打开 季节调整报告 ,无需理会,最后一并关掉即可。
注:如果报错,说明你的 季节调整程序 即 x12a.exe 没有放对位置,或者 sax12 库没有安装,亦或是空格出错,单词中断了,自行检查,可以先跑一条试试看。
5. 跑完之后打开你的 Stata 安装根目录,下面会有一大堆 z+序号 格式的文件,全部复制备份起来,如果你想了解每一个文件的内容并做 X-12 季节调整 分析和预测,请打开以 .out 为结尾的文件查看 季节调整报告。
之后把本帖尾下载文件内的 Python 程序 SeasonalAdjustmentDataExtraction.py 放到该目录,用 Python 编辑器或者记事本修改其中两个参数,代码较长就不展示了,里面自带备注。
6. 执行完毕提供的 .py 脚本之后,自动清理冗余的 z+序号 文件,同时生成 SeasonalAdjustmentDataExtraction.csv 汇总表格,点开即为 季节调整 后的 面板数据 结果,横向为时间期数,纵向为按 var01 即 Stata 命名顺序排列的个体。
四、其他
本流程需要的两个文件以及包含在 下载文件 中,有很多人可能不会用 Python ,也没有关系,下载一个 Python 安装包安装之后,就可以直接双击执行提供的脚本文件了,编辑时使用记事本或 Python 编辑器均可。
虽然流程有点小复杂,但是都有相应的机械化方案,还是比较快的,不过,Eviews 有最新的 X-13 解决方案,不过其 自动化 还是问题。
五、下载文件