AR、MA、ARMA和ARIMA模型------时间序列预测

article/2025/9/23 7:29:17

ARMA模型的全称是自回归移动平均模型,它是目前最常用的拟合平稳序列的模型。它又可以细分为AR模型、MA模型和ARMA三大类。都可以看做是多元线性回归模型。

AR模型

具有如下结构的模型称为p阶自回归模型,简记为AR(p)

                                                           x_t=\phi _0+\phi _1x_{t-1}+\phi _2x_{t-1}+...+\phi _px_{t-p}+\varepsilon _t

即在t时刻的随机变量X_t的取值x_t是前px_{t-1},x_{t-1},..,x_{t-p}的多元线性回归,认为x_t主要是受过去p期的序列值的影响。误差项是当期的随机干扰\varepsilon _t,为零均值白噪声序列,

平稳AR模型的性质如下所示:

1)均值

对满足平稳性条件的AR(p)模型的方程,两遍取期望,得:

已知E(x_t)=\mu ,E(\varepsilon _t)=0,所以:\mu =\phi _0+\phi _1\mu +\phi _2\mu +...+\phi _p\mu,解得:

注意:因为之前已经定义了平稳性序列的均值为常数,所以E(x_t)=E(x_{t-1})=...=E(x_{t-p})

2)方差

平稳AR(p)模型的方差有界,等于常数。

3)自相关系数(ACF)

平稳AR(p)模型的自相关系数\rho _k=\rho (t,t-k)=\frac{cov(X_t,X_{t-k})}{\sigma _t\sigma _{t-k}}呈指数的速度衰减,始终有非零取值,不会在k大于某个常数之后就恒等于零,这个性质就是平稳AR(p)模型的自相关系数\rho _k具有拖尾性。

4)偏自相关系数(PACF)

对于一个平稳AR(p)模型,求出延迟k期自相关系数\rho _k时,实际上得到的并不是X_tX_{t-k}之间单纯的相关关系,因为X_t同时还会受到中间k-1个随机变量X_{t-1},X_{t-2},...,X_{t-k}的影响,所以自相关系数\rho _k里面实际上掺杂了其他变量对X_tX_{t-k}的相关影响,为了单纯的预测X_{t-k}X_t的影响,引进偏自相关系数的概念。

MA模型

具有如下结构的模型称为q阶自回归模型,简记为MA(q)

                                                                                x_t=\mu +\varepsilon _t-\theta _1\varepsilon _{t-1}-\theta _2\varepsilon _{t-2}-...-\theta _q\varepsilon _{t-q}

即在t时刻的随机变量X_t的取值x_t是前q期的随机扰动\varepsilon _{t-1},\varepsilon _{t-2},...,\varepsilon _{t-q}的多元线性函数,误差项是当期的随机干扰\varepsilon _t,为零均值白噪声序列,\mu是序列\{X_t\}的均值。认为x_t主要是受过去q期的误差项的影响。

平稳MA(q)模型的性质如下:

ARMA模型 

具有如下结构的模型称为自回归移动平均模型,简记为ARMA(p,q)

                           x_t=\phi _0+\phi _1x_{t-1}+\phi _2x_{t-1}+...+\phi _px_{t-p}+\varepsilon _t-\theta _1\varepsilon _{t-1}-\theta _2\varepsilon _{t-2}-...-\theta _q\varepsilon _{t-q}

即在t时刻的随机变量X_t的取值x_tpx_{t-1},x_{t-1},..,x_{t-p}和前q期的随机扰动\varepsilon _{t-1},\varepsilon _{t-2},...,\varepsilon _{t-q}的多元线性函数,误差项是当前的随机干扰\varepsilon _t,为零均值白噪声序列。认为x_t主要是受过去p期的序列值和过去q期的误差项的共同影响。

特别的,当q=0时,是AR(p)模型;当p=0时,是MA(q)模型。

平稳ARMA(p,q)的性质

平稳时间序列建模 

某个时间序列经过预处理,被判定为平稳非白噪声序列,就可以利用ARMA模型进行建模,计算出平稳非白噪声序列\{X_t\}的自相关系数和偏自相关系数,再由AR(p)模型、MA(q)模型和ARMA(p,q)的自相关系数和偏自相关系数的性质,选择合适的模型。建模步骤如下:

 

非平稳性时间序列分析 

