我对Granger因果关系不太了解,希望能得到关于理解/解释Python statsmodels结果的建议。我构建了两个数据集(带噪声的正弦函数移位)。
我将它们放入一个“数据”矩阵中,其中信号1作为第一列,信号2作为第二列。然后我使用以下方式运行测试:
granger_test_result = sm.tsa.stattools.grangercausalitytests(data, maxlag=40, verbose=True)`
结果表明,在最高F检验值方面,最佳滞后期为1。
Granger Causality
('number of lags (no zero)', 1)
ssr based F test: F=96.6366 , p=0.0000 , df_denom=995, df_num=1
ssr based chi2 test: chi2=96.9280 , p=0.0000 , df=1
likelihood ratio test: chi2=92.5052 , p=0.0000 , df=1
parameter F test: F=96.6366 , p=0.0000 , df_denom=995, df_num=1
然而,最能描述数据最佳重叠的滞后似乎约为25(在下面的图中,信号1已向右移动了25个点):
Granger Causality
('number of lags (no zero)', 25)
ssr based F test: F=4.1891 , p=0.0000 , df_denom=923, df_num=25
ssr based chi2 test: chi2=110.5149, p=0.0000 , df=25
likelihood ratio test: chi2=104.6823, p=0.0000 , df=25
parameter F test: F=4.1891 , p=0.0000 , df_denom=923, df_num=25
我显然在这里误解了一些东西。为什么预测滞后与数据中的变化不匹配呢?
另外,有人能向我解释一下为什么大多数滞后值的P值如此之小,以至于可以忽略不计吗?只有滞后大于30时它们才开始显示为非零。
感谢您所提供的任何帮助。