パッケージのマニュアルを見ると、テストはF(pK1k2, KT-n*)
K=k1+k2 であり、n* は上記の VAR(p) のパラメーターの総数に等しい (決定論的リグレッサーを含む)として配布されることが明確に書かれています。さらに、テストのために、内生変数 yt のベクトルは、次元 (K1×1) および (K2×1) (K=K1+K2) を持つ 2 つのサブベクトル y1t および y2t に分割されます。
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 (それぞれ 9 つのパラメーターを持つ 4 つの方程式)。したがって、df1=2*1*3=6 および df2=4*82-36=292
注:あなたの場合、ラグp = 1、n * = 8(それぞれに4つのパラメーターを持つ2つのモデルを推定します(トレンドもあると思われるので、4になるはずです)、obs(有効な59-1(ラグp = 1) ) = 58, k1=1 , k2=1 および K=2. したがって、df1=1*1*1=1 および df2=2*58-8=108.