分享一篇时间序列的干货文章。

时间序列的定义

一个时间序列过程(time series process)定义为一个随机过程,这是一个按时间排序的随机变量的集合,也就是将每一个时刻位置的点作为一个随机变量。 是索引集合(index set), 决定定义时序过程以及产生观测值的一个时间集合 。其中假定

  • 随机变量 的取值是连续的。

  • 时间索引集合 是离散且等距的。

在整个过程中,都采用以下符号

  • 随机变量(Random variables)用大写字母表示,即 ,同时随机变量的值是从一个分布中采样给出。而且可以为无限多个时间点 定义随机变量。

  • 观测(Observations)用小写字母表示,即 ,观测可以认为是随机变量的实现。但通常在实际中,我们的观测点是有限的,因此定义 个观测是 。

时间序列分析的目标

给定一组时间序列数据,通常会要求回答一个或多个有关它的问题。时间序列数据出现的主要问题类型取决于数据的上下文以及收集数据的原因,下面给出一些常见的目标:

  • 描述:描述时间序列的主要特征,例如:序列是递增还是递减;是否有季节性模式(例如,夏季较高,冬季较低);第二个解释变量如何影响时间序列的值?

  • 监控:检测时间序列行为何时发生变化,例如销售额突然下降,或者突然出现峰值。

  • 预测:从当前值预测时间序列的未来值,并量化这些预测中的不确定性,比如根据今天的气温预测未来几天的温度。

  • 回归:给定多个时间序列以及与这些序列对应的一个额外的值,找到其中的关系。

  • 分类:给定多个时间序列,将它们按照相似性进行分类。

  • ......

时间序列的建模

时间序列数据通常被分解为以下三个组成部分。

  • 趋势(Trend)- 趋势体现的是时间序列数据均值随时间的长期变化。如果趋势存在,它的形状通常会引起人们的兴趣,尽管它可能不是线性的。

  • 季节性影响(Seasonal effect)- 季节性影响是时间序列中以固定间隔重复的趋势。严格来说,季节性效应只是每年都会重复的效应,但在更一般的情况下,可以更广泛地使用该术语来表示任何定期重复的模式。

  • 无法解释的变化(Unexplained variation)- 无法解释的变化是在任何趋势和季节性变化被去除后时间序列中其余的变化。这种无法解释的变化可能是独立的,也可能表现出短期相关性。

因此,时间序列数据的简单模型可以用两种方式表示,分别为

加法模型(Additive):
乘法模型(Multiplicative):

其中 表示趋势, 表示季节, 表示无法解释的变化。在此教程中,给出了两个例子。即当趋势和季节性变化独立作用时,加法模型是合适的,而如果季节性效应的大小取决于趋势的大小,则需要乘法模型。当趋势和季节性变化独立作用时,加法模型是合适的,而如果季节性效应的大小取决于趋势的大小,则需要乘法模型,简单的示意图如下:

  • Example of additive model

时间序列的特性

(均值、方差、自协方差函数、自相关函数)

给定一个时间序列过程 和观测 ,通常我们会使用以下属性描述其特征。

  • 均值(Mean function)

对所有的 ,时间序列过程的均值函数(mean function)定义为

对于真实的数据,通常我们假定均值为一个常数,因此可以估计均值为

如果数据的平均值不是恒定的,例如由于趋势或季节性变化的存在,则应该用其他方法进行估计,这部分内容后面再讲。

  • 方差(Variance function)

对所有的 ,时间序列过程的方差函数(variance function)定义为

402 Payment Required

标准差函数定义为

对于真实的数据,通常我们假定方差也为一个常数,因此可以估计方差为

  • 自协方差和自相关函数(Autocovariance and autocorrelation functions)

回忆对任意的随机变量 和 ,协方差以及相关性测量通过以下定义给出

协方差:

402 Payment Required

相关性:

相关性是介于 -1 和 1 之间的协方差的缩放表现,其中 1 表示强正相关,0 表示独立性,-1 表示强负相关,但通常相关性指的是线性的相关性。

对于一个时间序列过程,定义随机变量 是在不同时间点的测量。它们之间的依赖关系由自协方差和自相关函数描述,添加“auto”前缀以表示两个随机变量测量具有相同的数量。

对于所有的 ,自协方差函数(autocovariance function (ACVF))定义为:

402 Payment Required

其中

对于所有的 ,自相关函数(autocorrelation function (ACF))定义为:

其中

以上定义都是理想的情况,也就是在时刻 和时刻 均有若干个采样数据,这样才能计算  或者 ,而真实的场景下这一条件却很难实现,因为通常在某一个时间点,只能获得1个采样点的数据。

为了计算真实数据的自协方差和自相关函数,通常假设数据中的依赖结构不随时间变化。也就是说我们假设

402 Payment Required

也就是说在这个假设下,影响协方差的唯一因素是两个时间序列中随机变量的距离 ,这个距离通常称为滞后lag

因此,唯一需要计算的是自协方差集合:

402 Payment Required

