Les modèles linéaires généralisés permettent de réaliser trois types de tests statistiques. Ce sont: les tests de Wald, les tests du rapport de vraisemblance et les tests de score. L’excellent site d’aide statistique de UCLA en donne une discussion ici . La figure suivante (copiée de leur site) permet de les illustrer:
- Le test de Wald suppose que la probabilité est normalement distribuée et utilise sur cette base le degré de courbure pour estimer l'erreur type. Ensuite, l'estimation du paramètre divisée par le SE donne un -score. Cela est en grande , mais pas tout à fait vrai petit s. Il est difficile de dire quand votre est assez grand pour que cette propriété tienne, alors ce test peut être légèrement risqué. zNNN
- Les tests du rapport de vraisemblance examinent le rapport entre les probabilités (ou la différence dans les log vraisemblances) à leur maximum et à leur valeur nulle. Ceci est souvent considéré comme le meilleur test.
- Le test de score est basé sur la pente de la vraisemblance à la valeur nulle. C’est généralement moins puissant, mais il est parfois impossible de calculer toutes les probabilités. C’est donc une bonne option de secours.
Les tests qui viennent avec summary.glm()
sont des tests de Wald. Vous ne dites pas comment vous avez obtenu vos intervalles de confiance, mais je suppose que vous avez utilisé confint()
, ce qui appelle profile()
. Plus précisément, ces intervalles de confiance sont calculés en profilant la probabilité (ce qui est une meilleure approche que de multiplier la SE par ). C'est-à-dire qu'ils sont analogues au test du rapport de vraisemblance, pas au test de Wald. Le , à son tour, est un test de score. 1,96χ2
Lorsque votre devient indéfiniment grand, les trois différents devraient converger vers la même valeur, mais ils peuvent différer légèrement lorsque vous ne disposez pas de données infinies. Il est à noter que la valeur (Wald) dans votre sortie initiale est à peine significative et qu'il y a peu de différence réelle entre juste au-dessus et juste sous ( citation ). Cette ligne n'est pas "magique". Étant donné que les deux tests les plus fiables viennent tout juste de dépasser , je dirais que vos données ne sont pas tout à fait "significatives" par rapport aux critères classiques. Np pα = 0,050,05
Ci-dessous, décrivez les coefficients à l'échelle du prédicteur linéaire et exécutez le test du rapport de vraisemblance de manière explicite (via anova.glm()
). J'obtiens les mêmes résultats que toi:
library(MASS)
x = matrix(c(343-268,268,73-49,49), nrow=2, byrow=T); x
# [,1] [,2]
# [1,] 75 268
# [2,] 24 49
D = factor(c("N","Diabetes"), levels=c("N","Diabetes"))
m = glm(x~D, family=binomial)
summary(m)
# ...
# Coefficients:
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -1.2735 0.1306 -9.749 <2e-16 ***
# DDiabetes 0.5597 0.2813 1.990 0.0466 *
# ...
confint(m)
# Waiting for profiling to be done...
# 2.5 % 97.5 %
# (Intercept) -1.536085360 -1.023243
# DDiabetes -0.003161693 1.103671
anova(m, test="LRT")
# ...
# Df Deviance Resid. Df Resid. Dev Pr(>Chi)
# NULL 1 3.7997
# D 1 3.7997 0 0.0000 0.05126 .
chisq.test(x)
# Pearson's Chi-squared test with Yates' continuity correction
#
# X-squared = 3.4397, df = 1, p-value = 0.06365
Comme @JWilliman l'a souligné dans un commentaire (maintenant supprimé) R
, vous pouvez également obtenir une valeur p basée sur le score à l'aide de anova.glm(model, test="Rao")
. Dans l'exemple ci-dessous, notez que la valeur p n'est pas tout à fait la même que dans le test du khi-carré ci-dessus, car, par défaut, R
's chisq.test()
applique une correction de continuité. Si nous changeons ce paramètre, les p-values correspondent:
anova(m, test="Rao")
# ...
# Df Deviance Resid. Df Resid. Dev Rao Pr(>Chi)
# NULL 1 3.7997
# D 1 3.7997 0 0.0000 4.024 0.04486 *
chisq.test(x, correct=FALSE)
# Pearson's Chi-squared test
#
# data: x
# X-squared = 4.024, df = 1, p-value = 0.04486