时间序列 介绍(一)「建议收藏」

时间序列 介绍(一)「建议收藏」引言DT时代,数据的重要性已经不必再强调了。最近几年深度学习,机器学习,人工智能炙手可热,各行各业的人,无论是单纯的蹭热度也好,还是真的想做一些改变,都在往这三个概念上靠,但我相信,绝大部分人是真

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

引言

DT时代,数据的重要性已经不必再强调了。

最近几年深度学习,机器学习,人工智能炙手可热,各行各业的人,无论是单纯的蹭热度也好,还是真的想做一些改变,都在往这三个概念上靠,但我相信,绝大部分人是真的希望借着人工智能的‘好风’做出些成绩的。而这些所谓的‘高科技’对数据却又是强依赖的。 那么对数据深入了解,做到知己知彼,可以说是很有必要的。

数据中,有一种数据叫时间序列数据,是很重要的一种数据。这种数据在各行各业都占有很大的比重。目前,在金融界,时间序列的研究是最热的。没办法,人家那可是最直接的真金白银。而其他行业对此研究可就有点跟不节奏了。希望接下来的系列文章对大家能有所帮助。

1.时间序列分解

时间序列是按照时间次序排列的随机变量序列。如股价变动,CPU使用率波动等等。下图是某地历史上的降雨量时间序列图:(是不是感觉和你熟悉的数据样子差不多?)
时间序列 介绍(一)「建议收藏」

任何时间序列经过合理的函数变换后,都可以被认为是由三个部分叠加而成的,即:趋势项部分,周期项部分,以及随机噪声项部分。

用公式表示:

\[X_t = T_t + S_t + R_t, t = 1,2,3,… \]

其中 T是趋势项,S是周期项,R是随机项,X则是时间序列项。t代表的是时间。

研究时间序列的最主要目的当然是预测。 而从时间序列中把这三个部分分解出来是序列分析、预测的的首要任务,这一过程被称为时间序列分解(Time Series Decomposition, TSD)。

1.1 分解时间序列

趋势项是时间序列中总体的变化趋势,是缓慢的,长期的。一般先把趋势项分离出来,再依次分离周期项、随机项。其分解方式有以下几种:

1.1.1 分段常数法

这是最简单最直接的方法,比如,把股票的月均价做为股价的趋势变化。然后用时间序列减掉趋势项,剩下周期项与随机项。可再以周均值或日均值做为周期项,再减掉即剩下随机项了,也即随机项的估计了。

1.1.2回归趋势

另一种比较简单的趋势拟合即是采用线性回归。从趋势项的角度,可简单地认为时间序列与时间有简单的线性关系:

\[X_t = a + bt + \epsilon_t, \ \ t = 1,2,3,… \]

或者可以认为是二次曲线的趋势:

\[X_t = a + bt + ct^2 + \epsilon_t, \ \ t= 1,2,… \]

当然,一说到回归,选择也就多了起来,不必拘泥某一种形式,根据相关数据选择最优的模型是关键。

1.1.3 逐步平均法

可理解为在时间维度上的分段平均法。

1.2 平稳序列

可以看到,时间序列中的趋势项,以及周期项是比较容易提取的,其中应用到的知识也是比较长规,甚至可以说是简单。当剔除趋势项以及周期项,时间序列往往表现出某种平稳波动性,即平稳序列。我们之所以研究时间序列,或者说时间序列可研究,是因为我们认为时间序列数据是蕴含数据的变化信息的。基于此,我们才可以在知道历史数据时,对未来做出预测。而平稳性是要满足的一个条件。(如果不满足怎么办?那我们后面会谈到如何将非平稳的变成平稳序列。如果变不成呢?那就没辙了。

1.2.1基本概念

在讲平稳序列之前,我们先来说说基本概念:

随机变量序列\(\{Y_t: t= 0,\pm1,\pm2,…\}\) 称为一个随机过程,并以之作为观测时间序列模型。已知该过程完整的概率结构是由所有 Y 的有限联合分布构成的分布族决定的。大家不要被其中的关于随机过程的相关名词吓到,没必要,你只要知道他是以数学的方式来描述时间序列就够了。我只需关注下面的一些概念就可以了。

对于随机过程:\(\{Y_t: t= 0,\pm1,\pm2,…\}\)

  1. 均值函数:

    \[\mu_t = E(Y_t), t= 0,\pm1,\pm2,… \]

    \(\mu_t\) 恰是过程在t时刻的期望值,一般地,不同时刻\(\mu_t\) 可取不同的值。

  2. 自协方差函数:

    \[\gamma_{t,s} = Cov(Y_t,Y_s), t,s = 0,\pm1,\pm2,… \]

    其中 \(Cov(Y_t,Y_s) = E[(Y_t – \mu_t)(Y_s – \mu_s)] = E(Y_tY_s) – \mu_t\mu_s\)

  3. 自相关函数:

    \[\rho_{t,s} = Corr(Y_t,Y_s), t,s = 0,\pm1,\pm2,… \]

    其中\(Corr(Y_t,Y_s) = \frac{Cov(Y_t,Y_s)}{\sqrt{Var(Y_t)Var(Y_s)}} = \frac{\gamma_{t,s}}{\sqrt{\gamma_{t,t}\gamma_{s,s}}}\)

从上面可以推知:

\[\gamma{t,s} = \gamma{s,t}; \ \ \ \ \ \ \rho_{t,t} = 1 \]

\[\gamma_{t,t} = Var(Y_t);\ \ \ \ \ \ \ \ \ \rho_{t,s} = \rho_{s,t} \]

\[|\gamma_{t,s} \le \sqrt{\gamma_{t,t}\gamma_{s,s}}|; \ \ \ \ \ |\rho_{t,st} \le 1| \]

上面是最最基本的概念了,大家不要被公式吓到,你能看到这篇文章,99% 说明你上过大学,这些充其量也就是高中知识,多一分钟思考,之后的概念才好理解。以后不必要的公式绝不放上来,有用的公式我一定会‘大白话’给大家解释。’冻挖瑞~’

1.2.2随机游动

\(e_1, e_2\), … 为一列独立同分布随机变量序列,简记为\(e_1, e_2,\dots *i.i.d*. 假定 var(\)e_1$) = \(\sigma\), \(Ee_1 = 0\)

按下面的方式给出的序列{\(X_t\):和=1, 2, …},称为随机游动(random walk):

\[\left. \begin{aligned} X_1 & = & \epsilon_1 \\ X_2 & = & \epsilon_1 + \epsilon_2 \\ &\vdots& \\ X_t & = & \epsilon_1+\epsilon_2 + \dots+\epsilon_t \end{aligned} \right\} \]

