Je voudrais savoir en quoi le traitement des poids diffère entre svyglm
etglm
J'utilise le twang
package dans R pour créer des scores de propension qui sont ensuite utilisés comme poids, comme suit (ce code provient de la twang
documentation):
library(twang)
library(survey)
set.seed(1)
data(lalonde)
ps.lalonde <- ps(treat ~ age + educ + black + hispan + nodegree + married + re74 + re75,
data = lalonde)
lalonde$w <- get.weights(ps.lalonde, stop.method="es.mean")
design.ps <- svydesign(ids=~1, weights=~w, data=lalonde)
glm1 <- svyglm(re78 ~ treat, design=design.ps)
summary(glm1)
...
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6685.2 374.4 17.853 <2e-16 ***
treat -432.4 753.0 -0.574 0.566
Comparez cela à:
glm11 <- glm(re78 ~ treat, weights=w , data=lalonde)
summary(glm11)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6685.2 362.5 18.441 <2e-16 ***
treat -432.4 586.1 -0.738 0.461
Les estimations des paramètres sont donc les mêmes, mais les erreurs standard pour le traitement sont assez différentes.
En quoi le traitement des poids diffère-t-il entre svyglm
et glm
?
surveyglm
)?survey
calcule les erreurs standard en tenant compte de la perte de précision introduite par les poids d'échantillonnage. Les poids englm
ajustent simplement le poids donné aux erreurs dans l'estimation des moindres carrés, de sorte que les erreurs standard ne sont pas correctes. Voici une sélection de Lumley (2010):Donc, sans strates dans votre conception, vous constaterez probablement que l'utilisation
sandwich
vous donnera des estimations SE identiques ou presque identiques.Dans mon test, ils n'ont pas calculé exactement en utilisant "HC0" ou "HC1", mais étaient très proches.
svyglm
rapporte désormais également une valeur z au lieu d'une valeur t.la source
coeftest
est du package Rlmtest
.