实际上,在自然界中绝大部分序列都是非平稳的,因而对非平稳序列的分析更为普遍、更为重要,创造出来的分析方法也更多。

对非平稳时间序列的分析方法可以分为确定性因素分解的时序分析和随机时序分析两大类。

确定性因素分解的方法把所有序列的变化都归结为4个因素(长期趋势、季节变动、循环变动和随机波动)的综合影响,其中长期趋势和季节变动的规律性信息通常比较容易提取,而由随机因素导致的波动则非常难确定和分析,对随机信息浪费严重,会导致模型拟合精度不够理想。

随机时序分析法的发展就是为了弥补确定性因素分解方法的不足。根据时间序列的不同特点,随机时序可以建立的模型有ARIMA模型、残差自回归模型、季节模型、异方法模型等。这里主要介绍ARIMA模型。

1. 差分运算

(1) p阶差分

相距一期的两个序列值之间的减法运算称为1阶差分运算

(2) k步差分

相距k期的两个序列值之间的减法运算称为k步差分运算

2. ARIMA模型

差分运算具有强大的确定性信息提取能力,许多非平稳序列差分后会显示出平稳序列的性质,这时称这个非平稳序列为差分平稳序列。对差分平稳序列可以使用ARMA模型进行拟合。ARIMA模型的实质就是差分运算与ARMA模型的组合。以下为建模步骤:

示例 

对某餐厅2015/1/1~2015/2/6某餐厅的销售数据进行建模。

1)检验序列的平稳性

明显可以看到在第一幅时序图中该序列有明显的单调递增趋势,可以判断为使非平稳序列,第二幅自相关图中显示自相关系数长期大于零,说明序列间具有很强的长期相关性;在第三幅图中是单位根检验表,其中p值显著大于0.05,最终判断该序列为非平稳序列(非平稳序列一定不是白噪声序列)。

2)对原始序列进行一阶差分,并进行平稳性和白噪声检验

首先差分之后对其进行平稳性检验,过程同上

 

 

经过一阶差分之后的序列的时序图在均值附近比较平稳的波动、自相关图有很强的短期相关性、单位根检验p值小于0.05,所以一阶差分之后的序列是平稳序列。

接下来对一阶差分后的序列做白噪声检验:

输出的p值远小于0.05,所以一阶差分之后的序列是平稳的非白噪声序列。

3)对一阶差分之后的平稳非白噪声序列拟合ARMA模型,就是确定p值和q值。

第一种方法:认为识别的方法 

一阶差分后自相关图显示出1阶截尾,所以可以考虑用MA(1)模拟一阶差分后的序列,即对原始序列建立ARIMA(0,1,1)模型。

第二种方法:相对最优模型识别

计算ARMA(p,q)。当p和q均小于等于3的所有组合的BIC信息量,取其中BIC信息量达到最小的模型阶数。 

ARIMA模型实现代码:

def programmer_6():"""警告解释:# UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure"matplotlib is currently using a non-GUI backend, "调用了多次plt.show()解决方案,使用plt.subplot()# RuntimeWarning: overflow encountered in exp运算精度不够forecastnum-->预测天数plot_acf().show()-->自相关图plot_pacf().show()-->偏自相关图"""discfile = 'data/arima_data.xls'forecastnum = 5data = pd.read_excel(discfile, index_col=0)fig = plt.figure(figsize=(8, 6))# 第一幅自相关图ax1 = plt.subplot(411)fig = plot_acf(data, ax=ax1)# 平稳性检测print(u'原始序列的ADF检验结果为:', ADF(data[u'销量']))# 返回值依次为adf、pvalue、usedlag、nobs、critical values、icbest、regresults、resstore# 差分后的结果D_data = data.diff().dropna()D_data.columns = [u'销量差分']# 时序图D_data.plot()plt.show()# 第二幅自相关图fig = plt.figure(figsize=(8, 6))ax2 = plt.subplot(412)fig = plot_acf(D_data, ax=ax2)# 偏自相关图ax3 = plt.subplot(414)fig = plot_pacf(D_data, ax=ax3)plt.show()fig.clf()print(u'差分序列的ADF检验结果为:', ADF(D_data[u'销量差分']))  # 平稳性检测# 白噪声检验print(u'差分序列的白噪声检验结果为:', acorr_ljungbox(D_data, lags=1))  # 返回统计量和p值data[u'销量'] = data[u'销量'].astype(float)# 定阶pmax = int(len(D_data) / 10)  # 一般阶数不超过length/10qmax = int(len(D_data) / 10)  # 一般阶数不超过length/10bic_matrix = []  # bic矩阵data.dropna(inplace=True)# 存在部分报错,所以用try来跳过报错;存在warning,暂未解决使用warnings跳过import warningswarnings.filterwarnings('error')for p in range(pmax + 1):tmp = []for q in range(qmax + 1):try:tmp.append(ARIMA(data, (p, 1, q)).fit().bic)except:tmp.append(None)bic_matrix.append(tmp)# 从中可以找出最小值bic_matrix = pd.DataFrame(bic_matrix)# 用stack展平,然后用idxmin找出最小值位置。p, q = bic_matrix.stack().astype(float).idxmin()print(u'BIC最小的p值和q值为:%s、%s' % (p, q))#print("data",data)X = data.valuesprint(X)history = [x for x in X]model = ARIMA(history, order=(0, 1, 1)).fit()  # 建立ARIMA(0, 1, 1)模型model.summary2()  # 给出一份模型报告print("5天的预测",model.forecast(forecastnum)) # 作为期5天的预测,返回预测结果、标准误差、置信区间。
if __name__ == "__main__":   programmer_6()

 数据可到链接: https://pan.baidu.com/s/1ap0ZuXyVRNls3GFGD6Xo8A 提取码: 7pe9下载

