R中的列明智格兰杰因果检验
Column wise granger's causal tests in R
我有 2 个不同参数的矩阵:具有相同维度的 M1 和 M3。我想在 R 中进行列式格兰杰测试。
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。我的实际矩阵包含更多的列和行,但这只是一个例子。两个向量之间的原始代码如下:
library(lmtest)
data(ChickEgg)
grangertest(chicken ~ egg, order = 3, data = ChickEgg)
如何为列式分析编写此代码,以便将具有 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
我们可以使用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
我有 2 个不同参数的矩阵:具有相同维度的 M1 和 M3。我想在 R 中进行列式格兰杰测试。
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。我的实际矩阵包含更多的列和行,但这只是一个例子。两个向量之间的原始代码如下:
library(lmtest)
data(ChickEgg)
grangertest(chicken ~ egg, order = 3, data = ChickEgg)
如何为列式分析编写此代码,以便将具有 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
我们可以使用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