在这种情况下,自相关函数变为

以上计算方式的前提是假设数据中的依赖结构不随时间变化,协方差不依赖于具体的位置 ,只依赖于滞后 。

Estimating the autocorrelation function

对于时间序列数据,自协方差和自相关函数测量的是单个时间序列 与其滞后lag之间的协方差/相关性。这里给出,以及 时自协方差及自相关函数的计算过程。

lag=0

在滞后 0 (lag=0)处样本的自协方差函数定义为 ,它是 与 之间的协方差。根据上面的公式,计算方式为

因此,滞后 0 处的样本自协方差函数是样本方差。类似地,滞后0处的自相关性为

402 Payment Required

lag=1

在滞后 1(lag=1)处的样本自协方差函数是时间序列 和 协方差。它是序列与自身移动一个时间点序列的协方差,根据以上公式,协方差和自相关系数计算方式为

402 Payment Required

其中

402 Payment Required

是后 个观测值;

在实际应用中,通常假设前 n-1 个观测值的均值和方差等于最后 n-1 个观测值的均值和方差,这样可以简化上述表达式。此外,对于协方差公式,使用除数 n 而不是无偏 n-2。显然,当 n 很大时,改变除数对计算几乎没有实际影响。

lag=

时间序列的样本自协方差函数 (ACVF)定义为:

402 Payment Required

样本自相关函数 (ACF) 定义为

以下链接中找到有助于理解自协方差和自相关函数的交互式示例。

https://shiny.maths-stats.gla.ac.uk/gnapier/Time_Series_ACF/shiny.maths-stats.gla.ac.uk/gnapier/Time_Series_ACF/

Correlogram图的解释

Correlogram讲自相关函数的计算结果作为纵轴,将滞后 作为横轴的一种图。可以很直观的看出时间序列不同lag之间的相关性。Correlogram会告诉时间序列分析师很多关于时间序列的信息,包括趋势的存在、季节性变化和短期相关性。这里用一些例子来说明。

Example - purely random data

考虑由纯随机过程 生成的时间序列,它没有趋势、季节性或短期相关性。原始数据和自相关图如下所示:

  • 当 时, ,因为它是序列与其自身的相关性,通常忽略该值。

  • 对于没有相关性的纯随机序列,通常在滞后 0 处等于 1,但在其他滞后处没有明显的相关性证据。

Example - short-term correlation

没有趋势或季节性但具有短期相关性的时间序列数据如下图所示,并且在前几个滞后时具有显着正的自相关,随后在较大滞后时值接近零。

Example - alternating data

没有趋势或季节性但在大值和小值之间交替的时间序列数据显示下图中,并且在奇数滞后时具有负自相关,在偶数滞后时具有正自相关。随着滞后的增加,自相关越来越接近于零。

Example - data with a trend

具有趋势的时间序列数据如下图所示,并且在滞后偏大时仍然具有正自相关。如果趋势随时间下降,则会观察到相同的相关图。

Example - data with a seasonal effect

具有季节性影响的时间序列数据如下图所示,并且在相关图中具有规则的季节性模式。

Example - data with a trend and a seasonal effect

具有趋势和季节性影响的时间序列数据显示在下图中,并且在相关图中具有规则的季节性模式,由于趋势的存在,相关图通常具有正值。

平稳性分析

严格平稳
strictly stationary or strongly stationary

严格平稳是一种非常苛刻的条件,给定时序过程 ,对于所有的 以及值 ,如果联合分布  与 相同,则该序列是严格平稳的。换句话说,换句话说,将序列的时间原点移动 对其联合分布没有影响。

当 ,严格平稳意味着对于所有的 ,都有  。这也说明时间序列的均值和方差为常数,即

和 , 当 ,严格平稳意味着对于所有的 ,都有

402 Payment Required

联合分布只取决于滞后

这反过来意味着理论协方差和相关函数只取决于滞后而不是原始位置。

严格平稳是非常严格的,而真实过程很少符合。一般只有纯粹的随机过程严格平稳,因此使用的更多的是弱平稳。

弱平稳

weakly stationary

给定时序过程  ,如果该时间序列过程是弱平稳的的,那么它需要满足以下条件:

  1. 均值是常数和有限的,即

  2. 方差是常数和有限的,即

  3. 自协方差和自相关函数仅取决于滞后 ,即 以及

    402 Payment Required

严格平稳性和弱平稳性之间的区别在于,后者仅假设前两个矩(均值和方差)随时间是恒定的,而前者假设较高的矩也是恒定的。

Example

定义一个随机游走过程 ,,且

其中 是均为为 0 且方差为 的随机过程。那么 是非平稳的。因为

这说明方差是随时间 变化的。

作者:daydaymoyu
来源:https://zhuanlan.zhihu.com/p/424609116
参考:https://bookdown.org/gary_a_napier/time_series_lecture_notes/ChapterOne.html#time-series-modelling

推荐阅读

