列式granger';R中的s因果检验

列式granger';R中的s因果检验,r,matrix,lm,causality,R,Matrix,Lm,Causality,我有两个不同参数的矩阵:m1和M3,尺寸相同。我想在R中做一个列式grangertest M1<- matrix( c(2,3, 1, 4, 3, 3, 1,1, 5, 7), nrow=5, ncol=2) M3<- matrix( c(1, 3, 1,5, 7,3, 1, 3, 3, 4), nrow=5, ncol=2) 我如何写这篇文章来进行逐列分析,这样一个包含两行(“F[2]”和“Pr(>F[2]”)和两列的矩阵将作为结果返回?这是正确的方向吗 library(lmt

我有两个不同参数的矩阵:m1和M3,尺寸相同。我想在R中做一个列式grangertest

M1<- matrix( c(2,3, 1, 4, 3, 3, 1,1, 5, 7), nrow=5, ncol=2) 
M3<- matrix( c(1, 3, 1,5, 7,3, 1, 3, 3, 4), nrow=5, ncol=2)

我如何写这篇文章来进行逐列分析,这样一个包含两行(“F[2]”和“Pr(>F[2]”)和两列的矩阵将作为结果返回?这是正确的方向吗

library(lmtest)

M1<- matrix( c(2,3, 1, 4, 3, 3, 1,1, 5, 7), nrow=5, ncol=2) 
M3<- matrix( c(1, 3, 1,5, 7,3, 1, 3, 3, 4), nrow=5, ncol=2)

g <- list()
for (i in 1:ncol(M1)){
g[[i]]  <- grangertest(M1[ ,i] ~ M3[ ,i])
}

foo <- function(x){ 
  F <- x$F[2] 
  P <- x$`Pr(>F)`[2]
  data.frame(F = F, P = P)
  }

do.call(rbind, lapply(g, foo))

          F         P
1 0.3125000 0.6754896
2 0.1781818 0.7457180
库(lmtest)

M1我们可以使用
sapply

sapply(1:ncol(M1), function(i) {
       m1 <- grangertest(M1[,i]~M3[,i])
       data.frame(F=m1$F[2], p=m1$`Pr(>F)`[2])})
#     [,1]      [,2]     
#F 0.3125    0.1781818
#p 0.6754896 0.745718 
sapply(1:ncol(M1),函数(i){
m1 F)`[2]})
#     [,1]      [,2]     
#F 0.3125 0.1781818
#p 0.6754896 0.745718

它给了我错误。是的,阿克伦。这是因为ti最初表示两个向量。我现在要添加它。我刚刚添加了来自lmtest库的原始代码,使用了“鸡蛋”数据。我需要重写它,这样我就可以从差分矩阵而不是从同一个矩阵或数据帧在两列之间进行分析。你能检查我发布的解决方案吗?做得好,Alex。这很有效。我只是转换了结果。
sapply(1:ncol(M1), function(i) {
       m1 <- grangertest(M1[,i]~M3[,i])
       data.frame(F=m1$F[2], p=m1$`Pr(>F)`[2])})
#     [,1]      [,2]     
#F 0.3125    0.1781818
#p 0.6754896 0.745718