点击上方“Deephub Imba”,关注公众号,好文章不错过 !
时间序列是按时间排序的一系列观察或测量。在谈论时间序列时,首先想到通常是股票价格。其实时间序列无处不在,一个地理位置的年降雨量、超市产品的日销售额、工厂的月耗电量、化学过程的每小时测量值都是时间序列的例子。
时间序列分析是数据科学的一个基础领域,具有广泛的应用。如果能够成为该领域的专家,那么获得数据科学家工作的机会可能会大大增加。
在本文中,我们将介绍时间序列分析中 5 个必须了解的术语和概念。
确定性和随机过程
我们通过区分确定性和随机过程来开始我们的讨论。
确定性过程(deterministic processes)中的时变值可以计算出来。例如,两年后你的储蓄账户里有多少钱可以通过初始存款金额和利率来计算(我们不在确定性过程中讨论随机性,例如彩票中奖、突发事件等)。
另一方面,随机过程(stochastic processes)是基于随机性的。我们不能在一个随机过程中计算未来的值,但我们可以讨论未来值在一个范围内的概率。
加州2022年的降雨量有90%的可能达到21英寸。我的假设是基于加州降雨量的概率分布,当然,我的假设也有随机性。
在这个意义上,随机过程可以被认为是按时间顺序排列的随机变量的集合。可以理解为,时间序列就是随机过程的实现。
平稳性
我们刚刚将时间序列定义为随机过程的实现。平稳性(Stationarity)意味着产生时间序列的过程的统计性质不会随时间而改变。
在平稳的时间序列中,我们不会观察到均值或方差的系统变化。考虑我们从平稳时间序列中取两个区间,如下所示:
- 从时间 t 到时间 t N 的 N 个观察
- 从时间 t k 到 t N k 的另外 N 个观察
这两个区间的统计性质非常相似。在这两个区间的平均值和变异量之间没有系统的差异。
因此,对于平稳时间序列不会具有
- 季节性
- 趋势
- 周期性波动
下图显示了一个平稳的时间序列。这些值可能是由随机噪声产生的,但我们没有观察到一个趋势或季节性。
下图显示了一个非平稳时间序列。我们可以清楚地观察到增加的趋势。
自协方差函数
在解释自协方差函数(Autocovariance function)之前,我们应该首先了解协方差是什么意思。
协方差是两个随机变量之间线性相关性的度量。它比较两个随机变量与其平均值(或预期)值的偏差。
随机变量X和Y的协方差公式:
如果 X 和 Y 的值沿相同方向变化(即它们都增加或减少),则它们之间的协方差将为正。
在统计学中,特定时间序列或者连续信号Xt的自协方差是信号与其经过时间平移的信号之间的协方差。
听起来很难理解,下面我们进行解释,回想一下时间序列是一个随机过程的实现,它可以定义为一个随机变量序列(X₁,X₂,X₃,...)。
假设我们有一个平稳的时间序列,让我们从这个时间序列中取两个随机变量:
代码语言:javascript复制 Xₜ
Xₜ ₊ ₖ
k 是这两个随机变量之间的时间差。这两个随机变量之间的自协方差函数为:
自协方差函数仅取决于时间差(即 k 的值),因为我们假设是平稳的。平稳时间序列的属性不会随着时间的推移而改变。
cₖ 是滞后 k 处的自协方差函数的估计。
换句话说,这个时间序列的以下部分的属性是相同的。
- 从 Xₜ 到 Xₜ ₊ ₖ
- 从 Xₜ ₊ ₙ 到 Xₜ ₊ ₙ ₊ ₖ
自协方差系数
我们现在已经了解了自协方差函数。下一步是在时间序列分析中非常重要的自协方差系数(Autocovariance coefficients)。
不同时滞的自协方差系数定义为:
对于有限的时间序列,不能精确地计算自协方差函数,因此我们计算一个估计,cₖ,如下所示:
其中:x_hat值是样本平均值。
比如我们想要计算滞后5的时间序列的自协方差系数有50个值(k=5和N=50)。
X₁vs X₆,X₂vs X₇,…,X₄₀vs X₄₅。然后把所有组合的总和除以50。
我们可以很容易地使用R中的acf程序计算中的自协方差系数。
让我们首先创建一个具有50个值的随机时间序列。
代码语言:javascript复制random_time_series <- ts(rnorm(50))
plot(random_time_series)
自协方差系数计算方法如下:
代码语言:javascript复制acf(random_time_series, type="covariance")
自相关函数(ACF)
自协方差系数的值依赖于时间序列中的值。不同时间序列的自协方差系数之间没有统一的标准。我们可以使用的是自相关函数(ACF),度量同一序列在不同时刻的取值之间的相关程度。
例如:滞后k时的自相关系数可计算如下:
我们将滞后 k 处的自协方差系数除以滞后 0 处的自协方差系数。
类似地,自相关系数的估计可以计算如下:
自相关系数的值始终介于 -1 和 1 之间。
在 R 中,我们也可以使用 acf 来计算自相关系数。
代码语言:javascript复制acf(random_time_series)
自相关系数总是从 1 开始,因为 C₀ / C₀ 等于 1。
蓝色虚线代表显著性水平( significance levels) 正如我们在图中观察到的,不同时间滞后之间的相关值非常低,因为我们随机生成了这些数据。
因此 :ACF 图也称为相关图(correlogram)。
总结
时间序列分析在数据科学中被广泛应用。我们通过涵盖5个基本术语和概念来介绍时间序列分析。
最后我们再对自相关做一个简单的解释,自相关的英文:Autocorrelation,最初看到这个词可能看不出什么含义,但是如果把它理解成 ”序列相关“就很好理解了,它是一个信号与其自身在不同时间点的互相关系度量。更通俗一点的说它就是在一个序列中两次观察值之间的相似度对它们之间的时间差的函数。我们可以用它来找到重复模式(如被噪声掩盖的周期信号,例如音乐的节拍)。找到这些模式我们就可以对这些时域信号。做更深入的分析和处理了。
作者:Soner Yıldırım