Relation entre le test de McNemar et la régression logistique conditionnelle

14

Je m'intéresse à la modélisation des données de réponse binaire dans les observations appariées. Nous visons à faire l'inférence sur l'efficacité d'une intervention pré-post dans un groupe, en ajustant potentiellement pour plusieurs covariables et en déterminant s'il y a modification de l'effet par un groupe qui a reçu une formation particulièrement différente dans le cadre d'une intervention.

Compte tenu des données de la forme suivante:

id phase resp
1  pre   1
1  post  0
2  pre   0
2  post  0
3  pre   1
3  post  0

Et un tableau de contingence des informations de réponse appariées:2×2

PréCorrectIncorrectPublierCorrectunebIncorrectc

Nous nous intéressons au test d'hypothèse: H0:θc=1 .

Le test de McNemar donne: sousH0(asymptotiquement). Ceci est intuitif car, sous le zéro, nous nous attendrions à ce qu'une proportion égale des paires discordantes (betc) favorise un effet positif (b) ou un effet négatif (c). Avec la probabilité de définition de cas positive définiep=bQ=(b-c)2b+cχ12H0bcbc etn=b+c. La probabilité d'observer une paire discordante positive est depp=bb+cn=b+c .p1-p=bc

En revanche, la régression logistique conditionnelle utilise une approche différente pour tester la même hypothèse, en maximisant la vraisemblance conditionnelle:

L(X;β)=j=1nexp(βXj,2)exp(βXj,1)+exp(βXj,2)

exp(β)=θc .

Alors, quelle est la relation entre ces tests? Comment faire un simple test du tableau de contingence présenté précédemment? En regardant l'étalonnage des valeurs de p à partir des approches de clogit et de McNemar sous le zéro, vous penseriez qu'elles n'étaient absolument pas liées!

library(survival)
n <- 100
do.one <- function(n) {
  id <- rep(1:n, each=2)
  ph <- rep(0:1, times=n)
  rs <- rbinom(n*2, 1, 0.5)
  c(
    'pclogit' = coef(summary(clogit(rs ~ ph + strata(id))))[5],
    'pmctest' = mcnemar.test(table(ph,rs))$p.value
  )
}

out <- replicate(1000, do.one(n))
plot(t(out), main='Calibration plot of pvalues for McNemar and Clogit tests', 
  xlab='p-value McNemar', ylab='p-value conditional logistic regression')

entrez la description de l'image ici

AdamO
la source
pb=pcune/bc=1au sein d'une strate.
Randel
Je semble me rappeler que l'on peut paramétrer le test de McNemar comme un test d'un rapport de cotes, donc je me demande comment on pourrait écrire la probabilité (probabilité conditionnelle?) Pour ce test.
AdamO
Je ne sais pas si vous voulez dire la version exacte du test de McNemar. Breslow et Day (1980) , p. 164-166 et le paquet exact2x2 peuvent être des références.
Randel

Réponses:

4

Désolé, c'est un vieux problème, je suis tombé dessus par hasard.

Il y a une erreur dans votre code pour le test mcnemar. Essayez avec:

n <- 100
do.one <- function(n) {
  id <- rep(1:n, each=2)
  case <- rep(0:1, times=n)
  rs <- rbinom(n*2, 1, 0.5)
  c(
    'pclogit' = coef(summary(clogit(case ~ rs + strata(id))))[5],
    'pmctest' = mcnemar.test(table(rs[case == 0], rs[case == 1]))$p.value
  )
}

out <- replicate(1000, do.one(n))

entrez la description de l'image ici

eusebe
la source
Hou la la! Merci et bienvenue dans la communauté. Juste pour clarifier, McNemar travaille sur des paires appariées discordantes (?) Ces paires sont-elles abandonnées du clogit? Je ne vois pas comment id est impliqué dans le calcul des résultats de mcnemar. Peut-être que générer une corrélation dans ces éléments aiderait à élucider ce que fait Clogit.
AdamO
2

Il existe 2 modèles statistiques concurrents. Modèle n ° 1 (hypothèse nulle, McNemar): probabilité correcte à incorrecte = probabilité de incorrecte à corriger = 0,5 ou équivalent b = c. Modèle n ° 2: probabilité correcte à incorrecte <probabilité de incorrect à correcte ou équivalent b> c. Pour le modèle n ° 2, nous utilisons la méthode du maximum de vraisemblance et la régression logistique pour déterminer les paramètres du modèle représentant le modèle 2. Les méthodes statistiques sont différentes parce que chaque méthode reflète un modèle différent.

AMM
la source
Vous dites que le clogit n'est pas un test bilatéral?
AdamO