等价地,(定义\(X_0\)= 0):

\[X_t = X_{t-1} + \epsilon_t, \ t = 1, 2, … \]

即 t 时刻的变量是与(t-1)时刻有关的。

刚可以很得到下面的一些结论:

\[\mu_t = EX_t = E(\epsilon_1 + \epsilon_2 + \dots + \epsilon_t) = 0,\ \ t=1, 2, … \]

\[\gamma_{t,s} = \sum_{i = 1}^t\sum_{j=1}^s cov(\epsilon_i,\epsilon_j) = s\sigma^2, 1 \le s \le t \]

\[\rho_{t,s} = \frac{\gamma_{t,s}}{\sqrt{\gamma_{t,t,}\gamma_{s,s}}} = \frac{s\sigma^2}{\sqrt{t\sigma^2s\sigma^2}} = \sqrt{\frac{s}{t}}, 1\le s\le t \]

这里也就是说,对于满足随机游动的时间序列,它的序列均值是0,方差是一个定值,t,s两时点的数据相关系数只与两者所在时间有关,而与其他无关。

下图是一个随机游动模拟的例子:

时间序列 介绍(一)「建议收藏」

1.2.3 平稳性

接下来,我们就要了解下平稳性的概念了。平稳性可分为严平稳以及宽平稳两种:

  1. 时间序列\(\{X_t : t= 0,\pm1,\pm2,…,\}\) 称为严平稳,若其(联合)概率分布具有推移不变性。即对任意整数\(s\le t\) 及正整数\(n \ge 1\),随机向量\((X_s,X_{s+1},…,X_{s+n})\)\((X_t,X_{t+1},…X_{t+n})\) 具有相同的(联合)概率分布。通俗地说,即随便取两段相同长度的时间序列数据,’看起来‘应该差不多,没有明显区别。

如果在生产生活中碰到严平稳数据应该高兴因为它一定会很好处理,但绝大部分都不符合严平稳的性质。但我们会经常碰到宽平稳数据:

  1. 时间序列\(\{X_t : t= 0,\pm1,\pm2,…,\}\) 称为宽平稳:若其满足如下3条:
  • \(EX_t^2 \le \infty, t=0,\pm1,\pm2,…\)
  • 均值函数为常数,$\mu_t = EX_t =c, t = 0,\pm1,\pm2,… $
  • 自协方差函数\(\gamma_{t,s}\) 只依赖于时间间隔(t-s) (等价地 ( s-t ) ),即:\(\gamma_{t,s} = \gamma_{s,t}, \ \ \ \ \ t,s = 0,\pm1,\pm2,…\)

以后指的平稳性,如无特指,即指的是宽平稳。

