本章開始学习《Forecasting: principles and practice》
1 getting started
1.1 事件的可预言性
一个时间能不能被预言主要取决于以下三点
1. 对事件的影响因素的了解程度。比方彩票号码。没有内在的影响因素不能被预測
2. 可用数据量的多少,数据量太少没法预測
3. 预測结果本身的影响,比方预測汇率,可能大家知道预測的会长,那么人们就会採取对应的措施使预測结果不准。
1.2 经常使用预測模型
- 解释性模型,如其模型内包括其影响因素,通过影响因素来预測属于
- 时间序列,其模型仅仅用时间来预測
- 综合模型,即考虑时间也考虑影响因素,不同学科有不同的名字。如,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 简单模型
- 平均值模型,直接使用平均值来作为预測值
- naive模型,直接使用近期的值作为预測
- 季节naive模型。直接使用近期的季节性数据来作为预測值
- 飘逸模型。使用历史的平均变化率做线性预測。公式例如以下:
这几种模型往往不是用来做预測。而是能够用来做预測基准,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 膨胀转换
在预測关于金融的事情的时候,由于货币膨胀率的不同,相同的数据可能会有不一样的意义。通常的做法是做例如以下转换
cpi 是Consumer Price Index消费者物价指数
2.4 预測精度评估
2.4.1 评估模型
yi^表示预測值 yi表示观測值。设ei=yi−yi^
则基本的评价指标有
1. 平均绝对误差MAE
2. 均方根误差RMSE
前两者仅用于比較数据规模相同的预測模型。后面可用于比較规模不同的模型
3. 平均绝对百分比误差MAPE,设pi=100∗ei/yi
这里能够看出,假设y趋向于0就会有接近无穷大的数值。显然不合理,并且它对于负值的惩处比对正值更大
4. 均衡平均绝对百分比误差sMAPE
这样的方法不好,就不在具体说了
5. 平均绝对照例误差 MASE mean absolute scaled error
对于周期不为1的比方季节性数据可用下式
对于普通数据
整个误差公式为
验证方法
要注意过拟的现象,所以要有測试集和交叉验证
測试集一般的比例为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 方法
h是最大滞后期数 (lag)可是不宜取太大,假设是没有季节性的建议取10,季节性的取2*季节周期m,另外假设这样取的h大于T/5,(T指样本数),那么就取T/5
2. Ljung-Box
这两种方法怎样评价自相关性呢,
Q和Q*都满足自由度为(h-k)的χ2分布,k是參数的数量,于对源数据k=0 naive model没有參数,也取0
2.6 预測区间
通常我们预測的数值并非一个单独的数值。而是一个区间,在置信度95%的区间中,预測值为
σ^为预測值的标准差。通常时候假设模型中没有參数它等于残差的标准差,假设有參数。预測标准差会偏大些,但不会大太多
- 预測区间通常会随着预測时间的增长而增大。可是有些非线性方法并不会这样
拓展阅读
Maindonald, J. and H. Braun (2010). Data analysis and graphics using R: an example-based approach. 3rd ed. Cambridge, UK: Cambridge University Press.