SUR 回归:检验系数均值是否为零
SUR regression: Testing if means of coefficients are equal to zero or not
我是 运行 一个 SUR 回归,其中 returns 80 家不同的银行作为因变量。自变量总是相同的。如果需要回答我的问题,您应该能够使用下面的代码重新创建回归:
如何检验样本中所有 80 家银行的 "Event" 系数的平均值是否为零?
我如何检验样本中的子组,比如前 20 家银行和后 40 家银行,是否具有相似的 "Event" 平均系数,或者它们是否彼此显着不同?
library("systemfit")
library("plm")
cyp3 <- read.table("https://pastebin.com/raw.php?i=/SpuUiaj7", sep=";", header=TRUE)
cyp3panel<-pdata.frame(cyp3, c("id", "t"))
cyp3sur<-systemfit(returns ~ Price + Pre + Event + Post + Zpre1 + Zevent1 + Zpost1 + Zpre2 + Zevent2 + Zpost2 + Zpre3 + Zevent3 + Zpost3, method = "SUR",data = cyp3panel)
感谢您的帮助。如果有什么遗漏,请告诉我!
为此我们可以直接使用linearHypothesis
(参见?linearHypothesis.systemfit
)。在第一种情况下,我们有
coefs <- coef(cyp3sur)
R1 <- matrix(0, nrow = 1, ncol = length(coefs))
R1[1, grep("Intercept", names(coefs))] <- 1
linearHypothesis(cyp3sur, R1)
其中 R1
只有一行,因为只有一个约束。请注意,我添加的系数是 1 而不是 1 / 80,因为它们是等价的(X + Y = 0 与 (X + Y) / 2 = 0 相同)。使用 grep
可以让我找到截距的位置。
同样,在第二种情况下我们有
R2 <- matrix(0, nrow = 1, ncol = length(coefs))
gr1 <- paste0("X", 1:20, "_Event")
gr2 <- paste0("X", 41:80, "_Event")
R2[1, names(coefs) %in% gr1] <- 1 / 20
R2[1, names(coefs) %in% gr2] <- -1 / 40
linearHypothesis(cyp3sur, R2)
现在我用 paste0
构建感兴趣的变量名,并使用 %in%
确定它们在 coefs
中的位置。
我是 运行 一个 SUR 回归,其中 returns 80 家不同的银行作为因变量。自变量总是相同的。如果需要回答我的问题,您应该能够使用下面的代码重新创建回归:
如何检验样本中所有 80 家银行的 "Event" 系数的平均值是否为零?
我如何检验样本中的子组,比如前 20 家银行和后 40 家银行,是否具有相似的 "Event" 平均系数,或者它们是否彼此显着不同?
library("systemfit") library("plm") cyp3 <- read.table("https://pastebin.com/raw.php?i=/SpuUiaj7", sep=";", header=TRUE) cyp3panel<-pdata.frame(cyp3, c("id", "t")) cyp3sur<-systemfit(returns ~ Price + Pre + Event + Post + Zpre1 + Zevent1 + Zpost1 + Zpre2 + Zevent2 + Zpost2 + Zpre3 + Zevent3 + Zpost3, method = "SUR",data = cyp3panel)
感谢您的帮助。如果有什么遗漏,请告诉我!
为此我们可以直接使用linearHypothesis
(参见?linearHypothesis.systemfit
)。在第一种情况下,我们有
coefs <- coef(cyp3sur)
R1 <- matrix(0, nrow = 1, ncol = length(coefs))
R1[1, grep("Intercept", names(coefs))] <- 1
linearHypothesis(cyp3sur, R1)
其中 R1
只有一行,因为只有一个约束。请注意,我添加的系数是 1 而不是 1 / 80,因为它们是等价的(X + Y = 0 与 (X + Y) / 2 = 0 相同)。使用 grep
可以让我找到截距的位置。
同样,在第二种情况下我们有
R2 <- matrix(0, nrow = 1, ncol = length(coefs))
gr1 <- paste0("X", 1:20, "_Event")
gr2 <- paste0("X", 41:80, "_Event")
R2[1, names(coefs) %in% gr1] <- 1 / 20
R2[1, names(coefs) %in% gr2] <- -1 / 40
linearHypothesis(cyp3sur, R2)
现在我用 paste0
构建感兴趣的变量名,并使用 %in%
确定它们在 coefs
中的位置。