帮助!我不知道为什么这两个不相等.更改为hc0 nad hc1也无济于事.示例如下:

pacman::pload(sandwich, AER, tidyverse)

set.seed(505)
test_d <- tibble(x=rnorm(500),
               cluster=sample(seq(1,100),size=500,replace=T),
               y=-cluster/10+.2*x+rnorm(500)) %>% 
  mutate(y=ifelse(y<0,0,y))

m <- AER::tobit(y~x,
           data = test_d,
           cluster=cluster)
summary(m)
cf_test <- coeftest(m,vcov. = vcovCL(m,
                          cluster = ~cluster))

tribble(~"method",~"se_intercept",~"se_x",~"se_log(scale)",
        "AER::tobit",summary(m)$coefficient[1,2],summary(m)$coefficient[2,2],summary(m)$coefficient[3,2],
        "vcovCL",cf_test[1,2], cf_test[2,2],cf_test[3,2]
        )

推荐答案

Source of the bug:原因是,您的拟合模型本身已经计算了集群协方差矩阵,而sandwich包没有检测到.因此,它使用全聚类协方差作为三明治中的"面包"(而不是天真的协方差).

How to avoid it:在当前的CRAN版本的软件包中,最容易避免这个问题的方法是只将vcovCL()应用于符合withoutcluster参数的型号.则结果(具有正确的集群调整)与集群模型上的vcov()一致:

m0 <- AER::tobit(y ~ x, data = test_d)
vcovCL(m0, cluster = ~ cluster, cadjust = FALSE)
##             (Intercept)            x   Log(scale)
## (Intercept)  0.22307101 -0.014202428 -0.067311156
## x           -0.01420243  0.010922194  0.006217075
## Log(scale)  -0.06731116  0.006217075  0.023430960
vcov(m)
##             (Intercept)            x   Log(scale)
## (Intercept)  0.22307101 -0.014202428 -0.067311156
## x           -0.01420243  0.010922194  0.006217075
## Log(scale)  -0.06731116  0.006217075  0.023430960

Bug fix:在包的开发版本中,我为survreg个对象(在sandwich中)和tobit个对象(在AER中)修改了bread()个提取程序函数.因此,在下一个cran版本(尚未计划)中,该错误将被自动避免--即使该模型是用cluster参数估计的.

R相关问答推荐

根据固定值范围在tible中添加新行

基于shiny 应用程序中的日期范围子集xts索引

ggplot geom_smooth()用于线性回归虚拟变量-没有回归线

向gggplot 2中的数据和轴标签添加大写和星号

pickerInput用于显示一条或多条geom_hline,这些线在图中具有不同 colored颜色

根据选中三个复选框中的一个或两个来调整绘图

如何根据R中其他列的值有条件地从列中提取数据?

R-更新面内部的栅格值

在R中按行按列范围查找最大值的名称

在ggplot2的框图中绘制所有级别的系数

您是否可以折叠R中的重复行,同时保留基于所选列的值?

仅在Facet_WRAP()中的相应方面包含geom_abline()

计算直线上点到参考点的总距离

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

从多层嵌套列表构建Tibble?

如何删除R中除数字元素以外的所有元素

整理曲线图、曲线图和点图

策略表单连接两个非常大的箭头数据集,而不会 destruct 内存使用

在R中使用ggraph包排列和着色圆

在不带max()的data.table中按组查找最后一个元素