时间序列分析之ARIMA模型预测

article/2025/9/23 6:50:15

转载自 http://blog.sina.com.cn/s/blog_70f632090101bnd8.html#cmt_3111974

今天学习ARIMA预测时间序列。

 指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之间相关性没有要求。但是,如果你想使用指数平滑法计算出预测区间, 那么预测误差必须是不相关的, 而且必须是服从零均值、 方差不变的正态分布。即使指数平滑法对时间序列连续数值之间相关性没有要求,在某种情况下, 我们可以通过考虑数据之间的相关性来创建更好的预测模型。自回归移动平均模型( ARIMA) 包含一个确定(explicit) 的统计模型用于处理时间序列的不规则部分,它也允许不规则部分可以自相关。

首先,先确定数据的差分。

ARIMA 模型为平稳时间序列定义的。 因此, 如果你从一个非平稳的时间序列开始, 首先你就需要做时间序列差分直到你得到一个平稳时间序列。如果你必须对时间序列做 d 阶差分才能得到一个平稳序列,那么你就使用ARIMA(p,d,q)模型,其中 d 是差分的阶数。 

我们以每年女人裙子边缘的直径做成的时间序列数据为例。从 1866 年到 1911 年在平均值上是不平稳的。 随着时间增加, 数值变化很大。  

> skirts <- scan("http://robjhyndman.com/tsdldata/roberts/skirts.dat",skip=5)

Read 46 items

> skirtsts<- ts(skirts,start = c(1866))

 

> plot.ts(skirtsts)

R学习日记——时间序列分析之ARIMA模型预测

我们可以通过键入下面的代码来得到时间序列(数据存于“skirtsts”) 的一阶差分, 并画出差分序列的图:

> skirtstsdiff<-diff(skirtsts,differences=1)

 

> plot.ts(skirtstsdiff)

R学习日记——时间序列分析之ARIMA模型预测
从一阶差分的图中可以看出,数据仍是不平稳的。我们继续差分。

> skirtstsdiff2<-diff(skirtsts,differences=2)

> plot.ts(skirtstsdiff2)

R学习日记——时间序列分析之ARIMA模型预测

二次差分(上面)后的时间序列在均值和方差上确实看起来像是平稳的, 随着时间推移, 时间序列的水平和方差大致保持不变。因此, 看起来我们需要对裙子直径进行两次差分以得到平稳序列。

第二步,找到合适的ARIMA模型

 如果你的时间序列是平稳的,或者你通过做 n 次差分转化为一个平稳时间序列, 接下来就是要选择合适的 ARIMA模型,这意味着需要寻找 ARIMA(p,d,q)中合适的 p 值和 q 值。为了得到这些,通常需要检查[平稳时间序列的(自)相关图和偏相关图。 

 我们使用 R 中的“acf()”和“pacf” 函数来分别( 自) 相关图和偏相关图。“acf()”和“pacf 设定“plot=FALSE” 来得到自相关和偏相关的真实值。 

> acf(skirtstsdiff2,lag.max=20)

 

> acf(skirtstsdiff2,lag.max=20,plot=FALSE)

R学习日记——时间序列分析之ARIMA模型预测

Autocorrelations of series ‘skirtstsdiff2’, by lag


     0      1      2      3      4      5      6      7      8     9     10 

 1.000 -0.303  0.096  0.009  0.102 -0.453  0.173 -0.025 -0.039  0.073 -0.094 

    11     12     13     14     15     16     17     18     19     20 

 0.133 -0.089 -0.027 -0.102  0.207 -0.260  0.114  0.101  0.011 -0.090 

自相关图显示滞后1阶自相关值基本没有超过边界值,虽然5阶自相关值超出边界,那么很可能属于偶然出现的,而自相关值在其他上都没有超出显著边界, 而且我们可以期望 1 到 20 之间的会偶尔超出 95%的置信边界。  

> pacf(skirtstsdiff2,lag.max=20)

> pacf(skirtstsdiff2,lag.max=20,plot=FALSE)

R学习日记——时间序列分析之ARIMA模型预测

Partial autocorrelations of series ‘skirtstsdiff2’, by lag


     1      2      3      4      5      6      7      8      9    10     11 

-0.303  0.005  0.043  0.128 -0.439 -0.110  0.073  0.028  0.128 -0.355  0.095 

    12     13     14     15     16     17     18     19     20 

 0.052 -0.094 -0.103 -0.034 -0.021 -0.002  0.074  0.020 -0.034 

偏自相关值选5阶。

故我们的ARMIA模型为armia(1,2,5)

> skirtsarima<-arima(skirtsts,order=c(1,2,5))

> skirtsarima

SSeries: skirtsts 

ARIMA(1,2,5)                    


Coefficients:

          ar1     ma1     ma2     ma3     ma4      ma5

      -0.4345  0.2762  0.1033  0.1472  0.0267  -0.8384

s.e.   0.1837  0.2171  0.2198  0.2716  0.1904   0.2888


sigma^2 estimated as 206.1:  log likelihood=-183.8

AIC=381.6   AICc=384.71   BIC=394.09

预测后5年裙子的边缘直径

>  skirtsarimaforecast<-forecast.Arima(skirtsarima,h=5,level=c(99.5))

> skirtsarimaforecast

     Point Forecast  Lo 99.5  Hi 99.5

1912       548.5762 507.1167 590.0357

1913       545.1793 459.3292 631.0295

1914       540.9354 396.3768 685.4940

1915       531.8838 316.2785 747.4892

1916       529.1296 233.2625 824.9968

plot.forecast(skirtsarimaforecast$residuals)   #谢谢@忆水如烟的指正

R学习日记——时间序列分析之ARIMA模型预测第三步,检验

在指数平滑模型下, 观察 ARIMA 模型的预测误差是否是平均值为 0 且方差为常数的正态分布(服从零均值、方差不变的正态分布) 是个好主意,同时也要观察连续预测误差是否(自)相关。  

> acf(skirtsarimaforecast$residuals,lag.max=20)

R学习日记——时间序列分析之ARIMA模型预测> Box.test(skirtsarimaforecast$residuals, lag=20, type="Ljung-Box")


        Box-Ljung test


data:  skirtsarimaforecast$residuals 

X-squared = 8.5974, df = 20, p-value = 0.9871

既然相 关图显示出在1 - 20 l a g s 1 - 20 )中样本自相关值都没有超出显著(置信界,Ljung-Box检验p值为0.99,所我们推断在1-20lags1-20)中明显据说明预测误差是非零自相关的。 

