时间序列 R 读书笔记 04 Forecasting: principles and practice
本章開始学习《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.
时间序列 R 读书笔记 04 Forecasting: principles and practice的更多相关文章
- 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令
Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...
- 『TCP/IP详解——卷一:协议』读书笔记——04
2013-08-18 16:31:17 第2章 链路层 2.1 引言 链路层主要有三个目的: 为IP模块发送和接受IP数据报 为ARP模块发送ARP请求和接受ARP应答 为RARP发送RARP请求和接 ...
- ANTLR3完全参考指南读书笔记[04]
前言 学习框架或第三方库的方法是什么 (1)少量的浏览manual或tutoral,只关注程序所需的特征,再完善其详细内容和特征的认识? (2)花大量的时间研究详细内容,再考虑程序实现? 这是个先有鸡 ...
- [读书笔记]Linux命令行与shell编程读书笔记04 安装软件,编辑器注意事项
1. debian以及redhat两种主流的linux发行版用的包管理工具 debian的包管理工具是 dpkg 再现安装的是 apt apt的工具主要有 apt-get apt-cache apti ...
- 读书笔记(04) - 错误监控 - JavaScript高级程序设计
错误类型 即时运行错误 (代码错误) 资源加载错误 常见的错误 1. 类型转换错误 建议使用全等===操作符 2.数据类型错误 建议加强类型判断 // 数组倒序 function reverseSor ...
- 8086中断系统——《x86汇编语言:从实模式到保护模式》读书笔记04
80X86中断系统 能够处理256个中断 用中断向量号0-255区别 可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理 1.中断的分类 中断可以分为内部中断和外部中断. (1)内 ...
- 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)
强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning) 学习笔记: Reinforcement Learning: An Introductio ...
- 强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods)
强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods) 学习笔记: Reinforcement Learning: An Introduction, Richa ...
- 强化学习读书笔记 - 12 - 资格痕迹(Eligibility Traces)
强化学习读书笔记 - 12 - 资格痕迹(Eligibility Traces) 学习笔记: Reinforcement Learning: An Introduction, Richard S. S ...
随机推荐
- 【二分答案】【最大流】bzoj1305 [CQOI2009]dance跳舞
http://hzwer.com/1986.html #include<cstdio> #include<algorithm> #include<queue> #i ...
- 【暴力】【推导】bzoj1088 [SCOI2005]扫雷Mine
考虑右侧的一个格子是否放雷,只可能对其左侧的三个格子造成影响. 也就是说,若左侧一个格子旁的两个格子已经放了雷,对第三个格子也就唯一确定了. 因此只枚举前两个格子是否放雷,剩下的暴力判断是否合法即可. ...
- Exercise02_05
import java.util.Scanner; public class Rate { public static void main(String[] args){ Scanner input ...
- map泛型 map不指定泛型 与 Map<Object,Object>的区别
map泛型 map不指定泛型 与 Map<Object,Object>的区别 private void viewDetail(){ Map map1 = new HashMap(); Ma ...
- MJExtension使用指导(转)
MJExtension使用指导(转) MJExtension能做什么? MJExtension是一套字典和模型之间互相转换的超轻量级框架 MJExtension能完成的功能 字典(JSON) --& ...
- NSPredicate 谓词总结 数组过滤 模糊匹配
NSPredicate 用于指定过滤条件,主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配. NSPredicate常用方法介绍 1.创建NSPredicate(相当于创建一个过滤条件 ...
- JavaScript 的闭包用于什么场景
本文翻译自 MDN ( Mozilla Developer Network ): 原文地址:MDN 译文地址:shixinzhang 的博客 读完本文你将了解到: 词法作用域 闭包 闭包实战场景之回调 ...
- 激活office2010出现“Failed to inject memory”错误
使用Office 2010 Toolkit 2.2.3激活office2010的时候,出现Failed to inject memory!错误,原因是前期使用KM激活过office 2010,然后默认 ...
- SONY 手提 realtek high definition audio driver
SONY 手提 realtek high definition audio driver: 官方网站下载:http://www.realtek.com.tw/downloads/downloadsVi ...
- PostgreSQL on Linux 最佳部署手册
安装常用包 # yum -y install coreutils glib2 lrzsz mpstat dstat sysstat e4fsprogs xfsprogs ntp readline-de ...