【问题标题】:Does the Sandwich Package work for Robust Standard Errors for Logistic Regression with basic Survey Weights三明治包是否适用于具有基本调查权重的逻辑回归的稳健标准误差
【发布时间】:2019-10-04 19:19:16
【问题描述】:

我正在使用来自调查数据的面板数据集运行逻辑回归,并且我想更正面板设计的标准错误。本次调查中包含的权重考虑了抽样概率、面板死亡率和后期分层。

如果我正确理解了Berger et al 2017,我应该对面板数据使用聚类协方差。但是,我不确定这些命令是否适用于具有调查权重的数据。

我首先使用glm 估计回归,并使用lmtest 包中的coeftestsandwich 包中的vcovPL 更正标准错误。随后,我使用survey 包中的svydesignsvyglm 来估计加权模型,并以同样的方式再次校正标准误差。

在这个问题中R's sandwich package producing strange results for robust standard errors in linear model Zeileis 写道,使用svyglm 对象可能会产生不正确的结果。但是,我不确定这是否仅适用于复杂的调查权重(带有分层等)或基本调查权重,因为它指出 here 不使用分层没有太大区别。但是,我不完全理解那里的解释。此外,我想知道Berger et al 2017 中描述的新实现的功能是否允许使用svyglm 对象。所以我不知道如果我的设计没有分层,我是否可以将sandwich 包中的命令用于svyglm 类的对象。

这是我使用的代码:

# not weighted
model <- glm(depend_var ~ indep_var1 + indep_var2 ,family=quasibinomial(link='logit'),data=dataset)
m_vcov <- coeftest(model,vcov. =  sandwich::vcovPL(x = model, cluster = ~ id_var,order.by = ~ year ,pairwise = T))

# weighted
design.ps <- svydesign(ids=~1, weights=~wgt, data=dataset)
model_wgt <- svyglm(depend_var ~ indep_var1 + indep_var2, design=design.ps,family=quasibinomial(link='logit'),data=dataset)
mwt_vcov <- coeftest(model_wgt, vcov. = sandwich::vcovPL(x = model_wgt, cluster = ~ id_var,order.by = ~ year ,pairwise = T))

查看上面测试代码提供的系数,结果似乎与此处提供的结果不同:R's sandwich package producing strange results for robust standard errors in linear model

# basic model
> summary(model)
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)       -3.68570    0.01264 -291.68   <2e-16 ***
indep_var1_test    0.37538    0.01111   33.78   <2e-16 ***
indep_var2_test    1.05226    0.01100   95.62   <2e-16 ***

# basic model with SE correction
> m_vcov
                   Estimate Std. Error  z value  Pr(>|z|)    
(Intercept)       -3.685702   0.176121 -20.9271 < 2.2e-16 ***
indep_var1_test    0.375380   0.049817   7.5353 4.874e-14 ***
indep_var2_test    1.052258   0.068763  15.3027 < 2.2e-16 ***

# weighted model 
> summary(model_wgt)
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)       -3.89702    0.01751 -222.57   <2e-16 ***
indep_var1_test    0.42373    0.01454   29.15   <2e-16 ***
indep_var2_test    1.05291    0.01439   73.15   <2e-16 ***

# weighted model with SE correction
> mwt_vcov
                   Estimate Std. Error  z value  Pr(>|z|)    
(Intercept)       -3.897021   0.319932 -12.1808 < 2.2e-16 ***
indep_var1_test.   0.423732   0.075202   5.6346 1.755e-08 ***
indep_var2_test    1.052915   0.126569   8.3189 < 2.2e-16 ***

我的问题是:我可以使用上面的命令来纠正标准错误吗?

我想我的问题类似于这个未回答的问题: https://stats.stackexchange.com/questions/260515/does-coeftest-correctly-use-weights-from-svydesign-in-svyglm-object?rq=1

【问题讨论】:

  • 这个人会知道notstatschat.rbind.io>
  • 谢谢。如果没有人回答,我会写信给他。

标签: r logistic-regression survey standard-error robust


【解决方案1】:

你想用

coeftest(model, vcov=vcov(model))

对于svyglm 模型,vcov() 已经生成了适当的三明治估计器,我认为“三明治”包对对象内部的了解不足以使其正确。

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 1970-01-01
    • 2018-11-15
    • 2015-01-31
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 2019-09-14
    相关资源
    最近更新 更多