本章開始学习《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.

最新文章

  1. URi和Url格式
  2. 升级Dell的R810固件版本
  3. Linux下修改默认字符集---&gt;解决Linux下Java程序种中文文件夹file.isDirectory()判断失败的问题
  4. CSS 加载新方式
  5. wxPython 基本框架与运行原理 -- App 与 Frame
  6. 第12章 代理模式(Proxy Pattern)
  7. 设置npm安装模块目录&lt;nodejs&gt;
  8. 曲线点抽稀算法-Python实现
  9. Object-C 编程问题汇总
  10. js如何调用php文件内显示的数值到html?
  11. Hbase写Hfile报错:Trying to load more than 32 hfiles to one family of one region
  12. android --- api json数据
  13. cpu选型
  14. zabbix 分布式zabbix_proxy
  15. Unity4.6证书激活问题
  16. ZH奶酪:Ionic通过angularJS+tabs-item-hide实现自定义隐藏tab
  17. 应对新型“蠕虫”式比特币勒索软件“wannacry”的紧急措施
  18. [看门狗]基于Linux的嵌入式系统全程喂狗策略
  19. 【转】MVC中的扩展点
  20. KATANA Owin 资料收集

热门文章

  1. [BZOJ 2425] 计数
  2. 【高斯消元】【异或方程组】poj1222 EXTENDED LIGHTS OUT
  3. Exercise02_03
  4. Android中的动态字符串的处理
  5. windbg --sqlserver 实例 转
  6. lync项目总结
  7. Ado.Net基础拾遗二:插入,更新,删除数据
  8. [Android Traffic] Android网络开启、关闭整理
  9. openstack如何设置cpu和内存的超配比例
  10. Physically Based Rendering