Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R计算具有奇异性的lm模型的鲁棒标准误差(vcovHC)_R_Regression_Lm - Fatal编程技术网

R计算具有奇异性的lm模型的鲁棒标准误差(vcovHC)

R计算具有奇异性的lm模型的鲁棒标准误差(vcovHC),r,regression,lm,R,Regression,Lm,在R中,当某些系数由于奇异性而下降时,如何使用vcovHC()计算鲁棒标准误差?标准lm函数似乎可以很好地计算实际估计的所有系数的正常标准误差,但vcovHC()抛出一个错误:“面包中的错误。%*%meat.:不一致参数” (我使用的实际数据有点复杂。事实上,这是一个使用两种不同固定效应的模型,我遇到了无法简单消除的局部奇点。至少我不知道如何消除。对于我使用的两种固定效应,第一个因子有150个能级,第二个因子有142个能级,总共有9个奇点h数据收集分为十个块,这是一个结果。) 以下是我的输出:

在R中,当某些系数由于奇异性而下降时,如何使用vcovHC()计算鲁棒标准误差?标准lm函数似乎可以很好地计算实际估计的所有系数的正常标准误差,但vcovHC()抛出一个错误:“面包中的错误。%*%meat.:不一致参数”

(我使用的实际数据有点复杂。事实上,这是一个使用两种不同固定效应的模型,我遇到了无法简单消除的局部奇点。至少我不知道如何消除。对于我使用的两种固定效应,第一个因子有150个能级,第二个因子有142个能级,总共有9个奇点h数据收集分为十个块,这是一个结果。)

以下是我的输出:

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
呼叫:
lm(公式=1~2+3+1月+2月+3月+4月+5月+
六月+七月+八月+九月+十月+十一月+十二月,数据=日期)
残差:
最小1季度中值3季度最大值
-130.12  -60.95    0.08   61.05  137.35 
系数:(1因奇点未定义)
估计标准误差t值Pr(>t)

(截取)1169.74313 57.36807 20.390模型$se具有奇点的模型永远都不是好的,它们应该被修复。在您的例子中,您有12个月的12个系数,还有全局截距!因此您实际上只有13个系数用于估计12个实参数。您实际上想要的是禁用全局intercept-因此您将有一些更像是特定于月份的截取:

> 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
>模型摘要(模型)
电话:
lm(公式=1~0+2+3+1月+2月+3月+4月+
五月+六月+七月+八月+九月+十月+十一月+十二月,数据=dat)
残差:
最小1季度中值3季度最大值
-133.817  -55.636    3.329   56.768  126.772 
系数:
估计标准误差t值Pr(>t)
两个-0.09670.06621-1.4600.146
三个0.02446 0.06666 0.367 0.714

Jan 1130.05812 52.79625 21.404您似乎想要的是一个固定效应估计,虽然这个问题在不久前提出过,但我遇到了同样的问题,以下是我的解决方案: 通过在估算公式中包含
+因子()
,可以控制固定效应:

因此,我首先创建了一个附加列:

#在数据中创建一个附加列

dat$month您的代码似乎正常工作。您可能希望明确删除其中一个月(或截取)从模型中,为了避免奇点。不幸的是,这是我的观点:我无法消除奇点。这只是我发布的一个简单的示例数据集。在该数据集中,我同意:您可以简单地从回归中删除Dec,从而消除奇点,然后是vcovHC()会有用的。在我的实际数据中,奇点源于两个具有多个级别的固定效应(分别为150和142)的情况有点复杂。我还没有找到一种方法来消除数据中的奇点。@Chris:你仍然会得到这个错误吗?在将
Dec
更改为
c(rep(0240))之后
为了诱发奇点,调用
vcovHC(model)
成功,没有出现您注意到的错误。在三明治2.2-9的更改日志中:
lm/mlm/glm模型的别名参数处理不正确(导致三明治/vcovHC等出现错误),现在已修复。
这是否修复了它?
> 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