我使用带有两个变量(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
答案 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。