使用NeweyWest时如何更新摘要?

16

我正在使用NeweyWest标准误差来纠正我的lm() / dynlm()输出。例如:

fit1<-dynlm(depvar~covariate1+covariate2)
coeftest(fit1,vcov=NeweyWest)

系数显示得很好,但不幸的是,我失去了所有回归输出信息,比如R平方、F检验等,这些信息都可以通过summary显示。因此我想知道如何在同一摘要输出中显示健壮标准误和所有其他信息。

是否有一种方法可以在一个调用中获取所有信息,或者覆盖“旧”的估计值?我敢打赌我错过了什么重要的东西,但当sweaving输出时,这确实很重要。

测试示例,取自?dynlm

require(dynlm)
require(sandwich)
data("UKDriverDeaths", package = "datasets")
uk <- log10(UKDriverDeaths)
dfm <- dynlm(uk ~ L(uk, 1) + L(uk, 12))

#shows R-squared, etc.
summary(dfm)

#no such information
coeftest(dfm, vcov = NeweyWest)

顺便说一下:对于 vcovHC 同样适用。


4
我们来澄清一下,这里所说的dynlmdynlm包中的函数,NeweyWestsandwich包中的函数,而coeftest则是lmtest包中的函数,你确认了吗? - Richie Cotton
1
@ran2,你能否在你的问题中添加必要的“库”或“引用”语句,以便它可以被重现吗? - Andrie
抱歉各位...我想太多了...午餐时间我非常饥饿。我编辑了我的帖子。感谢@Richie Cotton的帮助! - Matt Bannert
2个回答

18

coefficients只是在lm(或dynlm)摘要对象中的矩阵,因此您只需对coeftest()输出进行unclass处理即可。

library(dynlm)
library(sandwich)
library(lmtest)
temp.lm <- dynlm(runif(100) ~ rnorm(100))
temp.summ <- summary(temp.lm)
temp.summ$coefficients <- unclass(coeftest(temp.lm, vcov. = NeweyWest))

非常感谢,取消类(unclass)正是我缺失的部分。不过很抱歉接受有点晚了。 - Matt Bannert
新威-韦斯特方法是否会改变估计量呢?我只看到它改变了估计量的协方差,从而影响了假设检验... - Ye Tian
@YeTian 不,据我所知它不会改变估计器。它只会改变假设检验和置信区间。 - WillZ

0

如果您指定了协方差矩阵,F统计量会发生变化,因此您需要使用waldtest()重新计算它,对吗?

temp.summ$coefficients <- unclass(coeftest(temp.lm, vcov. = NeweyWest))

仅覆盖系数。 F统计量会变化,但R ^ 2保持不变。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接