Dokładny test Fishera na sparowanych danych

9

Biorąc pod uwagę przypadków raka płuc i dopasowanych kontroli (bez raka płuc) (dopasowanie w zależności od wieku, płci itp.). Aby znaleźć dowody na wpływ palenia na raka płuc, zastosowałem dokładny test Fishera na stole awaryjnym. Nie wzięto jednak pod uwagę, że kontrole i przypadki zostały dopasowane. 4040

Zastanawiałem się więc, czy istnieje sposób na zastosowanie dokładnego testu Fishera, który uwzględnia dopasowanie między dwiema grupami?

Gert
źródło

Odpowiedzi:

8

Potrzebujesz testu McNemara ( http://en.wikipedia.org/wiki/McNemar%27s_test , http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3346204/ ). Oto przykład:

Zbadano 1300 pkt. I 1300 dopasowanych kontroli. Status palenia przedstawiono następująco:

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

Każdy wpis w tabeli pokazuje informacje o PARIE KONTROLI SPRAWY: 1000 oznacza w 1000 parach kontroli przypadków, żadna z nich nie była palaczem. 40 to liczba par kontrolnych przypadków, w których kontrola była palaczem, a pacjent z rakiem nie, i tak dalej. Poniższy kod R można wykorzystać do wygenerowania tej tabeli i wykonania testu McNemara.

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

Test McNemara służy również do oceny wpływu interwencji na binarną zmienną wyniku. Para wyników przed-po jest przedstawiona i przetestowana jak wyżej.

Edycja: Rozszerzając przykład podany przez @gung, jeśli status palenia jest wymieniony w ramce danych mydf w następujący sposób:

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

Test McNemars można wykonać za pomocą następujących poleceń 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
rnso
źródło
Którego testu używasz dla wielu kontroli na przypadek, powiedzmy 10 kontroli na przypadek?
eXpander
To zasługuje na osobne pytanie i dyskusję. Myślę, że można sparować każdy przypadek ze średnią jego kontroli, a następnie zastosować test McNemara.
rnso
5

Masz rację, że dokładny test Fishera jest nieodpowiedni dla twoich danych. Będziesz musiał ponownie sformułować tabelę zdarzeń awaryjnych. Nowa tabela będzie dla par , więc będzie wyglądać, jakby zawierała o połowę mniej danych (w twoim przypadku 40 zamiast 80). Na przykład wyobraź sobie, że twoje dane wyglądały tak (każdy zestaw sparowanych tematów znajduje się w osobnym wierszu i 1wskazuje na palacza):

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

Zatem twoja stara tabela awaryjna mogła być:

       cancer  control
smoker 5       3
non    6       8

Twój nowy stół awaryjny będzie wyglądał następująco:

            control
cancer    smoker  non           
  smoker  2       3
  non     1       5

Pierwsza tabela kontyngentów została zsumowana do 22 (liczba wszystkich badanych osób w badaniu), ale druga tabela kontyngentów to 11 (liczba dopasowanych par).

Gdy Twoje dane są reprezentowane w ten sposób, interesuje Cię to, czy proporcje krańcowe są takie same. Test na to jest test McNemara . Wyjaśniłem test McNemara tu i tutaj .

gung - Przywróć Monikę
źródło
1
Zauważ, że test McNemara dla danych dychotomicznych jest równoważny testowi znaku. Dlatego OP może zastosować test znakowy (w razie potrzeby z permutacją lub testem znaczenia Monte Carlo).
ttnphns
1
@ttnphns, omawiam to w linkowanych wątkach, w których szczegółowo wyjaśniam test McNemara.
Gung - Przywróć Monikę
1

nie powinno być konieczne stosowanie sparowanego testu. dopasowanie populacji potwierdza, że ​​rozkład kowarianitów (wiek, ...) jest taki sam w dwóch populatoinach, więc nie „zniekształca” obrazu.

test porównuje średnie populacji, więc parowanie osobników nie jest konieczne. jest to wymagane tylko w przypadku „powtarzanych” pomiarów, np. porównywania menas przed i po leczeniu tej samej populacji.

tikacp
źródło
0

Tak i nie:

prawdopodobnie twój przypadek jest objęty sprawą Pearce'a (2015) : chodzi o to, że zmienne, których używasz do wyboru kontroli, powinny być kontrolowane w badaniu, a nie w teście. Może to być trudne ze względu na N = 80.

Mam nadzieję, że to pomoże :)

Giovanni Iacopetti
źródło