本章開始学习《Forecasting: principles and practice》

1 getting started

1.1 事件的可预言性

一个时间能不能被预言主要取决于以下三点

1. 对事件的影响因素的了解程度。比方彩票号码。没有内在的影响因素不能被预測

2. 可用数据量的多少,数据量太少没法预測

3. 预測结果本身的影响,比方预測汇率,可能大家知道预測的会长,那么人们就会採取对应的措施使预測结果不准。

1.2 经常使用预測模型

  1. 解释性模型,如其模型内包括其影响因素,通过影响因素来预測属于
  2. 时间序列,其模型仅仅用时间来预測
  3. 综合模型,即考虑时间也考虑影响因素,不同学科有不同的名字。如,dynamic regression models, panel data models, longitudinal models, transfer function models, and linear system models (assuming ff is linear)

2 工具箱使用

2.1 自相关

使用散点图。画出Yt与Yt−k的散点图能够看出两者之间的线性关系,自相关系数即能表明他们之间是否有线性关系。

下图是啤酒销量的自相关关系



他们的自相关系数计算公式是:



计算结果是:



能够看出在4,8处有较好的正相关。与图相符合

在使用时经常使用ACF来表达。以下是R语言做的图

Acf(beer2)



没有自相关性的就是白噪声,他的ACF例如以下图

set.seed(30)
x <- ts(rnorm(50))
plot(x, main="White noise")
Acf(x)



怎样通过ACF看是否是白噪声?

通常假设95%的数据的ACF在±2T√就能够觉得是白噪声。这里一共同拥有50个数。ACF的边界是2/(50)^0.5=0.28,所以能够看做是白噪声

2.2 简单模型

  1. 平均值模型,直接使用平均值来作为预測值
  2. naive模型,直接使用近期的值作为预測
  3. 季节naive模型。直接使用近期的季节性数据来作为预測值
  4. 飘逸模型。使用历史的平均变化率做线性预測。公式例如以下:



    这几种模型往往不是用来做预測。而是能够用来做预測基准,get√!



    代码例如以下:

1
meanf(y, h)
# y contains the time series
# h is the forecast horizon
2
naive(y, h)
rwf(y, h) # Alternative
3
snaive(y, h)
4
rwf(y, h, drift=TRUE)

2.3 转换与调整

2.3.1 数学转化

该类转换一般时将数值的表达形式进行转换,比方转换为log,或者exp形式,文中介绍了一个比較好用的公式,函数为Box-cox



选择合适的λ来进行预測,预測之后再将结果转化回正常形式

以下是一个在λ不同一时候的图像



文中说 在λ=0.30时效果比較好

指数形式转化的特征:

1. 假设yt≤0, 不能进行指数转换,除非加一个常数,使其大于0

2. 转变通常对预測的作用不大。单会对预測区间有较大的影响

2.3.2 日期调整

比如,每月的牛奶需求,由于每一个月天数不一样。预測精度可能会减少。假设改为每天的牛奶需求,预測结果会有改善

2.3.3 人口转换

比方有时候用总人口数为单位不如平均人口数的更具有解释性,比方中国人多钱多,但平均每人的前就不多了。

2.3.4 膨胀转换

在预測关于金融的事情的时候,由于货币膨胀率的不同,相同的数据可能会有不一样的意义。通常的做法是做例如以下转换

ynew−t=yt∗cpibasecpit

cpi 是Consumer Price Index消费者物价指数

2.4 预測精度评估

2.4.1 评估模型

yi^表示预測值 yi表示观測值。设ei=yi−yi^

则基本的评价指标有

1. 平均绝对误差MAE

2. 均方根误差RMSE



前两者仅用于比較数据规模相同的预測模型。后面可用于比較规模不同的模型

3. 平均绝对百分比误差MAPE,设pi=100∗ei/yi

Mean absolute percentage error: MAPE=mean(|pi|).

这里能够看出,假设y趋向于0就会有接近无穷大的数值。显然不合理,并且它对于负值的惩处比对正值更大

4. 均衡平均绝对百分比误差sMAPE

sMAPE=mean(200|yi−y^i|/(yi+y^i))

这样的方法不好,就不在具体说了

5. 平均绝对照例误差 MASE mean absolute scaled error

qj=ej1T−1∑t=2T|yt−yt−1|.

对于周期不为1的比方季节性数据可用下式

qj=ej1T−m∑t=m+1T|yt−yt−m|.

对于普通数据

qj=ej1N∑i=1N|yi−y¯|.

整个误差公式为

MASE=mean(|qj|).

验证方法

要注意过拟的现象,所以要有測试集和交叉验证

測试集一般的比例为20%

交叉验证,时间序列交叉验证的方法为

1. 首先假设K个数值能够足够做好一个模型

2. 用K+i个做为验证。前K+i−1个作为训练集

3. 用前面的模型来评价准确率

4. 以上是用一个来计算的,大家可用相似的用一个特定的周期作为评价

2.5 残差诊断

残差检验模型

残差指的是ei=yi−yi^ ,它有以下特性

1. 残差是不相关的

2. 残差的均值为0

3. 残差的方差为常数

4. 残差满足正态分布

后两者有时候可能不满足。可是假设前两者也不满足,能够用过调整改进算法。优化模型。可是不能全然依靠前两者评价模型的好坏。

自相关合成检验

ACF自相关检验仅仅是看某一个的自相关。其实假设进行非常多次试验。假设有一个的ACF显示自相关程度非常高,并不能充分的说明有自相关性,所以这里讲多个滞后期的ACF联合来看

