Dokładny dwumianowy test dwóch proporcji próbki w R (i niektóre dziwne wartości p)

23

Próbuję rozwiązać następujące pytanie:

Gracz A wygrał 17 z 25 gier, podczas gdy gracz B wygrał 8 z 20 - czy istnieje znacząca różnica między obydwoma współczynnikami?

Co przychodzi na myśl w R, to:

> prop.test(c(17,8),c(25,20),correct=FALSE)

    2-sample test for equality of proportions without continuity correction

data:  c(17, 8) out of c(25, 20)
X-squared = 3.528, df = 1, p-value = 0.06034
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.002016956  0.562016956
sample estimates:
prop 1 prop 2 
  0.68   0.40 

Ten test mówi, że różnica nie jest znacząca na poziomie ufności 95%.

Ponieważ wiemy, że prop.test()używa się tylko przybliżenia, chcę uściślić wszystko za pomocą dokładnego testu dwumianowego - i robię to w obie strony:

> binom.test(x=17,n=25,p=8/20)

    Exact binomial test

data:  17 and 25
number of successes = 17, number of trials = 25, p-value = 0.006693
alternative hypothesis: true probability of success is not equal to 0.4
95 percent confidence interval:
 0.4649993 0.8505046
sample estimates:
probability of success 
                  0.68 

> binom.test(x=8,n=20,p=17/25)

    Exact binomial test

data:  8 and 20
number of successes = 8, number of trials = 20, p-value = 0.01377
alternative hypothesis: true probability of success is not equal to 0.68
95 percent confidence interval:
 0.1911901 0.6394574
sample estimates:
probability of success 
                   0.4 

To dziwne, prawda? Wartości p są za każdym razem zupełnie inne! W obu przypadkach wyniki są (bardzo) znaczące, ale wartości p wydają się przeskakiwać raczej przypadkowo.

Moje pytania

  1. Dlaczego wartości p , że za każdym razem inny?
  2. Jak poprawnie wykonać dokładnie dwumianowy test dwóch proporcji próbki w R?
vonjd
źródło
3
Chociaż funkcja R jest inna ( prop.testvs chisq.test), w tym pytaniu znajduje się ta sama podstawowa koncepcja . Przeprowadzasz trzy różne testy z różnymi „hipotezami zerowymi” w każdym z trzech przykładów.
Affine

Odpowiedzi:

26

Jeśli szukasz „dokładnego” testu dla dwóch dwumianowych proporcji, uważam, że szukasz dokładnego testu Fishera . W R stosuje się to tak:

> fisher.test(matrix(c(17, 25-17, 8, 20-8), ncol=2))
    Fisher's Exact Test for Count Data
data:  matrix(c(17, 25 - 17, 8, 20 - 8), ncol = 2)
p-value = 0.07671
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
  0.7990888 13.0020065
sample estimates:
odds ratio 
  3.101466 

fisher.testFunkcja przyjmuje obiektu matrycy z „sukcesu” i „awarii” dwa dwumianowe proporcjach. Jak widać jednak, dwustronna hipoteza nadal nie jest znacząca, przykro mi to mówić. Jednak dokładny test Fishera jest zwykle stosowany tylko wtedy, gdy liczba komórek jest niska (zazwyczaj oznacza to 5 lub mniej, ale niektórzy twierdzą, że 10), dlatego początkowe użycie prop.testjest bardziej odpowiednie.

Jeśli chodzi o binom.testpołączenia, nie rozumiesz połączenia. Podczas biegu binom.test(x=17,n=25,p=8/20)sprawdzasz, czy proporcja jest znacząco różna od populacji, w której prawdopodobieństwo sukcesu wynosi 8/20 . Podobnie binom.test(x=8,n=20,p=17/25)mówi się, że prawdopodobieństwo sukcesu wynosi 17/25, dlatego te wartości p różnią się. Dlatego w ogóle nie porównujesz dwóch proporcji.

