我正在运行一个 SUR 回归,其中 80 个不同银行的回报作为因变量。自变量始终相同。如有必要,您应该能够使用以下代码重新创建回归来回答我的问题,它们是:
-
如何检验样本中所有 80 家银行的"事件"系数平均值是否等于零?
-
如何检验样本中的子组(例如前 20 家银行和后 40 家银行)是否具有相似的"事件"平均系数,或者它们是否彼此显著不同?
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
中的位置。