vcovHC :: sandwich () и coeftest :: lmtest () возвращают значения NA

В настоящее время я строю регрессионную модель, которая помогает объяснить продажи с использованием определенных факторов, таких как доход, температура и т. Д. При проверке графика остатков после регрессии остатки гетероскедастичны.

Чтобы учесть гетероскедастичность, я использовал vcovHC () и coeftest () в R, которые можно использовать для пересчета стандартных ошибок вместе с их 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

person Asha    schedule 26.10.2015    source источник
comment
Нам нужно взглянуть на какой-то код ... может быть, у вас уже есть значения NA в вашей предполагаемой lm-модели?   -  person Helix123    schedule 26.10.2015
comment
Я проверил точки данных своего набора данных, и они не имеют значений NA. Бета-оценки коэффициентов оцениваются, но vcovHC (объект lm) возвращает значения NA   -  person Asha    schedule 26.10.2015
comment
Не могли бы вы предоставить воспроизводимый пример, чтобы мы могли получить присмотреться к нему?   -  person horseoftheyear    schedule 30.10.2015


Ответы (2)


Вам следует указать тип vcovHC. Например:

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

Этот вариант дает те же результаты, что и в Eviews.

person Katin    schedule 21.09.2016

Существует попытка, почему coeftest не работает с надежным vcov: если ваша модель model.matrix ограничивает очень большие значения, а также очень маленькие значения, алгоритм может оказаться не в состоянии выполнить вычисления численно стабильными. Таким образом, посмотрите на model.matrix(formula , data=new_data_p), если это так. Если это так, попробуйте изменить масштаб некоторых переменных в вашем (p) data.frame перед оценкой модели (например, умножить или разделить на 100 или 1000 [также иногда имеет смысл log()). Будьте внимательны, интерпретация коэффициентов меняется из-за смены шкал!

person Helix123    schedule 20.11.2015