‍‍‍‍‍‍‍‍‍

作者简介Introduction

姚某某 

知乎专栏:https://zhuanlan.zhihu.com/mydata

往期回顾:

R语言之高级数据分析「聚类分析」

本节主要总结「数据分析」的「时间序列」相关模型的思路。

「时间序列」是一个变量在连续时点或连续时期上测量的观测值的序列,它与我们以前见过的数据有本质上的区别,这个区别在于之前的数据都在一个时间的横截面上去测量、计算数据,而「时间序列」给出了一种时间轴线上纵向的视角,将时间作为自变量,测量出一系列纵向数据。

关于「时间序列」的预测模型,我所了解的常用模型有三种:1. 移动平均  2. 指数预测模型 3. ARIMA 预测模型

0. 时序的分解

要研究时序如何预测,首先需要将复杂的时序数据进行分解,将复杂的时序数据分解为单一的分解成分,这样能利用统计方法进行拟合,然后个个击破,最后再合成为我们需要预测的未来时序数据。

前人在这一问题上已经得到很好的结论,通过对时序数据现实意义的理解,一般将时序数据分解为四个成分:

1. 水平项

2. 趋势项

3. 季节效应(衍生出去为周期项)

4. 随机波动

  • 水平项,即剔除时序数据的趋势影响和季节影响后,时序数据所剩的成分,它代表着时序数据在时间轴上相对稳定的一个基础值。就像一个原点一样,在这个原点上去考虑时间所带来的趋势影响和季节影响。

  • 趋势项,它用于捕捉时序数据的长期变化,是逐步增长还是逐步下降。就像在二元空间中的一个单调函数。

  • 季节效应,衍生出去就是周期型,在一定时间内,时序数据所包含的周期型变化。就像在二元空间中的三角函数,如y=sinx,其数值是周而复始的。

通常在分解以上各个成分时,有两种模式,一个是乘法模型,一个是加法模型。其中,加法模型的季节效应被认为不依赖于时间序列,二乘法模型认为季节影响随着时间会发生改变。不过两种模型在计算时可以相通,对乘法模型作对数处理即可。

1. 移动平均

这一方法很简单,只做简单讲解

  • 所谓移动平均,就是使用时间序列中最接近的 k 期数据值的平均值作为下一个时期的预测值。

即:

较小的 k 值将更快速追踪时间序列的移动,而较大的 k 值将随着时间的推移更有效地消除随机波动。

  • 可延伸为加权移动平均,此法对每个数值选择不同的的权重,然后计算最近 k 期数据值的加权平均数作为预测值。

  • 如果仅用于平滑现有数据,也可以使用居中移动平均,即使用时序中前后最接近的各 q 期数据及自己的平均值作为在该时点上的平滑值。

即:

2. 指数预测模型

指数预测模型也是利用过去的时间序列值的加权平均数作为预测值,它是加权移动平均法的一个特例。

即:只选择最近时期观测值的权重,其他数据值的权重则自动推算,原则是时间距离越远权重越小。

2.1. 单指数平滑

单指数平滑,不考虑季节和趋势分解,仅用过去数据值的加权平均数来预测。其思想为:

其中 F 为某时刻的预测值,Y 为某时刻的观测值。以上公式从 t = 1 开始递推,则每个时刻的预测值都包含着过去所有观测值的成分,只是权重不同,令F1 = Y1 ,则:

α为平滑常数,越接近于 1 ,则近期观测值的权重越大;反之,越接近于0,历史观测值权重越大。

2.2. Holt 指数平滑

Holt 指数平滑,在单指数平滑的基础上,还对趋势项进行了拟合。

由于考虑到了趋势项,则预测值可表示为:

其中 Lt 为 t 时刻时序水平项的估计值,bt为 t 时刻时序斜率的估计值。

α为水平平滑常数, β为斜率平滑常数。

2.3. Holt-Winters 指数平滑

Holt-Winters 指数平滑,在 Holt 指数平滑的基础上,还对季节项(周期项)进行了拟合,

由于还考虑到了季节项,则预测值表示为:

其中 i 为季节项的周期,mod 是求余,P 是某时刻时序周期的估计值。

α为水平平滑常数,β为斜率平滑常数,γ为周期平滑常数。

2.4. R 语言实现

以上三种指数平滑模型,采用 forecast 包中的 ets ( ) 函数即可:

ets(ts, model="zzz")
# ts 为需要分析的时序
# model 为模型选择参数,具体分类如下
# 不指定 model 参数时,自动匹配最优模型

3. ARIMA 预测模型

ARIMA 模型的相关资料我找到了,但是并没有看完和看懂,相对来说其思想确实有些复杂。而且最近买了《统计学方法》和《机器学习》两本书,发现自己的线性代数水平还很难看懂这些公式和算法推导,所以准备把《 R 语言实战 》敲完后转入线性代数的复习,之后学习方向待定。

这里我就仅把利用 R 语言进行 ARIMA 模型模拟和预测的流程做以总结:

3.1. 确保时序是平稳的

时序平稳的要求一般有两个:方差为均值、无趋势项

方法是利用时序图估判和 ndiffs ( ) 函数推荐最优的差分次数 d 。

3.2. 选择模型

通过 ACF 和 PACF 图来判断 p 和 q 参数的值。

其中 ACF 为自相关函数图用于判断 q,PACF 为偏自相关图用于判断 p。

p 为自回归模型(AR)参数,q 为移动平均模型(MA)参数。

3.3. 拟合模型

