对于具有奇点的模型具有强大的标准误差

时间:2012-06-15 18:24:59

标签: r

我正在尝试使用aprstable包创建一个具有强大标准错误的估算结果表。但是,因为我的模型具有不易避免的奇点(它们来自具有数百个级别的重叠因子),aprstable拒绝提供我想要生成的表。这是一个工作示例(改编自related thread):

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)

library('apsrtable')
apsrtable(model, se='robust')

执行此代码会产生

> apsrtable(model, se='robust')
Error in s$coefficients[, 3] <- tval <- est/x$se : 
  number of items to replace is not a multiple of replacement length
In addition: Warning message:
In est/x$se :
  longer object length is not a multiple of shorter object length

据我所知,这个错误发生是因为length(sqrt(diag(model$se)))是14而length(coefficients(model))是15,即系数比方差 - 协方差矩阵的对角线上的标准误差多(见也是relevant bit of source code in the aprstable package)。

有没有简单的方法来解决这个问题?在将NA行和列插入适当位置的方差 - 协方差矩阵之前,可能会将其传递给apsrtable()吗?更优雅的东西?

1 个答案:

答案 0 :(得分:3)

这是一个简单的修复 - coef(模型)返回带NA的东西,但coef(summary(model))返回摘要的coef。我很快就会向cran提交更新,但https://github.com/malecki/apsrtable的包已更新。