我正在尝试使用该aprstable
包创建一个具有稳健标准误差的估计结果表。但是,由于我的模型具有不易避免的奇点(它们来自具有数百个级别的重叠因素),aprstable
因此拒绝提供我正在尝试生成的表格。这是一个工作示例(改编自相关线程):
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,即在其方差 - 协方差矩阵的对角线上存在的系数比标准误差多(另请参见包中源代码的相关位aprstable
)。
有什么简单的方法可以解决这个问题吗?将 NA 行和列插入到适当位置的方差-协方差矩阵中,然后再将其传递给apsrtable()
?更优雅的东西?