32 Replicação e Reprodução
Este capítulo faz parte de um livro em desenvolvimento ativo e ainda não passou pela revisão do autor. O conteúdo pode mudar conforme a revisão avança.
A decisão de pesquisa. Sem nada além dos arquivos que um estudo entregou, seu ou de outra pessoa, você decide se o número relatado de fato volta a aparecer. Depois, você ordena as fragilidades que encontrou pelo tamanho da ameaça que cada uma representa para a alegação principal, não pela facilidade de corrigir cada uma.
32.1 Por que essa decisão importa
A decisão em jogo: se um resultado se regenera a partir dos arquivos sozinhos, e qual das fragilidades dele mais ameaça a alegação.
“Não me interessa que o seu gráfico esteja bonito nem que o código tenha rodado no seu computador. Me entregue os seus arquivos e me deixe obter o mesmo número de volta. Se eu não conseguir, você ainda não tem um resultado. Você tem uma história.” — um pesquisador principal lendo o relatório de laboratório de alguém no primeiro ano de pesquisa
Em um laboratório de verdade, um número que ninguém mais consegue gerar de novo é um passivo, não um achado. Um pôster pode arredondar, uma legenda pode exagerar, e um notebook de aparência limpa ainda pode esconder a única escolha que sustenta a alegação inteira. O revisor acima está aplicando o padrão que todo resultado uma hora encontra. Este capítulo coloca você primeiro do lado de quem revisa, para que você aprenda a enxergar as rachaduras antes que alguém as encontre no seu próprio trabalho.
32.2 O conceito
Duas palavras parecem iguais e significam coisas diferentes. Reprodução é obter o mesmo número a partir dos mesmos dados e do mesmo código que um estudo entregou. Exemplo: você abre o notebook de outro pesquisador, roda do começo ao fim e confere se a mesma figura de crescimento volta. Replicação é obter um resultado parecido a partir de um novo estudo ou de novos dados. Exemplo: um segundo laboratório faz o próprio experimento e vê o mesmo efeito. Este capítulo é sobre reprodução. Você testa o pacote, não o mundo.
O que você testa é um pacote de reprodutibilidade: o conjunto completo que um estudo entrega para que outra pessoa consiga reconstruir seus números, ou seja, os dados, o código, a ordem de execução, qualquer semente aleatória e o texto final. O único valor em que a alegação principal se apoia é o número principal. Exemplo: “o suplemento aumentou o crescimento das larvas em 0.5 mm.” Você reconstrói esse número primeiro, usando restart-and-run-all (reiniciar e rodar tudo), que significa limpar a memória do notebook e rodar todas as células desde o topo, sem nenhum conserto manual. Se um número só aparece quando as células rodam fora de ordem, ele não é reprodutível.
Uma execução limpa prova que o código roda. Ela nunca prova que o texto é verdadeiro, então você faz três auditorias em cima dela. A concordância entre alegações e cálculo confere se cada frase afirmada no texto está sustentada por um número que o código de fato imprime. Uma especificação alternativa é um jeito diferente, mas igualmente defensável, de calcular o mesmo número principal, para ver se a resposta depende de uma escolha não divulgada. Uma suposição oculta é algo em que a análise se apoia em silêncio e nunca declara, e sem o que o resultado desmoronaria. A mais perigosa na biologia tem nome: pseudorreplicação, tratar medições repetidas do mesmo animal, da mesma placa ou do mesmo tanque como pontos de dados independentes quando a verdadeira unidade experimental é o animal, a placa ou o tanque (Hurlbert, 1984).
32.3 Um exemplo trabalhado
Um pacote de outro laboratório testa se um probiótico adicionado à água aumenta o comprimento do corpo de larvas de peixe-zebra. São seis tanques: três recebem o probiótico, três recebem água pura. Cada tanque abriga cerca de 40 larvas, e o comprimento do corpo é registrado para cada larva. O pôster diz: “O probiótico aumentou o comprimento do corpo das larvas em 0.5 mm.”
Reproduza. Você faz restart-and-run-all. O código carrega o arquivo, separa as larvas por tipo de tanque e calcula a diferença entre as duas médias de grupo. O número que volta é 0.43 mm, não 0.5 (os números deste exemplo são construídos). O pacote se reproduz, e isso é um sucesso real. Mas o texto diz 0.5 e o código diz 0.43, e repare que arredondamento não explica: 0.43 arredonda para 0.4. Isso é uma divergência entre alegação e saída, o seu primeiro achado, e ele dá a você o direito de apertar mais.
Encontre a escolha que ninguém declarou. O pacote descartou as larvas que morreram antes da medição final e nunca disse isso. Morte não é uma célula em branco comum. É um evento pós-tratamento: algo que acontece depois do tratamento e que o próprio tratamento pode causar. Se o probiótico muda quais larvas sobrevivem, as sobreviventes dos dois tanques não são o mesmo tipo de larva, e a diferença de comprimento entre elas compara populações diferentes.
Você pode se sentir tentado a tapar os brancos carregando adiante o último comprimento registrado de cada larva morta, o que produz 0.31 mm. Resista a chamar isso de alternativa igualmente defensável. Isso supõe em silêncio que a última medição de uma larva morta substitui um comprimento final que ela nunca teve, o que é uma alegação sobre biologia, não um padrão neutro. Os dois números, 0.43 e 0.31, respondem a perguntas diferentes com suposições diferentes, então a distância entre eles não é uma faixa, e relatá-la como uma seria um terceiro erro em cima dos dois primeiros.
O que você relata no lugar é a sobrevivência por tipo de tanque primeiro, depois o comprimento final entre as larvas sobreviventes, rotulado exatamente assim. Diga com clareza o que esse par faz e o que não faz. É uma descrição honesta do que aconteceu nos tanques. Ele não entrega um efeito causal geral do probiótico sobre o comprimento no dia 30, e nenhum rearranjo desses números vai entregar, porque comprimento no dia 30 não existe para uma larva que morreu. Repare também que taxas de sobrevivência iguais não salvam a comparação: dois tanques podem perder a mesma fração e ainda assim perder tipos diferentes de larva. Se o estudo precisa de um desfecho principal único, a correção é a montante: defina antes da análise um desfecho combinado, como sobreviver e alcançar um dado comprimento, e defenda por que essa ordenação responde à pergunta biológica.
Teste a suposição oculta. O pacote relata sua diferença como se todas as 240 larvas fossem independentes, produzindo um intervalo estreito e bem acima de zero. Elas não são independentes. O probiótico foi atribuído por tanque, então larvas que dividem o mesmo tanque dividem água, comida e aperto. A verdadeira unidade experimental é o tanque, e existem apenas seis. Recalcule no nível do tanque, tirando primeiro a média de cada tanque e comparando os três tanques tratados com os três controles, e o intervalo se alarga até a borda inferior tocar o zero. A estimativa pontual quase não se moveu. A incerteza honesta em torno dela explodiu. Isso é pseudorreplicação, e é a fragilidade que tem dentes.
Ordene por ameaça. A pseudorreplicação vem primeiro, porque pode dissolver a alegação de “efeito claro”. A regra não divulgada sobre as larvas mortas vem em segundo, porque move o número. A diferença entre 0.43 calculado e 0.5 relatado vem em terceiro: real, mas a menor ameaça à existência de um efeito.
32.4 O laboratório no Colab
Este capítulo tem o seu próprio notebook companheiro — abra-o no Colab pelo selo acima. O notebook reúne os prompts e o código do capítulo e termina com o espaço de trabalho Agora é a sua vez, para você completar a etapa do capítulo no seu projeto sem sair do Colab. O laboratório completo de sala de aula por trás deste capítulo é o notebook do curso nb14 — replication and red-team of another researcher’s package (abrir no Colab), parte do curso companheiro apresentado no apêndice Para instrutores. Lá você reproduz a frio o número principal de um experimento de campo real, só a partir dos arquivos, e depois faz as mesmas três auditorias que você acabou de ver: alinha cada alegação escrita com a saída que a sustenta, move o número com uma especificação não divulgada e alarga o intervalo ao respeitar o agrupamento que o texto ignorou.
32.5 Prompts de IA recomendados
Comprometa-se primeiro com a sua própria resposta, depois delegue. Nenhum destes prompts é um tiro único. Você manda o prompt, lê o que volta, interroga, afia o pedido e roda de novo. Isso é o loop de IA, e uma auditoria costuma levar duas ou três voltas antes de a ferramenta parar de chutar e começar a apontar para linhas de verdade. Cada prompt é uma tarefa verificável, não um veredito que você terceiriza.
Localize cada insumo que está faltando.
Act as a cold reproducibility auditor. Here is everything a peer's package
shipped: [paste the README, the data description, the code, and the headline
claim]. List every input or step a stranger needs and might not find: the data
file and its version, the exact run order, any random seed, any hard-coded path.
Put it in a table with the item, whether the package supplies it, and the cell
where I should check.
Depois de rodar, verifique: mapeie cada item para uma célula real e depois pergunte “qual é a coisa mais importante que você deixou de fora?”. Combate a ilusão de completude (uma lista de lacunas bem-arrumada ainda pode omitir o único ponteiro que falta e que trava a execução inteira).
Percorra a célula do número principal e depois confirme por fora.
Here is the cell that computes the package's headline number: [paste the cell].
Explain line by line what it computes, and name which printed value is the
headline a reader should compare against the write-up. Then give me one
independent way to confirm that value without rerunning this exact code.
Depois de rodar, verifique: confirme que o valor apontado bate com o número que a sua execução de fato imprimiu, e então faça você mesmo a checagem independente sugerida. Combate a fabricação confiante (uma explicação fluente pode descrever um número que o código nunca produziu).
Faça red team (revisão adversária) da suposição oculta.
This analysis treats every measured larva as an independent observation, though
the probiotic was assigned by tank. Act as a hostile methods reviewer. Name the
one assumption most likely to inflate the reported certainty, say what the honest
experimental unit is, and do not reassure me the design is fine.
Depois de rodar, verifique: recalcule você mesmo o intervalo no nível do tanque e veja se ele alcança o zero. Combate o método plausível mas errado (supor observações independentes em dados agrupados encolhe silenciosamente todos os intervalos).
Uma ferramenta de IA conectada a um ambiente de execução consegue rodar o código, e pedir isso a ela é razoável. O que ela não consegue é responder pelo resultado. Então exija a evidência da execução em vez do resumo dela: os comandos, o ambiente e as versões dos pacotes, a versão exata do código e dos dados que ela rodou (um hash de commit, se o pacote tiver um), se cada comando terminou limpo ou com erro, a saída bruta, e quais arquivos ela tocou. Um “reproduz” confiante sem registro de execução não diz nada sobre se rodou o pacote publicado, uma cópia modificada, ou nada. Depois reproduza a manchete você mesmo a partir de um começo limpo, porque o veredito leva o seu nome. Você também guarda três julgamentos: qual fragilidade mais ameaça a alegação, como você ordena as recomendações e o veredito final sobre o que o pacote sustenta e o que não sustenta. Uma ferramenta propõe suspeitos. Você decide quais deles a evidência condena.
32.6 Um caso de falha da IA
Você cola o pacote inteiro em uma ferramenta de IA genérica e pergunta: “Este estudo se reproduz, e as limitações estão completas?”. Ela responde com total confiança: sim, o código roda, e o parágrafo de limitações parece minucioso, cobrindo tamanho de amostra, ruído de mensuração e um pedido de pesquisa futura. Cada frase é fluente. A ferramenta não sinaliza nenhuma vez que as 240 larvas vieram de apenas seis tanques. Em silêncio, ela confundiu uma lista longa com uma lista completa.
Você pega o erro ao se recusar a avaliar o parágrafo e avaliar o desenho de pesquisa no lugar. Você pergunta qual era de fato a unidade experimental e depois recalcula o intervalo no nível do tanque. Quando o limite inferior cai a zero, o “efeito claro” que a ferramenta endossou acaba se apoiando em uma certeza que os dados nunca conquistaram. Um sinal verde e um parágrafo polido não são um resultado reproduzido. Você verifica o número e a correspondência dele com a alegação, nunca a história confiante sobre eles.
32.7 Agora é a sua vez
O seu projeto já tem alegações que você consegue defender e uma divulgação escrita de como a IA ajudou você a chegar até elas; este passo transforma tudo isso em arquivos que uma pessoa desconhecida conseguiria rodar sem você na sala.
- Junte tudo em uma pasta só: os dados, o código, a ordem de execução, a semente aleatória e um texto curto que enuncie o seu número principal em palavras.
- Reproduza a frio você mesmo. Limpe o kernel, rode cada célula desde o topo sem nenhum conserto manual e, se possível, faça isso em outra máquina que não a que você usou para construir tudo. Anote se o seu número principal voltou exatamente, mais ou menos, ou não voltou.
- Alinhe cada frase do seu texto com um número que o seu código de fato imprime. Sinalize cada divergência, inclusive o arredondamento que você não teve a intenção de esconder.
- Mude uma escolha defensável que você nunca revelou, uma regra de exclusão, um ponto de corte ou um subconjunto, e registre o quanto o seu número principal se move. Relate a faixa inteira, não a ponta mais simpática dela.
- Nomeie a suposição sem a qual o seu resultado desmoronaria e ordene tudo o que você encontrou pela ameaça à alegação, não pela facilidade de conserto. Se você tiver um colega, troquem as pastas e rodem a frio a do outro. O número que a outra pessoa obtiver, colocado ao lado do número que você relatou, é a sua evidência de reprodução.
- Registre a auditoria no seu AI Research Ledger (registro de pesquisa com IA), e verifique pelo menos um resultado com um método nomeado do Guia de Verificação. Um revisor de IA pode rodar a checagem com você; a decisão de aceitar ou rejeitar continua sendo sua.