我已经使用下面的代码在我拥有的数据帧上进行了格兰杰因果关系测试。代码可以正常运行并返回我期望的正确结果,但是,我想知道是否可以使用显示因果关系的python在图形中绘制数据?
我尝试使用下面的代码,并成功返回了数据。
print(grangercausalitytests(df[['Number_of_Ethereum_Searches', 'Price_in_USD']], maxlag=1, addconst=True, verbose=True))
答案 0 :(得分:0)
如果您尝试目视检查,则应使用互相关图。这说明了两个时间序列之间的相关强度。
让我们用一个例子来说明。请考虑以下两个变量:
您是否注意到北海米斯佩赫尔地区最热的月份是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()
自相关和部分自相关图(最高温度)
自相关图和局部自相关图(日照时间)
请注意,与日照时间相关的强度如何比最高温度持续更长的时间,这意味着长时间的日光照射会持续影响温度(即,一个是格兰杰引起的)。
希望以上示例对您有所帮助。我建议同时查看互相关和自相关,以便更好地了解数据中Granger因果关系的性质。