📜  自相关

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

自相关

自相关是对给定时间序列与该时间序列在连续时间段内的滞后版本之间相似程度的度量。它类似于计算两个不同变量之间的相关性,除了在自相关中我们计算同一时间序列的两个不同版本 X t和 X tk之间的相关性。

给定时间序列测量值 Y 1 , Y 2 ,...Y N在时间 X 1 , X 2 , ...X N ,滞后 k 自相关函数定义为:

r_k = \frac{\sum_{i=1}^{N-k}\left ( Y_i - \bar{Y}\right ) \left ( Y_{i+k} - \bar{Y} \right )}{\sum_{i=1}^{N-k}\left ( Y_i - \bar{Y}\right )^2}

+1 的自相关表示完全正相关,-1 表示完全负相关。

用法:

  • 自相关测试用于检测时间序列中的随机性。在许多统计过程中,我们假设生成的数据是随机的。为了检查随机性,我们需要检查滞后 1 的自相关。
  • 为了确定时间序列的过去值和未来值之间是否存在关系,我们尝试在不同值之间进行滞后。

偏相关

在时间序列分析中,偏自相关函数(PACF) 给出了平稳时间序列与其自身滞后值的偏相关,并在所有较短的滞后处对时间序列的值进行回归。它不同于不控制其他滞后的自相关函数。



计算滞后 k 处的 PACF 的公式为:

PACF\left ( T_i, k \right ) = \frac{Cov\left (\left [ T_i|T_(i-1), T_(i-2) ... T_(i-k+1) \right ], \left [  T_(i-k)|T_(i-1), T_(i-2) ... T_(i-k+1)\right ]\right )}{\sigma_{\left [ T_i|T_(i-1), T_(i-2) ... T_(i-k+1) \right ]} * \sigma_{\left [  T_(i-k)|T_(i-1), T_(i-2) ... T_(i-k+1)\right ]}}

其中 T i | T (i-1) , T (i-2) … T (i-k+1)是将多元线性模型拟合到T (i-1) , T (i-2 ) …T (i-k+1)用于预测T i

自相关测试

Durbin-Watson 检验:

Durbin-Watson 检验用于测量回归分析中残差的自相关量。 Durbin Watson 检验用于检查一阶自相关。

Durbin-Watson 检验的假设

  • 误差呈正态分布,均值为 0。
  • 误差是平稳的。

使用以下公式计算测试统计量。

DW = \frac{\sum_{t=2}^{T} \left ( e_t - e_{t-1} \right )^{2}}{\sum_{t=1}^{T}  e_t^{2}}

其中 e t是普通最小二乘法 (OLS) 方法的误差残差。



Durbin-Watson 检验的原假设和备择假设为

  • H 0 :无一阶自相关。
  • H 1 :存在一些一阶相关性。

Durbin Watson 测试的值介于 0 和 4 之间。下表包含值及其解释:

  • 2:无自相关。通常,我们假设 1.5 到 2.5 之间没有相关性。
  • 0- <2:正自相关。它越接近 0,正自相关的迹象就越多。
  • >2 -4:负自相关。它越接近 4,负自相关的迹象就越多。

Python代码实现

# necessary imports
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.stats.stattools import durbin_watson
from statsmodels.regression.linear_model import OLS
from statsmodels.graphics.tsaplots import plot_acf , plot_pacf
  
# Download the google stock last 10 years from Yahoo Finance
goog_stock_Data = pd.read_csv('GOOG.csv', header=0, index_col=0)
goog_stock_Data['Adj Close'].plot()
plt.show()
  
# Plot the autocorrelation for stock price data with 0.05 significance level
plot_acf(goog_stock_Data['Adj Close'], alpha =0.05)
plt.show()
  
# Plot the partial autocorrelation for stock price data with 
# 0.05 significance level
plot_pacf(goog_stock_Data['Adj Close'], alpha =0.05, lags=50)
plt.show()
  
"""
Code for Durbin Watson test
"""
df = pd.DataFrame(goog_stock_Data,columns=['Date','Adj Close'])
  
X =np.arange(len(df[['Adj Close']]))
Y = np.asarray(df[['Adj Close']])
X = sm.add_constant(X)
  
# Fit the ordinary least square method.
ols_res = OLS(Y,X).fit()
# apply durbin watson statistic on the ols residual
durbin_watson(ols_res.resid)

输出:

0.027362481492784512

股价(调整收盘价)数据

  • 在这里,我们可以看到 Durbin-Watson 统计量更接近于 0。因此,与线性模型存在一些正自相关。

不同滞后的自相关图

  • 以上是不同滞后的自相关图。在这里,我们可以看到显着性水平 0.05 存在一些自相关。

不同滞后的偏自相关图

  • 从偏自相关,在这里,我们可以看到对于 0.05 的显着性水平,对于不同的滞后值,存在一些偏自相关。对于滞后 0,100% 偏自相关很明显,但对于滞后 1,偏自相关也非常高。

参考:

  • 统计模型文档