Atraso de Conversão em Teste A/B: o dado que falta
O atraso de conversão faz uma leitura antecipada premiar quem converte rápido, não quem converte mais. Como medir a curva de chegada e quando ler o teste.

📚 Este artigo faz parte do guia Significância Estatística em Teste A/B: O Guia.
Uma leitura feita antes de a janela de atribuição fechar não mede quem converte mais, mede quem converte primeiro. Na simulação deste guia, dois braços com exatamente a mesma taxa final de 5 por cento apareceram no dia 3 como um vencedor de mais 68,62 por cento com z de 12,0608, e no dia 30 a diferença tinha virado ruído, com valor-p de 0,211119. Este guia mostra por que o atraso de conversão distorce a leitura, como medir a sua própria curva de chegada, em que caso a leitura antecipada é segura e em que caso ela inverte o resultado. Faz parte do nosso guia completo de teste A/B e complementa ciclo semanal e métricas de tempo até o evento.
O problema: a conversão não chega junto com o clique
Quase toda calculadora de teste A/B pede dois números por braço, visitantes e conversões, e devolve um veredito. A conta está certa. O que ela assume, sem dizer, é que os dois números foram medidos sobre o mesmo período de oportunidade.
Isso é verdade quando a conversão acontece na sessão. Um clique num botão, um cadastro, uma compra por impulso: exposição e conversão são quase simultâneas, e uma leitura no dia 7 conta praticamente todas as conversões dos usuários expostos até o dia 7.
Deixa de ser verdade assim que existe deliberação. A pessoa vê a página de preços na terça, pensa, volta na sexta, decide no domingo seguinte. Nesse mundo, no dia 7 do teste você tem sete dias de exposições e bem menos de sete dias de conversões: as conversões dos usuários que entraram nos últimos dias ainda estão a caminho.
Chapelle, num estudo com registros de tráfego real da Criteo apresentado no KDD 2014, colocou números nisso. Segundo o artigo, 35 por cento das conversões ocorrem dentro de uma hora do clique, mas cerca de 50 por cento ocorrem depois de 24 horas e 13 por cento depois de duas semanas. E no mesmo artigo ele registra que esses números são bem diferentes dos reportados para a exchange RMX do Yahoo, onde 95,5 por cento das conversões acontecem dentro de uma hora do clique.
Guarde essa contradição, ela é o ponto de partida: não existe um número universal de atraso. Dois negócios de publicidade digital, mesmo setor, e um tem metade das conversões depois de um dia enquanto o outro tem 95,5 por cento na primeira hora.
Como o atraso vira viés
O atraso de conversão sozinho não enviesa nada. Se os dois braços têm exatamente a mesma distribuição de atraso, uma leitura antecipada corta a mesma fatia dos dois lados, e a comparação relativa sobrevive. O problema aparece quando a variação mexe na velocidade da decisão.
E mexer na velocidade é justamente o que boa parte das mudanças testadas faz de propósito:
- um contador de urgência acelera quem já ia comprar
- um cupom com prazo puxa a decisão para dentro do prazo
- um formulário mais curto reduz o abandono no momento, mas pode atrair quem ainda não estava decidido
- frete grátis com valor mínimo faz a pessoa voltar ao carrinho depois, atrasando
- uma página de preços mais clara pode adiar a compra porque a pessoa passou a comparar planos
Nenhuma dessas mudanças precisa alterar o total final para alterar completamente a foto do dia 3.
Exemplo trabalhado 1: o vencedor que não existe
Simulamos um teste com 30.000 usuários por braço e janela de atribuição de 30 dias. A verdade do mundo simulado é dura de propósito: a taxa de conversão final é exatamente 5,00 por cento nos dois braços. A única diferença é o atraso, sorteado de uma exponencial com média de 96 horas no controle (os 4 dias que Chapelle usa na simulação dele) e 36 horas na variação.
Ou seja: a variação não converte mais ninguém. Ela só faz as mesmas pessoas decidirem antes.
Você pode conferir cada linha da tabela abaixo na calculadora, colando os visitantes e as conversões de cada dia:
Teste z bilateral de duas proporções. "Sem significância" quase sempre quer dizer que falta amostra, não que as versões são iguais.
| leitura | controle | variação | lift relativo | z | valor-p | IC 95% da diferença |
|---|---|---|---|---|---|---|
| dia 3 | 800 / 30.000 (2,6667%) | 1.349 / 30.000 (4,4967%) | +68,62% | 12,0608 | abaixo de 1e-30 | [1,5330 pp; 2,1270 pp] |
| dia 7 | 1.212 / 30.000 (4,0400%) | 1.530 / 30.000 (5,1000%) | +26,24% | 6,2166 | abaixo de 1e-9 | [0,7259 pp; 1,3941 pp] |
| dia 14 | 1.433 / 30.000 (4,7767%) | 1.545 / 30.000 (5,1500%) | +7,82% | 2,1053 | 0,035267 | [0,0258 pp; 0,7209 pp] |
| dia 30 | 1.478 / 30.000 (4,9267%) | 1.545 / 30.000 (5,1500%) | +4,53% | 1,2505 | 0,211119 | [-0,1267 pp; 0,5734 pp] |
Leia a coluna do valor-p de cima para baixo. No dia 3 o resultado é esmagador. No dia 7 continua esmagador. No dia 14 ainda passa no corte de 0,05, com folga curta. No dia 30, quando a janela fecha e todas as conversões chegaram, o teste não é significativo, e o intervalo de confiança cruza o zero.
A leitura do dia 30 é a certa, e ela diz o que sabemos ser verdade por construção: os dois braços convertem igual. O resíduo de mais 4,53 por cento é ruído amostral comum, exatamente o tipo de diferença que 30.000 usuários por braço não conseguem separar de zero.
E note a assimetria cruel: ler cedo não te dá um resultado mais fraco, te dá um resultado mais forte e errado. O z do dia 3 é quase dez vezes o z do dia 30. Nenhum controle de peeking resolve isso, porque o problema não é olhar muitas vezes, é olhar antes de o dado existir. Sobre o problema de olhar muitas vezes, que é diferente e também real, veja o problema do peeking.
A curva de chegada, que é onde a resposta está
O número que explica a tabela inteira é este:
| dia da leitura | fração das conversões do controle já registrada | fração das conversões da variação já registrada |
|---|---|---|
| dia 1 | 21,99% | 48,22% |
| dia 3 | 54,13% | 87,31% |
| dia 7 | 82,00% | 99,03% |
| dia 14 | 96,96% | 100,00% |
| dia 30 | 100,00% | 100,00% |
No dia 3, a variação já mostrou 87,31 por cento do que tinha para mostrar e o controle mostrou 54,13 por cento. A razão entre essas duas frações, 87,31 dividido por 54,13, dá 1,6130, e o lift observado foi de mais 68,62 por cento, ou fator 1,6862. Os dois números não são exatamente iguais por causa do ruído amostral, mas a origem do falso lift está aí, inteira: é a razão entre as maturidades, não uma diferença de comportamento de compra.
Exemplo trabalhado 2: quando o atraso é igual nos dois lados
Vale a pena ver o caso oposto, porque ele define o limite do problema. Segunda simulação, mesmos 30.000 usuários por braço, atraso médio de 96 horas nos dois braços, e agora uma diferença real: controle com 5,00 por cento e variação com 5,60 por cento, ou seja, mais 12 por cento relativo de verdade.
| leitura | controle | variação | lift relativo | z | valor-p |
|---|---|---|---|---|---|
| dia 3 | 762 (2,5400%) | 895 (2,9833%) | +17,45% | 3,3134 | 0,000922 |
| dia 7 | 1.242 (4,1400%) | 1.423 (4,7433%) | +14,57% | 3,5867 | 0,000335 |
| dia 14 | 1.452 (4,8400%) | 1.650 (5,5000%) | +13,64% | 3,6507 | 0,000262 |
| dia 30 | 1.504 (5,0133%) | 1.697 (5,6567%) | +12,83% | 3,5061 | 0,000455 |
Agora o lift relativo é razoavelmente estável e converge para a verdade de mais 12 por cento. A leitura antecipada não inventou vencedor: ela acertou a direção e chegou perto da magnitude desde o dia 3.
Duas conclusões saem da comparação dos dois exemplos, e as duas importam:
- Atraso de conversão simétrico é um problema de poder, não de viés. O lift relativo aguenta; o que muda é o número de conversões disponíveis e, portanto, a largura do intervalo.
- Atraso assimétrico é um problema de viés, e é grave. E você não sabe qual dos dois casos está vivendo antes de olhar as curvas de chegada.
Essa é a razão de o conselho ser sempre “meça a sua curva”. A pergunta “posso ler no dia 7?” não tem resposta genérica: ela depende de quanto da conversão já chegou no dia 7 em cada braço.
O atraso não é propriedade do setor, é propriedade da campanha
A tentação de procurar um benchmark de atraso na internet e adotá-lo é forte, e o próprio artigo da Criteo é a melhor evidência de que isso não funciona. Chapelle ajustou distribuições exponenciais à distribuição empírica de atraso de quatro campanhas diferentes dentro da mesma plataforma, e reportou as médias:
| campanha analisada | atraso médio entre clique e conversão |
|---|---|
| campanha 1 | 43 horas |
| campanha 2 | 108 horas |
| campanha 3 | 189 horas |
| campanha 4 | 222 horas |
Mais de cinco vezes de diferença entre a mais rápida e a mais lenta, mesmo negócio, mesma infraestrutura, mesma janela de atribuição. Se você usar o número da campanha 1 para decidir quando ler um teste que se comporta como a campanha 4, você lê com pouco mais de 20 por cento das conversões na mão.
Duas observações técnicas do mesmo artigo que valem para quem for modelar isso e não só medir:
- A exponencial é uma aproximação decente, não exata. Chapelle registra que as distribuições empíricas ficam bem próximas das exponenciais ajustadas, mas que o modelo exponencial tende a subestimar os atrasos curtos, abaixo de uma hora, e a superestimar os longos. Se você usar a exponencial para projetar o total final a partir de uma leitura parcial, essa é a direção do seu erro.
- Existe ciclicalidade de 24 horas na curva. A curva acumulada de atraso tem uma forma oscilante justamente por causa do ciclo diário. É o mesmo motivo pelo qual um teste deve rodar semanas inteiras, tratado em ciclo semanal: comparar uma leitura de terça de manhã com uma de sábado à noite compara fases diferentes do ciclo.
O que esperar a janela custa em amostra
Fechar a coorte de exposição não é de graça, e vale ter o número na mão antes de propor a mudança para o time.
A conta é direta: numa entrada de tráfego constante, a fração de expostos que chega a completar a janela é a duração do teste menos a janela, dividida pela duração. Num teste de 28 dias com janela de 7, sobram 75 por cento. Num teste de 14 dias com janela de 14, sobra zero.
O que fazer com essa perda depende de qual restrição aperta mais:
- Se você tem tráfego sobrando, rode mais dias e absorva a perda. É a opção limpa.
- Se o tráfego é a restrição, encurte a janela até o percentil que você aceita perder, e diga qual é. Cortar a janela em 85 por cento das conversões é uma escolha defensável desde que esteja escrita no plano de análise e seja igual nos dois braços.
- Se nem uma nem outra, mude a métrica primária para algo que acontece perto da exposição e trate a conversão atrasada como métrica secundária, com a leitura tardia entrando depois como confirmação.
Antes de escolher, vale rodar a conta de amostra já com o desconto: pegue o N que a calculadora de tamanho de amostra devolve e divida pela fração aproveitável, porque é esse o número de usuários que você precisa expor, não o que precisa analisar.
Como medir a sua curva de chegada
O trabalho é uma consulta, não um projeto. Você precisa de duas colunas por conversão: o instante da exposição do usuário ao teste e o instante da conversão. A diferença entre elas é o atraso.
Três decisões práticas:
1. Fixe a coorte de exposição. Este é o conserto mais barato e o mais eficaz. Em vez de comparar “todas as conversões até hoje” contra “todos os expostos até hoje”, compare só os usuários expostos até hoje menos a janela, dando a todos eles a mesma oportunidade. Num teste de 21 dias com janela de 7 dias, isso significa analisar os expostos dos dias 1 a 14, cada um com seus 7 dias completos. Você perde um terço da amostra e ganha uma comparação limpa. É o mesmo raciocínio de maturidade de coorte, aplicado à conversão em vez de à retenção.
2. Escolha a janela pelo percentil, não pelo hábito. A janela de 30 dias virou padrão de mercado por herança da publicidade, não por medida. Chapelle registra que a maioria dos anunciantes usa mesmo uma janela de 30 dias, e que ele a fixou nesse valor por simplicidade. A sua janela deveria ser o dia em que a curva acumulada passa de algo como 95 por cento, medido nos seus dados. Pode ser 2 dias, pode ser 45.
3. Trate a leitura antecipada como provisória, e diga isso no relatório. Nada impede olhar no dia 3. O que quebra a decisão é o número do dia 3 entrar numa apresentação sem a marca de provisório e virar a base de uma projeção anual.
Não dá simplesmente para esperar sempre
Vale registrar o contra-argumento, porque ele é legítimo. Chapelle mostra que esperar a janela inteira tem custo: no problema dele, treinar um modelo só com dados de 30 dias atrás seria provavelmente prejudicial porque o ambiente muda, e ele mede isso, o tráfego vindo de campanhas novas chegava a 11,3 por cento depois de 26 dias. Em experimentação de produto o análogo é direto: um teste que só pode ser lido 30 dias depois do fim atrasa todo o roadmap e cria pressão para decidir sem ele.
A saída não é ler cedo fingindo que está tudo bem, é desenhar para ler cedo: coorte de exposição fechada, janela calibrada nos seus dados, e uma métrica secundária de velocidade explicitamente reportada ao lado do total, para que a diferença de inclinação seja um achado e não uma armadilha.
Sinais de que você tem esse problema agora
- O lift relativo do teste encolhe monotonamente conforme os dias passam, sem estabilizar. Isso é exatamente o padrão da nossa primeira tabela.
- A variação testada mexe em prazo, urgência, preço, parcelamento ou frete. Todas mudam a velocidade da decisão por desenho.
- O seu produto tem ciclo de decisão maior que a duração usual dos testes. B2B com aprovação de compra é o caso extremo.
- A janela de atribuição da sua ferramenta é maior que a duração do teste. Se a janela é 30 dias e o teste roda 14, uma parte das conversões nunca vai ser contada em teste nenhum.
- Você lê o teste no fim e o número não bate com o relatório de receita do mês seguinte. Costuma ser esse o motivo, e não atribuição de receita quebrada.
Erros comuns
- Comparar total corrido contra expostos corridos. O erro central. O denominador cresce todo dia e o numerador chega atrasado, então a taxa observada é sempre menor que a real, e desigualmente entre braços quando a velocidade difere.
- Achar que peeking e atraso de conversão são o mesmo problema. Peeking é olhar muitas vezes e inflar o erro Tipo I; atraso é olhar antes de o dado existir. Corrigir o alfa não conserta o segundo.
- Usar a janela de atribuição da ferramenta sem medir. Trinta dias é a herança de outro problema. A sua curva pode fechar em dois dias, e aí você está segurando decisão à toa.
- Interpretar mudança de velocidade como ganho de conversão. Antecipar a compra tem valor real de fluxo de caixa, e às vezes é o objetivo. Só não é aumento de taxa, e não deve entrar na projeção como se fosse.
- Parar o teste no primeiro resultado forte. No nosso exemplo, o resultado mais forte de todos foi o mais errado de todos. É o caso clássico da lei de Twyman: resultado bom demais merece desconfiança, não comemoração.
- Descartar a conversão que chegou depois do fim do teste. Ela existe e conta. Se a montagem só grava conversão enquanto o teste está ligado, o total nasce truncado nos dois braços, e mais no braço mais lento.
- Aplicar a mesma janela a métricas de naturezas diferentes. Clique, cadastro e renovação anual não têm a mesma curva. A janela é por métrica, não por empresa.
Faça isso automático na Donnu
O motivo de esse erro ser tão comum não é falta de rigor, é falta de dado: a maioria das montagens registra a conversão com o carimbo de tempo dela, mas não guarda o carimbo da exposição do usuário ao teste. Sem os dois, o atraso não é calculável, e sem o atraso não existe curva de chegada nem coorte de exposição fechada.
A Donnu guarda o instante do sorteio junto com o instante do evento, o que torna a curva de chegada uma consulta e não um projeto de engenharia de dados. Se a sua montagem atual não guarda, o passo imediato é começar a gravar o carimbo da exposição hoje, e enquanto isso adotar a regra conservadora: só ler o teste depois de decorrida a janela de atribuição contada a partir da última exposição. Para dimensionar quanto tempo o teste precisa rodar já contando a janela, a calculadora de duração resolve a conta, e a calculadora de significância confere qualquer uma das leituras deste artigo.
Referências
- Chapelle, O. Modeling Delayed Feedback in Display Advertising. KDD 2014, Criteo Labs. Fonte da medida de que 35 por cento das conversões ocorrem dentro de uma hora do clique, de que cerca de 50 por cento ocorrem depois de 24 horas e 13 por cento depois de duas semanas; do contraste com os 95,5 por cento em uma hora reportados para a exchange RMX do Yahoo; do registro de que a maioria dos anunciantes usa janela de atribuição de 30 dias e de que o artigo fixou essa janela; da medida de que o tráfego vindo de campanhas novas chega a 11,3 por cento depois de 26 dias, o que torna prejudicial esperar 30 dias para treinar; do uso de uma distribuição exponencial de atraso com média de 4 dias na simulação do artigo; e da observação de que a distribuição de atraso varia muito por campanha, com médias de 43, 108, 189 e 222 horas nos quatro casos analisados. wnzhang.net.
- Kohavi, R., Deng, A., Frasca, B., Longbotham, R., Walker, T. e Xu, Y. Trustworthy Online Controlled Experiments: Five Puzzling Outcomes Explained. KDD 2012, Microsoft. Fonte do ponto de que experimentos online recrutam usuários continuamente, em vez de terem um período de recrutamento antes do experimento, o que faz cada usuário ter uma janela de oportunidade diferente dentro do mesmo teste. exp-platform.com.
- Kohavi, R., Deng, A., Frasca, B., Walker, T., Xu, Y. e Pohlmann, N. Online Controlled Experiments at Large Scale. KDD 2013, Microsoft. Fonte da regra de que o placar final do experimento é fechado num múltiplo de semanas, usualmente duas, e da exigência de que o critério de decisão seja mensurável em prazos curtos enquanto prediz objetivos de longo prazo. exp-platform.com.
- Chandar, P., St. Thomas, B., Maystre, L., Pappu, V., Sanchis-Ojeda, R., Wu, T., Carterette, B., Lalmas, M. e Jebara, T. Using Survival Models to Estimate User Engagement in Online Experiments. WWW 2022, Spotify. Fonte do desenho de coorte de exposição fechada usado neste artigo: no corpus deles, apenas usuários expostos durante um período de entrada de 7 dias entram na análise, e a janela posterior à exposição é usada para calcular a métrica. mounia-lalmas.blog.
Leia também: Métricas de tempo até o evento · Maturidade de coorte · Ciclo semanal · O problema do peeking · Lei de Twyman · Calculadora de duração · Read in English
Perguntas frequentes
- O que é atraso de conversão em teste A/B?
- É o intervalo entre a exposição do usuário à variação e o momento em que a conversão dele é registrada. Quando esse intervalo é grande em relação à duração do teste, a leitura feita antes de a janela fechar conta só uma fatia das conversões, e a fatia contada não é a mesma nos dois braços se eles mudarem a velocidade da decisão.
- Por que ler o teste cedo pode inverter o resultado?
- Porque uma leitura antecipada mede quem converteu rápido, não quem converteu mais. Na simulação deste guia, dois braços com a mesma taxa final de 5 por cento, diferindo apenas no atraso médio (96 horas contra 36), apareceram no dia 3 como um lift de mais 68,62 por cento com z de 12,0608. No dia 30, com a janela fechada, a diferença caiu para mais 4,53 por cento com valor-p de 0,211119, ou seja, ruído.
- Quanto tempo demora uma conversão, na prática?
- Depende brutalmente do negócio. Chapelle, num estudo de tráfego real da Criteo publicado no KDD 2014, mediu que 35 por cento das conversões ocorrem dentro de uma hora do clique, cerca de 50 por cento ocorrem depois de 24 horas e 13 por cento depois de duas semanas. No mesmo artigo ele contrasta esses números com os da exchange RMX do Yahoo, onde 95,5 por cento das conversões acontecem dentro de uma hora. Não existe número universal: você precisa medir a sua curva.
- Se os dois braços têm o mesmo atraso, a leitura antecipada é segura?
- Ela fica bem menos perigosa, mas continua tendo menos poder. No segundo cenário deste guia, com atraso idêntico de 96 horas nos dois braços e uma diferença real de mais 12 por cento, o lift lido foi de mais 17,45 por cento no dia 3 e mais 12,83 por cento no dia 30, convergindo para a verdade. O risco é que você não sabe de antemão se a mudança testada mexeu na velocidade da decisão, e mudanças de preço, urgência e frete costumam mexer.
- Basta esperar a janela de atribuição fechar?
- É a resposta mais segura e nem sempre é a viável. Chapelle registra que esperar os 30 dias completos para treinar um modelo seria provavelmente prejudicial, porque o ambiente muda: no estudo dele, o tráfego vindo de campanhas novas chegava a 11,3 por cento depois de 26 dias. A alternativa prática é ler antes com uma coorte de exposição fechada e a curva de chegada medida, e tratar o número como provisório até a janela vencer.
- Como distinguir efeito real de efeito de velocidade?
- Compare a curva de chegada acumulada dos dois braços, não só o total. Se as curvas terminam no mesmo lugar e diferem só na inclinação inicial, a variação mexeu na velocidade e não no volume. Se a curva do braço vencedor termina acima, existe efeito real. Esse gráfico custa uma consulta e resolve a dúvida que nenhum valor-p resolve.