进行时间序列的数据分析时,季节因素调整与hp滤波是进行数据处理与准备工作的常见必要环节。本文简要梳理季节调整与hp滤波的应用场景,以及在Python中的实现方法。

1. 季节调整方法

季节调整的目的是剔除季节因素的影响,使得数据平滑。进行季节调整的目的其一是使得不同季节的数据具有可比性,其二是使得一般的时间序列模型能够适用于数据,例如我们观察到近期燃油价格上涨,想通过ARMA模型验证其趋势性,但燃油上涨的时间窗口在冬季,所以要通过季节调整方法剔除掉季节作用,余下的价格上涨才有验证的意义。

常用的季节调整方法包括:(1)求同比;(2)census X12/X13季节调整;(3)平滑分离方法。

1.1 求同比

Python中求同比非常简单,例如对于月度时间序列数据M2:

dM2 = M2.pct_change(12)

即可求出同比。

如果是季度数据,将函数参数换为4即可。而对于中国的某些数据,例如社会零售、固定资产投资等,其1月或2月的数据是没有的,按照周期长度相应调整参数即可。

求同比方法最为广泛使用,但不适用于带有零值或负值的数据。

1.2 census X12/X13季节调整

这里的“census”是指美国统计局(United States Census Bureau),所以美国的各种统计数据都是通过这套方法进行季节调整的。这套方法在学术界得到了广泛的使用。

方法的具体计算步骤,可参考官方网站(X-13ARIMA-SEATS Seasonal Adjustment Program),这里只简单给出一个使用案例:

from fredapi import Fred

fred = Fred(api_key='XXXXXX')

import statsmodels.api as sm

M2NS = fred.get_series('M2NS')

M2SL = fred.get_series('M2SL')

X13PATH = 'C:\\WinX13\\x13as\\x13as.exe'

bunch = sm.tsa.x13_arima_analysis(M2NS,x12path = X13PATH)

bunch.seasadj

为了使用程序,需先在美国统计局网站上下载二进制程序到电脑,通过指定程序路径的方法在python中调用。在R语言中也要这样麻烦。

案例程序中从FRED网站下载了美国M2的月度数据,其中M2NS是未进行季节调整的数据,M2SL是季节调整后的数据。

但将bunch.seasadj的调整结果和M2SL进行比较,发现略有差异,这或许是其中使用的某些参数不一致所致。

1.3 平滑分离方法

Python的Statsmodels模块中提供了一种应用简单的季节调整方法——seasonal_decompose。

from fredapi import Fred

fred = Fred(api_key='XXXXXX')

import statsmodels.api as sm

M2NS = fred.get_series('M2NS')

M2SL = fred.get_series('M2SL')

m2sd = sm.tsa.seasonal_decompose(M2NS,model='addictive', extrapolate_trend='freq')

m2sd.trend

m2sd.seasonal

m2sd.resid

这样,M2NS就被分为了trend、seasonal和resid三个部分。如果模型选择了'multiplicative'的话,三个部分为相乘关系。

使用该函数需要注意的是,'extrapolate_trend'参数如果不指定,分解结果中得不到trend和resid值。

和M2SL比较一下会发现,这一方法得到的结果确实比census X12/X13方法差一些。

2. hp滤波

做宏观经济研究的应该都比较熟悉hp滤波了。该方法由Hodrick and Prescott(1997)提出,因为作者的原因被简称hp滤波。

from fredapi import Fred

fred = Fred(api_key='XXXXXX')

import statsmodels.api as sm

M2SL = fred.get_series('M2SL')

cycle, trend = sm.tsa.filters.hpfilter(M2SL, lamb=129600)

其中cycle和trend就分别是hp滤波得到的周期项和趋势项。根据Ravn and Uhlig(2002)的建议,对于年度数据lambda参数取值6.25(1600/4^4),对于季度数据取值1600,对于月度数据取值129600(1600*3^4)。

虽然hp滤波得到的趋势项一定程度上也剔除了季节因素,但个人习惯还是不要将hp滤波作为季节调整的方法。该滤波方法的主要应用还是在于提取经济周期(外生冲击)。笔者在处理经济数据时常在季节调整后再用hp滤波计算经济指标“超预期”的部分。

References

[1] Hodrick, R. J., & Prescott, E. C. (1997). Postwar US business cycles: an empirical investigation. Journal of Money, credit, and Banking, 1-16.

[2] Ravn, M. O., & Uhlig, H. (2002). On adjusting the Hodrick-Prescott filter for the frequency of observations. Review of economics and statistics, 84(2), 371-376.

