上篇我和小伙伴们分享了简单指数平滑法,简单指数平滑法仅仅能预測那些处于恒定水平和没有季节变动的时间序列,今天和大家分享非恒定水平即有增长或者减少趋势的。没有季节性可相加模型的时间序列预測算法---霍尔特指数平滑法(Holt)。

Holt 指数平滑法预计当前时间的水平和斜率。其平滑水平是由两个參数控制。alpha:预计当前点水平。beta:预计当前点趋势部分斜率。两个參数都介于0-1之间。当參数越接近0,大部分最近的观測值的权值将较小。

我们以1866年到1911年每年女士裙子直径为案例,我们首先录入数据并绘制出该序列:

skirts <- scan("http://robjhyndman.com/tsdldata/roberts/skirts.dat",skip=5)
skirtsseries <- ts(skirts,start=c(1866))
plot.ts(skirtsseries)

观察上图可见该序列从1866年的600涨到了1880年的1050,后面又下降到1911年的520。再次使用R中的HoltWinters()进行霍尔特指数平滑预測(gamma=FALSE),并绘出预測和观測值的曲线图。来观看预測结果

skirtsseriesforecasts <- HoltWinters(skirtsseries, gamma=FALSE)
plot(skirtsseriesforecasts)

整体看来,预測的效果还不错(黑色为原始序列,红色为预測值)。虽然他们对观測值有一点点延迟。相同我们也能够通过变量skirtsseriesforecasts$SSE查看样本内误差平方和

相关预測值如上图,alpha值为0.84;beta预測值为1.0。这些都是很高的值。充分显示了不管是水平上还是趋势的斜率上,当前值对时间序列上的近期的观測值的依赖关系比較重,这种结果也符合我们的预期,由于时间序列的水平和斜率在整个时间段内发生了巨大的变化。此外我们能够通过HoltWinters()函数中的“l.start”和“b.start”的參数指定水平和趋势的初始值。常见的设定水平初始值为时间序列的第一个值(608),斜率的初始值则是其第二个值减去第一个值(9),则设定例如以下:

HoltWinters(skirtsseries, gamma=FALSE, l.start=608, b.start=9)

相同採用forecast包预測未来时间节点的值,如果我们预測未来19期的数据。详细实现和结果展演示样例如以下:

library("forecast")
skirtsseriesforecasts2 <- forecast.HoltWinters(skirtsseriesforecasts, h=19)
plot.forecast(skirtsseriesforecasts2)

上图中预測部分使用蓝色的线条标识出来,深灰色的阴影区域为80%。浅灰色阴影区为95%的预測区间。

为了检验预測效果。我们相同检验延迟1-20阶中的预測误差是否非零自相关。相同继续採用Ljung-Box检验:

acf(skirtsseriesforecasts2$residuals, lag.max=20)
Box.test(skirtsseriesforecasts2$residuals, lag=20, type="Ljung-Box")

相关图呈现样本内预測误差在滞后5阶时超过置信边界,其它都为超过,我们觉得存在一定的偶尔因素。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG93YXJkZ2U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Ljung-Box检验时,p =0.4749,意味着置信度仅仅有53%这种值不足以拒绝“预測误差在1-20阶是非零自相关,则我们接受预測误差在1-20阶是非零自相关的。

相同我们验证測试误差是否符合零均值正态分布,我们画出时间预測误差图和一个附上正态曲线预測误差分布的直方图(这部分借用上次咱自己写的plotForecastErrors函数):

plot.ts(skirtsseriesforecasts2$residuals)
source("plotForecastErrors.R")
plotForecastErrors(skirtsseriesforecasts2$residuals)

可见预測误差在整个时间段内是方差大致不变的。

由预測误差直方图可见预測误差是零均值的正态分布。

