Test exact de Fisher sur les données appariées


9

Compte tenu de cas de cancer du poumon et de témoins appariés (sans cancer du poumon) (appariement basé sur l'âge, le sexe, etc.). Pour essayer de trouver des preuves entre l'effet du tabagisme sur le cancer du poumon, j'ai utilisé le test exact de Fisher sur le tableau de contingence. Cependant, cela ne tenait pas compte du fait que les contrôles et les cas étaient appariés. 404040

Je me suis donc demandé s'il existe un moyen d'utiliser le test exact de Fisher qui prend en compte la correspondance entre les deux groupes?

Réponses:


8

Vous avez besoin du test de McNemar ( http://en.wikipedia.org/wiki/McNemar%27s_test , http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3346204/ ). Voici un exemple:

1300 pts et 1300 contrôles appariés sont étudiés. Le statut de fumeur est présenté comme suit:

             Normal   
           |no  |yes|
Cancer|No  |1000|40 |
      |Yes |200 |60 |

Chaque entrée du tableau montre des informations sur une PAIRE CASE-CONTROL: 1000 signifie dans 1000 paires cas-témoins, ni l'un ni l'autre n'était un fumeur. 40 est le nombre de paires cas-témoins où le témoin était fumeur et non atteint de cancer, etc. Le code R suivant peut être utilisé pour générer cette table et effectuer le test de McNemar.

mat = as.table(rbind(c(1000, 40), c( 200, 60) ))
colnames(mat) <- rownames(mat) <- c("Nonsmoker", "Smoker")
names(dimnames(mat)) = c("Cancer", "Normal")
mat
#                  Normal
#              Nonsmoker Smoker
# Cancer
#  Nonsmoker      1000     40
#  Smoker          200     60


mcnemar.test(mat)

#        McNemar's Chi-squared test with continuity correction
#
#data:  mat
#McNemar's chi-squared = 105.34, df = 1, p-value < 2.2e-16

Le test de McNemar est également utilisé pour évaluer l'effet d'une intervention sur une variable de résultat binaire. La paire de résultats avant-après est présentée et testée comme ci-dessus.

Edit: Exemple d'extension donné par @gung, si le statut de fumeur est répertorié dans votre dataframe mydf comme suit:

pairID  cancer  control
1       1       1
2       1       1
3       1       0
...

Le test McNemars peut être effectué avec les commandes R suivantes:

> tt = with(mydf, table(cancer, control))
> tt
      control
cancer 0 1
     0 5 1
     1 3 2

> mcnemar.test(tt)

        McNemar`s Chi-squared test with continuity correction

data:  tt
McNemar`s chi-squared = 0.25, df = 1, p-value = 0.6171

Quel test utilisez-vous pour plusieurs contrôles par cas, disons 10 contrôles par cas?
eXpander

Cela mériterait une question et une discussion distinctes. Je pense que l'association de chaque cas avec la moyenne de ses contrôles peut être prise, puis le test de McNemar peut être utilisé.
rnso

5

Vous avez raison de dire que le test exact de Fisher est inapproprié pour vos données. Vous devrez reformer votre table de contingence. Le nouveau tableau sera pour les paires , donc il semblera avoir deux fois moins de données représentées (dans votre cas 40 au lieu de 80). Par exemple, imaginez que vos données ressemblent à ceci (chaque ensemble de sujets jumelés est dans sa propre ligne et 1indique un fumeur):

cancer  control
1       1
1       1
1       0
1       0
1       0
0       1
0       0
0       0
0       0
0       0
0       0

Alors votre ancienne table de contingence aurait pu être:

       cancer  control
smoker 5       3
non    6       8

Votre nouveau tableau de contingence ressemblera à ceci:

            control
cancer    smoker  non           
  smoker  2       3
  non     1       5

Le premier tableau de contingence se résume à 22 (le nombre total de sujets dans votre étude), mais le deuxième tableau de contingence s'élève à 11 (le nombre de paires appariées).

Avec vos données représentées de cette façon, ce qui vous intéresse, c'est si les proportions marginales sont les mêmes. Le test pour cela est le test de McNemar . J'ai expliqué le test de McNemar ici et ici .


1
Notez que le test de McNemar pour les données dichotomiques est équivalent au test de signe. Le PO peut donc utiliser un test de signe (avec permutation ou test de signification Monte Carlo, si nécessaire).
ttnphns

1
@ttnphns, j'en discute dans les fils liés où j'explique le test de McNemar en détail.
gung - Rétablir Monica

1

il ne devrait pas être nécessaire d'utiliser un test apparié. l'appariement des populations permet de constater que la répartition des covaraités (âge, ...) est la même dans les deux populatoins afin de ne pas "déformer" l'image.

le test compare les moyennes des populations donc un appariement d'individus n'est pas nécessaire. cela n'est nécessaire que pour les mesures "répétées", par exemple pour comparer les ménas avant et après le traitement de la même population.


0

Oui et non:

votre cas relève probablement du cas Pearce (2015) : le point dans l'article est que les variables que vous utilisez pour sélectionner le contrôle doivent être contrôlées dans l'étude et non dans le test. Cela pourrait être difficile en raison du N = 80.

J'espère que cette aide :)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.