Estatística

Diferenças em Diferenças em Teste A/B: medir sem sorteio

Sem sortear usuário, diferenças em diferenças compara a variação do tratado com a do controle. Como fazer a conta e por que o erro-padrão engana.

Ilustração plana de duas linhas ascendentes paralelas cortadas por uma linha vertical tracejada, a partir da qual a linha de cima sobe mais forte e abre uma folga em relação à de baixo

Quando a mudança não cabe num sorteio de usuário, as duas leituras óbvias erram o sinal. Na simulação deste guia, comparar o grupo tratado consigo mesmo antes e depois devolveu menos 0,15 ponto, comparar o tratado com o controle depois da mudança devolveu menos 0,25 ponto com valor-p de cerca de 3,2 vezes 10 elevado a menos 7, e diferenças em diferenças devolveu mais 0,25 ponto, que era o efeito verdadeiro. Este guia mostra como montar a conta, que premissa ela cobra, e por que o erro-padrão dela é o verdadeiro campo minado: no nosso placebo, a leitura convencional acusou efeito em 29,40 por cento das vezes em que não havia efeito nenhum. Faz parte do nosso guia completo de teste A/B e complementa experimentos geográficos e randomização por cluster.

O problema: existe mudança que não cabe no sorteio

Um teste A/B comum sorteia o usuário. Metade vê a versão A, metade vê a B, e a comparação é honesta porque o sorteio garante que os dois grupos são iguais em tudo, inclusive no que ninguém mediu.

Só que nem toda mudança aceita esse sorteio:

Nesses casos, a mudança entra por um recorte que você não escolheu ao acaso. E aí a comparação mais natural fica envenenada, porque o recorte tratado já era diferente do resto antes de qualquer coisa acontecer.

Vale registrar que a alternativa preferida continua sendo sortear. Blake, Nosko e Tadelis conseguiram sortear ao nível de mercado num experimento de mídia paga do eBay e a diferença entre as leituras foi brutal: a estimativa por mínimos quadrados comuns devolveu retorno sobre investimento acima de 4.100 por cento, a mesma conta com controles de dia e de geografia devolveu acima de 1.400 por cento, e a leitura experimental devolveu menos 63 por cento, com intervalo de confiança de 95 por cento entre menos 124 por cento e menos 3 por cento. Diferenças em diferenças é o que se usa quando o sorteio não está disponível, não uma preferência sobre ele.

As duas leituras erradas, e a calculadora que confirma as duas

Simulamos um rollout de checkout que só funcionava em parte das praças. Quatro números resumem tudo:

grupo antes depois variação
praças tratadas 3,10% 2,95% menos 0,15 pp
praças de controle 3,60% 3,20% menos 0,40 pp

Duas leituras óbvias saem daí, e as duas erram.

Leitura 1, antes e depois só no tratado. De 3,10 para 2,95 por cento, ou seja, menos 0,15 ponto, menos 4,84 por cento em termos relativos. Veredito: a mudança piorou o checkout. Errado, porque o mundo inteiro piorou nesse intervalo.

Leitura 2, tratado contra controle no período de depois. 2,95 contra 3,20 por cento, ou seja, menos 0,25 ponto, menos 7,81 por cento. Veredito: a mudança piorou o checkout. Errado, porque as praças tratadas já convertiam menos antes.

A leitura 2 é a mais perigosa das duas, porque ela passa num teste de significância. Com 260.000 visitantes nas praças de controle e 240.000 nas tratadas no período de depois, cole os quatro números na calculadora:

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.

O que ela devolve, e o que vale conferir campo a campo:

campo controle (A) tratado (B)
visitantes 260.000 240.000
conversões 8.320 7.080
taxa 3,2000% 2,9500%

Resultado: diferença de menos 0,2500 ponto, lift relativo de menos 7,81 por cento e valor-p tão pequeno que a calculadora mostra apenas menor que 0,0001. A conta por trás disso é z igual a menos 5,1117, com valor-p de cerca de 3,2 vezes 10 elevado a menos 7 e intervalo de confiança de 95 por cento da diferença entre menos 0,3457 e menos 0,1543 ponto, que a calculadora arredonda para menos 0,3 a menos 0,2 ponto. Um resultado limpo, apertado e completamente enganoso.

