Teste binomial exato de duas proporções de amostra em R (e alguns valores p estranhos)

23

Estou tentando resolver a seguinte pergunta:

O jogador A venceu 17 dos 25 jogos, enquanto o jogador B venceu 8 dos 20 - há uma diferença significativa entre as duas proporções?

O que se faz em R que vem à mente é o seguinte:

> 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 

Portanto, este teste diz que a diferença não é significativa no nível de confiança de 95%.

Como sabemos que prop.test()está apenas usando uma aproximação, quero tornar as coisas mais exatas usando um teste binomial exato - e faço isso de maneira inversa:

> 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 

Agora isso é estranho, não é? Os valores p são totalmente diferentes a cada vez! Em ambos os casos, agora os resultados são (altamente) significativos, mas os valores de p parecem pular a esmo.

Minhas perguntas

  1. Por que são os valores de p que diferente de cada vez?
  2. Como executar um teste binomial exato de duas proporções de amostra em R corretamente?
vonjd
fonte
3
Embora a função R seja diferente ( prop.testvs chisq.test), o mesmo conceito subjacente está nesta questão . Você está executando três testes diferentes com diferentes "hipóteses nulas" em cada um dos seus três exemplos.
Afine

Respostas:

26

Se você está procurando um teste 'exato' para duas proporções binomiais, acredito que esteja procurando pelo Teste Exato de Fisher . Em R é aplicado assim:

> 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 

A fisher.testfunção aceita um objeto de matriz dos 'sucessos' e 'falhas' nas duas proporções binomiais. Como você pode ver, no entanto, a hipótese dos dois lados ainda não é significativa, lamento dizer. No entanto, o teste exato de Fisher normalmente é aplicado apenas quando a contagem de células é baixa (normalmente, isso significa 5 ou menos, mas alguns dizem 10); portanto, seu uso inicial prop.testé mais apropriado.

Em relação às suas binom.testchamadas, você está entendendo mal a chamada. Ao executar, binom.test(x=17,n=25,p=8/20)você está testando se a proporção é significativamente diferente de uma população em que a probabilidade de sucesso é 8/20 . Da mesma forma com binom.test(x=8,n=20,p=17/25)diz que a probabilidade de sucesso é 17/25, razão pela qual esses valores p diferem. Portanto, você não está comparando as duas proporções.

cdeterman
fonte
2
Obrigado, aceitei sua resposta. Quando você diz prop.test é "mais apropriado", o que você quer dizer exatamente? O resultado mais exato é (literalmente) dado pelo teste exato de Fisher, não é?
vonjd
4
Isso é realmente algo que é debatido entre estatísticos e eu não tenho uma resposta absoluta. Historicamente, você evitou o de Fisher porque ele se torna muito complexo computacionalmente, mas os computadores resolvem isso. De um modo geral, no entanto, o Teste Exato de Fisher é conservador e, se seus números forem grandes o suficiente, prop.testé mais provável que a estatística do qui-quadrado (que é o que calcula) não cometa um erro do tipo II.
cdeterman
O ponto crucial para mim são as diferentes semânticas de prop.teste fisher.test: O primeiro é chamado de como prop.test(matrix(c(17, 8, 25, 20), ncol=2))(fornecendo o número de sucessos na primeira coluna e o número de tentativas na segunda coluna), enquanto o último é chamado de como fisher.test(matrix(c(17, 25-17, 8, 20-8), ncol=2))(fornecendo o número de sucessos e falhas ); pois a fisher.testtransposição não parece mudar o resultado também.
precisa saber é o seguinte
Uma alternativa mais poderoso também está disponível para os testes de 2x2 - en.wikipedia.org/wiki/Barnard%27s_test
Hamy
4

Há uma diferença entre duas amostras e uma amostra em comparação com uma hipótese conhecida. Portanto, se alguém joga uma moeda 100 vezes e ganha cara 55 vezes e a hipótese é uma moeda justa, contra duas pessoas jogando uma moeda de justiça desconhecida e uma recebendo cara 55 vezes e as outras 45 vezes. No primeiro caso, você está simplesmente tentando identificar se o flipper parece estar lançando uma moeda justa. Neste último, você está olhando para ver se estão lançando moedas da mesma justiça. Você pode ver como se olhar para cada jogador com uma probabilidade conhecida (45 x 50 e 55 x 50) é diferente de compará-los (45 x 55).

Ken
fonte
2

