Проверьте, являются ли два биномиальных распределения статистически отличными друг от друга

37

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

Чтобы упростить тест, давайте просто скажем, что у меня есть 2 группы (3 могут быть расширены из этого базового случая).

  • Испытания группы 1: = 2455n1
  • Испытания группы 2: = 2730n2

  • Успех группы 1: = 1556k1
  • Успех группы 2: = 1671k2

У меня нет ожидаемой вероятности успеха, только то, что я знаю из образцов. Итак, мой предполагаемый уровень успеха для двух групп:

  • Успех группы 1: = 1556/2455 = 63,4%p1
  • Успех группы 2: = 1671/2730 = 61,2%p2

Показатель успешности каждого образца довольно близок. Однако мои размеры выборки также довольно велики. Если я проверяю CDF биномиального распределения, чтобы увидеть, насколько он отличается от первого (где я предполагаю, что первый - нулевой тест), я получаю очень небольшую вероятность того, что второе может быть достигнуто.

В Excel:

1-BINOM.DIST (1556 245,61,2%, ИСТИНА) = 0,012

Однако это не учитывает дисперсию первого результата, оно просто предполагает, что первый результат является вероятностью теста.

Есть ли лучший способ проверить, действительно ли эти две выборки данных статистически отличаются друг от друга?

Скотт
источник
Другой вопрос, с которым я столкнулся, не очень помог: stats.stackexchange.com/questions/82059/…
Скотт,
Этот вопрос помогает? stats.stackexchange.com/questions/25299/…
Эрик
2
В R, вы можете использовать prop.test: prop.test(c(1556, 1671), c(2455, 2730)).
COOLSerdash
1
Может быть выполнен в виде теста с двумя
выборками
1
Расширение базового варианта с двух групп до трех может быть проблематичным, поскольку тесты будут взаимозависимы: для этого вам понадобится биномиальная версия ANOVA.
whuber

Ответы:

36

Это простое решение от Google: http://en.wikipedia.org/wiki/Statistical_hypothesis_testing

Таким образом, вы хотели бы проверить следующую нулевую гипотезу против данной альтернативы

H A : p 1p 2H0:p1=p2 противHA:p1p2

Так что вам просто нужно рассчитать статистику теста, которая

z=p^1p^2p^(1p^)(1n1+1n2)

где . p^=n1p^1+n2p^2n1+n2

Итак, теперь в вашей задаче , , и р 2=0,612п1=2455п2=2730.p^1=.634p^2=.612n1=2455n2=2730.

Как только вы вычислите статистику теста, вам просто нужно вычислить соответствующее значение критической области, чтобы сравнить статистику теста. Например, если вы проверяете эту гипотезу на уровне достоверности 95%, вам необходимо сравнить статистику теста со значением критической области (для этого двухстороннего теста).zα/2=1.96

Теперь, если вы можете отклонить нулевую гипотезу, в противном случае вам не удастся отклонить нулевую гипотезу. z>zα/2

Хорошо, это решение работает для случая, когда вы сравниваете две группы, но оно не обобщается на случай, когда вы хотите сравнить 3 группы.

Тем не менее, вы можете использовать критерий Chi Squared, чтобы проверить, имеют ли все три группы одинаковые пропорции, как предложено @Eric в его комментарии выше: «Помогает ли этот вопрос? Stats.stackexchange.com/questions/25299/… - Eric»

Дэн
источник
6
Спасибо @Dan. Как и много раз с Google, знание правильного термина для поиска является первым препятствием. Я взглянул на критерий хи-квадрат. Проблема там, где я впервые застрял, состоит в том, что мои ожидаемые расчеты основаны на выборке. Поэтому я не могу предоставить ожидаемое значение, потому что мои образцы используются для определения этого ожидаемого значения.
Скотт
@ Скотт, если ваши предполагаемые пропорции для трех групп равны, то ожидаемое значение должно быть 1/3 для каждой группы.
Дан
1
Связанное объяснение использования этого теста можно найти здесь: itl.nist.gov/div898/handbook/prc/section3/prc33.htm (в настоящее время страница Wikipedia не предоставляет пример пошагового руководства ).
wwwilliam
Может ли кто-нибудь помочь мне доказать стандартное отклонение разницы между двумя биномиальными распределениями, другими словами, доказать, что:
p^(1p^)(1n1+1n2)=p^1(1p^1)n1+p^2(1p^2)n2
Танги
Ответ на мой вопрос можно найти здесь: stats.stackexchange.com/questions/361015/…
Tanguy
11

В R ответ рассчитывается как:

