# [R-sig-finance] Puzzled on a granger causality situation

Achim Zeileis Achim.Zeileis at wu-wien.ac.at
Thu Aug 11 13:21:06 CEST 2005

```On Thu, 11 Aug 2005 10:58:46 +0530 Ajay Narottam Shah wrote:

> This is not really an R question, but it will be great if someone can
> help me understand the situation it will be great. :-)
>
> I am doing a simple granger causality test in a bivariate setting,
> with two variables named "fii" and "rM".
>
> On one hand, when I use grangertest() from lmtest, I get:
>
>       Model 1: fii ~ Lags(fii, 1:5) + Lags(rM, 1:5)
>       Model 2: fii ~ Lags(fii, 1:5)
>         Res.Df  Df      F  Pr(>F)
>       1    634
>       2    639   5 2.5439 0.02718 *
>
>       Model 1: rM ~ Lags(rM, 1:5) + Lags(fii, 1:5)
>       Model 2: rM ~ Lags(rM, 1:5)
>         Res.Df  Df      F Pr(>F)
>       1    634
>       2    639   5 1.2481 0.2850
>
> which seems to suggest that `rM' does granger-cause `fii' but not the
> over way around.

Yap.

> But, when I look at OLS estimates of a model explaining `rM', I get
> something different. I am using the variable names like `rM.l2' for
> "rM lagged by 2", and so on.
>
>       Call:
>       lm(formula = rM ~ rM.l1 + rM.l2 + rM.l3 + rM.l4 + rM.l5 + fii.l1
>       +
>           fii.l2 + fii.l3 + fii.l4 + fii.l5)
>
>       Residuals:
>            Min       1Q   Median       3Q      Max
>       -11.0345  -0.7043   0.1124   0.8122   8.1185
>
>       Coefficients:
>                     Estimate Std. Error t value Pr(>|t|)
>       (Intercept)  8.914e-02  6.871e-02   1.297  0.19499
>       rM.l1        1.199e-01  4.034e-02   2.972  0.00307 **
>       rM.l2       -1.618e-01  4.077e-02  -3.969 8.03e-05 ***
>       rM.l3        5.857e-02  4.124e-02   1.420  0.15601
>       rM.l4        7.337e-02  4.070e-02   1.803  0.07192 .
>       rM.l5       -4.726e-02  4.065e-02  -1.163  0.24546
>       fii.l1       3.785e-04  1.874e-04   2.019  0.04389 *
>       fii.l2       8.979e-05  1.909e-04   0.470  0.63822
>       fii.l3      -6.184e-05  1.890e-04  -0.327  0.74366
>       fii.l4       1.075e-04  1.902e-04   0.565  0.57218
>       fii.l5      -2.272e-04  1.858e-04  -1.223  0.22186
>       ---
>       Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
>       Residual standard error: 1.388 on 634 degrees of freedom
>       Multiple R-Squared: 0.05906,	Adjusted R-squared: 0.04422
>       F-statistic:  3.98 on 10 and 634 DF,  p-value: 2.707e-05
>
> Here I see that the coefficient of fii.l1 is teetering on the edge of
> significance (t=2.019).
>
> My question is: Why is it that grangertest(), which is a joint test
> of fii.l1=fii.l2=fii.l3=fii.l4=fii.l5=0, giving a different answer
> from just looking at the coefficient fii.l1?

Because you ask a different question and you have to know whether this
question makes sense. In sloppy words: you want to know whether lag 1 is
significant given that lag 2-5 remain in the model even if they are
non-significant.
That lag 1-5 are not jointly significant is not very surprising given
that lag 2-5 seem to be clearly non-significant.

> Finally, an R question: in the context of lm(), how does one do a test
> of a set of general linear restrictions?

See linear.hypothesis() in package car.
Z

```