Python格兰杰因果F检验理解

Python Granger Causality F test understanding

我正在为我的固定时间序列尝试格兰杰因果关系。我很难理解它的置信度。

对于例如1:

grangercausalitytests(filter_df[['transform_y_x', 'transform_y_y']], maxlag=15)

gives result:

Granger Causality
number of lags (no zero) 1
ssr based F test:         F=3.7764  , p=0.0530  , df_denom=286, df_num=1
ssr based chi2 test:   chi2=3.8161  , p=0.0508  , df=1
likelihood ratio test: chi2=3.7911  , p=0.0515  , df=1
parameter F test:         F=3.7764  , p=0.0530  , df_denom=286, df_num=1

Granger Causality
number of lags (no zero) 2
ssr based F test:         F=2.1949  , p=0.1133  , df_denom=283, df_num=2
ssr based chi2 test:   chi2=4.4673  , p=0.1071  , df=2
likelihood ratio test: chi2=4.4330  , p=0.1090  , df=2
parameter F test:         F=2.1949  , p=0.1133  , df_denom=283, df_num=2

Granger Causality
number of lags (no zero) 3
ssr based F test:         F=7.5713  , p=0.0001  , df_denom=280, df_num=3
ssr based chi2 test:   chi2=23.2818 , p=0.0000  , df=3
likelihood ratio test: chi2=22.3856 , p=0.0001  , df=3
parameter F test:         F=7.5713  , p=0.0001  , df_denom=280, df_num=3

Granger Causality
number of lags (no zero) 4
ssr based F test:         F=2.3756  , p=0.0523  , df_denom=277, df_num=4
ssr based chi2 test:   chi2=9.8113  , p=0.0437  , df=4
likelihood ratio test: chi2=9.6467  , p=0.0468  , df=4
parameter F test:         F=2.3756  , p=0.0523  , df_denom=277, df_num=4

Granger Causality
number of lags (no zero) 5
ssr based F test:         F=1.4871  , p=0.1941  , df_denom=274, df_num=5
ssr based chi2 test:   chi2=7.7338  , p=0.1715  , df=5
likelihood ratio test: chi2=7.6307  , p=0.1778  , df=5
parameter F test:         F=1.4871  , p=0.1941  , df_denom=274, df_num=5

Granger Causality
number of lags (no zero) 6
ssr based F test:         F=1.2781  , p=0.2675  , df_denom=271, df_num=6
ssr based chi2 test:   chi2=8.0363  , p=0.2355  , df=6
likelihood ratio test: chi2=7.9247  , p=0.2437  , df=6
parameter F test:         F=1.2781  , p=0.2675  , df_denom=271, df_num=6

Granger Causality
number of lags (no zero) 7
ssr based F test:         F=1.7097  , p=0.1067  , df_denom=268, df_num=7
ssr based chi2 test:   chi2=12.6378 , p=0.0814  , df=7
likelihood ratio test: chi2=12.3637 , p=0.0892  , df=7
parameter F test:         F=1.7097  , p=0.1067  , df_denom=268, df_num=7

Granger Causality
number of lags (no zero) 8
ssr based F test:         F=1.4672  , p=0.1692  , df_denom=265, df_num=8
ssr based chi2 test:   chi2=12.4909 , p=0.1306  , df=8
likelihood ratio test: chi2=12.2222 , p=0.1416  , df=8
parameter F test:         F=1.4672  , p=0.1692  , df_denom=265, df_num=8

Granger Causality
number of lags (no zero) 9
ssr based F test:         F=2.0761  , p=0.0320  , df_denom=262, df_num=9
ssr based chi2 test:   chi2=20.0400 , p=0.0177  , df=9
likelihood ratio test: chi2=19.3576 , p=0.0223  , df=9
parameter F test:         F=2.0761  , p=0.0320  , df_denom=262, df_num=9

Granger Causality
number of lags (no zero) 10
ssr based F test:         F=1.8313  , p=0.0556  , df_denom=259, df_num=10
ssr based chi2 test:   chi2=19.7977 , p=0.0312  , df=10
likelihood ratio test: chi2=19.1291 , p=0.0387  , df=10
parameter F test:         F=1.8313  , p=0.0556  , df_denom=259, df_num=10

Granger Causality
number of lags (no zero) 11
ssr based F test:         F=1.8893  , p=0.0410  , df_denom=256, df_num=11
ssr based chi2 test:   chi2=22.6493 , p=0.0198  , df=11
likelihood ratio test: chi2=21.7769 , p=0.0262  , df=11
parameter F test:         F=1.8893  , p=0.0410  , df_denom=256, df_num=11

Granger Causality
number of lags (no zero) 12
ssr based F test:         F=2.0157  , p=0.0234  , df_denom=253, df_num=12
ssr based chi2 test:   chi2=26.5779 , p=0.0089  , df=12
likelihood ratio test: chi2=25.3830 , p=0.0131  , df=12
parameter F test:         F=2.0157  , p=0.0234  , df_denom=253, df_num=12

