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

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

 

今天学习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)

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

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

 

> plot.ts(skirtstsdiff)


从一阶差分的图中可以看出数据仍是不平稳的。我们继续差分。

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

> plot.ts(skirtstsdiff2)

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

第二步找到合适的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)

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)

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模型为armia1,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)   #谢谢@忆水如烟的指正

第三步检验

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

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

>
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-20阶lags1-20中没明显证据说明预测误差是非零自相关的。 

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

> plot.ts(skirtsarimaforecast$residuals)

>
plotForecastErrors(skirtsarimaforecast$residuals)



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

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

 

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

至此时间序列的学习结束

时间: 2024-09-01 17:28:26

R语言时间序列分析之ARIMA模型预测的相关文章

预测分析:R语言实现1.1 模型

1.1 模型 模型是预测分析学的核心,因此,本书一开始会讨论各种模型及其形式.简而言之,模型是我们要理解和分析的状态.流程或系统的一种表现形式.我们创建模型的目的是根据它得出推论以及(在本书中对我们更为重要的一点)对世界进行预测.模型的格式和风格有很多种,我们在本书中会探讨这种多样性中的一部分.模型可以是和我们能够观察或测量的数量值相关的一些方程,也可以是一套规则.我们大部分人在学校都熟悉的一个简单模型是牛顿第二运动定律.该定律表明,一个物体受到的合力会使之在合力作用的方向加速,加速度和合力大小

R 语言 用途 与优势

(1)R 语言主要用来 对 数据进行统计分析 (2)R语言可以针对数据 进行绘图 其高级功能如下 R语言饼图图表R语言条形图(柱状图)R语言箱线图R语言柱状图R语言线型图R语言散点图R语言均值,中位数和模式R语言线性回归R语言多元回归R语言逻辑回归R语言正态分布R语言二项分布R语言泊松回归R语言协方差分析R语言时间序列分析R语言非线性最小二乘R语言决策树R语言随机森林R语言生存分析R语言卡方检验 绘图 R编程语言在数字分析与机器学习领域已经成为一款重要的工具.随着机器逐步成为愈发核心的数据生成器

《量化金融R语言初级教程》一第1章 时间序列分析

第1章 时间序列分析 量化金融R语言初级教程时间序列分析研究的是按时间顺序收集的数据.相邻的观测数据通常相互依赖.因此,时间序列分析的技术需要处理这种相依性. 本章的目标是通过一些特定应用来介绍一些常用建模技术.我们将看到如何使用R来解决现实中的这些问题.首先,我们考虑如何在R中存储和处理时间序列.接着,我们处理线性时间序列分析,并展现如何将它用于建模和预测房屋价格.其次,我们通过考虑长期趋势,使用协整的概念来改进基本的最小方差对冲比.最后,本章讲述如何将波动率模型运用于风险管理.

《量化金融R语言高级教程》一第1章 时间序列分析

第1章 时间序列分析 量化金融R语言高级教程在本章中,我们探讨一些时间序列分析的高级方法以及如何通过R来实现.作为一门学科,时间序列分析已有数百部著作,内容非常广泛(我们会在本章末的阅读列表中,列出在理论与R编程两方面最重要的参考目录).我们责无旁贷地精心界定了本章的范围,专注于实证金融与量化交易中必不可少的重要主题.但是,在起始阶段我们必须强调,本章仅仅为时间序列分析的进一步研究奠定了基础. 我们之前曾经出版过一本图书--<量化金融R语言初级教程>(Introduction to R for

R(2)时间序列分析及应用之TSA安装(R语言)

本文原文连接: http://blog.csdn.net/freewebsys/article/details/45830613 转载请注明出处! 1,关于时间序列 时间序列分析(Time series analysis)是一种动态数据处理的统计方法.该方法基于随机过程理论和数理统计学方法,研究随机数据序列所遵从的统计规律,以用于解决实际问题. 关于R环境搭建参考我之前写的文章: http://blog.csdn.net/freewebsys/article/details/45825267 参

《量化金融R语言高级教程》一1.1 多元时间序列分析

1.1 多元时间序列分析 金融资产价格的运动.技术分析和量化交易的基本问题常常被纳入单变量框架下进行建模.我们能否预测证券价格未来是上升还是下降?这只特定的证券处于向上还是向下的趋势中?我们该买还是该卖?这些问题都需要慎重考虑.此外,投资者常常面对着更复杂的局面,不能仅仅把市场看成不相关的工具与决策问题组成的集合. 如果单独观察这些工具,可以发现正如市场有效假说所示,它们既非自相关又非均值可预测.但是,工具之间的相关性又显而易见.这个特性很可能为交易行为所利用,或者出于投机目的,或者出于对冲目的

预测分析:R语言实现.

数据科学与工程技术丛书 预测分析:R语言实现 Mastering Predictive Analytics with R [希] 鲁伊·米格尔·福特(Rui Miguel Forte) 著 吴今朝 译 图书在版编目(CIP)数据 预测分析:R语言实现/(希)鲁伊·米格尔·福特(Rui Miguel Forte)著:吴今朝译. -北京:机械工业出版社,2016.10 (数据科学与工程技术丛书) 书名原文:Mastering Predictive Analytics with R ISBN 978-

预测分析:R语言实现导读

前 言 预测分析以及更一般意义上的数据科学当前正处于被追捧的热潮中,因为像垃圾邮件过滤.单词补全和推荐引擎这样的预测性技术已经被广泛运用于日常生活.这些技术现在不仅越来越被我们所熟悉,还赢得了我们的信任.在计算机处理能力和软件方面(例如R语言及其大量专用的扩展包)的发展产生了这样的局面:用户经过培训就可以使用这些工具,而无需具备统计学的高级学位,也不需要使用公司或大学实验室专用的硬件.技术的成熟度和基础软硬件的可用性结合起来,让很多该领域的从业者倍感兴奋,他们感到可以为自己的领域和业务设计一些能

《应用时间序列分析:R软件陪同》——导读

前言 首先,一些教材偏重于数学理论和推导.作者多为数学出身,他们习惯于数学的严格性和导出精确而又漂亮的数学结论.这些书适用于那些愿意为时间序列的数学理论研究做出贡献的读者. 其次,国内教材中一元时间序列往往占绝大部分篇幅,而且包含在各种数学假定下的各种定理和结果.这是因为一元时间序列的数学描述确实很漂亮,很多结果都能够以比较简洁的数学语言表达出来.而多元时间序列则很不一样,在一元情况下很漂亮的结果,在多元情况下就完全不同了.在数学上,复杂的表达是不被人们所喜爱的,因此,多元时间序列很难在数学味道