python 计量做hp滤波_[方法]季节调整与hp滤波方法相关推荐

  1. x12arima季节调整方法_[方法]季节调整与hp滤波方法

    进行时间序列的数据分析时,季节因素调整与hp滤波是进行数据处理与准备工作的常见必要环节.本文简要梳理季节调整与hp滤波的应用场景,以及在Python中的实现方法. 1. 季节调整方法 季节调整的目的是 ...

  2. x12arima季节调整方法_《时间序列X-12-ARIMA季节调整:原理与方法》

    对时间序列进行季节调整是经济分析的基础性工作.人民银行组织力量对季节调整基本方法进行了研究,结合调整中国特有的移动假日--春节的需要,提出了不同的处理模型,对各国较为通用的季节调整软件X-12-ARI ...

  3. python 计量做hp滤波_R语言提取时间序列的周期性成分应用EMD,小波滤波器,Baxter过滤器等...

    原文链接:http://tecdat.cn/?p=5399 介绍 对商业周期的分析需要提取时间序列的周期性成分,该时间序列通常也受到诸如潜在趋势或噪声等其他因素的影响.本文介绍了一些在最近的文献中用于 ...

  4. python能做财务分析吗_您可以使用Python进行财务规划和分析吗?

    python能做财务分析吗 问题 (The Problem) If you work in the Financial Planning and Analysis area, chances are ...

  5. python能做些什么事_一起来看看Python能干什么?使用Python能做哪些事

    原标题:Python能干什么?使用Python能做哪些事情? 先来看看Python的定义: Python是一种动态的.面向对象的脚本语言,尤其近几年Python在TIOBE上的排名直线上升,那么Pyt ...

  6. python怎么做彩票概率_小白学数据小抄放送 Python,R,大数据,机器学习

    原标题:小白学数据小抄放送 Python,R,大数据,机器学习 大数据文摘作品,转载要求见文末 作者 | Elaine,田桂英,Aileen 导读:前段时间小白学数据专栏出了一期Python小抄表,后 ...

  7. python可以做特效吗_学习mel语言,Python,JavaScript到什么程度才能做一下大型特效,要自已开发插件脚本呢?...

    感谢邀请.首先自己要在某一方面要擅长,认准一个定位. 比如android是钥匙做前端应用软件的,python可以做爬虫及其人工智能,js做全段网页,java主要是做后端的 1.我们程序员对于开发软件来 ...

  8. python迅雷下载任务出错_迅雷下载“任务出错”最新解决方法

    近期,很多用户发现迅雷针对许多资源进行下载通道封锁了,原来通过迅雷可以正常进行下载的图文资料.音视频.游戏或是软件,现在再次进行下载都出现了"任务错误"(部分迅雷版本提示" ...

  9. python 计量做hp滤波_关于HP滤波法 怎么取得趋势成分和波动成分

    MATLAB中有hpfilter函数(或者在MATLAB的帮助文档内搜索Hodrick) Syntax hpfilter(S) hpfilter(S,smoothing) T = hpfilter(. ...

最新文章

  1. 算法竞赛入门第二版解题报告
  2. Java线程详解(17)-原子量
  3. Oracle学习计划
  4. arduino 超声波测距原理_超声波测距灯
  5. Rinne Loves Edges
  6. php tp 模板assign,thinkphp中怎么让assign在另一个模板里使用呢?
  7. delphi开发LINUX程序,DELPHI开发LINUX包
  8. IDEA 2021.3 重磅发布!远程开发 (Beta) 、机器学习、故障自检、体验优化......
  9. Laravel 模型事件的应用
  10. python 正则表达式匹配数字或者小数点_Python 正则表达式 匹配小数
  11. Atitit.注解and属性解析(2)---------语法分析 生成AST attilax总结 java .net
  12. lightroom classic破解版
  13. 修改dhcp服务器租期,修改dhcp租期命令是expire day?
  14. 系统分区减小_每日一练,防排烟系统,6.1
  15. pg_squeeze安装及简单使用
  16. 如何使用 DDD 指导微服务拆分?
  17. 贝塞尔Bezier曲线的使用
  18. cadence xbl封装转AD
  19. Java基础--I/O流知识总结
  20. Mysql的DDL DML DQL DCL

热门文章

  1. php spl 扩展,PHP SPL扩展库简单使用
  2. 【前端】语义化标签详解
  3. 全志V3S嵌入式驱动开发(系统image创建和烧入)
  4. 人工神经网络算法的应用,人工神经网络算法步骤
  5. python3输出不换行_python3不换行输出
  6. [转载]打工辛酸路:我是一朵飘零的花之16
  7. excel怎么设置自动计算_项目工程成本怎么算?超全Excel自动计算表格,可直接套定额...
  8. Android 11.0 添加关机铃声功能实现
  9. 900+门店,直逼海底捞,竟撑不起一个大品牌
  10. 朱江明坚持以客户为本,不断推出新车型