Teste de McNemar

O teste de McNemar compara duas medidas binárias feitas nos mesmos sujeitos, antes/depois, dois avaliadores, dois testes diagnósticos, diferentemente do teste qui-quadrado de independência, que assume grupos independentes. É o equivalente para dados categóricos do teste t pareado: ambos aproveitam o pareamento para obter um teste mais poderoso e mais apropriado do que tratar as duas medidas como amostras independentes.

Por que não o teste qui-quadrado comum?

Com dados pareados, um teste qui-quadrado de independência padrão estaria errado. Ele assume que os dois conjuntos de observações são independentes, o que é falso por design aqui, são literalmente as mesmas 100 pessoas pesquisadas duas vezes. Aplicar qui-quadrado a dados pareados como se fossem duas amostras independentes ignora a correlação dentro de cada par e dá um resultado inválido.

O layout 2x2 para dados binários pareados

As respostas antes/depois de cada sujeito caem exatamente em uma de quatro células, e apenas duas delas realmente importam:

Depois: Sim Depois: Não
Antes: Sim \(a\) \(b\)
Antes: Não \(c\) \(d\)

O teste de McNemar usa apenas os pares discordantes, \(b\) (mudou de Sim para Não) e \(c\) (mudou de Não para Sim). Os pares concordantes \(a\) e \(d\) (pessoas que não mudaram) não trazem nenhuma informação sobre se a mudança é assimétrica, então eles saem completamente do teste.

\[H_0: b = c \text{ (na popula\c{c}\~{a}o)} \qquad H_1: b \neq c\]

Estatística do teste, com correção de continuidade (o padrão usual):

\[\chi^2 = \frac{(|b-c|-1)^2}{b+c}\]

Sem correção de continuidade:

\[\chi^2 = \frac{(b-c)^2}{b+c}\]

Sob \(H_0\), ambas as versões seguem uma distribuição \(\chi^2\) com 1 grau de liberdade.

Exemplo resolvido

Uma pesquisa antes/depois com os mesmos eleitores é o cenário clássico em que tratar as duas medidas como independentes distorceria gravemente o que realmente mudou:

Um debate televisionado muda o apoio a um candidato?

Os mesmos 100 eleitores são pesquisados antes e depois de assistir a um debate, perguntando se apoiam o Candidato A:

Depois: Sim Depois: Não Total
Antes: Sim 45 25 70
Antes: Não 5 25 30
Total 50 50 100

Pares discordantes: \(b=25\) (apoiava antes, se opôs depois, perdeu apoio) e \(c=5\) (se opunha antes, apoiou depois, ganhou apoio). Os 45 apoiadores constantes e os 25 opositores constantes, as células concordantes \(a\) e \(d\), não têm nenhum papel no teste em si.

Sem correção:

\[\chi^2 = \frac{(25-5)^2}{25+5} = \frac{400}{30} = 13{,}333\]

\(gl=1\), \(p = 0{,}000261\).

Com correção de continuidade:

\[\chi^2 = \frac{(|25-5|-1)^2}{30} = \frac{361}{30} = 12{,}033\]

\(gl=1\), \(p = 0{,}000523\).

Decisão: rejeitamos \(H_0\) em qualquer nível convencional, qualquer que seja a versão usada. O debate produziu uma mudança líquida significativa no apoio, especificamente um deslocamento contra o Candidato A, já que muito mais eleitores migraram de apoiar para se opor (25) do que o inverso (5), ainda que os totais marginais (70 vs. 50 de apoio antes, mas apenas 50 vs. 50 depois) pudessem, à primeira vista, sugerir algo menos dramático do que o que o pareamento revela.

Example icon

Mapa de calor da tabela 2x2 pareada de eleitores com as células discordantes destacadas e as concordantes atenuadas

Quando há poucos pares discordantes

Como todo o teste se apoia apenas em \(b\) e \(c\), uma contagem discordante pequena quebra a aproximação qui-quadrado da mesma forma que ocorre com o teste qui-quadrado comum:

⚠️ O teste de McNemar precisa de pares discordantes suficientes para ser válido

Com um número pequeno de pares discordantes (regra prática comum: \(b+c < 25\)), a aproximação qui-quadrado é pouco confiável, assim como o problema de frequências esperadas pequenas do teste qui-quadrado comum. Nesse caso, use a versão binomial exata: sob \(H_0\), \(b \sim \text{Binomial}(b+c, 0{,}5)\), e o valor-p exato vem diretamente da distribuição binomial em vez da aproximação qui-quadrado. mcnemar.test() não fornece essa versão exata diretamente, use binom.test(b, b+c, p = 0.5) sobre as contagens discordantes quando \(b+c\) for pequeno.

Estendendo além de 2 categorias: o teste de Stuart-Maxwell

Quando a variável pareada tem mais de duas categorias, não apenas Sim/Não, a generalização do teste de McNemar é o teste de Stuart-Maxwell, ou o teste de simetria de Bowker para o caso geral \(r \times r\). Ele testa se a tabela completa é simétrica em relação à sua diagonal. Isso não é abordado em profundidade aqui, mas vale saber que o nome existe para quando um resultado pareado tem três ou mais categorias.

Executando o teste em R

mcnemar.test() recebe a tabela 2x2 diretamente, e a versão binomial exata acima precisa apenas das duas contagens discordantes:

tab <- matrix(c(45, 25, 5, 25), nrow = 2, byrow = TRUE,
              dimnames = list(Before = c("Yes","No"), After = c("Yes","No")))

mcnemar.test(tab)                 # with continuity correction (default)
mcnemar.test(tab, correct = FALSE)

# Exact binomial version for small discordant counts
binom.test(25, 25 + 5, p = 0.5)

💡 McNemar vs. qui-quadrado vs. teste t pareado: qual usar

Dois grupos independentes, resultado categórico: use o teste qui-quadrado de independência. Mesmos sujeitos medidos duas vezes, resultado categórico/binário: use o teste de McNemar, este post. Mesmos sujeitos medidos duas vezes, resultado contínuo/numérico: use o teste t pareado. O fio comum entre os três: sempre que as observações forem pareadas ou combinadas por design, use um método que aproveite esse pareamento, nunca trate dados pareados como se viessem de grupos independentes.