r - vcovHC::sandwich () 和 coeftest::lmtest() 返回 NA 值

标签 r linear-regression lm p-value standard-error

我目前正在构建一个回归模型,该模型有助于使用收入、温度等某些因素来解释销售额。在回归后检查残差图时,残差是异方差的。

为了说明异方差,我在 R 中使用了 vcovHC() 和 coeftest(),它们可用于在异方差假设下重新计算标准误差及其 p 值。但是这些函数返回 NA 值,因此所有相应的 p 值也是 NA。这个问题的原因可能是什么,我该如何解决?代码如下:

fit_p<-lm(formula = final_list_p, data = new_data_p)
s_p<-summary(fit_p)

输出

线性回归输出的汇总统计量是:
Residuals:                  
Min      1Q  Median      3Q     Max                     
-244190  -60770   -5759   59730  311108         


Coefficients:                   
Estimate                    
(Intercept)                 
        Std. Error  t   value   Pr(>|t|)    
var1    -3.36E+05   1.77E+05    -1.893  0.059026    .
var2    -2.90E+04   4.96E+03    -5.86   8.97E-09    ***
var3    -1.75E+05   8.93E+04    -1.958  0.050834    .
var4    -4.62E+00   2.80E+00    -1.653  0.098975    .
var5    2.39E+01    7.85E+00    3.04    0.002503    **
var6    -6.32E+04   1.08E+05    -0.588  0.556682    
var7    -5.38E+03   3.69E+04    -0.146  0.884204    
var8    6.03E+04    6.53E+04    0.923   0.356275    
var9    3.33E-01    4.75E-02    7.011   8.76E-12    ***
var10   -7.94E+04   2.33E+05    -0.34   0.73381 
var11   1.06E+05    1.08E+05    0.986   0.324424    
var12   -1.06E+04   4.41E+03    -2.39   0.017275    *
var14   5.44E+03    8.80E+02    6.182   1.43E-09    ***
var16   9.12E+04    7.34E+04    1.242   0.21481 
var18   1.78E+04    8.41E+04    0.211   0.832674    
var19   -1.75E+05   1.18E+05    -1.487  0.137787    
var20   4.19E+03    6.95E+02    6.023   3.58E-09    ***
var25   2.96E+00    4.82E-01    6.146   1.76E-09    ***


Residual standard error: 87850 on 447 degrees of freedom                
Multiple R-squared:  0.6144,    Adjusted R-squared:0.5958               
F-statistic: 39.57 on 18 and 447 DF,  p-value: <2.2e-16                 

当我检查残差图时,它们是异方差的。为了解决这个问题,使用稳健标准误差(vcovHC::sandwich)重新计算标准误差
执行 coeftest::lmtest 后的结果如下:
s_p$coefficients <- unclass(coeftest(fit_p, vcov. = vcovHC))
        Estimate    Std.Error t-value Pr(>|t|)
Intercept-3.36E+05  NA          NA    NA
var1    -2.90E+04   NA          NA    NA
var2    -1.75E+05   NA          NA    NA
var3    -4.62E+00   NA          NA    NA
var4    2.39E+01    NA          NA    NA
var5    -6.32E+04   NA          NA    NA
var6    -5.38E+03   NA          NA    NA
var7    6.03E+04    NA          NA    NA
var8    3.33E-01    NA          NA    NA
var9    -7.94E+04   NA          NA    NA
var10   1.06E+05    NA          NA    NA
var11   -1.06E+04   NA          NA    NA
var12   5.44E+03    NA          NA    NA
var14   9.12E+04    NA          NA    NA
var16   1.78E+04    NA          NA    NA
var18   -1.75E+05   NA          NA    NA
var19   4.19E+03    NA          NA    NA
var20   2.96E+00    NA          NA    NA
var25   3.29E+03    NA          NA    NA

最佳答案

您应该指定一种 vcovHC。例如:

coeftest(fit_p,vcov.=vcovHC(fit_p,type="HC1"))

这个特殊的变体给出了与 Eviews 相同的结果。

关于r - vcovHC::sandwich () 和 coeftest::lmtest() 返回 NA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33351883/

相关文章:

machine-learning - 线性回归和非线性回归的区别?

PYTHON:最适合每个x值的多个y值的线

R中的残差使用auto.arima和预测包

r - R中的线性回归而不在内存中复制数据?

用另一个默认主题中的元素替换一个 ggplot 默认主题元素

r - 向量化 R 表达式

matlab - 在双对数(以 10 为底)图上执行线性回归 Matlab

r - 如何使用 Anova 命令进行 Tukey HSD 测试(汽车包)

r - ggplot2的二分网络图

html - 更改 RMarkdown HTML 输出中图形标题的字体大小