cdeterman
źródło
2
Dziękuję, zaakceptowałem twoją odpowiedź. Kiedy mówisz, że prop.test jest „bardziej odpowiedni”, co dokładnie masz na myśli? Dokładniejszy wynik podaje (dosłownie) dokładny test Fishera, prawda?
vonjd
4
W rzeczywistości jest to kwestia dyskutowana wśród statystyk i nie mam absolutnej odpowiedzi. Historycznie unikałeś Fishera, ponieważ staje się on bardzo skomplikowany obliczeniowo, ale komputer sobie z tym radzi. Generalnie jednak dokładny test Fishera jest zachowawczy i jeśli twoje liczby są wystarczająco duże, statystyki chi-kwadrat (które się prop.testoblicza) z większym prawdopodobieństwem nie popełnią błędu typu II.
cdeterman,
Kluczową kwestią dla mnie są różne semantyki prop.testi fisher.test: Pierwsza z nich nazywa się podobna prop.test(matrix(c(17, 8, 25, 20), ncol=2))(podając liczbę sukcesów w pierwszej kolumnie i liczbę prób w drugiej kolumnie), podczas gdy druga nazywa się podobna fisher.test(matrix(c(17, 25-17, 8, 20-8), ncol=2))(podając liczbę sukcesów i awarie ); ponieważ fisher.testtranspozycja również nie zmienia wyniku.
krlmlr
Bardziej wydajna alternatywa jest również dostępna dla testów 2x2 - en.wikipedia.org/wiki/Barnard%27s_test
Hamy
4

Istnieje różnica między dwiema próbkami a próbką w porównaniu ze znaną hipotezą. Więc jeśli ktoś rzuci monetą 100 razy i dostanie głowy 55 razy, a hipoteza jest uczciwa, w porównaniu z dwiema osobami rzucającymi monetą o nieznanej uczciwości i jedną zdobywającą głowy 55 razy, a drugą 45 razy. W pierwszym przypadku po prostu próbujesz ustalić, czy flipper wydaje się rzucić uczciwą monetą. W tym ostatnim chcesz sprawdzić, czy rzucają monetami o tej samej uczciwości. Możesz zobaczyć, jak jeśli patrzysz na każdego gracza ze znanym prawdopodobieństwem (45 vs. 50 i 55 vs. 50) różni się od porównywania ich ze sobą (45 vs 55).

Rozpoznać
źródło
2

Składnia binom.testjest twoimi sukcesami w szeregu prób w porównaniu do oszacowania punktu populacji . Chociaż wprowadziłeś go jako p = 8/20, obliczenia są tak, jakby to była podana przez Boga absolutna prawda 0,4 z zerową wariancją wokół niej. Lub jest tak, jakbyś porównywał 17 zwycięstw gracza A z 25 do hipotetycznych 8 miliardów zwycięstw gracza z 20 miliardów gier. Jednak prop.testporównuje proporcji 17/25 ze wszystkimi jego potencjalnej sprzeczności do proporcji 8/20 z wszystkimi własnej wariancji. Innymi słowy, wariancja około 0,7 (szacunkowa wartość 17/25) i wariancja około 0,4 mogą przenikać się nawzajem z wynikiem p = 0,06.

Farrel
źródło
Oznaczałoby to, że właściwym sposobem rozwiązania pierwotnego pytania jest prop.test(c(17,8),c(25,20),correct=FALSE), prawda?
vonjd
1
Tak to jest poprawne. Jeśli potrzebujesz wskazówek, czy powinieneś mieć correct = FALSEvs correct = TRUE, sugeruję przeczytać następujące statystyki: stackexchange.com/questions/185433/…
Farrel
2

Najpierw zasugerowałbym, że chcesz dokonać korekty ciągłości, ponieważ szacujesz rozkład dyskretny z rozkładem ciągłym (chi-kwadrat).