Python预处理时间序列数据的方法汇总用 SQL 做数据分析的十大常用功能,附面试原题解答!!7种最常用数据分析思维,解决95%的分析难题【Python自动化办公】分享几个好用到爆的模块,建议收藏!

分析与处理时间序列数据的常用方法总结相关推荐

  1. 时间序列数据和MongoDB:第三部分 - 查询,分析和呈现时间序列数据

    作者:Robert Walters 译者:刘东华 (Martin Liu) 在 时间序列数据和MongoDB中:第一部分 - 简介 我们回顾了您需要了解的关键问题,以了解数据库的查询访问模式.在 时间 ...

  2. python股票相关性分析_python处理时间序列数据股票数据,并进行相关性分析

    import pandas as pd import numpy as np import matplotlib.pyplot as plt fig = plt.figure() #读取数据 stoc ...

  3. 分布滞后线性和非线性模型(DLNM)分析空气污染(臭氧)、温度对死亡率时间序列数据的影响...

    全文下载链接 http://tecdat.cn/?p=23947 分布滞后非线性模型(DLNM)表示一个建模框架,可以灵活地描述在时间序列数据中显示潜在非线性和滞后影响的关联.该方法论基于交叉基的定义 ...

  4. mongodb数据合并设计_「时间序列数据」和MongoDB(二)-模式设计最佳实践

    在上一篇博客文章时间序列数据与MongoDB:第一部分-简介中,我们介绍了时间序列数据的概念,然后介绍了一些可以用于帮助收集时间序列应用程序需求的发现问题.对这些问题的回答有助于指导支持大容量生产应用 ...

  5. 「时序数据库」时间序列数据与MongoDB:第一部分-简介

    时间序列数据正日益成为现代应用的核心--比如物联网.股票交易.点击流.社交媒体等等.随着批量系统向实时系统的转变,对时间序列数据的有效捕获和分析可以使组织能够更好地检测和响应事件,领先于竞争对手,或提 ...

  6. R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列...

    原文链接:http://tecdat.cn/?p=26897 风险价值 (VaR) 是金融风险管理中使用最广泛的市场风险度量,也被投资组合经理等从业者用来解释未来市场风险(点击文末"阅读原文 ...

  7. 横截面数据、时间序列数据、面板数据

    面板数据(Panel Data)是将"截面数据"和"时间序列数据"综合起来的一种数据类型.具有"横截面"和"时间序列"两 ...

  8. 分析时间序列数据的六个图表

    本文在 Python 中用箱线图.傅里叶变换.熵.自相关和 PCA 分析时间序列数据.数据可视化是任何数据相关项目中最重要的阶段之一.根据数据可视化的对象,有: 1.数据可视化报告结果. 2.数据可视 ...

  9. 时间序列数据的截尾和拖尾分析(Python实现)

    时间序列数据的截尾和拖尾分析(Python实现) 在时间序列分析中,经常需要对数据进行截尾和拖尾处理.截尾指将时间序列的极值部分进行裁剪,而拖尾则是将长尾部分进行平滑处理,以缩小序列范围.去除噪声和提 ...

最新文章

  1. html js 做的小游戏,用js做一个小游戏平台 (一)
  2. pandas中loc、iloc与ix的用法比较
  3. silverlight + wcf(json格式) + sqlserver存储过程分页
  4. *关于C++堆和栈的理解
  5. 单位阶跃信号是周期信号吗_直流散热风扇的信号你知道如何控制吗?
  6. Vue源码分析 - compile.js
  7. 【转】我的opengl编程学习(二)(混合、深度测试、雾化、
  8. Fluent NHibernate other example
  9. LINUX下载maven/mvn
  10. 20200623每日一句
  11. 坚持练字一年是什么样的体验?
  12. 微信小程序直接打开第三方app,如何实现?
  13. 求闰年的c语言程序函数,c语言闰年(闰年的算法c语言程序)
  14. 电脑图片格式怎么批量转换jpg?几个小妙招轻松转换
  15. 7-16 新浪微博热门话题 (30 分)
  16. 微信扫码登陆或注册设计流程
  17. python 三维数据绘制等高线_python密度与等高线绘制,Python,和,轮廓图,Matplotlib,详解...
  18. 第 35 届信息学奥林匹克竞赛(NOI 2018)二试赛题
  19. Arp欺骗攻击的另类应用之屌丝泡妞记
  20. continue在while循环的使用,禁忌

热门文章

  1. springboot集成IKAnalyer分词工具
  2. 计算机图形学考试题及答案_《计算机图形学》模拟试题答案
  3. 360全景交互式三维模型panolens.js 实现
  4. 【如何让图片自适应盒子大小】
  5. Surprising
  6. Java实现矩阵对角线元素之和
  7. 天气预报js调用代码(QQ,新浪,265)
  8. 阿里+中科院提出:将角度margin引入到对比学习目标函数中并建模句子间不同相似程度...
  9. 11-【git】git显示信息(60个Incoming Commits 和 5个Outgoing Commits)
  10. 免费的高效视频会议系统 你也可以拥有