Линейная регрессия с ошибками Ньюи-Запада - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть фрейм данных с 30 столбцами, и я хочу запустить линейные регрессии по всем столбцам. Я сделал это с помощью функции lapply ():

my_lms <- lapply(1:30, function(x) lm(ts[,x] ~ v, data = ts))

Снова с помощью функции lapply () я получаю сводную статистику:

lapply(my_lms, summary)

Мой вопрос: как получить ту же сводную статистику, используя ошибки Ньюи-Веста? Я попробовал:

lapply(my_lms, coeftest, vcov. = NeweyWest)

Но это выдает мне сообщение об ошибке: Ошибка в if (ncol (x) == 1) {: Аргумент имеет длину 0

Спасибо

Воспроизводимый пример: ts - временной ряд с индексными ценами и фиктивной переменной для летнего / зимнего месяца (исходный набор данных содержит 30 индексов, и я хочу сделать линейную регрессию для каждого индекса фиктивной переменной)

library(zoo)
library(lmtest)
library(sandwich)
ts <- structure(c(4.29528246942341, 6.74996509842245, 3.17792454063952, 
        -1.28018252107232, 3.49874815433011, -2.80982508373651, 3.47182334545917, 
        5.95818170603837, -0.704348332266147, 1.61214679329347, 9.13286793976806, 
        -0.43878198350602, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1),
        index = structure(c(604627200,607305600, 609724800, 612576000, 615168000,
                            617846400, 620524800, 623030400, 625795200, 628387200, 630892800, 633744000),
        tzone = "UTC", tclass = "Date"), class = c("xts", "zoo"), .indexCLASS = "Date", .indexTZ = "UTC",
        tclass = "Date", tzone = "UTC", .Dim = c(12L, 2L), .Dimnames = list(NULL, c("S.P.GSCI.Commodity.Total.Return", "dum")))
reg <- lapply(1:1, function(x) lm(ts[,x] ~ dum, data = ts))
sum <- lapply(reg, summary)
test <- lapply(reg, coeftest, vcov. = NeweyWest)

1 Ответ

1 голос
/ 08 апреля 2019

Предполагается, что вы используете функцию coeftest из пакета lmtest. Вы должны либо передать функцию, которая вычисляет ковариационную матрицу, либо саму ковариационную матрицу как vcov. аргумент.

В своем вопросе вы не указываете, что вводит NeweyWest для аргумента .vcov.

Я считаю, что функция vcovHAC из сэндвич-пакета будет правильным выбором для Newey-West.

...