Publiquei um Número que Nada Tinha Medido
Apareceu uma estatística no meu registo de investigação publicado. Dizia, mais ou menos: o efeito é +0,531, a 11,2 sigma.
Não era uma medição. O efeito era real. O sigma era uma cadeia de texto, escrita à mão dentro de um print, sem nada no código a calculá-la.
Não dei por isso. Já estava publicado há um dia.
Como se publica um número que não é um número
Andava a reproduzir um artigo do ICML 2026, aquele cujo argumento central é que se pode ganhar o benchmark habitual devolvendo respostas vazias na maior parte das vezes. (Escrevi sobre isso à parte.)
Parte desse trabalho consistia em verificar uma afirmação específica: o método do artigo torna os intervalos de previsão mais curtos? Corri a experiência, o script imprimiu a linha de resumo, e copiei essa linha para o registo como conclusão.
A forma da falha é esta. A frase impressa continha dois números lado a lado. Um tinha sido calculado. O outro tinha sido escrito. E porque apareceram juntos, em monoespaçado, no fim de um script que tinha mesmo acabado de correr durante algum tempo, o número escrito herdou a credibilidade do número calculado.
O mecanismo é todo aqui. Não houve alucinação no sentido dramático, nenhum sistema afirmou algo falso sobre o mundo. Um número foi apenas colocado no sítio onde costuma estar uma medição, e a colocação tratou de mentir.
O que sai no terminal não é evidência, é uma afirmação sobre um cálculo. São coisas diferentes, e passei anos sem precisar de as distinguir, porque historicamente vinham as duas do mesmo sítio.
O que aconteceu quando repeti a experiência
O passo óbvio seguinte era assumir que a conclusão não prestava e retirá-la. Também estaria errado.
O script dos autores fixa cinco sementes aleatórias. Alarguei para duzentas e, a parte que interessava, gravei as matrizes por semente que o script normalmente descarta na média, para passar a existir um ficheiro em disco em vez de uma linha num ecrã.
O resultado:
| impresso | repetido, n=200 | |
|---|---|---|
| efeito (α=0,05) | +0,531 | +0,531454 |
| sigma | 11,2 | 19,11 |
| desvio-padrão | — | 0,393338 |
O efeito reproduziu-se até à terceira casa decimal. A execução original tinha mesmo acontecido. Simplesmente nunca ficou gravado o artefacto, e por isso não havia maneira de distinguir um resultado verdadeiro de um resultado escrito à mão, que é exactamente a razão pela qual era preciso repetir em vez de apagar.
O sigma estava errado, mas errado para baixo: a separação real é 19,1 e não 11,2. A afirmação publicada tinha sido mais conservadora do que a evidência permitia.
Isso não serve de consolo. Um número que ninguém mediu calhar cair para o lado favorável é sorte, não é método. Se tivesse caído para o outro lado, eu teria publicado um exagero.
Para ficar completo, já que é essa a conclusão de facto: em α=0,05 o método alonga os intervalos (+0,5315, 19,1σ), enquanto em 0,10, 0,15 e 0,20 os encurta (−0,367, −0,526, −0,617). A cobertura mantém-se no valor nominal em todos os casos, 0,9493 contra um alvo de 0,95, portanto o teorema do artigo fica intacto. O artigo nunca afirmou encurtamento universal. O resumo automático do artigo, gerado pela plataforma do desafio, foi que afirmou.
Duas lições que apontam em sentidos opostos
A primeira é a evidente. Um número impresso não é um número medido. Antes de uma figura contar como conclusão, alguma coisa tem de a ter escrito em disco. Passei a tratar "que artefacto é que eu abri?" como a pergunta, em vez de "isto parece certo?", porque parecer certo era precisamente a propriedade que o número mau tinha.
A segunda é menos confortável, e quase me escapou.
Quando encontrei a cadeia de texto fixa, a minha conclusão imediata foi isto foi inventado, a conclusão não vale nada. Confiante, rápida, e também sem evidência nenhuma. Era uma hipótese com ar de veredicto, produzida pela mesma maquinaria que tinha produzido o erro original, a afirmar uma coisa por ser plausível e não por ter sido verificada.
Se tivesse agido em função disso, teria retirado uma conclusão correcta.
Só a repetição da experiência resolveu. Não foi o primeiro instinto nem o segundo. Foi o artefacto.
Quanto isto custa, e porque é que isso importa
92 segundos de relógio num portátil, 105 segundos de CPU. Sem GPU, sem nuvem, apenas numpy e scikit-learn sobre um conjunto de dados sintético pequeno o suficiente para caber em memória.
É este o número a que volto sempre. A verificação não era cara, nem lenta, nem tecnicamente exigente. Apenas não tinha sido feita.
Esta é a forma real do controlo de qualidade em trabalho assistido por IA, e não é a que as pessoas esperam. O modo de falha não é um sistema a inventar algo escandaloso que um leitor atento apanharia. É um valor pequeno, plausível, bem formatado, no sítio certo, rodeado de valores correctos, indistinguível por inspecção, e barato de verificar se alguém se lembrar de o fazer.
Gerar cem linhas plausíveis é hoje quase gratuito. Verificar cem linhas custa exactamente o que sempre custou. É na distância entre estas duas curvas que vive todo este tipo de erro, e ler com mais atenção não a fecha. O que a fecha é uma regra: um número só passa a conclusão quando se consegue dizer de que ficheiro veio.
Corrigi isto acrescentando uma entrada nova ao registo, com a repetição e o valor corrigido, e deixei o original visível. Editar resultados publicados para fazer um estado passado parecer mais arrumado é um problema maior do que o erro que esconde.
A linha original continua lá. A correcção também. Parece-me a ordem certa.
O artigo é Questioning the Coverage-Length Metric in Conformal Prediction (Min, Lu, Li, Zhang, Teng). A reprodução foi submetida ao desafio de reprodução por agentes do ICML 2026. Todos os valores deste texto vêm de um ficheiro em disco, claim1_seeds200.csv e as matrizes por semente que lhe deram origem, e foram recalculados a partir das matrizes em bruto antes da publicação, o que me pareceu o mínimo dado o tema.
Perguntas Frequentes
O que correu mal, exactamente?
Um script imprimiu uma frase com uma estatística lá dentro, um efeito e um valor de sigma. O efeito era real, vinha de um cálculo feito antes no mesmo script. O sigma não era. Estava dentro da frase impressa como texto literal, e nada no código o calculava. Como apareceu no terminal ao lado de um número genuíno, foi lido como resultado. Copiei essa linha para um registo de investigação publicado e lá ficou durante um dia até alguém a questionar.
Então a conclusão estava errada?
Não, e foi essa a parte que me surpreendeu. Repetir a experiência com 200 sementes reproduziu o efeito até à terceira casa decimal, +0,5315 contra os +0,531 que tinham sido impressos. A execução original tinha mesmo acontecido, apenas nunca ficou gravado nenhum ficheiro. Mas o sigma estava errado: o valor real é 19,1 e não 11,2. Estava subestimado, o que significa que a afirmação publicada tinha sido mais conservadora do que a evidência permitia. Um número errado que calha cair para o lado seguro continua a ser um número errado.
Como se distingue um número real de um número impresso?
Perguntando o que o calculou, e indo verificar. Não basta avaliar se parece plausível, porque a plausibilidade é precisamente o que falha aqui: o valor inventado estava ao lado de um verdadeiro e herdou a credibilidade dele. O teste concreto é saber se existe um artefacto, um ficheiro, uma matriz, uma linha num CSV que alguma coisa escreveu. Se o único vestígio de um número é ter aparecido num ecrã, ainda não é evidência. O que sai no terminal é uma afirmação sobre um cálculo, não o cálculo.
Porque não apagar simplesmente o número errado?
Porque o registo já estava publicado, e editar resultados gravados para fazer um estado passado parecer melhor é um problema maior do que o erro original. A correcção foi feita acrescentando uma entrada nova, com a repetição da experiência, o valor corrigido e a explicação do que tinha falhado, deixando o original visível. Um registo que se reescreve discretamente deixa de ser um registo. Isto importa ainda mais quando o trabalho é assistido por IA, porque o volume de texto gerado torna a edição posterior mais fácil e mais difícil de detectar.
Isto quer dizer que não se pode confiar em análise gerada por IA?
Quer dizer que o volume produzido e o esforço de verificação crescem a ritmos diferentes, e é nessa diferença que vivem os erros. Gerar cem linhas plausíveis é hoje quase gratuito. Verificar cem linhas custa o mesmo que sempre custou. Por isso a disciplina que conta não é ler com mais atenção, é exigir um artefacto antes de um número passar a contar como conclusão. Neste caso a verificação inteira levou 92 segundos de relógio num portátil. A barreira nunca foi o esforço, foi ninguém ter perguntado.
Pronto para automatizar o seu negócio?
Construímos ferramentas de IA e sistemas de automação para PMEs europeias — desde MVPs rápidos até sistemas em produção, sempre em conformidade com o GDPR.
it's human stuff
Insights semanais de IA para PMEs europeias. Sem exageros, apenas o que funciona.
Continue a Ler
Um Artigo do ICML Ganhou o Benchmark Sem Responder Nada
Investigadores criaram um método deliberadamente inútil que bate a pontuação-padrão que toda a gente reporta. Repeti a experiência no meu próprio CPU em oito segundos e obtive o número deles. Depois descobri que o código publicado não reproduz o próprio artigo. Eis o que isto significa quando um fornecedor lhe apresenta um benchmark.
Como Saber Quando o Scanner Está a Mentir
Uma ferramenta que escrevi analisou 65 sites em 83 segundos e apontou seis infrações ao RGPD. Três eram inocentes. Porque é que mentiu, as quatro verificações que a apanharam, e o padrão incómodo de quais os casos que um scanner barato erra.