fisher.test(rbind(c(1556,2455-1556), c(1671,2730-1671)), alternative="less")
Давид Маковоз
источник
8
Не могли бы вы написать немного больше, чем просто предоставить функцию R? Наименование функции не помогает в понимании проблемы, и не все используют R, поэтому для них это не поможет.
Тим
1
Это наиболее точный статистический ответ, который подходит для небольшого числа наблюдений (см. Следующее: itl.nist.gov/div898/handbook/prc/section3/prc33.htm ).
Андрей Мао
1
Точный тест рыболовов en.wikipedia.org/wiki/Fisher's_exact_test
Кит
3

Просто резюме:

Ответы Дэна и Абаумана предполагают тестирование по биномиальной модели, где нулевая гипотеза представляет собой единую модель с одним биномиальным значением, среднее значение которого оценивается по эмпирическим данным. Их ответы верны в теории, но они нуждаются в приближении с использованием нормального распределения, поскольку распределение тестовой статистики не совсем соответствует нормальному распределению. Поэтому это правильно только для большого размера выборки.

Но ответ Дэвида указывает на непараметрический тест с использованием теста Фишера. Информация здесь: https://en.wikipedia.org/wiki/Fisher%27s_exact_test. И его можно применять к небольшим размерам выборки, но трудно рассчитать для больших размеров выборки.

Какой тест использовать, и насколько вы доверяете своему p-значению, остается загадкой. Но всегда есть предубеждения в зависимости от того, какой тест выбрать.

Dr_Hope
источник
2
1/2
1
Для этого случая, я думаю, вы могли бы использовать метод Дэна, но вычислить значение p точным способом (биномиальным) и приблизительным способом (нормальный Z> Φ − 1 (1 − α / 2) Z> Φ − 1 (1 − α / 2) и Z <Φ − 1 (α / 2)), чтобы сравнить, достаточно ли они близки.
Dr_Hope
1

Z=p1^p2^p^(1p^)(1/n1+1/n2)p^=n1p1^+n2p2^n1+n2

Z>Φ1(1α/2)Z<Φ1(α/2)

abaumann
источник
1

В Python statsmodels имеет функцию с именем proportions_ztest. Вот пример его использования:

import statsmodels.api as sm
import numpy as np
import rpy2.robjects.packages as rpackages
import rpy2.robjects as robjects
rstats = rpackages.importr('stats')

s1 = 1556
n1 = 2455

s2 = 1671
n2 = 2730

# manual calculation
p1 = s1 / n1
p2 = s2 / n2
p = (s1 + s2) / (n1 + n2)

z = (p1 - p2) / (p*(1-p)*((1/n1)+(1/n2)))**0.5

# using R in Python with rpy2
rmatrix = robjects.r.matrix(robjects.IntVector([s1, n1-s1, s2,n2-s2]), nrow=2)
fisher_test = rstats.fisher_test(rmatrix, alternative="two.sided")

zscore, pval = sm.stats.proportions_ztest([s1, s2], [n1, n2], alternative='two-sided')

print('Manual calculation of z: {:.6f}'.format(z))
print('Z-score from statsmodels: {:.6f}'.format(zscore))
print('R pvalue from fisher.test: {:.6f}'.format(fisher_test[0][0]))
print('Statsmodels pvalue: {:.6f}'.format(pval))

Это распечатывает:

Manual calculation of z: 1.610825
Z-score from statsmodels: 1.610825
R pvalue from fisher.test: 0.108268
Statsmodels pvalue: 0.107218
Джарад
источник
-1

Оригинальный пост: ответ Дэна на самом деле неправильный, никого не обидеть. Z-тест используется только в том случае, если ваши данные соответствуют стандартному нормальному распределению. В этом случае ваши данные соответствуют биномиальному распределению, поэтому используйте критерий хи-квадрат, если ваша выборка велика, или критерий Фишера, если ваша выборка мала.

Изменить: Моя ошибка, извинения перед @Dan. Z-тест действителен здесь, если ваши переменные независимы. Если это предположение не выполнено или неизвестно, z-тест может быть недействительным.

Райан
источник
3
χ2
Если вы верите в CLT, то нормальное распределение обычно существует.
Райан
2
@ Райан Хорошо, я верю в CLT, но он ничего не говорит о n = 30 или n = 300 или n = 5000. На самом деле вы не получите нормальности, если вам как-то не удастся иметь бесконечные размеры выборки или вы каким-то образом начали с нормальности. CLT не отвечает на вопросы о том, насколько мы близки к нормальности, когда мы берем средние значения. (Мы можем рассмотреть эти вопросы, но не используем CLT, чтобы выяснить, подходит ли приближение.)
Glen_b -Reinstate Monica