使用ARIMA和Python建立时间序列模型及其问题

继专栏上期介绍使用N阶差分项假设检验和Python识别时间序列形态,本期介绍使用ARIMA(整合差分移动自回归模型)和Python建立时间序列模型的方法,以及该方法在批量时间序列建模过程中会遇到的问题。

对于时间序列建模工作而言,一个关键的难题在于,影响时间序列的外界因素可能是繁杂而多变的,而在某些情况下,时间序列数据的时间间隔又是十分稀疏的。比如上市公司的季度营业收入数据,其繁杂的影响因素可能在一个或有限数个季度内发生了明显的变化,但是收集到的季度数据样本量却不足以可信地描述这些因素对上市公司季度收入的影响。即使采集到多个同类的时间序列数据也无法解决这样的问题,因为即使是同类的时间序列,仍然面临着影响因素各种微妙的不同。再者,影响因素本身往往也是处于动态变化之中的时间序列数据。

在此情况下,利用不健全的影响因素体系进行时间序列预测建模,经常不见得比利用时间序列自身数据进行预测建模有优势,而且前者数据采集难度要比后者要大,主观性缺陷也比后者要大。因此,在因果关系并没有明确线索的情况下,使用时间序列自身数据进行预测建模是一种相对可行高效的选择。

ARIMA是使用较普遍的利用时间序列自身数据进行预测建模的方法,常用的统计软件R、SPSS、Eviews都可以很方便地构建ARIMA模型。此篇不赘述ARIMA原理。接着,为了更高效地进行大量时间序列的自动化建模工作,以及更方便对接其他实验程序,本篇文章使用Python进行ARIMA建模编码。

Python的ARIMA建模代码实现可以直接使用statsmodel库,但是其功能不及R成熟健全,实践过程中踩到的坑也比较多;所以一开始不怕麻烦的话,建议还是安装部署R软件,再用pip安装rpy2,后续建模使用rpy2调用R即可。调用R进行ARIMA建模还有个好处在于,可以直接使用R软件forecast库的auto.arima函数,Box-Cox变换\lambda参数识别、平稳差分d阶确定、AIC最小的自回归p阶和滞后q阶确定、ARIMA模型估计一气呵成;但是缺点在于计算消耗大、运行速度慢。在一般实验性的数据建模工作可以尝试使用auto.arima,在需要进行大规模计算的生产环境中还是要自行编写算法进行优化。

以下是按往期介绍方法进行标准化处理的沪深四千余上市公司的营业收入历史每股数据(复权)作为示例,使用python调用R软件forecast库的auto.arima进行批量时间序列实验建模。附上代码:

 

# Author: YE KAIWEN
# Copyright (c) 2021 YE KAIWEN. All Rights Reserved.

import numpy as np
import pandas as pd
import pickle
import matplotlib.pylab as plt
import rpy2.robjects as robjects
robjects.r('library(forecast)')
#定义R时序对象的调用设置
robjects.r('''
       
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值