如何制作具有一定滞后的两个时间序列的相关图

How to make a correlation plot with a certain lag of two time series

我正在尝试绘制两个时间序列之间的自相关以寻找所需的滞后。 Python statsmodels.graphics.tsaplots 库提供了 plot_acf 用于调查时间序列对自身的滞后影响。

我如何绘制这种滞后相关性来探索影响另一个时间序列的一个时间序列,以了解我应该选择哪个滞后?

澄清一下,由于您正试图调查 两个 不同时间序列之间的相关性,因此您正试图计算 互相关.

没有 "autocorrelation between two time series" 这样的东西 - 自相关是指一个时间序列内跨不同滞后的相关性。

举个例子。假设有人希望检查某个位置的日照时间和最高温度之间的互相关性。此过程受到季节性滞后 - 因此最高温度将滞后于最大日照时间。

数据的互相关图如下:

# Import Libraries
import numpy as np
import pandas as pd
import statsmodels
import statsmodels.tsa.stattools as ts
from statsmodels.tsa.stattools import acf, pacf
import matplotlib as mpl
import matplotlib.pyplot as plt
import quandl
import scipy.stats as ss

import os;
path="directory"
os.chdir(path)
os.getcwd()

#Variables
dataset=np.loadtxt("weather.csv", delimiter=",")
x=dataset[:,0]
y=dataset[:,1]
plt.xcorr(x, y, normed=True, usevlines=True, maxlags=365)
plt.title("Sunlight Hours versus Maximum Temperature")
plt.show()

计算最多 365 个滞后的互相关,这里是数据图:

在这种情况下,最大日照时间和最高气温之间的最强相关性滞后大约 40 天,即这两个时间序列之间最强的相关性是观察到。

对于您的情况,我建议绘制两个时间序列之间的互相关关系以确定是否存在滞后,如果存在则有多少个时间段。

https://whosebug.com/users/7094244/michael-grogan感谢"autocorrelation"和"crosscorrelation"的解释。我宁愿建议将您的情节图像转换为更多 "statistical"。比如我做的这个:

plt.xcorr(TS1, TS2, usevlines=True, maxlags=20, normed=True, lw=2)
plt.grid(True)
plt.axhline(0.2, color='blue', linestyle='dashed', lw=2)
plt.ylim([0, 0.3])
plt.title("Cross-correlation")

Cross-correlation plot image

从图中可以看出,我有一个非常特殊的情况,几乎没有相关性。理想情况下,你应该重写

plt.set_ylim([0, 0.3])

plt.set_ylim([0, 1]) 

查看所有相关边界。而且,通常情况下,>=0.2 的相关性被认为具有统计显着性。