Agora rode a mesma calculadora no período de antes, quando ainda não existia mudança nenhuma para medir: 9.000 de 250.000 no controle contra 7.130 de 230.000 no tratado. Ela devolve diferença de menos 0,5000 ponto, lift relativo de menos 13,89 por cento e z igual a menos 9,6031, com valor-p tão pequeno que a calculadora mostra apenas menor que 0,0001. A “derrota” já estava lá antes de existir tratamento. A calculadora não errou: ela respondeu com precisão a uma pergunta errada.

As quatro médias de um desenho de diferenças em diferençasGráfico de linhas com dois períodos, antes e depois, separados por uma linha vertical tracejada. A linha do grupo de controle cai de 3,60 por cento para 3,20 por cento, uma variação de menos 0,40 ponto. A linha do grupo tratado cai de 3,10 por cento para 2,95 por cento, uma variação de menos 0,15 ponto. Uma linha tracejada mostra o contrafactual do grupo tratado, que seria 2,70 por cento se ele tivesse acompanhado a mesma queda do controle. A distância entre 2,95 por cento observado e 2,70 por cento contrafactual é de mais 0,25 ponto e está marcada como a estimativa de diferenças em diferenças. O gráfico registra ainda que a comparação transversal do período de depois, entre 2,95 e 3,20 por cento, devolve menos 0,25 ponto, com o sinal invertido.A mesma queda no tratado vale coisas diferentes conforme o que se usa de referênciamudança entra aqui3,60%3,20%3,10%2,95%2,70%controlemenos 0,40 pptratadomenos 0,15 ppcontrafactual2,70%+0,25 ppantesdepoisdiferenças em diferenças: (menos 0,15) menos (menos 0,40) = mais 0,25 ppcomparação transversal no depois: 2,95 menos 3,20 = menos 0,25 pp, sinal invertido
O contrafactual não é o nível do controle, é a VARIAÇÃO do controle aplicada ao ponto de partida do tratado.

A conta, em uma linha

Diferenças em diferenças não compara níveis, compara variações:

efeito = (tratado depois menos tratado antes) menos (controle depois menos controle antes)

Com os nossos números: (2,95 menos 3,10) menos (3,20 menos 3,60) = (menos 0,15) menos (menos 0,40) = mais 0,25 ponto.

A forma mais útil de ler isso é como uma tabela de quatro células, porque ela deixa explícito o que cada subtração remove:

antes depois variação
tratado 3,10% 2,95% menos 0,15 pp
controle 3,60% 3,20% menos 0,40 pp
diferença menos 0,50 pp menos 0,25 pp mais 0,25 pp

A primeira subtração, por linha, remove tudo que é fixo de cada grupo: mix de tráfego, ticket médio, qualidade da base, canal dominante. Se as praças tratadas sempre converteram meio ponto menos, esse meio ponto sai da conta.

A segunda subtração, entre linhas, remove tudo que aconteceu com o mundo no intervalo: sazonalidade, feriado, concorrente em promoção, mudança no algoritmo de um canal. No nosso caso, os 0,40 ponto de queda que atingiram todo mundo.

O que sobra é o que aconteceu só com o tratado e só depois. É por isso que a leitura funciona mesmo com grupos de níveis muito diferentes: a premissa não é sobre o nível, é sobre a variação.

O exemplo clássico dessa leitura é de Card e Krueger. Em 1º de abril de 1992, o salário mínimo de Nova Jersey subiu de 4,25 para 5,05 dólares por hora. Eles pesquisaram 410 lanchonetes em Nova Jersey e no leste da Pensilvânia, antes e depois, e usaram a Pensilvânia, onde o salário mínimo não mudou, como grupo de controle. O ganho relativo, nas palavras deles a “diferença em diferenças” das variações de emprego, foi de 2,76 empregados equivalentes em tempo integral, ou 13 por cento, com estatística t de 2,03.

A premissa: tendência comum, e como olhar para ela

