Qual teste estatístico usar no teste A / B?


12

Temos duas coortes de 1000 amostras cada. Medimos 2 quantidades em cada coorte. O primeiro é uma variável binária. O segundo é um número real que segue uma distribuição de cauda pesada. Queremos avaliar qual coorte apresenta melhor desempenho para cada métrica. Há muitos testes estatísticos para você escolher: as pessoas sugerem o teste z, outras usam o teste t e outras Mann – Whitney U.

  • Que teste ou testes devemos escolher para cada métrica do nosso caso?
  • O que acontece se um teste sugere diferença significativa entre as coortes e algum outro teste sugere diferença não significativa?

Respostas:


12

Como suas duas métricas são 1) binárias e 2) pesadas, evite o teste t, que assume distribuições normais.

Eu acho que Mann-Whitney U é sua melhor escolha e deve ser suficientemente eficiente, mesmo que suas distribuições sejam quase normais.

Em relação à sua segunda pergunta:

O que acontece se um teste sugere diferença significativa entre as coortes e algum outro teste sugere diferença não significativa?

Isso não é incomum se a diferença estatística for limítrofe e os dados tiverem distribuições de amostra "confusas". Essa situação exige que o analista considere cuidadosamente todas as suposições e limitações de cada teste estatístico e dê mais peso ao teste estatístico que possui o menor número de violações de suposições.

Tome como pressuposto a distribuição Normal. Existem vários testes de normalidade, mas esse não é o fim da história. Alguns testes funcionam muito bem em distribuições simétricas, mesmo se houver algum desvio da normalidade, mas não funcionam bem em distribuições inclinadas.

Como regra geral, sugiro que você não execute nenhum teste em que alguma de suas suposições seja claramente violada.

EDIT: Para a segunda variável, pode ser possível transformar a variável em uma que é normalmente distribuída (ou pelo menos próxima), desde que a transformação preserve a ordem. Você precisa ter boa confiança de que a transformação produz uma distribuição normal para ambas as coortes. Se você ajustar a segunda variável à distribuição normal de log, uma função de log a transformará em uma distribuição normal. Mas se a distribuição for Pareto (lei do poder), não haverá transformação para uma distribuição normal.

EDIT: Como sugerido neste comentário , você definitivamente deve considerar a estimativa bayesiana como uma alternativa ao teste t e outros testes de significância de hipótese nula (NHST).


Obrigado pela informação. Eu não estava claro o suficiente, tenho duas quantidades, uma das quais é binária e outra que é um número real após a distribuição de cauda pesada. Eu editei a pergunta para esclarecer isso.
Iliafl

Sim, acho que entendi. Você deseja executar o teste duas vezes, uma vez na variável binária e outra na variável real (distribuição de cauda pesada). Eu estou recomendando executar o Mann-Whitney U para ambos.

Por que um Mann-Whitney seria adequado para dados binários?
Glen_b -Reinstala Monica 13/08

O Mann-Whitney U é eficaz para distribuições não normais, incluindo distribuições discretas com dois valores (isto é, binários). Se todos os dados fossem binários, talvez outro teste funcionasse melhor.
precisa saber é o seguinte

Alguém pode confirmar se isso é verdade ...?

7

Para os dados com valor real, convém também gerar sua própria estatística de teste com base em uma inicialização de seus dados. Essa abordagem tende a produzir resultados precisos quando você está lidando com distribuições populacionais não normais ou tentando desenvolver um intervalo de confiança em torno de um parâmetro que não possui uma solução analítica conveniente. (O primeiro é verdadeiro no seu caso. Mencionei apenas o último como contexto.)

Para seus dados com valor real, faça o seguinte:

  1. Junte suas duas coortes.
  2. Na piscina, experimente dois grupos de 1000 elementos, com substituição.
  3. Calcule a diferença na média da amostra entre os dois grupos.
  4. Repita as etapas 2 e 3 alguns milhares de vezes para desenvolver uma distribuição dessas diferenças.

Depois de obter essa distribuição, calcule a diferença de médias para suas amostras reais e calcule um valor-p.


Obrigado, então você acaba com uma distribuição, que deve ser normal com alguma média e desvio padrão. Como você calcularia o valor de p a partir disso, e talvez os intervalos de confiança, para decidir o vencedor (se houver)?
iliasfl

A distribuição não seria necessariamente normal. Teria aproximadamente a distribuição do que quer que fosse amostrado. Essa é a beleza de usar um bootstrap. De qualquer forma, você obtém um valor p calculando sua estatística de teste a partir dos resultados reais. Ou seja, diferença das médias de cada coorte. Em seguida, compare esse número com a distribuição. O percentil que você obtém é o seu valor p para um teste unilateral de diferença na média.
Nathan Gould

4
O que Nathan está descrevendo também é a base para os métodos bayesianos de teste de significância. Eu usei (e atualmente uso) a estimativa bayesiana substitui a abordagem do teste T (BEST). Você deve examinar essa estrutura se pretende implementar uma abordagem de pool.
cwharland

0

Eu segundo @ resposta MrMeritology. Na verdade, eu queria saber se o teste MWU seria menos poderoso que o teste de proporções independentes, pois os livros didáticos que aprendi e ensinei disseram que o MWU pode ser aplicado apenas a dados ordinais (ou intervalo / razão).

Mas meus resultados de simulação, plotados abaixo, indicam que o teste MWU é realmente um pouco mais poderoso que o teste de proporção, enquanto controla bem o erro do tipo I (na proporção populacional do grupo 1 = 0,50).

insira a descrição da imagem aqui

A proporção da população do grupo 2 é mantida em 0,50. O número de iterações é 10.000 em cada ponto. Repeti a simulação sem a correção de Yate, mas os resultados foram os mesmos.

library(reshape)

MakeBinaryData <- function(n1, n2, p1){
  y <- c(rbinom(n1, 1, p1), 
        rbinom(n2, 1, 0.5))
  g_f <- factor(c(rep("g1", n1), rep("g2", n2)))
  d <- data.frame(y, g_f)
  return(d)
}

GetPower <- function(n_iter, n1, n2, p1, alpha=0.05, type="proportion", ...){
  if(type=="proportion") {
    p_v <- replicate(n_iter, prop.test(table(MakeBinaryData(n1, n1, p1)), ...)$p.value)
  }

  if(type=="MWU") {
    p_v <- replicate(n_iter, wilcox.test(y~g_f, data=MakeBinaryData(n1, n1, p1))$p.value)
  }

  empirical_power <- sum(p_v<alpha)/n_iter
  return(empirical_power)
}

p1_v <- seq(0.5, 0.6, 0.01)
set.seed(1)
power_proptest <- sapply(p1_v, function(x) GetPower(10000, 1000, 1000, x))
power_mwu <- sapply(p1_v, function(x) GetPower(10000, 1000, 1000, x, type="MWU"))

sua imagem resultado é todo preto
Ooker
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.