Test esatto di Fisher su dati associati


9

Dati casi con carcinoma polmonare e controlli corrispondenti (senza carcinoma polmonare) (abbinamento basato su età, sesso, ecc.). Per cercare di trovare prove tra l'effetto del fumo sul cancro del polmone, ho usato l'esatto test di Fisher sul tavolo delle contingenze. Ciò tuttavia non ha tenuto conto del fatto che i controlli e i casi sono stati abbinati. 404040

Quindi mi chiedevo se c'è un modo per usare l'esatto test di Fisher che tenga conto della corrispondenza tra i due gruppi?

Risposte:


8

È necessario il test di McNemar ( http://en.wikipedia.org/wiki/McNemar%27s_test , http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3346204/ ). Di seguito è riportato un esempio:

Sono stati studiati 1300 punti e 1300 controlli abbinati. Lo stato di fumo è presentato come segue:

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

Ogni voce della tabella mostra informazioni su una COPPIA DI CONTROLLO DEL CASO: 1000 significa in 1000 coppie di controllo del caso, né un fumatore. 40 è il numero di coppie caso-controllo in cui il controllo era fumatore e il malato di cancro non lo era, e così via. Il seguente codice R può essere utilizzato per generare questa tabella ed eseguire il test di 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

Il test di McNemar viene anche utilizzato per valutare l'effetto di un intervento su una variabile di risultato binaria. La coppia di risultati prima-dopo è presentata e testata come sopra.

Modifica: esempio esteso fornito da @gung, se lo stato del fumo è elencato nel mio dataframe mydf come segue:

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

Il test McNemars può essere eseguito con i seguenti comandi R:

> 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

Quale test usi per più controlli per caso, diciamo 10 controlli per caso?
eXpander,

Ciò meriterebbe una domanda e una discussione separate. Penso che sia possibile abbinare ogni caso con la media dei suoi controlli e quindi utilizzare il test di McNemar.
anche il

5

Hai ragione che l'esatto test di Fisher non è appropriato per i tuoi dati. Dovrai riformulare la tua tabella delle contingenze. La nuova tabella sarà per le coppie , quindi sembrerà avere la metà del numero di dati rappresentati (nel tuo caso 40 invece di 80). Ad esempio, immagina che i tuoi dati apparissero così (ogni gruppo di soggetti accoppiati è nella sua riga e 1indica un fumatore):

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

Quindi la tua vecchia tabella di contingenza potrebbe essere stata:

       cancer  control
smoker 5       3
non    6       8

La tua nuova tabella di contingenza sarà simile alla seguente:

            control
cancer    smoker  non           
  smoker  2       3
  non     1       5

La prima tabella di contingenza è stata sommata a 22 (il numero di soggetti totali nel tuo studio), ma la seconda tabella di contingenza è pari a 11 (il numero di coppie abbinate).

Con i tuoi dati rappresentati in questo modo, ciò che ti interessa è se le proporzioni marginali sono le stesse. Il test per questo è il test di McNemar . Ho spiegato il test di McNemar qui e qui .


1
Si noti che il test McNemar per i dati dicotomici equivale al test dei segni. Pertanto l'OP può utilizzare il test dei segni (con permutazione o test di significatività Monte Carlo, se necessario).
ttnphns,

1
@ttnphns, ne discuto nei thread collegati in cui spiego in dettaglio il test di McNemar.
gung - Ripristina Monica

1

non dovrebbe essere necessario utilizzare un test associato. l'abbinamento delle popolazioni accerta che la distribuzione delle covaraiti (età, ...) è la stessa nei due populati in modo da non "distorcere" il quadro.

il test confronta i mezzi delle popolazioni quindi non è necessario un accoppiamento di individui. ciò è necessario solo per misurazioni "ripetute", ad esempio il confronto dei menu prima e dopo il trattamento della stessa popolazione.


0

Sì e no:

probabilmente il tuo caso rientra nel caso di Pearce (2015) : il punto nell'articolo è che le variabili che usi per selezionare il controllo dovrebbero essere controllate nello studio e non nel test. Ciò potrebbe essere difficile a causa di N = 80.

Spero che questo aiuto :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.