Биномиальный тест с двумя пропорциями выборки в R (и некоторые странные p-значения)

23

Я пытаюсь решить следующий вопрос:

Игрок A выиграл 17 из 25 игр, а игрок B выиграл 8 из 20 - есть ли значительная разница между обоими соотношениями?

В R приходит на ум следующее:

> 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 

Таким образом, этот тест говорит, что разница не является существенной при уровне достоверности 95%.

Поскольку мы знаем, что prop.test()используется только приближение, я хочу сделать вещи более точными с помощью точного биномиального теста - и я делаю это обоими способами:

> 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 

Теперь это странно, не правда ли? Значения p совершенно разные каждый раз! В обоих случаях сейчас результаты (очень) значимы, но р-значения кажутся довольно случайными.

Мои вопросы

  1. Почему значения р , что каждый раз разный?
  2. Как правильно выполнить биномиальный тест с двумя пропорциями выборки в R?
vonjd
источник
3
Хотя функция R отличается ( prop.testvs chisq.test), в этом вопросе используется та же основная концепция . Вы запускаете три разных теста с разными «нулевыми гипотезами» в каждом из ваших трех примеров.
Affine

Ответы:

26

Если вы ищете «точный» тест для двух биноминальных пропорций, я думаю, что вы ищете точный тест Фишера . В R это применяется так:

> 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.testФункция принимает матрицу объект «успехов» и «неудач» два биномиальных пропорций. Как вы можете видеть, однако, двусторонняя гипотеза все еще не имеет значения, извините. Однако точный тест Фишера обычно применяется только при низком количестве ячеек (обычно это означает 5 или меньше, но некоторые говорят 10), поэтому ваше первоначальное использование prop.testболее уместно.

Что касается ваших binom.testзвонков, вы неправильно понимаете звонок. Когда вы бежите, binom.test(x=17,n=25,p=8/20)вы проверяете, значительно ли пропорция отличается от популяции, где вероятность успеха составляет 8/20 . Аналогично с binom.test(x=8,n=20,p=17/25)говорит, что вероятность успеха составляет 17/25, поэтому эти значения р отличаются. Поэтому вы не сравниваете эти две пропорции вообще.

cdeterman
источник
2
Спасибо, я принял ваш ответ. Когда вы говорите, что prop.test является «более подходящим», что вы имеете в виду? Более точный результат (буквально) дан точным тестом Фишера, не так ли?
vonjd
4
Это на самом деле то, что обсуждается среди статистиков, и у меня нет абсолютного ответа. Исторически, вы избегали Фишера, потому что он становится очень сложным в вычислительном отношении, но компьютер справляется с этим. Однако, в общем, точный тест Фишера является консервативным, и, если ваши числа достаточно велики, статистика хи-квадрат (которая и prop.testрассчитывает), скорее всего, не допустит ошибки типа II.
cdeterman
Для меня решающим моментом является различие в семантике prop.testи fisher.test: первое называется «как» prop.test(matrix(c(17, 8, 25, 20), ncol=2))(с указанием количества успехов в первом столбце и количества попыток во втором столбце), а второе называется «как» fisher.test(matrix(c(17, 25-17, 8, 20-8), ncol=2))(с указанием количества успехов). и неудачи ); поскольку fisher.test, транспозиция, похоже, тоже не меняет результат.
krlmlr
Более мощная альтернатива также доступна для тестов 2x2 - en.wikipedia.org/wiki/Barnard%27s_test
Hamy
4

Существует разница между двумя образцами и образцом по сравнению с известной гипотезой. Таким образом, если кто-то подбрасывает монету 100 раз и получает головы 55 раз, и гипотеза является честной, тогда как два человека подбрасывают монету неизвестной справедливости, а один получает голову 55 раз, а другой 45 раз. В первом случае вы просто пытаетесь определить, если флиппер, кажется, подбрасывает честную монету. В последнем случае вы смотрите, подбрасывают ли они монеты одинаковой справедливости. Вы можете видеть, как если вы смотрите на каждого игрока с известной вероятностью (45 против 50 и 55 против 50), отличается от сравнения их друг с другом (45 против 55).

кругозор
источник
2

