带有Newey-West误差的线性回归

时间:2019-04-08 17:41:46

标签: r regression lapply standard-error

我有一个包含30列的数据框,并且希望对所有列进行线性回归。我使用lapply()函数做到了这一点:

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

再次使用lapply()函数,我得到了摘要统计信息:

lapply(my_lms, summary)

我的问题是如何使用Newey-West错误获得相同的摘要统计信息? 我尝试过:

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 个答案:

答案 0 :(得分:1)

假设您正在使用lmtest软件包中的coeftest函数。您要么必须传递一个计算协方差矩阵的函数,要么将协方差矩阵本身作为vcov传递。论点。

在您的问题中,您没有指定对.vcov参数的输入NeweyWest是什么。

我相信三明治包装中的vcovHAC功能将是Newey-West的正确选择。