A conta só entrega o efeito causal se valer a tendência comum: na ausência da mudança, tratado e controle teriam variado na mesma medida.

Essa premissa não é testável, porque ela fala de um mundo que não aconteceu. Mas ela fica muito mais ou muito menos crível conforme o que se vê antes da mudança. Se as duas séries andaram juntas por vários períodos e só descolaram quando a mudança entrou, a premissa é razoável. Se elas já vinham abrindo, a leitura está morta.

Duas séries antes da mudança: tendência comum válida e tendência comum quebradaDois painéis lado a lado. No painel da esquerda, rotulado premissa razoável, as linhas do grupo tratado e do grupo de controle sobem e descem juntas ao longo de seis períodos antes da linha vertical tracejada, mantendo a distância entre elas praticamente constante, e só depois da linha vertical a linha do tratado sobe acima do que a distância anterior previa. No painel da direita, rotulado premissa quebrada, a distância entre as duas linhas já vinha aumentando período a período antes da linha vertical, de modo que a diferença observada depois da mudança seria a continuação de uma tendência que já existia.O que decide a leitura é o que aconteceu ANTES da linha tracejadapremissa razoávelcontroletratadodistância constante antes, abre depoispremissa quebradacontroletratadoa distância já vinha fechando antes da mudançaRode a mesma conta em pares de períodos ANTERIORES à mudança: ela tem que devolver perto de zero.Um resultado grande num período placebo não é ruído, é a premissa avisando que caiu.
O teste de tendência prévia é rodar a mesma conta em períodos onde não houve tratamento. Ali o resultado tem que ser perto de zero.

Três checagens práticas, todas baratas:

  1. Plote as duas séries cruas. Antes de qualquer regressão. Se elas não andam juntas no gráfico, nenhuma sofisticação vai consertar.
  2. Rode a conta em períodos placebo. Finja que a mudança entrou duas semanas antes de ter entrado, com dados só do período anterior. O resultado deveria ser perto de zero.
  3. Rode a conta em métricas placebo. Uma métrica que a mudança não poderia ter afetado, por exemplo taxa de rejeição da home num rollout que só mexeu no checkout. Se ela também “melhorou”, o que você mediu não foi a mudança.

Essa lógica é a mesma dos experimentos de validação que tratamos em teste A/A: se o método acha efeito onde não pode haver, o problema é o método.

O erro-padrão é o campo minado de verdade

O ponto estimado de diferenças em diferenças é aritmética simples. O intervalo de confiança em volta dele é onde quase todo mundo se machuca, e o dano é sistemático.

Bertrand, Duflo e Mullainathan pesquisaram todos os artigos de diferenças em diferenças publicados em seis revistas de economia entre 1990 e 2000, 92 no total. Dos 65 que usavam mais de dois períodos, apenas cinco tratavam explicitamente da correlação serial, e quatro desses cinco usavam uma correção paramétrica que, como eles mostram depois, quase não muda nada. Além disso, 80 dos 92 artigos tinham problema de erro agrupado, porque a unidade de observação era mais fina que a unidade de variação, e só 36 lidavam com isso.

Para medir o estrago, eles sortearam leis fictícias em dados de salários femininos da Current Population Survey, mulheres de 25 a 50 anos, de 1979 a 1999, cerca de 900 mil observações. Como as leis eram inventadas, qualquer efeito significativo é falso positivo, e a taxa correta seria 5 por cento. A tabela deles:

leitura taxa de rejeição sem efeito nenhum
micro dados, mínimos quadrados comuns 67,5%
micro dados, erro-padrão agrupado por célula estado-ano 44,0%
dados agregados por estado e ano 43,5%
lei fictícia SEM correlação serial 6,0%
dados manufaturados com autocorrelação de 0,8 37,3%

A linha decisiva é a quarta. Quando eles construíram uma lei que liga e desliga ao acaso, sem correlação serial, a taxa de rejeição caiu para 6 por cento. O problema não é o método, é a combinação de série correlacionada consigo mesma com regra de tratamento também correlacionada consigo mesma. Nos dados deles, a autocorrelação de primeira ordem dos resíduos era de 0,51, e a de segunda e terceira ordem, 0,44 e 0,33, caindo bem mais devagar do que um processo autorregressivo de primeira ordem preveria.