Синтаксис binom.test- ваши успехи в ряде испытаний по сравнению с оценкой численности населения . Несмотря на то, что вы ввели его как p = 8/20, расчет такой, как если бы это была Богом абсолютная истина 0,4 с нулевой дисперсией вокруг нее. Или как если бы вы сравнивали 17 побед игрока А из 25 с гипотетическими 8 миллиардами побед игрока В из 20 миллиардов игр. Тем не менее, prop.testсравнивается доля 17/25 со всей ее потенциальной дисперсией с долей 8/20 со всей его собственной дисперсией. Другими словами, дисперсия около 0,7 (оценка 17/25) и дисперсия около 0,4 могут сливаться друг с другом с результирующим p = 0,06.

Фаррел
источник
Таким образом, это будет означать, что правильный способ решить первоначальный вопрос prop.test(c(17,8),c(25,20),correct=FALSE), верно?
Vonjd
1
Да, это правильно. Если вы хотите указания относительно того , должны ли вы иметь correct = FALSEпротив , correct = TRUEто я предлагаю вам прочитать следующую stats.stackexchange.com/questions/185433/...
Фаррел
2

Сначала я хотел бы предложить вам выполнить коррекцию непрерывности, поскольку вы оцениваете дискретное распределение с непрерывным распределением (хи-квадрат).

Во-вторых, важно иметь четкое представление о том, как проводился «эксперимент». Было ли заранее определено количество игр, в которые играл каждый человек (или в общеупотребительной отрасли, с учетом дизайна)? Если это так и далее, если предположить, что результаты каждого игрока не зависят от других, вы имеете дело с продуктом двух биномиальных распределений. Если вместо этого количество игр можно было свободно варьировать (например, количество игр, в которые играл каждый человек, было переменным, в зависимости от количества игр, которые каждая из них смогла завершить за фиксированный период времени), то вы имеете дело с многочленом. или распределение Пуассона.

Во втором случае уместен критерий хи-квадрат (или, что то же самое, z-критерий различия в пропорциях), но в первом случае это не так. В первом случае вам действительно необходимо рассчитать точный продукт каждого возможного биномиального исхода для каждого игрока и суммировать эти вероятности для всех случаев, которые равны или меньше общей биномиальной вероятности наблюдаемых исходов (это просто произведение двух биномов, потому что результаты каждого игрока не зависят от результатов другого игрока).

Прежде всего, следует признать, что главная цель любого теста на гипотезу состоит в том, чтобы вычислить, насколько «редким» или необычным является конкретный исход, который вы наблюдали, по сравнению со всеми другими возможными результатами. Это рассчитывается путем вычисления вероятности результата, который вы наблюдали - учитывая предположение, что нулевая гипотеза верна - суммируется вместе со всеми другими возможными результатами равной или меньшей вероятности.

Теперь стоит повторить то, что мы подразумеваем под «насколько редко» - «насколько низкая вероятность наблюдения полученного результата по сравнению со всеми другими возможными результатами»? Что ж, вероятность конкретного результата, который мы наблюдали, составляет 0,0679 * 0,0793 = 0,005115. Теперь рассмотрим конкретный альтернативный результат: вполне возможно, что игрок А мог выиграть 7 из 20 своих игр, а игрок Б мог выиграть 13 из 25 своих игр. Вероятность такого исхода составляет 0,004959. Обратите внимание, что это НИЖЕ, чем вероятность нашего наблюдаемого результата, поэтому его следует включить в значение р. Но посмотрите еще раз: если вы решаете, какие результаты включить в вашу сумму, основываясь на том, превышает ли разница в пропорциях разницу в пропорциях в нашем наблюдаемом результате, эта вероятность будет исключена! Зачем? Потому что разница в пропорциях для этого конкретного результата меньше, чем разница в пропорциях для нашего наблюдаемого результата. Но это не правильный фокус - мы должны заботиться о вероятности этого конкретного результата и о том, равен он или меньше, чем вероятность результата, который мы наблюдали!

Хорошее формальное объяснение этого можно найти здесь:

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

Обратите особое внимание на утверждение на странице 9, что «Если поле строки фиксировано и схема выборки является биномиальной, то мы должны использовать биномиальную модель продукта, потому что мы не можем оценить совместное распределение для двух переменных без дополнительной информации».

user221943
источник
Для R-кода, который вычисляет сумму совместных биномиальных вероятностей, которые имеют равную или меньшую вероятность возникновения по сравнению с вероятностью наблюдаемого исхода, см. Ответ на следующий связанный пост: stats.stackexchange.com/questions/213295/…
user221943