Teste se duas distribuições binomiais são estatisticamente diferentes uma da outra


37

Eu tenho três grupos de dados, cada um com uma distribuição binomial (ou seja, cada grupo tem elementos que são sucesso ou fracasso). Não tenho uma probabilidade prevista de sucesso, mas só posso confiar na taxa de sucesso de cada um como uma aproximação para a verdadeira taxa de sucesso. Eu só encontrei essa pergunta , que está próxima, mas não parece exatamente lidar com esse cenário.

Para simplificar o teste, digamos que eu tenho 2 grupos (3 podem ser estendidos a partir deste caso base).

  • grupo 1: = 2455n1 1
  • Ensaios do grupo 2: = 2730n2

  • Sucesso no grupo 1: = 1556k1 1
  • Sucesso no grupo 2: = 1671k2

Não tenho uma probabilidade esperada de sucesso, apenas o que sei das amostras. Portanto, minha taxa de sucesso implícita para os dois grupos é:

  • Taxa de sucesso do grupo 1: = 1556/2455 = 63,4%p1 1
  • Taxa de sucesso do grupo 2: = 1671/2730 = 61,2%p2

A taxa de sucesso de cada amostra é bastante próxima. No entanto, meus tamanhos de amostra também são bastante grandes. Se eu verificar o CDF da distribuição binomial para ver quão diferente ela é da primeira (onde estou assumindo que a primeira é o teste nulo), recebo uma probabilidade muito pequena de que a segunda seja alcançada.

No Excel:

1-BINOM.DIST (1556,2455,61,2%, VERDADEIRO) = 0,012

No entanto, isso não leva em consideração nenhuma variação do primeiro resultado, apenas assume que o primeiro resultado é a probabilidade do teste.

Existe uma maneira melhor de testar se essas duas amostras de dados são realmente estatisticamente diferentes uma da outra?


Outra pergunta me deparei com que realmente não ajuda muito: stats.stackexchange.com/questions/82059/...
Scott


2
Em R, você poderia usar prop.test: prop.test(c(1556, 1671), c(2455, 2730)).
precisa saber é o seguinte

11
Pode ser feito como um teste de proporções de duas amostras (binomial) ou como um quadrado de qui-quadrado 2x2
Glen_b -Reinstate Monica

11
Estender o caso base de dois grupos para três pode ser problemático, porque os testes serão interdependentes: você precisará de uma versão binomial do ANOVA para lidar com isso.
whuber

Respostas:


36

A solução é um simples google away: http://en.wikipedia.org/wiki/Statistical_hypothesis_testing

Então, você gostaria de testar a seguinte hipótese nula contra a alternativa dada

H A : p 1p 2H0 0:p1 1=p2 versusHUMA:p1 1p2

Então você só precisa calcular a estatística de teste que é

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

onde . p^=n1 1p^1 1+n2p^2n1 1+n2

Então, agora, em seu problema, , , e p 2=0,612n1=2455n2=2,730.p^1 1=.634p^2=.612n1 1=2455n2=2730

Depois de calcular a estatística de teste, você só precisa calcular o valor da região crítica correspondente para comparar sua estatística de teste também. Por exemplo, se você estiver testando essa hipótese no nível de confiança de 95%, precisará comparar sua estatística de teste com o valor da região crítica de (para este teste bicaudal).zα/2=1,96

Agora, se , você poderá rejeitar a hipótese nula, caso contrário, você deve falhar em rejeitar a hipótese nula. z>zα/2

Bem, essa solução funciona para o caso quando você está comparando dois grupos, mas não generaliza para o caso em que você deseja comparar três grupos.

No entanto, você poderia usar um teste do qui-quadrado para testar se todos os três grupos têm proporções iguais, conforme sugerido por @Eric em seu comentário acima: "Esta pergunta ajuda? Stats.stackexchange.com/questions/25299/… - Eric"


6
Obrigado @Dan. Muitas vezes com o Google, conhecer o termo certo para pesquisar é o primeiro obstáculo. Dei uma olhada no teste do qui-quadrado. O problema lá, como onde eu fiquei preso pela primeira vez, é que meu cálculo esperado é baseado na amostra. Portanto, não posso fornecer um valor esperado, porque minhas amostras são usadas para determinar esse valor esperado.
Scott Scott