参考书目《Python数据分析与挖掘实战》


http://chatgpt.dhexx.cn/article/SAFacTGX.shtml

相关文章

ARIMA模型(一)定义与介绍

了解ARIMA模型,就需要先了解数据的一个平稳性。 1. 平稳性: 平稳性就是要求经由样本时间序列所得到的拟合曲线,在未来的一段时间内仍能顺着现有状态“惯性”地延续下去;平稳性要求序列的均值和方差不发生明显变化; 方差越大,数据波动越大,方差计算公式如下式所示…

ARIMA模型原理及实现

https://www.jianshu.com/p/305c4961ee06 1、数据介绍 再介绍本篇的内容之前,我们先来看一下本文用到的数据。本文用到的中国银行股票数据下载:http://pan.baidu.com/s/1gfxRFbH,提取码d3id。 我们先来导入一下我们的数据,顺便…

时间序列预测,非季节性ARIMA及季节性SARIMA

Python 3中使用ARIMA进行时间序列预测的指南 在本教程中,我们将提供可靠的时间序列预测。我们将首先介绍和讨论自相关,平稳性和季节性的概念,并继续应用最常用的时间序列预测方法之一,称为ARIMA。 介绍 时间序列提供了预测未来价…

时间序列(四)ARIMA模型与差分

ARIMA模型 平稳性: 平稳性就是要求经由样本时间序列所得到的拟合曲线 在未来的一段期间内仍能顺着现有的形态“惯性”地延续下去 平稳性要求序列的均值和方差不发生明显变化 严平稳与弱平稳: 严平稳:严平稳表示的分布不随时间的改变而改…

数学建模之时间序列预测(ARIMA)

Auto-TS 自动化时间序列预测 1、Auto-TS介绍 Auto-TS 是 AutoML 的一部分,它将自动化机器学习管道的一些组件。这自动化库有助于非专家训练基本的机器学习模型。 是一个开源 Python 库,主要用于自动化时间序列预测。它将使用一行代码自动训练多个时间…

【时间序列预测-ARIMA模型】

转载 https://blog.csdn.net/qq_35495233/article/details/83514126 参考【概念】https://blog.csdn.net/TU_JCN/article/details/88130820 【实战】https://www.cnblogs.com/54hys/p/10127055.html 另外,重点参考https://www.jianshu.com/p/4130bac8ebec 了解ARIMA…

ARIMA的参数与数学形式

什么是 ARIMA模型 ARIMA模型的全称叫做自回归移动平均模型,全称是(ARIMA, Autoregressive Integrated Moving Average Model)。也记作ARIMA(p,d,q),是统计模型(statistic model)中最常见的一种用来进行时间序列 预测的模型。 1. ARIMA的优缺点 优点&a…

ARIMA模型