Po drugie, ważne jest, aby wyjaśnić, w jaki sposób przeprowadzono „eksperyment”. Czy liczba gier, w które grała każda osoba, została ustalona z góry (lub w języku branżowym, ustalonym przez projekt)? Jeśli tak, i zakładając, że wyniki każdego gracza są niezależne od drugiego, masz do czynienia z iloczynem 2 rozkładów dwumianowych. Jeśli zamiast tego liczba gier mogła się zmieniać (powiedzmy na przykład, liczba gier, w które każda osoba grała, była zmienna, w zależności od liczby gier, które każda była w stanie ukończyć w ustalonym czasie), wówczas masz do czynienia z wielomianem lub rozkład Poissona.

W drugim przypadku test chi-kwadrat (lub co to jest to samo, test Z różnicy proporcji) jest odpowiedni, ale w pierwszym przypadku tak nie jest. W pierwszym przypadku naprawdę musisz obliczyć dokładny iloczyn każdego możliwego wyniku dwumianowego dla każdego gracza i zsumować te prawdopodobieństwa dla wszystkich zdarzeń, które są równe lub mniejsze od łącznego dwumianowego prawdopodobieństwa zaobserwowanych wyników (jest to po prostu iloczyn 2 dwumianów, ponieważ wyniki każdego gracza są niezależne od wyników innego gracza).

Najpierw uznaj, że głównym celem każdego testu hipotez jest obliczenie, jak „rzadki” lub nietypowy jest konkretny zaobserwowany wynik, w porównaniu do wszystkich innych możliwych wyników. Oblicza się to poprzez obliczenie prawdopodobieństwa zaobserwowanego wyniku - przy założeniu, że hipoteza zerowa jest prawdziwa - zsumowanego ze wszystkimi innymi możliwymi wynikami równego lub niższego prawdopodobieństwa.

Teraz odważne jest powtarzanie, że to, co rozumiemy przez „jak rzadkie” to „jak małe jest prawdopodobieństwo zaobserwowania uzyskanego wyniku w porównaniu do wszystkich innych możliwych wyników?” Prawdopodobieństwo określonego wyniku, które zaobserwowaliśmy, wynosi 0,0679 * 0,0793 = 0,005115. Rozważmy teraz konkretny alternatywny wynik: z pewnością możliwe jest, że gracz A wygrał 7 z 20 gier, a gracz B wygrał 13 z 25 gier. Prawdopodobieństwo tego wyniku wynosi 0,004959. Zauważ, że jest to NIŻSZE niż prawdopodobieństwo naszego zaobserwowanego wyniku, dlatego należy je uwzględnić w wartości p. Ale spójrz jeszcze raz: jeśli decydujesz, które wyniki uwzględnić w swojej sumie na podstawie tego, czy różnica proporcji przekracza różnicę proporcji w naszym obserwowanym wyniku, prawdopodobieństwo to zostanie wykluczone! Czemu? Ponieważ różnica proporcji dla tego konkretnego wyniku jest mniejsza niż różnica proporcji dla naszego obserwowanego wyniku. Ale to nie jest właściwy cel - musimy martwić się prawdopodobieństwem tego konkretnego wyniku i czy jest ono równe prawdopodobieństwu, które zaobserwowaliśmy, czy mniej.

Dobre formalne wyjaśnienie tego można znaleźć tutaj:

http://data.princeton.edu/wws509/notes/c5.pdf

Zwróć uwagę na stwierdzenie na stronie 9, że „Jeśli margines wiersza jest stały, a schemat próbkowania jest dwumianowy, musimy zastosować model dwumianowy produktu, ponieważ nie możemy oszacować rozkładu połączeń dla dwóch zmiennych bez dalszych informacji”.

użytkownik221943
źródło
Dla kodu R, który oblicza sumę wspólnych prawdopodobieństw dwumianowych, które mają równe lub niższe prawdopodobieństwo wystąpienia w porównaniu z prawdopodobieństwem zaobserwowanego wyniku, zobacz odpowiedź na następujący pokrewny post: stats.stackexchange.com/questions/213295/...
user221943