Reproduzimos o mesmo experimento numa escala de produto: 40 praças, 8 tratadas, 4 semanas antes e 4 depois, 7.500 visitantes por praça por semana, com ruído autocorrelacionado dentro de cada praça.

Com um efeito verdadeiro de 0,25 ponto plantado, a estimativa saiu em 0,2532 ponto, praticamente em cima. O que muda conforme o erro-padrão:

erro-padrão valor t leitura
calculado por visitante, como se cada visita fosse independente 0,03738 pp 6,775 confiança exagerada
agrupado por praça 0,05987 pp 4,230 honesto
inferência por permutação, 20.000 sorteios ponto de corte empírico valor-p 0,0006 honesto

O erro-padrão agrupado por praça é 1,6 vez o ingênuo. E o custo disso aparece de verdade no placebo: repetimos o procedimento 2.000 vezes sem plantar efeito nenhum, sorteando ao acaso quais praças seriam “tratadas”.

Taxa de falso positivo por forma de calcular o erro-padrãoGráfico de barras horizontais com cinco barras que mostram a proporção de vezes em que um efeito foi declarado significativo quando não havia efeito nenhum. As três primeiras barras vêm do estudo de Bertrand, Duflo e Mullainathan em dados da Current Population Survey: mínimos quadrados comuns em micro dados, 67,5 por cento; erro-padrão agrupado por célula estado-ano, 44,0 por cento; e dados colapsados em dois períodos, 6,0 por cento. As duas últimas barras vêm da simulação de 40 praças deste guia: erro-padrão calculado por visitante, 29,40 por cento, e inferência por permutação, 5,15 por cento. Uma linha vertical tracejada marca os 5 por cento que seriam a taxa correta.Quantas vezes o método acha efeito onde não existe efeito nenhum5%, a taxa corretaBDM: micro dados, MQO67,5%BDM: agrupado por estado-ano44,0%BDM: colapsado em 2 períodos6,0%simulação: erro-padrão por visitante29,4%simulação: permutação5,15%0%40%80%BDM: leis fictícias em dados da CPS, 1979 a 1999. Simulação: 40 praças, 2.000 sorteios.Laranja: o método declara vitória onde não há nada. Verde: o método se comporta.
A taxa de falso positivo do erro-padrão convencional não é um pouco alta, é várias vezes o que deveria ser.

Na nossa simulação, o erro-padrão calculado por visitante declarou efeito significativo em 29,40 por cento dos sorteios sem efeito nenhum, quase seis vezes a taxa correta. A inferência por permutação devolveu 5,15 por cento, praticamente em cima dos 5 por cento teóricos.

A inferência por permutação é o caminho mais simples e mais robusto, e é exatamente a recomendação principal de Bertrand, Duflo e Mullainathan, por funcionar independentemente do tamanho da amostra. Ela cabe em três passos:

  1. Calcule o efeito de diferenças em diferenças com o conjunto real de praças tratadas.
  2. Sorteie ao acaso, milhares de vezes, um conjunto fictício de praças tratadas do mesmo tamanho, e calcule o efeito de cada sorteio.
  3. O valor-p é a fração dos sorteios fictícios cujo efeito absoluto ficou maior ou igual ao real.

No nosso caso, com 20.000 sorteios, apenas 12 deles bateram ou superaram o efeito observado: valor-p de 0,0006.

Quando permutar não for prático, as duas alternativas testadas por eles também funcionam com muitas unidades: colapsar tudo em dois períodos, um antes e um depois, que devolveu 6 por cento de rejeição; e permitir uma matriz de covariância arbitrária dentro de cada estado, que na prática é agrupar o erro-padrão por estado e devolveu 6 por cento. As duas degradam com poucas unidades: no artigo, o agrupamento sobe para 8,5 por cento com 10 estados e 15 por cento com 6, e a agregação sobe para 9,5 por cento com 20 estados e 31,5 por cento com 6.

Quando o rollout foi escalonado