A sintaxe de binom.testé o seu sucesso em vários ensaios, em comparação com uma estimativa de pontos da população . Embora você o tenha inserido como p = 8/20, o cálculo é como se fosse uma verdade absoluta 0,4 dada por Deus, com variação zero em torno dele. Ou é como se você estivesse comparando as 17 vitórias do jogador A em 25 com as hipotéticas 8 bilhões de vitórias do jogador B em 20 bilhões de jogos. No entanto, prop.testcompara a proporção de 17/25 com toda a sua variação potencial à proporção de 8/20 com toda a sua própria variação. Em outras palavras, a variação em torno de 0,7 (estimativa de 17/25) e a variação em torno de 0,4 podem sangrar uma na outra com um resultado resultante p = 0,06.

Farrel
fonte
Então isso significa que o caminho certo para resolver a questão original é prop.test(c(17,8),c(25,20),correct=FALSE), certo?
vonjd
1
Sim, está correto. Se você deseja orientação sobre se deveria ter correct = FALSEvs correct = TRUE, sugiro que você leia o seguinte stats.stackexchange.com/questions/185433/…
Farrel
2

Primeiro, sugiro que você deseje fazer uma correção de continuidade, pois está estimando uma distribuição discreta com uma distribuição contínua (qui-quadrado).

Segundo, é importante esclarecer como foi conduzido o "experimento". O número de jogos que cada pessoa jogou foi determinado com antecedência (ou no vernáculo da indústria, fixado pelo design)? Nesse caso, e assumindo que os resultados de cada jogador são independentes um do outro, você está lidando com o produto de 2 distribuições binomiais. Se, em vez disso, o número de jogos era livre para variar (por exemplo, o número de jogos que cada pessoa jogava eram variáveis, com base no número de jogos que cada um conseguiu concluir em um período de tempo fixo), você está lidando com um Multinomial ou distribuição de Poisson.

No segundo caso, o teste do qui-quadrado (ou o que é a mesma coisa, um teste z de diferença de proporções) é apropriado, mas no primeiro caso não é. No primeiro caso, você realmente precisa calcular o produto exato de cada resultado binomial possível para cada jogador e somar essas probabilidades para todas as ocorrências iguais ou menores que a probabilidade binomial conjunta dos resultados observados (é simplesmente o produto dos 2 binômios porque os resultados de cada jogador são independentes dos resultados do outro jogador).

Reconheça primeiro que o objetivo central de qualquer teste de hipótese é calcular o quão "raro" ou incomum é o resultado específico que você observou, comparado a todos os outros resultados possíveis. Isso é calculado calculando-se a probabilidade do resultado que você observou - considerando-se a hipótese nula verdadeira - somada a todos os outros resultados possíveis de probabilidade igual ou inferior.

Agora, fica repetido que o que queremos dizer com "quão raro" é "quão baixa é a probabilidade de observar o resultado obtido em comparação com todos os outros resultados possíveis?" Bem, a probabilidade do resultado específico que observamos é 0,0679 * 0,0793 = 0,005115. Agora considere um resultado alternativo específico: certamente é possível que o jogador A tenha ganho 7 de seus 20 jogos e o jogador B possa ter ganho 13 de seus 25 jogos. A probabilidade desse resultado é 0,004959. Observe que é menor do que a probabilidade de nosso resultado observado, portanto deve ser incluído no valor-p. Mas olhe novamente: se você estiver decidindo quais resultados incluir em sua soma com base em se a diferença de proporções excede a diferença de proporções em nosso resultado observado, essa probabilidade será excluída! Por quê? Porque a diferença de proporções para esse resultado específico é menor que a diferença de proporções para o resultado observado. Mas esse não é o foco apropriado - devemos nos preocupar com a probabilidade desse resultado específico e se é igual ou menor que a probabilidade do resultado que observamos!

Uma boa explicação formal disso pode ser encontrada aqui:

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

Observe especificamente a afirmação na página 9: "Se a margem da linha é fixa e o esquema de amostragem é binomial, devemos usar o modelo binomial do produto, porque não podemos estimar a distribuição conjunta das duas variáveis ​​sem mais informações".

user221943
fonte
Para o código R que calcula a soma das probabilidades binomiais conjuntas que têm uma probabilidade igual ou menor de ocorrência em comparação com a probabilidade do resultado observado, consulte a resposta na seguinte postagem relacionada: stats.stackexchange.com/questions/213295/…
User221943