我已经使用下面的代码对我拥有的数据框架运行Granger因果关系测试。代码运行良好,并返回了我期望的正确结果,但是,我想知道是否有可能使用显示因果关系的python在图中绘制数据?
与此类似的是:

我尝试过使用下面的代码,并成功地返回了数据。
print(grangercausalitytests(df[['Number_of_Ethereum_Searches', 'Price_in_USD']], maxlag=1, addconst=True, verbose=True))发布于 2019-05-14 13:26:36
如果您想要直观地检查这一点,那么您应该使用互相关图。这说明了两个时间序列之间相关性的强度。
让我们用一个例子来说明这一点。考虑以下两个变量:
你有没有注意到7月/8月是北半球最热的月份,而最长的一天是6月21日?这是由于一个时间延迟,那里的影响,最大的阳光不会造成最高温度,直到一个月后左右。
如果要绘制一个互相关函数来描述这一点,下面是它的样子(包括代码)。
# 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;
# Set Path
path="directory"
os.chdir(path)
os.getcwd()
# Variables
dataset=np.loadtxt("dataset.csv", delimiter=",")
x=dataset[:,1]
y=dataset[:,0]
plt.xcorr(x, y, normed=True, usevlines=True, maxlags=365)
plt.title("Sunlight Hours versus Maximum Temperature")
plt.show()互相关图

也可以绘制这些自相关( ACF )和部分自相关( PACF )图。
# Autocorrelation
acfx=statsmodels.tsa.stattools.acf(x)
plt.plot(acfx)
plt.title("Autocorrelation Function")
plt.show()
pacfx=statsmodels.tsa.stattools.pacf(x)
plt.plot(pacfx)
plt.title("Partial Autocorrelation Function")
plt.show()
acfy=statsmodels.tsa.stattools.acf(y)
plt.plot(acfy)
plt.title("Autocorrelation Function")
plt.show()
pacfy=statsmodels.tsa.stattools.pacf(y)
plt.plot(pacfy)
plt.title("Partial Autocorrelation Function")
plt.show()自相关图和偏自相关图(最高温度)


自相关图和偏自相关图(阳光时数)


注意,日照时数的关联强度比最高温度持续的时间更长,这意味着长日照时间的影响持续影响温度(即一个是格兰杰引起的另一个)。
希望上面的例子有帮助。我建议同时考虑交叉相关性和自相关性,以便更好地了解数据中格兰杰因果关系的本质。
https://stackoverflow.com/questions/56050578
复制相似问题