Até aqui todas as praças tratadas entraram na mesma data. Na vida real o rollout costuma ser escalonado: um grupo na semana 3, outro na 6, outro na 9. A tentação é jogar tudo numa regressão com efeitos fixos de praça e de semana e ler o coeficiente do indicador de tratamento.

Goodman-Bacon mostrou o que esse coeficiente realmente é: uma média ponderada de todas as comparações 2x2 possíveis entre grupos de datas de entrada. Algumas dessas comparações são as que você esperava, tratado contra nunca tratado. Outras usam um grupo tratado mais cedo como controle de um grupo tratado mais tarde, no intervalo em que o primeiro já está tratado.

As comparações 2x2 escondidas dentro de um rollout escalonadoDiagrama com três faixas horizontais que representam três grupos de praças ao longo de doze semanas. O grupo A é tratado a partir da semana 4, o grupo B a partir da semana 8, e o grupo N nunca é tratado. Abaixo das faixas, três blocos indicam as comparações que a regressão com efeitos fixos de dois sentidos combina: grupo A contra grupo N, grupo B contra grupo N, e grupo B contra grupo A no intervalo em que A já está tratado. Os dois primeiros blocos estão marcados como comparações limpas e o terceiro está marcado em laranja como a comparação problemática, porque usa como controle um grupo que já recebeu o tratamento e cujo efeito pode estar mudando ao longo do tempo.Um coeficiente único esconde três comparações, e uma delas não é o que você quergrupo Atratado da sem. 4grupo Btratado da sem. 8grupo Nnunca tratadosem. 1sem. 6sem. 121. A contra Ntratado contra nunca tratadocomparação limpa2. B contra Ntratado contra nunca tratadocomparação limpa3. B contra Acontrole é quem JÁ foi tratadopeso pode ficar negativoOs pesos são proporcionais ao tamanho dos grupos e à variância do indicador em cada par,e são maiores para quem foi tratado no MEIO do painel.Quando o efeito muda ao longo do tempo, a variação do efeito no grupo já tratadoé SUBTRAÍDA da estimativa, e o coeficiente único deixa de resumir o que se queria medir.
Rollout escalonado transforma um coeficiente em uma média de comparações, e uma parte dessas comparações não é a que você pediu.

Nas palavras de Goodman-Bacon, quando os efeitos não mudam ao longo do tempo, a leitura devolve uma média ponderada pela variância dos efeitos entre grupos e todos os pesos são positivos. Pesos negativos só aparecem quando o efeito varia ao longo do tempo: quando unidades já tratadas fazem o papel de controle, a mudança do efeito delas ao longo do tempo é subtraída da estimativa. Ele registra que isso não implica falha do desenho, mas que serve de alerta contra resumir efeitos que variam no tempo num coeficiente único.

Os pesos, ele mostra, são proporcionais ao tamanho dos grupos e à variância do indicador de tratamento em cada par, e essa variância é maior para quem foi tratado no meio do painel. Ou seja: quem entrou no meio do rollout domina o resultado, sem que ninguém tenha decidido isso.

Na prática, para um rollout escalonado:

Roteiro de diferenças em diferenças em sete passos

  1. Escreva a pergunta antes de olhar os dados. Qual mudança, qual métrica, qual recorte tratado, qual data de corte. Isso vai para o plano de análise pré-registrado igual a um teste sorteado.
  2. Escolha o grupo de controle pela tendência, não pelo nível. O melhor controle não é o mais parecido em conversão, é o que variou junto com o tratado nos períodos anteriores.
  3. Plote as séries cruas dos dois grupos antes de calcular qualquer coisa. Se o gráfico não convence, o número não vai convencer.
  4. Rode períodos placebo e métricas placebo. Resultado grande onde não pode haver efeito derruba a leitura.
  5. Calcule as quatro médias e faça a subtração dupla. Isso é aritmética e leva minutos.
  6. Não use o erro-padrão por visitante. Use permutação, ou agrupe por unidade de tratamento, ou colapse em dois períodos. Diga no relatório qual dos três você usou.
  7. Se o rollout foi escalonado, publique a curva por período, não um coeficiente único.