1.2.4 两类重要的平稳时间序列

  1. 白噪声

    设时间序列\(\{\epsilon_t: t = 0,\pm1,\pm2,\dots\}\) 满足:

    \[E\epsilon_t = 0, cov(\epsilon_t,\epsilon_s) = \left\{ \begin{aligned} \sigma^2, \qquad t = s && \\ && t,s = 0,\pm1,\pm2,\dots \\ 0 , \qquad t\ne t && \\ \end{aligned} \right. \]

    则称\(\{\epsilon_t\} =\{\epsilon_t: t = 0,\pm1,\pm2,…\}\) 为白噪声,简记为:\(\{\epsilon_t\}\sim WN(0,\sigma^2)\).

    可知对于白噪声:

    \[\gamma_k = \left\{\begin{aligned} \sigma^2, \quad k = 0 &&\\ && k = 0,\pm1,\pm2,…\\ 0, \quad k \ne 0. &&\\ \end{aligned}\right.​ \]

\[\rho_k = \left\{\begin{aligned} 1, \quad k = 0 &&\\ && k = 0,\pm1,\pm2,…\\ 0, \quad k \ne 0. &&\\ \end{aligned}\right. \]

白噪声的结构相对简单,但却是非常重要的,因为它是后面要讲的众多重要模型或序列的‘生成元’。

  1. 随机余弦波:

    这个也是一个重要的平稳时间序列,但可能后面很多讲都见不到,等见到,咱再讲也不迟。

1.3 总结

作为第一讲,我们从整体上了解了什么是时间序列,也讲了很多概念,更用了很多公式,这些是时间序列最最基本的东西,是后面的知识的基础,大家一定把这里的东西‘吃透’,那后面的知识就会比较轻松。

1.4 参考文献:

PS: 接下来基本上都是以下列文献作为参考文献,所以后面将不再罗列出来,除非新加入的文献,请知悉。

1: 何书元. 应用时间序列分析 北京:北京大学出版社,2003

2: Peter J. Brockwell, Rechard A. Davis 著, 田铮等译. 时间序列的理论与方法(第二版).北京:高等教育出版社,2001

3: Jonathon D. Cryer, Kung-Sik Chan 著,潘红宇等译.时间序列分析及应用:R语言(原书第二版).北京: 机械工业出版社,2011

4: Walter Enders 著,杜江;谢志超译. 应用计量经济学:时间序列分析(第二版).北京:高等教育出版社,2006.

5: Ruey S. Tsay 著,王远林等译.金融时间序列分析(第三版)北京:人民邮电出版社,2012.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167892.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • lm opencv 算法_Levenberg–Marquardt算法学习(和matlab的LM算法对比)[通俗易懂]

    lm opencv 算法_Levenberg–Marquardt算法学习(和matlab的LM算法对比)[通俗易懂]回顾高斯牛顿算法,引入LM算法惩罚因子的计算(迭代步子的计算)完整的算法流程及代码样例1.回顾高斯牛顿,引入LM算法根据之前的博文:Gauss-Newton算法学习假设我们研究如下形式的非线性最小二乘问题:r(x)为某个问题的残差residual,是关于x的非线性函数。我们知道高斯牛顿法的迭代公式:Levenberg–Marquardt算法是对高斯牛顿的改进,在迭代步长上略有不同:最…

  • git提交中E325: ATTENTION或E325: 注意 的解决方法

    git提交中E325: ATTENTION或E325: 注意 的解决方法问题引入首先看下图,在git提交、编辑、合并等过程中,如果没有将指令进行完就将git窗口关闭有时会出现这样的界面。原因分析git在指令意外中断时,一般会有一个缓存的机制,它会记住上次中断的问题。在下次进入vim指令时,如果很重要的中断一般会提示你前面有某个操作不当或者没有结束,就出现了上面的窗口。如果不解决就会一直缠着你,以至于出现该窗口后再输入git指令的话一般就不显示在…

  • python七夕表白代码(转载)_2019年倒计时日历

    python七夕表白代码(转载)_2019年倒计时日历520即将来袭~普通人表白,发微信买花程序员表白,用代码给女神画玫瑰,画爱心无线弹窗表白,网页无线弹窗表白第一种:心连心fromturtleimport*color(“black”,”red”)pensize(5)begin_fill()penup()goto(50,50)pendown()right(45)goto(100,0)left(90)fd(120)circle(50,225)penup()goto(0,0)pendown()left(13..

    2022年10月14日
  • arouter实现activity跳转原理

    arouter实现activity跳转原理一、思路分析arouter让我们可以非常简单地实现组件间页面跳转,实现的基本思路是1.在对应的activity上加上注解,通过apt技术来自动生成代码,代码能将activity对应路径和class添加到路由表中;2.通过扫描获取所有类,遍历自动执行步骤1中所生成地代码,从而路由表中有了对应地数据,路由表的数据结构为Map<String,Class<?e…

  • 【《重构 改善既有代码的设计》学习笔记2】重构原则

    【《重构 改善既有代码的设计》学习笔记2】重构原则本篇文章的内容来自《重构 改善既有代码的设计》一书学习笔记整理并且加上自己的浅显的思考总结!上一篇通过一个简单的例子体验了一把重构过程,现在我们需要回过头看一下重构的一些背景、原理和理论。 并思考一下重构的关键原则是什么,以及重构时需要考虑哪一些问题?一、什么是重构1、 重构的定义“重构” 这个词有两种不同的定义!名称形式重…

  • 2分钟读懂UML

    2分钟读懂UML

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号