我是 Granger Causality 的新手,如果有任何关于理解/解释 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 的滞后,它们才开始显示为非零。
谢谢你提供的所有帮助。