Portmanteau tests for autocorrelation

主要讲了两种方法

1. Box-Pierce 方法

Q=T∑k=1hr2k,

h是最大滞后期数 (lag)可是不宜取太大,假设是没有季节性的建议取10,季节性的取2*季节周期m,另外假设这样取的h大于T/5,(T指样本数),那么就取T/5

2. Ljung-Box

Q∗=T(T+2)∑k=1h(T−k)−1r2k.

这两种方法怎样评价自相关性呢,

Q和Q*都满足自由度为(h-k)的χ2分布,k是參数的数量,于对源数据k=0 naive model没有參数,也取0

2.6 预測区间

通常我们预測的数值并非一个单独的数值。而是一个区间,在置信度95%的区间中,预測值为

y^t±1.96σ^

σ^为预測值的标准差。通常时候假设模型中没有參数它等于残差的标准差,假设有參数。预測标准差会偏大些,但不会大太多

  • 预測区间通常会随着预測时间的增长而增大。可是有些非线性方法并不会这样

    拓展阅读

    Maindonald, J. and H. Braun (2010). Data analysis and graphics using R: an example-based approach. 3rd ed. Cambridge, UK: Cambridge University Press.

时间序列 R 读书笔记 04 Forecasting: principles and practice的更多相关文章

  1. 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令

    Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...

  2. 『TCP/IP详解——卷一:协议』读书笔记——04

    2013-08-18 16:31:17 第2章 链路层 2.1 引言 链路层主要有三个目的: 为IP模块发送和接受IP数据报 为ARP模块发送ARP请求和接受ARP应答 为RARP发送RARP请求和接 ...

  3. ANTLR3完全参考指南读书笔记[04]

    前言 学习框架或第三方库的方法是什么 (1)少量的浏览manual或tutoral,只关注程序所需的特征,再完善其详细内容和特征的认识? (2)花大量的时间研究详细内容,再考虑程序实现? 这是个先有鸡 ...

  4. [读书笔记]Linux命令行与shell编程读书笔记04 安装软件,编辑器注意事项

    1. debian以及redhat两种主流的linux发行版用的包管理工具 debian的包管理工具是 dpkg 再现安装的是 apt apt的工具主要有 apt-get apt-cache apti ...

  5. 读书笔记(04) - 错误监控 - JavaScript高级程序设计

    错误类型 即时运行错误 (代码错误) 资源加载错误 常见的错误 1. 类型转换错误 建议使用全等===操作符 2.数据类型错误 建议加强类型判断 // 数组倒序 function reverseSor ...

  6. 8086中断系统——《x86汇编语言:从实模式到保护模式》读书笔记04

    80X86中断系统 能够处理256个中断 用中断向量号0-255区别 可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理 1.中断的分类 中断可以分为内部中断和外部中断. (1)内 ...

  7. 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)

    强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning) 学习笔记: Reinforcement Learning: An Introductio ...

  8. 强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods)

    强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods) 学习笔记: Reinforcement Learning: An Introduction, Richa ...

  9. 强化学习读书笔记 - 12 - 资格痕迹(Eligibility Traces)

    强化学习读书笔记 - 12 - 资格痕迹(Eligibility Traces) 学习笔记: Reinforcement Learning: An Introduction, Richard S. S ...

随机推荐

  1. 【二分答案】【最大流】bzoj1305 [CQOI2009]dance跳舞

    http://hzwer.com/1986.html #include<cstdio> #include<algorithm> #include<queue> #i ...

  2. 【暴力】【推导】bzoj1088 [SCOI2005]扫雷Mine

    考虑右侧的一个格子是否放雷,只可能对其左侧的三个格子造成影响. 也就是说,若左侧一个格子旁的两个格子已经放了雷,对第三个格子也就唯一确定了. 因此只枚举前两个格子是否放雷,剩下的暴力判断是否合法即可. ...

  3. Exercise02_05

    import java.util.Scanner; public class Rate { public static void main(String[] args){ Scanner input ...

  4. map泛型 map不指定泛型 与 Map<Object,Object>的区别

    map泛型 map不指定泛型 与 Map<Object,Object>的区别 private void viewDetail(){ Map map1 = new HashMap(); Ma ...

  5. MJExtension使用指导(转)

    MJExtension使用指导(转)  MJExtension能做什么? MJExtension是一套字典和模型之间互相转换的超轻量级框架 MJExtension能完成的功能 字典(JSON) --& ...

  6. NSPredicate 谓词总结 数组过滤 模糊匹配

    NSPredicate 用于指定过滤条件,主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配. NSPredicate常用方法介绍 1.创建NSPredicate(相当于创建一个过滤条件 ...

  7. JavaScript 的闭包用于什么场景

    本文翻译自 MDN ( Mozilla Developer Network ): 原文地址:MDN 译文地址:shixinzhang 的博客 读完本文你将了解到: 词法作用域 闭包 闭包实战场景之回调 ...

  8. 激活office2010出现“Failed to inject memory”错误

    使用Office 2010 Toolkit 2.2.3激活office2010的时候,出现Failed to inject memory!错误,原因是前期使用KM激活过office 2010,然后默认 ...

  9. SONY 手提 realtek high definition audio driver

    SONY 手提 realtek high definition audio driver: 官方网站下载:http://www.realtek.com.tw/downloads/downloadsVi ...

  10. PostgreSQL on Linux 最佳部署手册

    安装常用包 # yum -y install coreutils glib2 lrzsz mpstat dstat sysstat e4fsprogs xfsprogs ntp readline-de ...