如何获得具有可靠标准误差的ANOVA表?


10

我正在使用R中的plm包运行汇总的OLS回归。尽管,我的问题更多是关于基本统计信息,所以我尝试首先将其发布在这里;)

由于我的回归结果会产生异方差残差,因此我想尝试使用异方差稳健的标准误差。作为结果,coeftest(mod, vcov.=vcovHC(mod, type="HC0"))我得到了一个表格,其中包含每个独立变量的估计值,标准误差,t值和p值,这些基本上就是我的“稳健”回归结果。

为了讨论不同变量的重要性,我想绘制每个独立变量解释的方差份额,因此我需要相应的平方和。但是,使用function aov(),我不知道如何告诉R使用可靠的标准错误。

现在我的问题是:如何获得表示稳健标准误差的ANOVA表/平方和?是否可以基于具有正常标准误差的回归,基于ANOVA表进行计算?

编辑:

换句话说,无视我的R发行:

如果使用稳健的标准误差不影响R,那么不同解释变量对解释方差的各自贡献也将保持不变吗?2

编辑:

在R中,aov(mod)实际上是否为panelmodel(plm)提供了正确的ANOVA表?

Answers:


12

线性回归模型中的ANOVA相当于相应嵌套模型的Wald检验(和似然比检验)。因此,当您要使用异方差一致性(HC)标准误差进行相应的检验时,无法通过平方和的分解获得此误差,但是可以使用HC协方差估算进行Wald检验。这个想法是在这两个使用Anova()linearHypothesis()car封装coeftest()waldtest()lmtest包。后三个也可以与plm对象一起使用。

下面是一个简单的(尽管不是很有趣/有意义)示例。我们使用来自标准模型?plm手册页,并希望进行Wald检验两者的意义log(pcap)unemp。我们需要以下软件包:

library("plm")
library("sandwich")
library("car")
library("lmtest")

该模型(在替代方法下)为:

data("Produc", package = "plm")
mod <- plm(log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp,
  data = Produc, index = c("state", "year"))

首先,让我们看一下所有单个系数具有HC标准误的边际Wald检验:

coeftest(mod, vcov = vcovHC)

t test of coefficients:

            Estimate Std. Error t value  Pr(>|t|)    
log(pc)    0.2920069  0.0617425  4.7294 2.681e-06 ***
log(emp)   0.7681595  0.0816652  9.4062 < 2.2e-16 ***
log(pcap) -0.0261497  0.0603262 -0.4335   0.66480    
unemp     -0.0052977  0.0024958 -2.1226   0.03411 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

然后我们对log(pcap)和进行Wald测试unemp

linearHypothesis(mod, c("log(pcap)", "unemp"), vcov = vcovHC)

Linear hypothesis test

Hypothesis:
log(pcap) = 0
unemp = 0

Model 1: restricted model
Model 2: log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp

Note: Coefficient covariance matrix supplied.

  Res.Df Df  Chisq Pr(>Chisq)  
1    766                       
2    764  2 7.2934    0.02608 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

另外,我们也可以在mod0没有两个系数的情况下(假设)对模型进行拟合,然后调用waldtest()

mod0 <- plm(log(gsp) ~ log(pc) + log(emp),
  data = Produc, index = c("state", "year"))
waldtest(mod0, mod, vcov = vcovHC)

Wald test

Model 1: log(gsp) ~ log(pc) + log(emp)
Model 2: log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp
  Res.Df Df  Chisq Pr(>Chisq)  
1    766                       
2    764  2 7.2934    0.02608 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

检验统计量和p值通过计算linearHypothesis()waldtest()是完全一样的。只是界面和输出格式有所不同。在某些情况下,一个或另一个更简单或更直观。

注意:如果您提供协方差矩阵估计(即像的矩阵vocvHC(mod))而不是协方差矩阵估计器(即像的函数vocvHC),请确保在替代项下提供模型的HC协方差矩阵估计,即非限制性模型。


1
如果我理解正确,则Wald检验会显示包括某些变量是否有意义。但是,是否可以衡量他们实际上在多大程度上改进了模型,例如平方和?
Aki 2015年

如何实现HAC标准错误?我尝试了coeftest(mod,vcov = vcovHAC),但收到一条错误消息,提示“没有适用于'estfun'的适用方法应用于类“ c('plm','panelmodel')的对象”。似乎我需要计算权重或估算函数。您会推荐什么方法?
Aki

虽然plm包有方法vcovHC()从一般的sandwich包,它不提供方法vcovHAC()。取而代之的是plm,它附带了自己的专用功能,用于在面板模型中计算协方差矩阵,该模型也可能包含串行相关性。请参阅vcovNW()vcovSCC()打包plm
Achim Zeileis '02

谢谢!据我了解,这两个功能均与自相关鲁棒SE有关。异方差性和自相关性强的SE是否都可以使用?
Aki

所有这三个功能(vcovHACvcovNWvcovSCC)是_H_eteroskedasticity和_A_utocorrelation _C_onsistent ......这就是HAC代表。
Achim Zeileis

2

这可以通过包中的Anova函数来完成car。有关更多详细信息,以及对ANOVA中处理异方差的其他技术的评论,请参见此出色的答案


谢谢。问题在于,Anova()似乎不适用于plm类型的模型(panelmodel)。
Aki 2015年

@Aki,如果我没记错的话,基于小插图中的内容,合并的OLS等同于普通OLS:cran.r-project.org/web/packages/plm/vignettes/plm.pdf
shadowtalker

@Aki但是听起来您可能对更丰富的ANOVA模型感兴趣。这里有一些R示例:stats.stackexchange.com/questions/3874/…– shadowtalker
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.