Erros comuns

Faça isso automático na Donnu

O motivo mais comum de uma leitura de diferenças em diferenças sair errada não é a fórmula, é o dado. A conta precisa da métrica por unidade de tratamento e por período, guardada com a mesma definição antes e depois. Painel que só guarda o total agregado do site, ou que mudou a definição de conversão no meio do caminho, não permite a leitura, e nenhuma sofisticação estatística conserta isso depois.

A Donnu guarda o resultado por unidade e por dia com a definição carimbada, o que torna a leitura de diferenças em diferenças uma consulta, não uma reconstrução. E, mais importante, ela existe para o caso em que dá para sortear: sempre que a mudança couber num sorteio de usuário, esse é o caminho, porque ele dispensa a premissa de tendência comum e o campo minado do erro-padrão. Para saber se o seu tráfego comporta o teste sorteado antes de partir para o quase-experimento, a calculadora de tamanho de amostra responde em segundos, e a calculadora de significância fecha a leitura no fim.

Referências

Leia também: Experimentos geográficos · Randomização por cluster · Teste switchback · Unidade de sorteio · Plano de análise pré-registrado · Calculadora de tamanho de amostra · Read in English

Perguntas frequentes

O que é diferenças em diferenças?
É uma leitura que compara a VARIAÇÃO de um grupo tratado entre antes e depois com a VARIAÇÃO de um grupo de controle no mesmo intervalo. O efeito estimado é a diferença entre essas duas variações. Ela serve para o caso em que não dá para sortear usuário e o grupo tratado já era diferente do controle antes da mudança.
Por que não basta comparar o tratado com o controle depois da mudança?
Porque a diferença de nível entre os dois grupos já existia antes. Na simulação deste guia, o grupo tratado convertia 3,10 por cento e o controle 3,60 por cento antes de qualquer mudança. Comparar 2,95 por cento com 3,20 por cento depois devolve menos 0,25 ponto com valor-p de cerca de 3,2 vezes 10 elevado a menos 7, uma derrota estatisticamente significativa que nunca existiu.
Qual é a premissa que diferenças em diferenças exige?
Tendência comum: na ausência da mudança, os dois grupos teriam variado na mesma direção e na mesma magnitude. A premissa é sobre a VARIAÇÃO, não sobre o nível, então grupos com níveis muito diferentes ainda servem. Ela não é testável diretamente, mas fica mais crível quando as tendências dos dois grupos andam juntas em vários períodos antes da mudança.
Por que o erro-padrão de diferenças em diferenças costuma estar errado?
Porque a série de cada praça é correlacionada consigo mesma ao longo do tempo, e a regra de tratamento também é. Bertrand, Duflo e Mullainathan mostraram que, com cerca de 20 anos de dados e leis fictícias sorteadas ao acaso, a leitura convencional rejeitava a hipótese nula ao nível de 5 por cento em até 45 por cento das simulações. Na simulação deste guia, o erro-padrão calculado por visitante produziu 29,40 por cento de falsos positivos.
Como corrigir o erro-padrão?
Bertrand, Duflo e Mullainathan testaram três caminhos. Colapsar os dados em dois períodos, antes e depois, devolveu 6 por cento de rejeição. Permitir uma matriz de covariância arbitrária dentro de cada estado, o que na prática é agrupar o erro-padrão por estado, devolveu 6 por cento. E a inferência por permutação, que eles recomendam por funcionar em qualquer tamanho de amostra, é reembaralhar quem foi tratado. Na simulação deste guia ela devolveu 5,15 por cento de falso positivo contra os 5 por cento teóricos.
Diferenças em diferenças funciona quando o rollout foi escalonado?
Funciona com cuidado. Goodman-Bacon mostrou que a regressão com efeitos fixos de dois sentidos, quando as unidades são tratadas em datas diferentes, equivale a uma média ponderada de todas as comparações 2x2 possíveis, e algumas delas usam unidades JÁ tratadas como controle. Quando o efeito muda ao longo do tempo, essas comparações entram com peso negativo e o coeficiente único deixa de resumir o que se quer medir.