Estatística

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.

Ilustração plana de um fluxo de pequenas esferas viajando de um aglomerado à esquerda em direção a um recipiente redondo aberto à direita, com várias esferas ainda espalhadas no meio do caminho

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:

Nenhuma dessas mudanças precisa alterar o total final para alterar completamente a foto do dia 3.

Curva acumulada de chegada das conversões nos dois braços ao longo de 30 diasGráfico de linhas com dias de zero a trinta no eixo horizontal e o total acumulado de conversões registradas no eixo vertical. A curva da variação sobe muito rápido, atingindo 87,31 por cento do seu total no dia 3 e 99,03 por cento no dia 7, e depois fica plana em 1545 conversões. A curva do controle sobe devagar, atingindo 54,13 por cento do seu total no dia 3 e 82,00 por cento no dia 7, e só se aproxima do total de 1478 conversões perto do dia 30. As duas curvas terminam praticamente no mesmo patamar, mas ficam muito distantes uma da outra nos primeiros dias. Linhas verticais tracejadas marcam as leituras no dia 3, no dia 7 e no dia 14, e a legenda registra que a distância vertical entre as curvas em cada uma dessas datas é o falso lift medido naquele dia.Mesmo destino, velocidades diferentes: a distância vertical é o falso lift160010004000371430dias desde a exposição do usuário1349 no dia 3800 no dia 31545 e 1478 no dia 30variação (atraso médio 36h)controle (atraso médio 96h)As duas curvas terminam no mesmo lugar porque a taxa verdadeira é 5,00 por cento nos dois braços.Tudo o que a leitura do dia 3 vê é a diferença de inclinação, e ela lê isso como se fosse vitória.
Curva de chegada acumulada dos dois braços. O gráfico que resolve a dúvida não é o do total, é o do acumulado ao longo do tempo desde a exposição.

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:

Calculadora de significância estatística
Controle (A)
Variação (B)
Controle (A) · Taxa-
Variação (B) · Taxa-
Melhora relativa-
valor-p-
IC 95% da diferença-

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:

  1. 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.
  2. 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:

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.

Fração da amostra aproveitável conforme a duração do teste e o tamanho da janelaGráfico de barras agrupadas mostrando a fração de usuários expostos que chegam a ter a janela de conversão completa, para testes de quatorze, vinte e um, vinte e oito e quarenta e dois dias, em dois cenários de janela. Com janela de sete dias, as frações são cinquenta, sessenta e sete, setenta e cinco e oitenta e três por cento. Com janela de quatorze dias, as frações são zero, trinta e três, cinquenta e sessenta e sete por cento. A legenda registra que a janela de quatorze dias inviabiliza um teste de quatorze dias, porque nenhum usuário exposto chega a completar a janela dentro do teste.Quanto da amostra sobra quando a coorte de exposição é fechada100%50%050%0%teste de 14 dias67%33%teste de 21 dias75%50%teste de 28 dias83%67%teste de 42 diasjanela de 7 diasjanela de 14 diasJanela igual à duração do teste deixa zero por cento de amostra aproveitável. É a armadilha da primeira barra cinza.
A fração aproveitável é (duração menos janela) dividido pela duração. Ela melhora com testes mais longos, e desaba quando a janela se aproxima da duração.

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:

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.

Fluxo de decisão para escolher a data de leitura de um teste com conversão atrasadaFluxograma com quatro etapas em sequência. A primeira caixa pergunta se você mediu a curva de chegada acumulada das conversões por braço. Se não mediu, a saída aponta para uma caixa que diz para medir antes de qualquer leitura. Se mediu, segue para a segunda caixa, que pergunta se as duas curvas atingem noventa e cinco por cento do total no mesmo dia. Se atingem, a saída aponta para uma caixa verde que autoriza ler nesse dia com coorte de exposição fechada. Se não atingem, a saída aponta para uma caixa laranja que exige esperar a janela de atribuição fechar, porque o atraso é assimétrico entre os braços e qualquer leitura antecipada carrega viés.Quando dá para ler antes de a janela fechar1. Você mediu a curva dechegada por braço?sim2. As duas curvas chegam a 95%do total no mesmo dia?simleia nesse dia,coorte fechadanãomeça primeiro. Sem a curva,toda data é chute.nãoatraso assimétrico: espere ajanela fechar. Sem exceção.Coorte de exposição fechada quer dizer: só entram na conta os usuários expostos até o dia D menos a janela,de modo que todo mundo no denominador teve a mesma oportunidade de converter.Nenhum dos dois caminhos autoriza ler o total corrido do teste no dia 3 e chamar de resultado.
O critério não é “quantos dias o teste rodou”, é “quanto da conversão já chegou, em cada braço”. A segunda pergunta é a que quase ninguém faz.

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

Erros comuns

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

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.