SUR регрессия: тестирование, если средние значения коэффициентов равны нулю или нет
Я использую регрессию 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)
Спасибо за вашу помощь. Дайте мне знать, если чего-то не хватает, пожалуйста!
1 ответ
Для этого мы можем напрямую использовать 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
,