如何在因果关系中得到df2()在R中进行格兰杰检验

时间:2013-09-06 20:58:29

标签: r time-series

我使用带有两个变量(f,m)的VAR(1)模型,每个变量有59个观测值; 我已经看过R帮助和几本关于这个主题的书籍,但无法想象df2 = 108

library(vars)
var.causal.m <- causality(ajustVAR1FM, cause = "m")
> var.causal.m
$Granger

    Granger causality H0: m do not Granger-cause f

data:  VAR object ajustVAR1FM 
F-Test = 5.9262, df1 = 1, df2 = 108, p-value = 0.01656

1 个答案:

答案 0 :(得分:1)

如果您看到包manual,则会清楚地写出测试分布为F(pK1k2, KT-n*),其中K = k1 + k2且n *等于上述VAR中的参数总数( p)(包括确定性回归量)。此外,对于测试,内生变量yt的向量被分成两个子向量y1t和y2t,其中维度为(K1×1)和(K2×1),其中K = K1 + K2。

您还可以在控制台中键入causality并查看以下内容:

df1 <- p * length(y1.names) * length(y2.names)
  df2 <- K * obs - length(PI)

示例:使用加拿大数据

library(vars)
var.2c <- VAR(Canada, p = 2, type = "const") 
causality(var.2c, cause = "e") 
> dim(Canada)
[1] 84  4



Causality(var.2c, cause = "e")
$Granger

Granger causality H0: e do not Granger-cause prod rw U

data:  VAR object var.2c 
F-Test = 6.2768, df1 = 6, df2 = 292, p-value = 3.206e-06

原因变量是1所以k1 = 1,k2 = 3(4-1)其中4是变量总数,T是有效观测数(这里是84-2(滞后= 2))= 82,n * = 36(4个方程式,每个9个参数)。所以,df1 = 2 * 1 * 3 = 6而df2 = 4 * 82-36 = 292

注意: 在你的情况下滞后p = 1,n * = 8(你估计两个模型,每个模型有4个参数(我怀疑你也有趋势所以它应该是4),obs(有效59-1(滞后p = 1))= 58,k1 = 1,k2 = 1,K = 2.因此,df1 = 1 * 1 * 1 = 1,df2 = 2 * 58-8 = 108。