如何获得具有稳健标准误差的 ANOVA 表?

机器算法验证 r 方差分析 多重回归 异方差 稳健标准错误
2022-03-08 04:15:11

我正在使用 R 中的 plm 包运行池化 OLS 回归。不过,我的问题更多是关于基本统计数据,所以我先尝试将其发布在这里;)

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

为了讨论不同变量的重要性,我想绘制每个自变量解释的方差份额,所以我需要各自的平方和。但是,使用 function aov(),我不知道如何告诉 R 使用稳健的标准错误。

现在我的问题是:如何获得涉及稳健标准误差的 ANOVA 表/平方和?是否可以根据具有正常标准误差的回归的 ANOVA 表来计算它?

编辑:

换句话说,无视我的 R 问题:

如果 R2不受使用稳健标准误差的影响,不同解释变量对解释方差的贡献是否也保持不变?

编辑:

在 R 中,aov(mod)实际上是否为面板模型(plm)提供了正确的方差分析表?

2个回答

线性回归模型中的 ANOVA 等效于相应嵌套模型的 Wald 检验(和似然比检验)。因此,当您想使用异方差一致 (HC) 标准误差进行相应的检验时,这无法从平方和的分解中获得,但您可以使用 HC 协方差估计进行 Wald 检验。这个想法在Anova()包和包中都有使用后三个也可以与对象一起使用。linearHypothesis()carcoeftest()waldtest()lmtestplm

下面是一个简单(尽管不是很有趣/有意义)的示例。我们使用手册页中的标准模型,并希望对?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

linearHypothesis()由和计算的检验统计量和 p 值waldtest()完全相同。只是界面和输出格式有些不同。在某些情况下,其中一种更简单或更直观。

注意:如果您提供协方差矩阵估计(即矩阵,如vocvHC(mod))而不是协方差矩阵估计器(即,函数vocvHC,如非限制模型。

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