时间序列 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 ...
随机推荐
- 【推广】实用命令——tldr
碎碎念 如题,通常遇到一个新的命令需要查询其帮助的时候,一般使用`command -h`或者`man command`来查询,但是,有时候仅仅想知道这个命令怎么用,并不想知道具体含义啊(这个命令可能不 ...
- 小型Web应用扫描工具Grabber
小型Web应用扫描工具Grabber Grabber是Kali Linux集成的一款Web应用扫描工具.该工具适合中小Web应用,如个人博客.论坛等.该工具使用Python语言编写,支持常见的漏洞 ...
- 基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释
先来普及一下概念, 计算机对人脸是如何识别的呢? 或者说图像是如何识别的.主要是获取单张图片的特征值记录了特征值以后,如果下一张图片来了以后两张图片特征值进行对比,如果相似度很高那么计算机就认定这两个 ...
- []ARC098
咕咕咕 C:普及组难度的题 D:给定$a_{1\cdots n}$,求有多少$1\leq l\leq r\leq n$满足$x_l+\cdots+x_r=x_l\text^\cdots\text^x_ ...
- 【计算几何】【凸包】bzoj1670 [Usaco2006 Oct]Building the Moat护城河的挖掘
#include<cstdio> #include<cmath> #include<algorithm> using namespace std; #define ...
- [CF413D]2048
题目大意: 在一个长度为$n(n\le2000)$的数组中填数$2$或$4$,待所有数字全部填好后,按照类似于2048的规则向左合并.给定某些格子上的数,问在当前情况下要使得合并后的最大数超过$2^k ...
- ujmp使用心得
1)对矩阵转置运算时: Matrix test2 = oneMatrix.transpose(); Matrix test2 = oneMatrix.transpose(Ret.LINK); Matr ...
- Java高级架构师(一)第11节:Mybatis的分页实现
- Scala实战高手****第4课:零基础彻底实战Scala控制结构及Spark源码解析
1.环境搭建 基础环境配置 jdk+idea+maven+scala2.11.以上工具安装配置此处不再赘述. 2.源码导入 官网下载spark源码后解压到合适的项目目录下,打开idea,File-&g ...
- 简单说说DNS劫持_firefox吧_百度贴吧
简单说说DNS劫持_firefox吧_百度贴吧 DNSSEC