时间序列分析分为两大类:频域分析和时域分析。频域分析也称为谱分析,是一种非常有用的纵向数据分析方法。时域分析主要关心从序列值之间的相关关系对时间序列发展规律。 在时域分析里,生成时间序列数据的随机过程按照统计规律的特征是否随着时…

Arima相关概念

https://www.cnblogs.com/bradleon/p/6832867.html https://www.cnblogs.com/bradleon/p/6827109.html 平稳性:就是要求经由样本时间序列所得到的拟合曲线在未来的一段期间内仍能顺着现有的形态“惯性”地延续下去。平稳性要求序列的均值和方差不发生明显变化 严平…

2019年最新手游脚本开发教程

2019年最新手游脚本开发教程 链接:https://pan.baidu.com/s/1JqZBWhXes4-kUKEgAFHpcQ 提取码:xp0f 复制这段内容后打开百度网盘手机App,操作更方便哦

html游戏脚本,网页游戏脚本软件道

----3.增加多媒体特性 Command对象 Command对象的主要目的是执行参数化的存储过程 JAR will be empty - no content was marked for inclusion! 例子: Col1=CustomerNumberTextWidth10 Col2=CustomerNameTextWidth30 该例给出了方…

前端搭建打字通游戏(内附源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ 打字通功能介绍✨ 页面搭建✨ 样式代码✨ 功能实现 ✨ 写在前面 上周我们实通过前端基础实现了名言生成器,当然很多伙伴再评论区提出了想法,后续我们会考虑实现的,今天还是继续按照我们…

Android+按键精灵代码,安卓按键精灵怎么编写脚本 编写脚本教程

按键精灵评分: 大小:23.96MB 语言:简体中文 授权:免费版下载地址 在安卓上使用按键精灵,可以模拟我们抢红包、抢火车票,而且连自动签到也是可以的,只要我们编写好脚本就可以了。那么安卓按键精灵…

手游问道服务器维护到几点,问道手游10月27日更新什么?维护到几点?

问道手游10月27日更新什么内容?问道手游10月27日维护到几点?相信很多玩家想知道吧,接下来就跟随小编一起来看看吧,希望对大家有所帮助。 10月27号更新了什么内容 各位亲爱的道友: 为保证服务器的运行稳定和服务质量&am…

记一次小白的手游脚本破解过程及难题

最近因为一直有玩一个网游,发现一款直接内置进手游lua脚本的辅助。于是来了兴趣,开始研究。 这是那款辅助的安装包, 里面的文件是这样的,妈呀连个后缀都没有我要怎么弄,因为我也是个半懂不懂的小白,于是开始…

问道手游服务器维护,问道手游公测服务器版本更新维护公告

小编给大家带来了问道手游公测服务器版本更新维护公告,想了解更多问道手游攻略,敬请关注18183问道手游专区。 各位亲爱的道友: 为保证服务器的运行稳定和服务质量,《问道》手游所有公测服务器(内测专区除外)将于2017年03月02日04:…

问道手游服务器维护,问道手游停服维护公告

问道手游停服维护公告,问道手游是一款大型Q版MMORPG回合制手游,问道手游将在11月24日上午8点进行一次停服维护,期间将对之前测试时出现的一些问题进行修复,预计维护时间为一个小时,请玩家们注意开服时间。 问道手游海报…

手游自动挂机脚本开发历程

事件起因 国庆节期间,因为工作相对闲暇,自己鬼使神差地下载了一个梦幻西游手游玩了几天,结果一周就这么过去了,一玩起游戏来,那就是白驹过隙啊。节日过后,游戏自然是没时间再玩了,毕竟有一大堆…

问道手游服务器修改密码,问道手游账号安全设置及找回密码教程 玩转问道

问道手游账号安全设置及找回密码教程,小编教你畅玩问道!问道手游是一款非常受大家欢迎的回合制游戏,但是很多小伙伴们还不知道自己的雷霆账号怎么安全设置和找回密码,下面小编给大家带来的就是这方面的教程,希望能够帮助到大家。 运行游戏后在登录界面会显示雷霆游戏的SDK,在登…

《问道》手游职业选择攻略

问道手游道友们!是时候显示你的身手啦,在这激动人心的时刻,新手玩家们心中是不是在犹豫选择哪个职业比较好呢?就让迷糊给大家带来有关新手职业选择的推荐吧,希望能够帮大家!《问道》手游新人职业选择攻略 金职业 外形炫酷,一身正义,也是众…