R语言与数据分析之八:时间序列--霍尔特指数平滑法的更多相关文章

  1. R语言基因组数据分析可能会用到的data.table函数整理

    R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部 ...

  2. 基于R语言的数据分析和挖掘方法总结——描述性统计

    1.1 方法简介 描述性统计包含多种基本描述统计量,让用户对于数据结构可以有一个初步的认识.在此所提供之统计量包含: 基本信息:样本数.总和 集中趋势:均值.中位数.众数 离散趋势:方差(标准差).变 ...

  3. R语言与数据分析

    K最近邻(k-Nearest Neighbor,KNN)分类算法 R语言实现包:R语言中有kknn package实现了weighted k-nearest neighbor. 决策树: R语言实现决 ...

  4. R语言与数据分析之九:时间内序列--HoltWinters指数平滑法

    今天继续就指数平滑法中最复杂的一种时间序列:有增长或者减少趋势而且存在季节性波动的时间序列的预測算法即Holt-Winters和大家分享.这样的序列能够被分解为水平趋势部分.季节波动部分,因此这两个因 ...

  5. R语言和数据分析十大:购物篮分析

    提到数据挖掘,我们的第一个反应是之前的啤酒和尿布的故事听说过,这个故事是一个典型的数据挖掘关联规则.篮分析的传统线性回归之间的主要差别的差别,对于离散数据的相关性分析: 常见的关联规则: 关联规则:牛 ...

  6. 基于R语言的数据分析和挖掘方法总结——中位数检验

    3.1 单组样本符号秩检验(Wilcoxon signed-rank test) 3.1.1 方法简介 此处使用的统计分析方法为美国统计学家Frank Wilcoxon所提出的非参数方法,称为Wilc ...

  7. 基于R语言的数据分析和挖掘方法总结——均值检验

    2.1 单组样本均值t检验(One-sample t-test) 2.1.1 方法简介 t检验,又称学生t(student t)检验,是由英国统计学家戈斯特(William Sealy Gosset, ...

  8. R语言︱LDA主题模型——最优主题数选取(topicmodels)+LDAvis可视化(lda+LDAvis)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:在自己学LDA主题模型时候,发现该模 ...

  9. R语言:计算现金工资的币数

    新入职的员工,有的没有相应银行卡,需要计算现金工资的币数.实发工资,一般取整数. 简化计算,纸币面值只有100.10.1.4278除以100等于42余78,78除以10等于7余8,8除以1等于8. 复 ...

随机推荐

  1. IntelliJ配置jenkins服务的Crumb Data

    近期在做jenkins测试,IntelliJ并没有自动安装jenkins服务器,因此需要自己添加,但是如果不配置Crumb Data,jenkins的服务就不能使用. 首先在服务器中开启CSRF服务, ...

  2. C#设计模式之十四模板方法模式(Template Method)【行为型】

    一.引言 “结构型”的设计模式已经写完了,从今天我们开始讲“行为型”设计模式.现在我们开始讲[行为型]设计模式的第一个模式,该模式是[模板方法],英文名称是:Template Method Patte ...

  3. Git(1)----Eclipse安装Git插件

    一.从官网选择系统版本下载Git并安装 地址:https://git-scm.com/downloads/ 二.打开Eclipse 1. 第一种安装方法: help-->Install New ...

  4. [转载] java垃圾回收机制

    转载自http://blog.csdn.net/randyjiawenjie/article/details/7551228 http://www.daniel-journey.com/archive ...

  5. Python之hashlib模块

    hashlib 在做一个授权管理系统,需要生产动态生成密码,故使用hashlib >>> import time >>> import hashlib >&g ...

  6. java.lang.Collections

    java.lang.Collections 此类完全由在collection上进行操作或返回 collection 的静态方法组成.也就是说Collections提供了对Collection集合操作的 ...

  7. Ajax-javascript

    一.Web 2.0的特点 提到Ajax不得不提到WEB2.0 1.用户贡献内容 2.内容聚合RSS 3.更丰富的"用户体验" 二.Ajax的作用 无刷新:不刷新整个页面,只刷新局部 ...

  8. ligerUI---下拉菜单(menubar)动态显示(从后台获取数据)

    写在前面: ligerui的下拉菜单是有点丑的,这也是没有办法的事........这里主要记录下,如何从后台获取数据进行菜单显示. 有两种方式:1.使用json数组来动态添加  2.字符串拼接.  其 ...

  9. IDisposeable,Close

    一.资源分类 资源分为托管资源和非托管资源. 非托管资源:所有的windows内核对象(句柄)都是非托管资源,如stream,数据库连接,GDI+和COM对象等,这些资源不受CLR管理. 托管资源:由 ...

  10. 浅谈快速开发框架的分层(WinForm)

    对于B/S都是MVC好不好 不多说了,反正大家都这么用 这里简单说下C/S 首先常用的几种: 模仿B/S的MVC  也有人称之为 MVP 还有MVVM这种真心觉得够够的了,当然也有其优势所在,这里不讨 ...