Granger Causality
number of lags (no zero) 13
ssr based F test:         F=1.8636  , p=0.0347  , df_denom=250, df_num=13
ssr based chi2 test:   chi2=26.8434 , p=0.0131  , df=13
likelihood ratio test: chi2=25.6211 , p=0.0191  , df=13
parameter F test:         F=1.8636  , p=0.0347  , df_denom=250, df_num=13

Granger Causality
number of lags (no zero) 14
ssr based F test:         F=1.5283  , p=0.1013  , df_denom=247, df_num=14
ssr based chi2 test:   chi2=23.9090 , p=0.0470  , df=14
likelihood ratio test: chi2=22.9296 , p=0.0614  , df=14
parameter F test:         F=1.5283  , p=0.1013  , df_denom=247, df_num=14

Granger Causality
number of lags (no zero) 15
ssr based F test:         F=0.9749  , p=0.4823  , df_denom=244, df_num=15
ssr based chi2 test:   chi2=16.4815 , p=0.3508  , df=15
likelihood ratio test: chi2=16.0065 , p=0.3816  , df=15
parameter F test:         F=0.9749  , p=0.4823  , df_denom=244, df_num=15

e.g2:

grangercausalitytests(filter_df[['transform_y_y', 'transform_y_x']], maxlag=15)

it says:
Granger Causality
number of lags (no zero) 1
ssr based F test:         F=70.4932 , p=0.0000  , df_denom=286, df_num=1
ssr based chi2 test:   chi2=71.2326 , p=0.0000  , df=1
likelihood ratio test: chi2=63.6734 , p=0.0000  , df=1
parameter F test:         F=70.4932 , p=0.0000  , df_denom=286, df_num=1

Granger Causality
number of lags (no zero) 2
ssr based F test:         F=47.3519 , p=0.0000  , df_denom=283, df_num=2
ssr based chi2 test:   chi2=96.3771 , p=0.0000  , df=2
likelihood ratio test: chi2=83.1351 , p=0.0000  , df=2
parameter F test:         F=47.3519 , p=0.0000  , df_denom=283, df_num=2

Granger Causality
number of lags (no zero) 3
ssr based F test:         F=33.6081 , p=0.0000  , df_denom=280, df_num=3
ssr based chi2 test:   chi2=103.3450, p=0.0000  , df=3
likelihood ratio test: chi2=88.2665 , p=0.0000  , df=3
parameter F test:         F=33.6081 , p=0.0000  , df_denom=280, df_num=3

Granger Causality
number of lags (no zero) 4
ssr based F test:         F=24.1709 , p=0.0000  , df_denom=277, df_num=4
ssr based chi2 test:   chi2=99.8248 , p=0.0000  , df=4
likelihood ratio test: chi2=85.6260 , p=0.0000  , df=4
parameter F test:         F=24.1709 , p=0.0000  , df_denom=277, df_num=4

Granger Causality
number of lags (no zero) 5
ssr based F test:         F=15.6663 , p=0.0000  , df_denom=274, df_num=5
ssr based chi2 test:   chi2=81.4760 , p=0.0000  , df=5
likelihood ratio test: chi2=71.6615 , p=0.0000  , df=5
parameter F test:         F=15.6663 , p=0.0000  , df_denom=274, df_num=5

Granger Causality
number of lags (no zero) 6
ssr based F test:         F=11.5874 , p=0.0000  , df_denom=271, df_num=6
ssr based chi2 test:   chi2=72.8595 , p=0.0000  , df=6
likelihood ratio test: chi2=64.8565 , p=0.0000  , df=6
parameter F test:         F=11.5874 , p=0.0000  , df_denom=271, df_num=6

Granger Causality
number of lags (no zero) 7
ssr based F test:         F=9.7282  , p=0.0000  , df_denom=268, df_num=7
ssr based chi2 test:   chi2=71.9090 , p=0.0000  , df=7
likelihood ratio test: chi2=64.0753 , p=0.0000  , df=7
parameter F test:         F=9.7282  , p=0.0000  , df_denom=268, df_num=7

Granger Causality
number of lags (no zero) 8
ssr based F test:         F=8.3121  , p=0.0000  , df_denom=265, df_num=8
ssr based chi2 test:   chi2=70.7626 , p=0.0000  , df=8
likelihood ratio test: chi2=63.1365 , p=0.0000  , df=8
parameter F test:         F=8.3121  , p=0.0000  , df_denom=265, df_num=8

Granger Causality
number of lags (no zero) 9
ssr based F test:         F=7.7863  , p=0.0000  , df_denom=262, df_num=9
ssr based chi2 test:   chi2=75.1583 , p=0.0000  , df=9
likelihood ratio test: chi2=66.6028 , p=0.0000  , df=9
parameter F test:         F=7.7863  , p=0.0000  , df_denom=262, df_num=9

