Работает ли сэндвич-пакет для устойчивых стандартных ошибок для логистической регрессии с базовыми весами обследования - PullRequest
1 голос
/ 17 мая 2019

Я выполняю логистические регрессии с набором данных панели из данных опроса, и я хочу исправить стандартные ошибки для дизайна панели. Веса, включенные в это обследование, учитывают вероятность выборки, уровень смертности от групп и после стратификации.

Если я правильно понял Berger et al 2017 , я должен использовать кластеризованные ковариации для данных панели. Однако я не уверен, работают ли команды для данных с весами опроса.

Я начал с оценки регрессий с помощью glm и исправления стандартных ошибок с помощью coeftest из пакета lmtest и vcovPL из пакета sandwich. Впоследствии я использовал svydesign и svyglm из пакета survey для оценки взвешенной модели и снова исправил стандартные ошибки таким же образом.

В этом вопросе сэндвич-пакет R, выдающий странные результаты для устойчивых стандартных ошибок в линейной модели Zeileis пишет, что использование svyglm объектов может привести к неверным результатам. Тем не менее, я не уверен, что это применимо только к сложному весу обследования (со стратами и т. Д.) Или к базовым весам обследования, так как здесь указано здесь , что без использования страт нет большой разницы , Однако я не совсем понимаю объяснение там. Кроме того, мне интересно, позволяют ли недавно реализованные функции, описанные в 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, выдающий странные результаты для устойчивых стандартных ошибок в линейной модели

# 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

1 Ответ

1 голос
/ 27 мая 2019

Вы хотите использовать

coeftest(model, vcov=vcov(model))

Для svyglm моделей vcov() уже производит соответствующий сэндвич-оценщик, и я не думаю, что пакет "сэндвич" знает достаточно о внутренних объектах объекта, чтобы понять это правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...