📜  自相关的类型

📅  最后修改于: 2022-05-13 01:58:09.219000             🧑  作者: Mango

自相关的类型

自相关:

正如我们在本文中所讨论的,自相关被定义为对给定时间序列与该时间序列在连续时间段内的滞后版本之间相似程度的度量。自相关测量时间序列与该时间序列在不同时间间隔的滞后版本之间的相似程度。

自相关函数:

假设我们有一个时间序列 {X t } ,其均值如下:

\mu = E\left [ X_t \right ]

和自协方差函数



\gamma_x\left ( t+k, t \right ) = Cov\left ( X_{t+k}, X_t \right ) \, = E\left [  \left ( X_{t+k}- \mu_{t+k} \right )\left ( X_t -\mu_t \right )\right ]


在 t=0 时,

\gamma_x\left (k, 0\right ) = \gamma_x\left (k\right )

自相关函数定义为:



\rho_x\left ( k \right ) = \frac{\gamma_x\left (k\right )}{\gamma_x\left (0\right )} = Corr\left ( X_{t+k}, X_t \right )


自相关的值在完全负自相关的 -1 和完全正自相关的 1 之间变化。接近 0 的值称为无自相关。

正自相关:



当滞后于 k 的时间序列的两个值之间的给定符号的错误后跟相同符号的错误时,就会发生正自相关

Corr\left ( X_{t+k}, X_t \right ) > 0 \,for\, k > 0

下面是表示滞后 = 1 处正自相关的数据集图:

负自相关:

当滞后于 k 的时间序列的两个值之间的给定符号的错误后跟不同符号的错误时,就会发生负自相关

Corr\left ( X_{t+k}, X_t \right ) < 0 \,for\, k > 0

下面是表示滞后 = 1 处负自相关的时间序列图:



强自相关

如果自相关图类似于以下图,我们可以得出结论,数据具有很强的自相关性:

自相关图在滞后 1 处以非常高的自相关开始,但慢慢下降,直到它变为负值并开始显示增加的负自相关。这种类型的模式表明很强的自相关性,这有助于预测未来的趋势。

下一步是估计自回归模型的参数:

 Y_{i} = A_0 + A_1*Y_{i-1} + E_{i}

最小二乘拟合的随机性假设适用于模型的残差。也就是说,即使原始数据表现出非随机性,Y i与 Y i-1拟合后的残差应该会导致随机残差。

弱自相关

如果自相关图在滞后 = 1 处与下图相似,我们可以得出结论,数据具有弱自相关:



滞后 =1 处的滞后图

上图显示了在滞后=1 处存在一些自相关,因为如果没有自相关,则该图将类似于滞后=1 的随机值的图

从上图可以得出结论

  • 具有中度正/负自相关的基础自回归模型。
  • 异常值很少。

上面的弱自相关图有一些自回归模型,可以用这样的形式表示

Y_(i+1) = A_0 + A_1*Y_(i) + random-error

在 Y i =0 时,我们可以得到估计量的残差。

Y_(i+1) = A_0 + random-error

由于 Y i+1和 Y i作为它们的轴,因此很容易对滞后图进行估计。



执行

  • 在这个实现中,我们将研究如何生成相关图和滞后图。为此,我们将使用闪烁数据集和一些随机生成的样本。

python3
# Necessary imports
import numpy as np
from numpy.random import random_sample
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.graphics.tsaplots import plot_acf
 
# Generate Autocorrelation plot at different lags
# with a given level of significance.
weak_Corr_df = pd.read_csv('flicker.csv', sep ='\n', header=None)
plot_acf(weak_Corr_df, alpha = 0.05)
 
# Generate Lag plots for a particular lag value
pd.plotting.lag_plot(weak_Corr_df, lag = 1)
 
# Generate 200 random numbers and plot lag plot and autocorrelation plot for that
random_Series = pd.Series(random_sample(200))
pd.plotting.lag_plot(random_Series, lag = 1)
plot_acf(random_Series, alpha = 0.05)


  • 对于 Flicker 数据集,图如下:

自相关闪烁数据

闪烁数据的滞后图

  • 对于随机正态数据集,图如下

自相关图

滞后 = 1 时随机数据的滞后图