为了调查预测误差是否是平均值为零且方差为常数的正态分布(服从零均值、方差不变的正态分布),我们可以做预测误差的时间曲线图和直方图(具有正态分布曲线)

> plot.ts(skirtsarimaforecast$residuals)

R学习日记——时间序列分析之ARIMA模型预测> plotForecastErrors(skirtsarimaforecast$residuals)
R学习日记——时间序列分析之ARIMA模型预测

上图预测中的时间曲线图显示出对着时间增加,方差大致为常数(大致不变)(尽管上半部分的时间序

列方差看起来稍微高一些)。时间序列的直方图显示预测误大致是正态分布的且平均值接近于 0(服从零均值的正态分布的)。因此,把预测误差看作平均值为0方差为常数正态分布(服从零均值、方差不变的正态分布)是合理的。 

 

既然依次连续的预测误差看起来不是相关,而且看起来是平均值为 0 方差为常数的正态分布(服从零均值、方差不变的正态分布),那么对于裙子直径的数据, ARIMA(1,2,5)看起来是可以提供非常合适预测的模型。 

至此,时间序列的学习结束


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

相关文章

ARIMA模型学习笔记

ARIMA模型学习笔记 目录 ARIMA模型学习笔记ARIMA模型时间序列平稳性什么是平稳性严平稳弱平稳 平稳性检验ADF检验(Augmented Dickey-Fuller test)单位根ADF检验的原理ADF检验的python实现 数据平稳化对数变换平滑法移动平均法指数平均法 差分法 ARIMA模型介绍AR(Autoregressive…

什么是 ARIMA模型

转自&#xff1a;https://blog.csdn.net/HHXUN/article/details/79858672 ARIMA模型的全称叫做自回归移动平均模型&#xff0c;全称是(ARIMA, Autoregressive Integrated Moving Average Model)。也记作ARIMA(p,d,q)&#xff0c;是统计模型(statistic model)中最常见的一种用来…

时间序列预测——ARIMA(差分自回归移动平均模型)(1))

时间序列预测——ARIMA&#xff08;差分自回归移动平均模型&#xff09; ARIMA&#xff08;p&#xff0c;d&#xff0c;q&#xff09;中&#xff0c;AR是"自回归"&#xff0c;p为自回归项数&#xff1b;I为差分&#xff0c;d为使之成为平稳序列所做的差分次数&#…

ARIMA乘法季节模型

目录 ARIMA乘法季节模型 例题1 例题 2 例题3 ARIMA乘法季节模型 序列的季节效应、长期趋势效应和随机波动之间有着复杂的相互关联性,简单的季节模型不能充分地提取其中的相关关系&#xff0c;这时常采用乘积季节模型。 例题1 我国1949-2008年年末人口总数&#xff08;单…

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

ARMA模型的全称是自回归移动平均模型&#xff0c;它是目前最常用的拟合平稳序列的模型。它又可以细分为AR模型、MA模型和ARMA三大类。都可以看做是多元线性回归模型。 AR模型 具有如下结构的模型称为阶自回归模型&#xff0c;简记为。 即在t时刻的随机变量的取值是前期的多元…

ARIMA模型(一)定义与介绍

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

ARIMA模型原理及实现

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

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

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

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

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

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

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

【时间序列预测-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 另外&#xff0c;重点参考https://www.jianshu.com/p/4130bac8ebec 了解ARIMA…

ARIMA的参数与数学形式

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

ARIMA模型

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

Arima相关概念

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

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

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

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

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

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

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

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

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

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

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

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

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