基于Prophet的CPI指数预测
2018-09-21刘权明
刘权明
[摘 要] CPI是居民消费价格指数(Consumer Price Index)的简称。居民消费价格指数,是一个反映居民家庭一般所购买的消费品和服务项目价格水平变动情况的宏观经济指标,其预测也一直是时间序列领域的热点和难点。本文在基于Facebook开源时间序列预测框架Prophet之上,拟合了最近六年中国国民经济的居民消费价格指数。在此基础上,对实验研究成果及模型预测模式进行分析和评价。
[关键词] CPI; Prophet;居民消费价格指数;时间序列预测
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2018. 13. 055
[中图分类号] F726 [文献标识码] A [文章编号] 1673 - 0194(2018)13- 0122- 02
0 引 言
消费者物价指数(Consumer Price Index,CPI)亦称居民消费价格指数,在经济学上,它反映了与居民生活有关的产品及劳务价格。作为物价变动指标,其有当月数据,同比增长数据,环比增长数据和累计数据四种表达形式。CPI是衡量通货膨胀的主要指标之一,就同比增长形式而言,一般定义为超过3%则为通货膨胀,而超过5%就是比较严重的通货膨胀[1],我国当前经济形式平衡,而CPI最近几个月也一直稳定在1.5%-2%之间。CPI往往是市场经济活动与政府货币政策的一个重要参考指标,CPI稳定、就业充分及GDP增长往往是最重要的社会经济目标。而如果CPI过大,则表明通货膨胀已经成为经济不稳定因素,国家会有紧缩货币政策和财政政策的风险,从而造成经济前景不明朗。因此,该指数过高的升幅往往不被市场欢迎。通常可采用的手段有加息、紧缩银根、采取稳健的财政政策、增加生产、平抑物价等[2]。而本文则主要探讨了CPI指数的可行性预测,以期能提供有效的经济参考。
1 关于CPI的研究
CPI是一个每月按时披露的时间序列数据,即其是以恒定的时间间隔收集的数据点的集合。而对它的预测即是对这些数据的历史行为进行分析, 从而以确定长期趋势, 以预测未来或执行某种其他形式的分析。事实上,其预测同常规的线性模型预测不同在于:①时间依赖性。数据与时间是有关联的。因此, 在这种情况下, 观测是独立的线性回归模型的基本假设是不存在的。②随着数据趋势的增加或减少, 大多数时间序列有某种形式的季节性趋势, 即特定时间范围的变化。例如, 煤炭销售的月度数据总是与季节高度相关联的,尤其是冬天的销售量总是高于夏天,而这种趋势与规律往往是有迹可寻的。由于CPI时间序列的固有属性, 因此大量文献也对其及相关领域进行了研究。比如讨论CRB指数和CPI指数之间的价格传导规律研究,利用AR或ARIMA模型对CPI进行预测,或者直接运用最流行的统计软件R中的forecast包进行预测。但传统工具对时间序列预测的难点在于,一是模型本身的预测有效性不足;二是通常需要大量的时间对模型中的参数进行估计。而本文的目的在于利用最新的时间序列预测工具Prophet对CPI进行简易而更加准确的预测。
1.1 研究背景
對变化的时间数据进行准确的预测一直是学术界的难题。因为时间序列数据可以通过许多不同的条件发生戏剧性的变化, 不合理的人类行为会对结果影响很大, 而Facebook开源的Prophet预测算法倾向于建立基于过去数据的模型, 并背后有合理的逻辑。它基本上是一个建立时间序列数据预测模型的库, 而不是使用 ARIMA 等传统的建模方法, 是拟合加法回归模型。Prophet在Stan的概率编程语言中实现了程序的核心部分。正因为如此, Stan非常快速地执行参数的最大后验概率优化, 并且给我们提供了使用哈密顿蒙特卡罗(Hamiltonian Monte Carlo)算法估计参数不确定性的选项, 并允许用户在多个接口语言上使用,比如Python和R。 相比于其他方法,Prophet包括了许多不同的预测技术 (ARIMA, 指数平滑等), 每种方法都有自己的优势、弱点和调谐参数。而选择错误的模型或参数往往会产生糟糕的结果, 即使有经验的分析人员也不太可能选择正确的模型和参数。但是,Prophet的预测却是可定制的方式, 以一种直观的非专家方式进行:平滑的季节性参数, 以调整模型如何密切适应历史周期;平滑参数的趋势, 使您能够调整如何积极跟踪历史趋势变化。而对于增长曲线, 则可以手动指定最大的增长幅度或容量,也可输入数据将如何上升或下降的先验信息。最后Prophet还可以排除特殊日期,如春节、元旦等日期,从而使它更直接地创建一个合理的, 准确的预测。
1.2 研究工具和数据
R是一款轻便而强大的数据分析统计软件,本文选择用R进行数据预测。为方便起见,本文选择了最近六年CPI的当月指数为研究对象。因为CPI是按月披露,所以一共由72个数据组成。
1.3 研究思路
利用Prophet直接拟合72个历史CPI数据,得到最佳的模型。然后产生新的需要预测的数据,最后检验模型在历史数据上的准确率以及对未来六个月(2018年四月到2018年九月)的CPI预测。
2 基于Prophet的模型预测
2.1 模型建立
利用Prophet进行数据分析,可以得到每个月CPI的预测值以及95%的置信区间。需要强调的是,在Prophet中数据的输入总是一个有两列固定了名称的dataframe: ds 和 y。 其中ds列必须包含一个日期或日期时间 (任何一种即可)。y 列必须为数字, 并表示要预测的度量值。本文的具体结果如下图所示,其中实线表示预测值,黑色点表示实际值,而阴影区域则是可能的统计意义下的显著范围。
为了检测该模型的预测效果,本文用平均绝对百分比误差MAPE来定义模型的准确率:Mean(|预测值-实际值|/实际值)。经过计算,本模型的MAPE为0.002 82,即预测值与真实值之间只有2.82%的平均波动误差,由此可见,本文的模型是有效且值得依赖的。
2.2 模型预测
利用Prophet中的predict函数,本文预测了接下来半年我国的居民消费指数,结果如下。
3 结 语
综上所述,在时间序列中Prophet具有强大的预测功能,事实上无论是日数据、周数据或月数据、年数据,在Prophet中都可以得到相应预测,只需调整模型的参数即可。由此可见,Prophet提供了一种有效而简单的时间序列预测方式。最后,从模型的预测来看,接下来我国的CPI指数一直稳定在101.8左右,每个月的CPI有微小增长,但整体波动平稳。
主要参考文献
[1]黄诚宽.谈谈如何衡量通货膨胀[J].商讯(公司金融),1996(4):51-55.
[2] 李娅,朱珊珊.通货膨胀的深层次原因及其中国式治理[J].审计月刊,2011 (1):9-11.
[3]张力元. 基于CRB指数下的价格传导规律研究[J].中国城市经济.2011 (27):51-52
[4]杨志.关于居民消费价格指数的时间序列分析[J]. 经济研究导刊,2013(35):8-10.
[5]东方财富网.居民消费价格指数(CPI)[DB/OL]. http://data.eastmoney.com/cjsj/cpi.html.