3

同じ次元の M1 と M3 という異なるパラメーターの 2 つの行列があります。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)

M2グレンジャーがM1を引き起こすかどうかを判断するために、グレンジャーの因果関係テストを行いたい. 私の実際のマトリックスには、より多くの列と行が含まれていますが、これは単なる例です。2 つのベクトル間の元のコードは次のとおりです。

library(lmtest)
data(ChickEgg)
grangertest(chicken ~ egg, order = 3, data = ChickEgg)

2 行 ("F[2]" および "Pr(>F)[2]") と 2 列の行列が結果として返されるように、列ごとの分析を行うにはどうすればよいですか?

4

2 に答える 2

5

これは正しい方向に進んでいますか?

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
于 2016-06-23T07:32:45.930 に答える