Cela peut vous aider à lire ma réponse ici: pourquoi mes valeurs de p diffèrent-elles entre la sortie de régression logistique, le test du chi carré et l'intervalle de confiance pour l'OR? Votre question ici est presque un double de cela, mais il y a quelques éléments supplémentaires dans votre question qui peuvent être traités.
Comme le note @CliffAB, les valeurs de p dans la summary.glm()
sortie proviennent de tests Wald. Celles-ci sont analogues aux tests de coefficients pour un modèle linéaire en ce qu'elles sont la différence entre la valeur ajustée du coefficient et la valeur de référence (prise pour être ), divisée par l'erreur standard. La différence est que ceux-ci sont considérés comme étant distribués comme une norme normale au lieu de . D'un autre côté, ceux-ci sont valables pour de grands échantillons et nous ne savons pas nécessairement ce qui constitue un «grand échantillon» dans un cas donné. t0t
L'utilisation anova.glm()
vous donne accès à différents tests. Lorsque vous définissez test="Rao"
, il vous donne la valeur p d'un test de score. Et lorsque vous définissez soit test="Chisq"
ou test="LRT"
(ce sont les mêmes), cela vous donne la valeur p d'un test de rapport de vraisemblance.
La anova.glm()
fonction teste la même hypothèse nulle que le test de Wald dans la summary()
sortie dans ce cas . C'est uniquement parce que votre modèle n'a qu'une seule variable. La anova.glm()
fonction effectuera des tests séquentiels, qui sont analogues à `` SS de type I '' dans un cadre linéaire, tandis que les tests de Wald summary()
sont analogues à `` SS de type III '' dans un cadre linéaire (voir ma réponse ici: Comment interpréter le type I, type II, et type III ANOVA et MANOVA? ). Considérer:
x2 = rnorm(n)
m2 = glm(y~x+x2, family="binomial")
summary(m2)$coefficients
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -0.05906436 0.186876339 -0.3160612 7.519561e-01
# x -0.01567551 0.003537183 -4.4316372 9.352029e-06
# x2 -0.05967796 0.099093504 -0.6022388 5.470152e-01
anova(m2, test="LRT")
# Terms added sequentially (first to last)
#
# Df Deviance Resid. Df Resid. Dev Pr(>Chi)
# NULL 499 619.10
# x 1 20.3841 498 598.72 6.335e-06 ***
# x2 1 0.3627 497 598.35 0.547
m3 = glm(y~x2+x, family="binomial") # I just switched the order of x & x2 here
summary(m3)$coefficients
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -0.05906436 0.186876339 -0.3160612 7.519561e-01
# x2 -0.05967796 0.099093504 -0.6022388 5.470152e-01 # these are the same
# x -0.01567551 0.003537183 -4.4316372 9.352029e-06 # as above
anova(m3, test="LRT")
# Terms added sequentially (first to last)
#
# Df Deviance Resid. Df Resid. Dev Pr(>Chi)
# NULL 499 619.10
# x2 1 0.1585 498 618.94 0.6906 # these differ from the
# x 1 20.5883 497 598.35 5.694e-06 *** # anova output above
Vous pouvez chausse-pied la anova.glm()
fonction pour vous donner des tests de score et de rapport de vraisemblance de variables individuelles dans un modèle de régression logistique multiple qui sont analogues au `` SS de type III '', mais c'est fastidieux. Vous devrez continuer à réaménager votre modèle afin que chaque variable à son tour soit répertoriée en dernier dans la formule fournie pour l' glm()
appel. La dernière valeur de p répertoriée dans la anova.glm()
sortie est celle qui sera analogue à «type III SS».
Pour obtenir plus facilement les tests de score ou de rapport de vraisemblance de variables individuelles, utilisez drop1()
plutôt. Considérer:
drop1(m3, test="LRT")
# Single term deletions
#
# Model:
# y ~ x2 + x
# Df Deviance AIC LRT Pr(>Chi)
# <none> 598.35 604.35
# x2 1 598.72 602.72 0.3627 0.547 # the same as when x2 is last above
# x 1 618.94 622.94 20.5883 5.694e-06 *** # the same as when x is last above