fit <- arima(ts, order=c(p,d,q))
# ts 为原时序,order 中放入包含三个参数的向量
fit
# 一般要进行多组参数的尝试,在输出结果中利用 AIC 值来选择最合理的模型,AIC 越小越好
accuracy(fit)
# 得到一系列误差值,用于准确性度量

3.4. 模型评价

模型的残差应该满足独立正态分布,根据这一条:

1. 使用正态 Q-Q 图来判断其正态性

2. 使用box.test ( ) 函数对模型的残差进行独立性检验。

3.5. 预测

forecast(fit,3)
# fit 为我们之前拟合好的最佳模型,3 指的是要预测的年数

3.6. 自动预测

forecast 包中的 auto.arima ( ) 函数可以实现最优 ARIMA 模型的自动选取。

 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)

公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

R语言之数据分析高级方法「时间序列」相关推荐

  1. R语言与数据分析练习:选择适当模型拟合某股票连续若干天的收盘价序列的发展

    R语言与数据分析练习:选择适当模型拟合某股票连续若干天的收盘价序列的发展 ARIMA模型 ARIMA模型(英语:Autoregressive Integrated Moving Average mod ...

  2. R语言与数据分析练习:使用ARIMA模型预测网站访问量

    R语言与数据分析练习:使用ARIMA模型预测网站访问量 使用ARIMA模型预测网站访问量 一.实验背景: 随着流量的增大,某网站的数据信息量也在以一定的幅度增长 基于该网站2016年9月~2017年2 ...

  3. R语言对数线性模型loglm函数_用R语言进行数据分析:常规和广义线性模型

    用R语言进行数据分析:常规和广义线性模型 线性模型 对于常规的多重模型(multiple model)拟合,最基本的函数是lm(). 下面是调用它的方式的一种改进版: >fitted.model ...

  4. R语言 面板数据分析 plm包实现(一) ——LSDV和固定效应模型

    系列文章 R做面板数据分析:R语言 面板数据分析 plm包实现(一) --LSDV和固定效应模型 如果想看随机效应模型怎么做,参见这篇文章 R语言 面板数据分析 plm包实现(二)--随机效应模型 如 ...

  5. R语言创建新变量方法

    R语言创建新变量方法 在数据分析中,可能需要对数据进行求和.求均值等处理,并且将处理后的数据重新保存到原来的数据框中,这里提供三种可供解决的方法: 数据框$变量名 <- 表达式.若原数据框中含有 ...

  6. 2014全球软件技术峰会WOT:R语言金融数据分析

    跨界知识聚会系列文章,"知识是用来分享和传承的",各种会议.论坛.沙龙都是分享知识的绝佳场所.我也有幸作为演讲嘉宾参加了一些国内的大型会议,向大家展示我所做的一些成果.从听众到演讲 ...

  7. 【R语言与数据分析实战】R软件编程

    目录 1.流程控制 (1) if语句 (2) 循环语句 2.运算 (1) 数值运算 (2) 向量运算 (3) NA处理 3.定义函数 (1) 可变长函数 (2) 嵌套函数 4.作用域 5.对象的不变性 ...

  8. 【R语言与数据分析实战】绘图

    目录 1.散点图 2.图像选项 2.1 坐标轴名称 2.2 图形标题 2.3 点的类型 2.4 点的大小 2.5 颜色 2.6 坐标轴的取值范围 2.7 图像类型 2.8 线型 2.9 图形排列 2. ...

  9. R语言学习笔记——高级篇:第十四章-主成分分析和因子分析

    R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...

  10. 看书标记【R语言 商务数据分析实战4】

    看书标记--关于R语言 chapter 4 4.2 任务实现 [R语言 商务数据分析实战4] chapter 4 财政收入预测分析 从海量数据中发现隐藏的运行模式,并提供具有决策意义的信息.变量过多会 ...

最新文章

  1. PARAMETERS 指令
  2. 如何用消息系统避免分布式事务?
  3. Keepalived实现LVS-DR双机热备_2015101601
  4. 微信平台开发者:桥梁上的运动员
  5. 酷派手机android版本,酷派大神的手机系统是什么?酷派大神能升级安卓4.3吗?...
  6. [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.
  7. oracle课程设计摘要,Oracle程序设计课程设计概要(doc 35页)
  8. centos下升级jdk版本
  9. Spark SQL连接数据库找不到Mysql驱动解决方法
  10. 网易云音乐喊话酷狗称其“耍猴”:专利文件与“跟听”毫无关系
  11. struct device结构体(2.6.23)
  12. 使用Jenkins打包vue项目丢失静态资源
  13. 推荐一个互联网电子书免费下载网站
  14. linux红帽子系统作用,linux 红帽子9.0操作系统怎么装?
  15. Windows 10聚焦怎么用?教你玩转Windows聚焦功能
  16. Java基础知识和进阶
  17. 神奇的分形艺术: Mandelbrot集和Julia集
  18. 人工智能是从什么时候开始发展的?AI的起源
  19. 产品经理的主要工作职责
  20. 面试阿里P6,过关斩将直通2面,结果3面找了个架构师来吊打我

热门文章

  1. vue filters使用
  2. 来自Airbnb、Netflix等公司的代码评审最佳实践
  3. 数数FastJson那些年犯下的'血案'...
  4. Spring 面试 7 大问题,你顶得住不?
  5. 创业 7 年最痛教训
  6. 自学Android到什么程度才能找到工作?
  7. redis scan 效率太慢_阿里云的redis规范
  8. 刷面经笔记2019.01.30
  9. Java主类结构:变量与常量
  10. 锋利的jQuery--读书笔记