Granger Causality
number of lags (no zero) 10
ssr based F test:         F=6.9230  , p=0.0000  , df_denom=259, df_num=10
ssr based chi2 test:   chi2=74.8427 , p=0.0000  , df=10
likelihood ratio test: chi2=66.3278 , p=0.0000  , df=10
parameter F test:         F=6.9230  , p=0.0000  , df_denom=259, df_num=10

Granger Causality
number of lags (no zero) 11
ssr based F test:         F=6.7168  , p=0.0000  , df_denom=256, df_num=11
ssr based chi2 test:   chi2=80.5233 , p=0.0000  , df=11
likelihood ratio test: chi2=70.7452 , p=0.0000  , df=11
parameter F test:         F=6.7168  , p=0.0000  , df_denom=256, df_num=11

Granger Causality
number of lags (no zero) 12
ssr based F test:         F=6.8729  , p=0.0000  , df_denom=253, df_num=12
ssr based chi2 test:   chi2=90.6239 , p=0.0000  , df=12
likelihood ratio test: chi2=78.4393 , p=0.0000  , df=12
parameter F test:         F=6.8729  , p=0.0000  , df_denom=253, df_num=12

Granger Causality
number of lags (no zero) 13
ssr based F test:         F=6.0868  , p=0.0000  , df_denom=250, df_num=13
ssr based chi2 test:   chi2=87.6748 , p=0.0000  , df=13
likelihood ratio test: chi2=76.1718 , p=0.0000  , df=13
parameter F test:         F=6.0868  , p=0.0000  , df_denom=250, df_num=13

Granger Causality
number of lags (no zero) 14
ssr based F test:         F=5.6246  , p=0.0000  , df_denom=247, df_num=14
ssr based chi2 test:   chi2=87.9896 , p=0.0000  , df=14
likelihood ratio test: chi2=76.3759 , p=0.0000  , df=14
parameter F test:         F=5.6246  , p=0.0000  , df_denom=247, df_num=14

Granger Causality
number of lags (no zero) 15
ssr based F test:         F=5.3775  , p=0.0000  , df_denom=244, df_num=15
ssr based chi2 test:   chi2=90.9098 , p=0.0000  , df=15
likelihood ratio test: chi2=78.5443 , p=0.0000  , df=15
parameter F test:         F=5.3775  , p=0.0000  , df_denom=244, df_num=15

从 eg.1 几个滞后,p 值低于 0.05,
所以我可以说 y_x 格兰杰原因 y_y?
来自 eg.2,所有的 p 值都是 0.0000, 所以 y_y 格兰杰原因 x_y?

所以这意味着因果关系是双向的?
如何给出格兰杰因果关系的置信度分数?
F 检验值在这里起作用吗?
在 eg.1 中,所有的 f 检验值都非常低,而 eg.2 中的所有值都非常高。 在这种情况下,我是否可以考虑F检验值得出结论?
如果是这样,那么 F 检验要考虑的重要价值是什么?

TIA

from the eg.1 few lags, p-values are below 0.05, so can I say y_x Granger causes y_y?

根据你的问题,我假设你想将 p 值阈值设置为 0.05。在示例 1 中,对于 number of lags (no zero) 1,当 p 值显示为 p=0.0530 时,这意味着 y_y(第二列)的过去 1 个值(滞后 1)对当前没有统计显着影响值为 y_x(第一列)。对于 number of lags (no zero) 3,当 p 值显示为 p=0.0001 时,这意味着 y_y(第二列)的过去 3 个值(联合)对 [= 的当前值具有统计显着影响43=](第一列)。

from the eg.2, all are the p-values are 0.0000, so y_y Granger causes y_x?

与上述答案类似,在所有情况下,例如 2,p 值 < 0.05,这意味着 y_x(第二列)的过去值对 [=42= 的当前值具有统计显着影响](第一列)。

so it means causation is bidirectional?

这取决于您要解决的问题,典型的假设是因果关系是单向的。从您的结果来看,您似乎最有可能从 y_x 预测 y_y 的值,而不是相反。如果两个输入信号都是具有相似周期性的循环信号,则可以看到 y_y 的过去值与 y_x.

的当前值之间的弱相关性

How to give a confidence score for the Granger Causation? Does F-test value play any role here? In eg.1 all the f-test values are very low and eg.2 all are very high. In this case, can I consider F-test values for arriving a conclusion? if so, then what will be the significant value for F-test to consider?

根据自由度,F 值和 p 值相互关联,因为您使用的是 p 值的阈值,这意味着您正在为 F 值设置阈值。

参考文献:

  1. https://stats.stackexchange.com/questions/476536/interpreting-statsmodel-granger-causality-test-results-ssr-chi2test
  2. source code
  3. Granger causality
  4. f-value calculator