7

Rでは、特異点のために一部の係数が削除された場合、vcovHC()を使用して堅牢な標準誤差を計算するにはどうすればよいですか? 標準の lm 関数は、実際に推定されたすべての係数の通常の標準誤差を正常に計算しているように見えますが、vcovHC() はエラーをスローします。

(私が使用している実際のデータはもう少し複雑です。実際、これは 2 つの異なる固定効果を使用するモデルであり、単純に取り除くことができない局所的な特異点に遭遇しました。少なくとも方法はわかりません。私が使用している 2 つの固定効果は、最初の因子には 150 レベル、2 番目の因子には 142 レベルがあり、データが 10 ブロックで収集されたという事実から合計で 9 つの特異点があります。)

ここに私の出力があります:

Call:
lm(formula = one ~ two + three + Jan + Feb + Mar + Apr + May + 
Jun + Jul + Aug + Sep + Oct + Nov + Dec, data = dat)

Residuals:
    Min      1Q  Median      3Q     Max 
-130.12  -60.95    0.08   61.05  137.35 

Coefficients: (1 not defined because of singularities)
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 1169.74313   57.36807  20.390   <2e-16 ***
two           -0.07963    0.06720  -1.185    0.237    
three         -0.04053    0.06686  -0.606    0.545    
Jan            8.10336   22.05552   0.367    0.714    
Feb            0.44025   22.11275   0.020    0.984    
Mar           19.65066   22.02454   0.892    0.373    
Apr          -13.19779   22.02886  -0.599    0.550    
May           15.39534   22.10445   0.696    0.487    
Jun          -12.50227   22.07013  -0.566    0.572    
Jul          -20.58648   22.06772  -0.933    0.352    
Aug           -0.72223   22.36923  -0.032    0.974    
Sep           12.42204   22.09296   0.562    0.574    
Oct           25.14836   22.04324   1.141    0.255    
Nov           18.13337   22.08717   0.821    0.413    
Dec                 NA         NA      NA       NA    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 69.63 on 226 degrees of freedom
Multiple R-squared: 0.04878,    Adjusted R-squared: -0.005939 
F-statistic: 0.8914 on 13 and 226 DF,  p-value: 0.5629 

> model$se <- vcovHC(model)
Error in bread. %*% meat. : non-conformable arguments

エラーを再現するために切り取られた最小限のコードを次に示します。

library(sandwich)
set.seed(101)
dat<-data.frame(one=c(sample(1000:1239)),
              two=c(sample(200:439)),
              three=c(sample(600:839)),
              Jan=c(rep(1,20),rep(0,220)),
              Feb=c(rep(0,20),rep(1,20),rep(0,200)),
              Mar=c(rep(0,40),rep(1,20),rep(0,180)),
              Apr=c(rep(0,60),rep(1,20),rep(0,160)),
              May=c(rep(0,80),rep(1,20),rep(0,140)),
              Jun=c(rep(0,100),rep(1,20),rep(0,120)),
              Jul=c(rep(0,120),rep(1,20),rep(0,100)),
              Aug=c(rep(0,140),rep(1,20),rep(0,80)),
              Sep=c(rep(0,160),rep(1,20),rep(0,60)),
              Oct=c(rep(0,180),rep(1,20),rep(0,40)),
              Nov=c(rep(0,200),rep(1,20),rep(0,20)),
              Dec=c(rep(0,220),rep(1,20))) 
model <- lm(one ~ two + three + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec, data=dat)
summary(model)
model$se <- vcovHC(model)
4

2 に答える 2

0

特異点のあるモデルは決して良いものではなく、修正する必要があります。あなたの場合、12 か月で 12 の係数がありますが、グローバル インターセプトもあります。したがって、実際には、推定される 12 個の実パラメータのみに対して 13 個の係数があります。実際に必要なのは、グローバル インターセプトを無効にすることです。したがって、月固有のインターセプトに似たものになります。

> model <- lm(one ~ 0 + two + three + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec, data=dat)
> summary(model)

Call:
lm(formula = one ~ 0 + two + three + Jan + Feb + Mar + Apr + 
    May + Jun + Jul + Aug + Sep + Oct + Nov + Dec, data = dat)

Residuals:
     Min       1Q   Median       3Q      Max 
-133.817  -55.636    3.329   56.768  126.772 

Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
two     -0.09670    0.06621  -1.460    0.146    
three    0.02446    0.06666   0.367    0.714    
Jan   1130.05812   52.79625  21.404   <2e-16 ***
Feb   1121.32904   55.18864  20.318   <2e-16 ***
Mar   1143.50310   53.59603  21.336   <2e-16 ***
Apr   1143.95365   54.99724  20.800   <2e-16 ***
May   1136.36429   53.38218  21.287   <2e-16 ***
Jun   1129.86010   53.85865  20.978   <2e-16 ***
Jul   1105.10045   54.94940  20.111   <2e-16 ***
Aug   1147.47152   54.57201  21.027   <2e-16 ***
Sep   1139.42205   53.58611  21.263   <2e-16 ***
Oct   1117.75075   55.35703  20.192   <2e-16 ***
Nov   1129.20208   53.54934  21.087   <2e-16 ***
Dec   1149.55556   53.52499  21.477   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 69.81 on 226 degrees of freedom
Multiple R-squared:  0.9964,    Adjusted R-squared:  0.9961 
F-statistic:  4409 on 14 and 226 DF,  p-value: < 2.2e-16

それならノーマルモデルなのでvcovHCで問題ないはずです。

于 2014-01-17T15:53:37.657 に答える