滞后图
滞后图是一种特殊类型的散点图,其中 X 轴表示数据集,与 Y 轴相比,某些时间单位落后或领先。这些时间单位之间的差异称为滞后或滞后,用k表示。
滞后图包含以下轴:
- 纵轴:Y i代表所有 i
- 横轴:所有 i 的 Y ik ,其中 k 是滞后值
滞后图用于回答以下问题:
- 模型分布:这里的模型分布是指根据滞后图决定数据的形状。以下是滞后图及其原始图的一些示例:
- 如果滞后图是线性的,则底层结构属于自回归模型。
- 如果滞后图是椭圆形,那么底层结构代表一个连续的周期函数,如正弦、余弦等。
- 离群值:离群值是一组数据点,代表分布中的极值
- 数据随机性:滞后图对于检查给定数据集是否随机也很有用。如果数据中存在随机性,那么它会反映在滞后图中,如果滞后图中没有模式。
- 季节性:如果情节中有季节性,那么它会给出一个周期性的 滞后图。
- 自相关:如果滞后图给出线性图,则表示数据中存在自相关,是否存在正自相关或负自相关取决于数据集线的斜率。如果更多的数据集中在滞后图中的对角线上,则意味着存在很强的自相关。
执行
- 在此实现中,我们将使用 NumPy 和 SciPy 库,这些库已预安装在 Colab 中,但可以使用pip install安装在本地环境中。我们将在此实施中使用 GOOGLE 股票价格数据和 Flicker 数据。
Python3
# Import Libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats as sc
# Sine graph and lag plot
time= np.arange(0, 10, 0.1);
amplitude=np.sin(time)
fig, ax = plt.subplots(1, 2, figsize=(12, 7))
ax[0].plot(time, amplitude)
ax[0].set_xlabel('Time')
ax[0].set_ylabel('Amplitude')
ax[0].axhline(y=0, color='k')
amplitude_series = pd.Series(amplitude)
pd.plotting.lag_plot(amplitude_series, lag= 3, ax =ax[1])
plt.show()
# Random and Lag Plot
sample_size=1000
fig, ax = plt.subplots(1, 2, figsize=(12, 7))
random_series= pd.Series(np.random.normal(size=sample_size))
random=random_series.reset_index(inplace=True)
ax[0].plot(random['index'],random[0])
pd.plotting.lag_plot(random[0],lag=1)
plt.show()
# Google Stock and Lag Plot (Strong Autocorrelation)
google_stock_data = pd.read_csv('GOOG.csv')
google_stock_data.reset_index(inplace=True)
fig, ax = plt.subplots(1, 2, figsize=(12, 7))
ax[0].plot(google_stock_data['Adj Close'], google_stock_data['index'])
pd.plotting.lag_plot(google_stock_data['Adj Close'], lag=1,ax=ax[1])
plt.show()
# FLicker Data (Weak Autocorrelation)
df =pd.read_csv('Flicker.DAT', header=None)
df.reset_index(inplace=True)
fig, ax = plt.subplots(1, 2, figsize=(12, 7))
ax[0].plot(df['index'],df[0])
pd.plotting.lag_plot(df[0],lag=1,ax =ax[1])
plt.show()
参考:
- NIST手册