【问题标题】:Rolling Granger Causality滚动格兰杰因果关系
【发布时间】:2015-07-13 18:04:18
【问题描述】:

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

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 上的过去答案后,我尝试过这样的尝试,但由于我是 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

请您给予好意的答复。

【问题讨论】:

  • 究竟是什么不起作用?您发布的代码是否会导致错误,或者它只是没有产生您期望的输出?请编辑您的问题,以提供有关问题所在的更多详细信息 - 这样更有可能有人可以帮助您解决问题。

标签: r


【解决方案1】:

也许你想要这个:

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

【讨论】:

  • @Grothendieck 尊敬的先生,非常感谢您的回答,我真的很感激。如果可能的话,我只想再问一件事。与您的解决方案一样,我得到四个前进步骤(1275 到 1278)。是否有可能对于每一卷,我可以更改已经存储在另一个 R 对象中的“p”(p
  • @Grothendieck。再次感谢您的帮助。但是,需要您的指导,因为新代码会为每个“p”值运行滚动。我认为我的最后一个 cmets 具有误导性。先生,第一卷应该使用值2,第二卷使用值3,就像这样。尽管可以使用此代码,然后我可以为所需的“p”选择结果,但善意的指导可以减少工作量。最好的祝愿,贾瓦德
  • p 列附加到您的输入并修改传递给rollapply 的函数以使用它。
  • @Grothendieck。尝试了很多,但不知道。先生,请等待您的指导。
猜你喜欢
  • 2017-12-11
  • 2016-06-14
  • 1970-01-01
  • 2021-09-02
  • 2021-10-26
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
相关资源
最近更新 更多