r语言 - SUR 回归:检验系数均值是否等于零



我正在运行一个 SUR 回归,其中 80 个不同银行的回报作为因变量。自变量始终相同。如有必要,您应该能够使用以下代码重新创建回归来回答我的问题,它们是:

  1. 如何检验样本中所有 80 家银行的"事件"系数平均值是否等于零?

  2. 如何检验样本中的子组(例如前 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中的位置。

最新更新