@ Scott, se suas proporções hipotéticas para os três grupos são todas iguais, então o valor esperado deve ser 1/3 para cada grupo.
Dan

11
Uma explicação relacionada ao uso desse teste pode ser encontrada aqui: itl.nist.gov/div898/handbook/prc/section3/prc33.htm (atualmente, a página da Wikipedia não fornece um exemplo).
Wwwilliam

Alguém pode me ajudar a provar o desvio padrão da diferença entre as duas distribuições binomiais, ou seja, provar que:
p^(1 1-p^)(1 1n1 1+1 1n2)=p^1 1(1 1-p^1 1)n1 1+p^2(1 1-p^2)n2

resposta à minha pergunta pode ser encontrada aqui: stats.stackexchange.com/questions/361015/...
Tanguy

11

Em R a resposta é calculada como:

fisher.test(rbind(c(1556,2455-1556), c(1671,2730-1671)), alternative="less")

8
Você consideraria escrever um pouco mais do que fornecer a função R? Nomear a função não ajuda a entender o problema e nem todos usam R, portanto, não seria de ajuda para eles.
Tim

11
Essa é a resposta estatística mais exata e funciona para pequenos números de observações (consulte o seguinte: itl.nist.gov/div898/handbook/prc/section3/prc33.htm ).
Andrew Mao


3

Apenas um resumo:

As respostas de Dan e Abaumann sugerem testes sob um modelo binomial em que a hipótese nula é um modelo binomial unificado com sua média estimada a partir dos dados empíricos. Suas respostas estão corretas na teoria, mas precisam de aproximação usando a distribuição normal, pois a distribuição da estatística de teste não segue exatamente a distribuição Normal. Portanto, é correto apenas para um tamanho de amostra grande.

Mas a resposta de David está indicando um teste não paramétrico usando o teste de Fisher. As informações estão aqui: https://en.wikipedia.org/wiki/Fisher%27s_exact_test E pode ser aplicada a amostras pequenas, mas difícil de calcular para amostras grandes.

Qual teste usar e quanto você confia no seu valor-p é um mistério. Mas sempre há vieses em qualquer teste para escolher.


2
1 1/2

11
Para este caso, acho que você poderia usar o método de Dan, mas calcule o valor de p de maneira exata (binomial) e aproximada (Z normal Φ − 1 (1 − α / 2) Z> Φ − 1 (1 − α / 2) e Z <Φ − 1 (α / 2)) para comparar se estão próximos o suficiente.
Dr_Hope

1

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

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


1

Em Python, statsmodels tem uma função chamada proportions_ztest. Aqui está um exemplo de seu uso:

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))

Isso imprime:

Manual calculation of z: 1.610825
Z-score from statsmodels: 1.610825
R pvalue from fisher.test: 0.108268
Statsmodels pvalue: 0.107218

-1

Post original: a resposta de Dan está realmente incorreta, para não ofender ninguém. Um teste z é usado apenas se seus dados seguirem uma distribuição normal padrão. Nesse caso, seus dados seguem uma distribuição binomial; portanto, use um teste qui-quadrado se sua amostra for grande ou teste de fisher se sua amostra for pequena.

Edit: Meu erro, desculpas a @ Dan. Um teste z é válido aqui se suas variáveis ​​forem independentes. Se essa suposição não for atendida ou desconhecida, um teste z pode ser inválido.


3
χ2

Se você acredita no CLT, a distribuição normal geralmente existe.
21716 Ryan

2
@ Ryan Bem, acredito no CLT, mas ele não diz nada sobre n = 30 ou n = 300 ou n = 5000. Na verdade, você não obtém normalidade, a menos que, de alguma forma, consiga ter tamanhos infinitos de amostra ou de alguma forma comece com a normalidade. Perguntas sobre o quão próximo estamos da normalidade ao tomar médias não são abordadas pelo CLT. (Podemos considerar essas perguntas, mas não usamos o CLT para descobrir se a aproximação é boa.)
Glen_b -Reinstate Monica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.