1

我使用一个 VAR(1) 模型,其中有两个变量 (f,m),每个变量有 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
4

1 回答 1

1

如果您查看包手册,则清楚地写明测试分布为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(lag=2))=82,n*=36 (4 个方程,每个方程有 9 个参数)。所以,df1=2*1*3=6 和 df2=4*82-36=292

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

于 2013-09-06T21:52:55.283 回答