滚动格兰杰因果关系

时间:2015-07-13 18:04:19

标签: r

我在R中使用MSBVAR包来计算两个变量之间的Granger因果关系。数据和命令与包中使用的相同:

data(IsraelPalestineConflict)
granger.test(IsraelPalestineConflict, p=6)

它给出了以下结果:

              F-statistic  p-value
p2i -> i2p    17.63100     0.000000e+00
i2p -> p2i    10.91235     7.134737e-12

我想对此函数应用循环/ rollapply,并希望将结果保存在文件中。我在看过Rollapply的答案之后尝试过这样的事情,但因为我是R的新手,所以不知道如何让它发挥作用。

rollapply(zoo(IsraelPalestineConflict),width=1275,
          FUN = function(t) 
          { t = granger.test(IsraelPalestineConflict, p=6); 
          },
          by.column=FALSE, align="right")

但它给出了相同的结果,第一列被年份取代,我不知道如何用rollapply保存F统计量和P值的结果。

             F-statistic  p-value
2003.8077    17.63100     0.000000e+00
2003.8269    10.91235     7.134737e-12

请求答复。

1 个答案:

答案 0 :(得分:0)

也许你想要这个:

granger.test.c <- function(x) c(granger.test(x, p = 6))
rollapplyr(IsraelPalestineConflict, 1275, granger.test.c, by.column = FALSE )

这为p = 2,3,4,5:

创建了上面的列表
granger.test.c <- function(x, p) c(granger.test(x, p = p))
p <- 2:5
roll <- function(p, DF) rollapplyr(DF, 1275, granger.test.c, by.column = FALSE, p = p )
L <- lapply(p, roll, DF = IsraelPalestineConflict)
names(L) <- p