Uma audiência sintética calibrada ajuda a chegar ao campo humano com as perguntas certas
Este guia ensina um método de pesquisa quantitativa com respondentes sintéticos que serve para qualquer estudo: um teste de conceito, de embalagem, de mensagem ou de questionário. O método parte da base humana que você já tem, gera uma audiência sintética em várias rodadas, calibra essa audiência só no treino, mede o resultado contra uma amostra de validação humana aberta uma vez e entrega uma decisão célula por célula, com a origem de cada linha marcada.
Que decisões o método ajuda a tomar
Triagem de estímulos
Ordenar conceitos, embalagens ou mensagens antes de gastar o único campo humano com todos eles.
Pré-teste de questionário
Ver se uma escala achata as respostas, se uma pergunta deixa de diferenciar públicos, se a ordem de exibição pesa.
Hipóteses por célula
Apontar em que faixa, região ou perfil o resultado pode ser diferente, para dirigir a coleta humana para lá.
Saber até onde vale
Dizer, com número, para que uso o sintético serve (AVANÇAR), para que serve só como hipótese (REVISAR) e para que não serve (PARAR).
O que você leva no fim
- A tabela de decisão por uso e por célula, cada linha com a evidência e a condição ao lado.
- O disclosure, a declaração ao cliente de que houve material sintético, como ele foi feito e até onde vale.
- O relatório de auditoria, com a Leitura do grupo escrita e assinada por quem pesquisa.
- A base integrada: humanos de treino e linhas sintéticas numa tabela só, com a coluna de origem.
- O relatório de calibração e validação em HTML e PDF, com os gráficos.
- Um projeto reaproveitável: todas as informações do estudo e a curadoria dos dados ficam numa pasta só,
projetos/NOME_DO_ESTUDO/, com as nove etapas, o estado do projeto e o registro de prompts.
projetos/, numa subpasta com o nome do estudo: projetos/NOME_DO_ESTUDO/. Um estudo por pasta. O nome não leva espaço nem acento. O diretor e todos os scripts recebem sempre --projeto projetos/NOME_DO_ESTUDO.O kit traz um projeto pronto para treinar, na pasta projetos/nuvem_casa/. A Nuvem Casa é uma marca fictícia de pastilhas concentradas para limpador multiuso. A equipe de marketing precisa escolher um entre três conceitos de comunicação: A, "Menos embalagem, mesma limpeza" (argumento ambiental), B, "Uma pastilha. Uma garrafa. Muitas limpezas." (simplicidade), e C, "Limpeza potente em minutos" (desempenho). Há verba para um único campo humano. A base de treino tem 480 pessoas (912 linhas, porque cada exposto avaliou dois conceitos) e a amostra de validação tem 240 pessoas. Fonte: projetos/nuvem_casa/caso/00_briefing_do_caso.md e projetos/nuvem_casa/01_pergunta/pergunta.md.
Em todo o guia, a Nuvem Casa aparece só nestas caixas, como exemplo resolvido, com os números reais da execução de 19/10/2026.
O método tem a forma de um cofre e de um laço: tudo se ajusta no treino, e a amostra de validação abre uma vez
A base humana se divide por sorteio. O treino alimenta a construção, as rodadas e a calibração, que volta quantas vezes for preciso. A amostra de validação fica no cofre até a abertura única, e só depois vêm a base integrada e a decisão.Clique num bloco para ver o que entra, o que o agente faz e o que sai. Setas do teclado andam pelo fluxo.
O diretor transforma uma frase sua num projeto com nove etapas e uma pasta própria
Na IDE, você escreve uma frase e o diretor faz o resto: pergunta, cria a pasta, grava a configuração e para no primeiro portão. O ensaio abaixo segue o diálogo de teste do kit e as perguntas reais do diretor.Clique em Iniciar e escolha as respostas. A árvore de pastas nasce no explorador e o bloco correspondente do fluxograma acende.
começar um projeto novo de [tema do estudo, por exemplo: teste de três embalagens de shampoo sólido]
O método troca a promessa de "pesquisa sem campo" por uma régua humana que ninguém tocou
Antes do passo a passo, entenda a lógica inteira. Cada etapa existe para proteger uma garantia, e cada escolha tem uma alternativa que foi descartada por um motivo.
O problema de pesquisa que o método resolve
Um estudo quantitativo costuma ter uma chance de campo. Se o questionário está mal desenhado, se uma hipótese ficou de fora ou se o estímulo errado foi testado, não há segunda rodada. Ao mesmo tempo, modelos de linguagem e geradores por regra produzem milhares de respostas em minutos, e a tentação é tratar essas respostas como uma amostra. A literatura mostra por que isso é perigoso: médias que parecem certas convivem com variância encolhida, relações entre perguntas desfeitas e erros concentrados em públicos específicos.
O método resolve as duas coisas juntas. Usa o sintético para ensaiar o estudo e levantar hipóteses, e cobra dele uma prova contra pessoas reais antes de qualquer uso na decisão.
A lógica do método está no fluxograma
Sete movimentos, na ordem do fluxograma: a pergunta vira parâmetros; a base humana responde ao mesmo questionário; a amostra de validação é sorteada e guardada; o gerador produz rodadas condicionadas por perfil; a calibração e a mixagem acontecem só no treino e ficam congeladas; a amostra de validação abre uma vez; a decisão sai por uso e por célula, com a base integrada marcando a origem de cada linha.
Por que cada escolha foi feita assim, e a alternativa descartada
| Escolha do método | Por quê | Alternativa descartada |
|---|---|---|
| Amostra de validação separada por sorteio antes de tudo e aberta uma vez | Qualquer ajuste feito depois de ver a régua aprende com a régua. Só gente que nenhum ajuste viu mede o método | Validar no próprio treino. No treino o calibrado fica perto de zero de distância por construção |
| Várias rodadas com sementes registradas | Separa o acaso do gerador do vício do modelo e torna o lote reproduzível | Uma rodada só, que não distingue erro de sorte |
| Quotas tiradas dos alvos populacionais | O lote nasce com a composição do público | Deixar o gerador escolher perfis, que repete a composição dos dados com que foi treinado |
| Raking e mapeamento de quantis aprendidos no treino | Corrigem composição, nível e escala com regra transparente e reproduzível | Colocar a média humana dentro do pedido ao modelo, que é calibração escondida e anula a validação |
| Mixagem: estimar em cada base e combinar depois | O peso do sintético passa a depender do erro medido, célula por célula | Empilhar as bases (pool cru), que dá ao sintético o peso do número de linhas |
| Leitura célula por célula, com mínimo de 20 humanos | O sintético pode acertar o total e errar um público | Ler só o total |
| Decisão por uso, com regra escrita | Ordenar conceitos, estimar nível e cruzar métricas exigem provas diferentes | Um selo único de "o sintético funciona" |
| Coluna de origem em toda tabela e na base integrada | Linha sintética nunca vira pessoa ouvida, nem em margem de erro | Somar sintético ao n humano para "engordar" a amostra |
O que o método promete
- Saber, com número, se o sintético acerta a ordem dos estímulos no seu público.
- Saber em que célula ele erra e de que tipo é o erro.
- Um protocolo reproduzível: mesmas sementes, mesmos números.
- Um disclosure que separa pessoas ouvidas de respondentes gerados.
O que o método não promete
- Dimensionar mercado ou estimar nível de intenção para previsão de vendas. O nível calibrado é o nível do treino humano emprestado.
- Preencher célula pequena com sintético e chamar de amostra.
- Substituir o campo humano na escolha final.
- Valer para outra categoria, outro país ou outra pergunta sem nova validação.
Onde o método se encaixa entre os métodos de pesquisa
| Situação | Papel do sintético quantitativo |
|---|---|
| Pré-teste de questionário e piloto | Complementa. Ensaia o instrumento antes do campo. É o uso que a força-tarefa da AAPOR considera fora da zona de risco, desde que rotulado |
| Triagem de muitos estímulos | Complementa. Ordena e prioriza, com a ordem confirmada na amostra de validação |
| Levantamento de hipóteses por público | Complementa. Aponta células a investigar e dirige a coleta |
| Escolha final, nível de intenção, tamanho de mercado | Não substitui. A decisão cita o dado humano |
| Público difícil de alcançar | Cuidado redobrado. É onde o sintético tende a errar mais e onde há menos humanos para conferir |
| Qualitativo com personas e grupos sintéticos (Kits 1 e 2) | Antecede. As hipóteses dos kits 1 e 2 viram perguntas medidas aqui |
Pergunta: qual conceito avança, medido por purchase_intent de 1 a 5. Base humana: 480 pessoas de treino. Amostra de validação: 240 pessoas, separadas e entregues num zip à parte, só na revelação. Geração por regra: 5 rodadas de 2.400 respondentes. Calibração e mixagem congeladas na etapa 7. Revelação na etapa 8. Decisão: 21 linhas na tabela, uma por uso e célula.
No caso, a geração foi feita por regra, sem chamar modelo de linguagem: um motor em motor/ faz o papel do modelo do fornecedor e simula vícios descritos na literatura. Ele só é aberto depois da etapa 8.
Você conduz o estudo conversando com o agente da IDE, e os scripts fazem as contas
Nenhum passo exige terminal nem código escrito por você. Você pede em português, o agente explica o plano, roda o script da etapa e mostra o resultado.
Abra a pasta do kit na IDE
Use a IDE que preferir: Claude Code, Codex, Cursor ou Antigravity. Abra a pasta Kit_3_Quantitativo pelo menu de abrir pasta. O agente lê as regras em AGENTS.md e CLAUDE.md (o mesmo texto nos dois) no começo de toda conversa.
| Camada | Onde está | Papel |
|---|---|---|
| Diretor | skill diretor-quantitativo | Faz o briefing, cria ou abre o projeto, conduz as nove etapas e para nos portões |
| Regras | AGENTS.md e CLAUDE.md | O que vale sempre. Exemplo: a amostra de validação só abre depois da frase de liberação |
| Skills | .agents/skills/ (Codex, Cursor, Antigravity) e .claude/skills/ (Claude Code) | Procedimento de cada etapa: passos, script, o que conferir, o que nunca fazer |
| Pedidos | PEDIDO.md e CONFERIR.md em cada pasta de etapa do projeto | O texto para colar na conversa e a lista do que conferir |
| Scripts | scripts/ | As contas, só com a biblioteca padrão do Python. Mesma entrada, mesmo resultado |
Três frases abrem tudo
"começar"
O diretor se apresenta e oferece o exemplo guiado ou um projeto novo.
"novo projeto"
O diretor pergunta o nome, cria projetos/NOME_DO_ESTUDO/ e faz o briefing, uma pergunta de cada vez.
"abrir o [nome do estudo]"
O diretor lê o estado_do_projeto.md e continua de onde parou. Cada conversa nova começa sem memória, e esse arquivo é a memória.
Abrir o [nome do estudo]. Leia o estado_do_projeto.md, me diga em três linhas a etapa atual, o que já foi feito e o próximo passo, e espere a minha confirmação antes de rodar qualquer script.
Para ver as opções de qualquer script sem gravar nada, peça ao agente: "rode python scripts/NOME.py --help e me explique as opções".
Uma base própria bem preparada decide metade da qualidade do estudo
O caminho principal deste kit é você rodar o seu estudo, com os seus dados. A Nuvem Casa serve para treinar o caminho. Esta seção diz o que trazer, em que formato, como separar a amostra de validação e onde colocar cada arquivo.
Cada estudo vive numa pasta própria dentro de projetos/
Todas as informações do estudo e a curadoria dos dados ficam em projetos/NOME_DO_ESTUDO/. Um estudo por pasta. O nome sai em minúsculas, sem acento e com sublinhado no lugar de espaço. O diretor e os scripts recebem sempre --projeto projetos/NOME_DO_ESTUDO e nunca misturam dois projetos.
A árvore abaixo é a que scripts/novo_projeto.py cria de fato (conferida numa cópia do kit em 19/10/2026), ao lado do projeto de exemplo. Em verde, o que você coloca. Em coral, a parte separada para a validação.
Que arquivos trazer e em que formato
Arquivos CSV em UTF-8, separados por vírgula, com cabeçalho na primeira linha. Notas como números de 1 a 5. Esse é o formato que os scripts leem; planilha do Excel precisa ser salva como CSV UTF-8 antes.
| Arquivo | Onde | Formato |
|---|---|---|
humanos_treino.csv | 02_curadoria/dados/ | Uma linha por pessoa e por estímulo avaliado. Obrigatórias: respondent_id, origin_flag = human, split = train, concept_id, exposure_order, as variáveis de célula e de quota e as métricas de parametros.json. Grupo de controle com concept_id = NONE e notas vazias |
alvos_populacionais.csv | 02_curadoria/dados/ | Colunas variable, category, proportion, source, universe. As proporções de cada variável somam 1. Fonte com nome e ano |
dicionario_de_dados.csv | 02_curadoria/dados/ | Colunas variable, label, type, allowed_values (valores separados por barra vertical), level, missing_rule, notes. O script recusa valor fora do dicionário |
questionario.md | 02_curadoria/dados/ | As perguntas e escalas, na ordem em que foram aplicadas |
ficha_de_origem.md | 02_curadoria/dados/ | Todos os campos preenchidos, inclusive permissão de uso e base legal. Campo vazio reprova a curadoria |
humanos_validacao.csv | 08_validacao/amostra_validacao/ | As mesmas colunas do treino, com split = amostra de validação e nenhuma pessoa repetida do treino |
amostra de validação no campo split de cada linha da amostra de validação, como pedem o 00_LEIA.md, a ficha do modelo de projeto e o dicionário de dados. O script da etapa 8 (scripts/validar_na_amostra_validacao.py) também aceita validation, o valor em inglês que o projeto de exemplo usa. Qualquer outro valor faz a etapa 8 parar sem registrar a abertura.Exemplo de arquivo mínimo
Este é o começo de uma base de aluno fictícia que o kit usa nos testes de projeto novo: três conceitos (X, Y, Z), duas variáveis de quota, três métricas e dois campos abertos, 180 pessoas no treino e 90 na amostra de validação. Note a linha de controle e as duas linhas da mesma pessoa.
E o parametros.json desse estudo diz aos scripts quais colunas usar:
Anonimização e permissão de uso
- Tire nome, telefone, e-mail, documento, endereço e qualquer texto aberto que identifique a pessoa. O
respondent_idé um código sem relação com a identidade. - Respostas abertas vão para o contexto do gerador na etapa 4. Releia e retire nomes próprios e detalhes que identifiquem alguém.
- Na ficha de origem, escreva quem coletou, quando, com que consentimento e com que base legal. O código da Insights Association pede que, se os dados puderem ser usados em modelagem ou simulação, isso seja comunicado ao participante em termos claros. Confira se a permissão da sua base cobre esse uso.
- Sem permissão escrita, o dado não entra, mesmo que o script aprove.
Separe a amostra de validação antes de tudo
- Sorteie pessoas, nunca linhas: as duas avaliações de uma mesma pessoa vão juntas para o mesmo lado.
- Reserve cerca de um terço das pessoas, a sugestão da ficha do modelo de projeto. Na Nuvem Casa foram 240 de 720.
- Se uma célula crítica é pequena, sorteie dentro de cada célula (sorteio estratificado), para que a validação tenha gente nela.
- Grave a parte sorteada em
08_validacao/amostra_validacao/humanos_validacao.csv, comsplit=amostra de validação, e não abra mais esse arquivo até a etapa 8. Melhor ainda: peça a outra pessoa da equipe que guarde o arquivo e só entregue na revelação, como o professor faz no curso.
Tenho a minha base em [caminho do arquivo]. Antes de qualquer análise, sorteie por respondent_id um terço das pessoas, estratificando por [variável da célula crítica], com a semente [número]. Grave as pessoas sorteadas em projetos/[nome_do_estudo]/08_validacao/amostra_validacao/humanos_validacao.csv com split=amostra de validação e o restante em projetos/[nome_do_estudo]/02_curadoria/dados/humanos_treino.csv com split=train. Me mostre só as contagens de pessoas e de linhas de cada lado, sem mostrar nenhuma nota da parte de validação.
Crie o projeto e coloque os arquivos no lugar
novo projeto. O nome do estudo é "[nome do estudo]". Depois de criar a pasta, me diga onde coloco cada arquivo da minha base e quais arquivos de configuração você vai escrever comigo no briefing.
Por baixo, o agente roda python scripts/novo_projeto.py "Nome do estudo". O script normaliza o nome (por exemplo, "Teste de embalagem 2026" vira projetos/teste_de_embalagem_2026), copia _modelo_de_projeto/, troca o nome nos PEDIDO.md, cria o estado_do_projeto.md e recusa nome que já existe. A Nuvem Casa continua intacta.
O que o diretor pergunta no briefing
Uma pergunta por mensagem. Ele repete o que entendeu e pede exemplo quando a resposta vem vaga.
- Que decisão o número vai apoiar, e que número responde a ela? Qual métrica, em que escala?
- Qual é o negócio e a categoria?
- Qual é o público e em que células a decisão precisa valer? Quais células são críticas?
- Quais são os estímulos? Existe grupo de controle sem estímulo?
- Existe questionário? Que perguntas e escalas?
- Que base humana existe, de quando, com que colunas? Dá para separar uma amostra de validação por sorteio?
- Que alvos populacionais existem, de que fonte, para que variáveis?
- Com que permissão? O dado pessoal já saiu?
- Qual é o prazo e que nível de evidência a decisão exige: triagem, ordenar, estimar nível ou ler célula por célula?
Com as respostas, ele grava 01_pergunta/briefing.md, preenche a ficha de origem e escreve pergunta.md e parametros.json, sempre mostrando antes de gravar. Se faltar dado, ele faz uma análise do que existe e propõe um plano com três partes: o que coletar, que lacuna declarar e se o método cabe.
Minha base está pronta?
Marque cada item. A marcação fica guardada só neste navegador.
Erros típicos de base própria
| Erro | Como aparece | Como corrigir |
|---|---|---|
| Base pequena por célula | A etapa 3 marca "célula pequena"; a tabela de decisão manda PARAR | Coleta humana dirigida para a célula antes da geração. Completar com sintético não acrescenta pessoas |
| Escala codificada diferente | PARADA: "As notas precisam ser números de 1 a 5"; ou escala invertida (1 = muito, 5 = nada), que passa no script e inverte o resultado | Recodificar para 1 a 5 no mesmo sentido do questionário antes de colocar o arquivo. Confira uma pergunta conhecida |
| Coluna com nome trocado | PARADA de coluna obrigatória ausente, citando o nome | Renomear no CSV ou ajustar parametros.json e o dicionário para o nome real |
| Categoria escrita de dois jeitos | "valores fora do dicionário", como 60+ e 60 + | Padronizar na base; o dicionário é a referência |
| Contar linhas como pessoas | n inflado no relatório | Os scripts contam por respondent_id. Confira que a mesma pessoa tem o mesmo id nas duas linhas |
| Validação com gente do treino | PARADA na etapa 8: "Pessoas repetidas no treino" | Refazer o sorteio por pessoa, antes de qualquer análise |
| Público da base diferente do briefing | O diretor aponta, por exemplo, homens numa base de público feminino | Filtrar a base ou corrigir o briefing, e declarar |
O que muda de um estudo para outro: os estímulos, as categorias, as métricas e os alvos. O que não muda: o formato dos arquivos, a separação da amostra de validação, a ordem das etapas e as travas. Os scripts funcionam com quaisquer estímulos, categorias e métricas nesse formato.
Nove etapas, cinco portões e uma única revelação
As etapas 1 a 7 usam só a base de treino. A revelação separa o antes do depois: a partir dela, nada da construção nem da calibração muda.
Clique numa etapa para ir até ela.As etapas 1 a 7 somam 62 minutos e, com o rascunho da tabela de decisão, ocupam a prática do Dia 3. As etapas 8 e 9 acontecem no bloco da revelação, quando o professor libera a amostra de validação pelo zip Kit_3_Revelacao_so_no_final.zip, que leva só a pasta projetos/nuvem_casa/08_validacao/amostra_validacao/. Fonte: 00_LEIA.md.
Uma decisão bem escrita define o que o estudo pode e o que não pode medir
A decisão que você precisa tomar, o público e as células, ditos ao diretor
Escreve com você o formulário de dez campos e os parâmetros que os scripts leem
01_pergunta/pergunta.md e parametros.json
Projeto: projetos/[nome_do_estudo]. Estamos na etapa 1. Leia 01_pergunta/pergunta.md e me explique em cinco linhas qual decisão o estudo apoia, qual número responde a ela e qual material fica separado para a validação até a etapa 8. Depois abra 01_pergunta/parametros.json, me diga linha por linha como cada campo virou parâmetro e confira se os nomes de coluna existem em 02_curadoria/dados/humanos_treino.csv. Não rode script e não abra 08_validacao/amostra_validacao.
Versão preenchida, exemplo do exercício
Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela. Leia 00_LEIA.md, AGENTS.md e 01_pergunta/pergunta.md. Me explique em cinco linhas, em português simples, qual decisão este kit vai apoiar, qual número responde a ela e qual material fica separado para a validação até a etapa 8. Depois abra 01_pergunta/parametros.json e me diga, linha por linha, como cada campo do formulário virou um parâmetro. Não rode nenhum script nesta etapa e não abra a pasta 08_validacao/amostra_validacao.
Aprofunde · dado, armadilha e passo prático
Armadilha real. A AAPOR recomenda não usar "pesquisa", "survey" ou "sondagem" para dados gerados por IA, porque essas palavras implicam respondentes humanos, e diz que casos gerados não são "participantes". Escreva a pergunta e o relatório separando as duas origens desde o primeiro arquivo. AAPOR 2026.
Passo prático. Antes de qualquer número, escreva no campo 8 o que o sintético não pode fazer, com as palavras que vão para o relatório.
Por que e detalhes da etapa 1
O que acontece
Você preenche o formulário de dez campos em 01_pergunta/pergunta.md: a decisão, quem decide e quando, o número que responde, o público, as células, as métricas de apoio, o que o sintético pode e não pode fazer, o resultado que mudaria a decisão e o material separado para validação. Os campos 3, 5 e 6 viram parametros.json.
Por que
Este formulário é o contrato da análise: as etapas seguintes medem o que está escrito ali e nada além. Escrever antes de ver número evita a pesca de resultado, quando o pesquisador escolhe a métrica ou a célula depois de ver qual favorece a hipótese.
O que sai
01_pergunta/briefing.md (gravado pelo diretor) e parametros.json com a métrica principal, as de apoio, as variáveis de célula e de quota, o mínimo de 20 por célula, 3 rodadas mínimas e a tolerância de correlação de 0,05.
O que conferir
- A decisão cabe numa frase e cita os estímulos. "Entender o consumidor" volta para reescrita.
- O número tem nome de coluna e escala.
- As células da decisão estão em
variaveis_de_celula. - O campo 8 diz o que o sintético não pode fazer; ele volta na tabela de decisão.
- O agente não abriu a pasta da amostra de validação.
Erros comuns
- Objetivo vago. Reescreva como escolha entre opções nomeadas.
- Métrica que não existe na base. O agente aponta o nome que falta; ajuste o parâmetro ou a base.
- Prometer nível. Se a decisão pede previsão de vendas, o método não cabe para isso; declare no campo 8.
Decisão: escolher um entre A, B e C para o lançamento. Número: média de purchase_intent, de 1 a 5, e o ranking. Células: total, faixas de idade e regiões, com peso estratégico para 60 anos ou mais. Sintético pode: triagem. Não pode: substituir o campo, estimar nível para previsão de vendas, somar casos à amostra humana. Fonte: projetos/nuvem_casa/01_pergunta/pergunta.md.
A curadoria impede que dado sem origem ou fora do formato contamine o resto
humanos_treino.csv, alvos, dicionário e ficha de origem
conferir_curadoria.py confere colunas, valores, origem human/train, alvos e ficha
relatorio_curadoria.md com APROVADA ou REPROVADA
Projeto: projetos/[nome_do_estudo]. Estamos na etapa 2, curadoria. Leia 02_curadoria/dados/ficha_de_origem.md e me diga em quatro linhas de onde vêm os dados, quem permitiu o uso e o que ficou de fora. Compare as colunas de humanos_treino.csv com dicionario_de_dados.csv e me diga o que falta ou sobra. Depois rode scripts/conferir_curadoria.py --projeto projetos/[nome_do_estudo] e me mostre o relatório. Se for reprovada, explique cada problema em linguagem simples e pare.
Versão preenchida, exemplo do exercício
Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela. Estamos na etapa 2, curadoria. Leia 02_curadoria/dados/ficha_de_origem.md e me diga, em quatro linhas, de onde vêm os dados, quem permitiu o uso e o que ficou de fora. Depois rode o script scripts/conferir_curadoria.py --projeto projetos/nuvem_casa e me mostre o relatório. Se a curadoria for reprovada, me explique cada problema em linguagem simples e pare. Não abra a pasta 08_validacao/amostra_validacao.
Aprofunde · dado, armadilha e passo prático
Fonte primária. O Código de Conduta da Insights Association, na revisão sobre dados sintéticos, pede que relatórios indiquem se o achado vem de participantes humanos, sintéticos ou de uma combinação, e que dado sintético não seja apresentado como equivalente a resposta humana observada sem validação. Insights Association, Code in Action: Synthetic Data Revisited.
Passo prático. Abra a ficha de origem e confira se a permissão cobre uso em modelagem ou simulação.
Por que e detalhes da etapa 2
O que acontece
O agente lê a ficha de origem e roda a conferência: colunas obrigatórias, valores dentro do dicionário, só linhas humanas de treino, alvos somando 1 e ficha sem campo vazio. Ele não altera nada.
Por que
Uma linha sintética ou de validação esquecida na base de treino entra no raking, no mapa de quantis e na escolha do peso, e a validação deixa de ser independente. Permissão de uso é condição ética e legal, anterior a qualquer conta.
O script por baixo
Única opção além de --help: --projeto. Grava em resultados/02_curadoria/.
O que sai
Fonte: resultados/02_curadoria/relatorio_curadoria.md da saída do professor.
O que conferir
- O relatório diz APROVADA. Se disser REPROVADA, nada segue.
- Pessoas e linhas aparecem separadas.
- Toda linha é
human/train. - A ficha tem permissão de uso escrita.
- Os alvos têm fonte (
source) com pesquisa de referência e ano. - O aviso sobre o arquivo de validação só confirma que ele existe; o agente não o abriu.
Erros comuns
- "falta alvos_populacionais.csv". Sem alvos não há quota nem raking. Busque os alvos ou declare a lacuna.
- Ficha com campo vazio. Preencha ou marque "pendente" e resolva antes do portão.
- Linhas fora de human/train. Retire da base de treino o que for sintético ou de validação.
A análise da base humana mostra onde o sintético vai ter mais dificuldade antes de ele existir
A base de treino e os parâmetros
analisar_base.py mede composição, notas, células pequenas e correlações
relatorio_analise.md e cinco CSV
Projeto: projetos/[nome_do_estudo]. Estamos na etapa 3. Antes de rodar, me explique em até cinco linhas o que scripts/analisar_base.py --projeto projetos/[nome_do_estudo] vai calcular. Depois rode e me mostre, nesta ordem: (1) onde a amostra mais se afasta dos alvos, (2) o ranking dos estímulos no total e em cada [variável de célula crítica], com o n ao lado, (3) as células pequenas e (4) a correlação de [métrica principal] com [métricas de apoio]. Termine com três hipóteses para as etapas 7 e 8, cada uma com a célula e o número que a sustenta.
Versão preenchida, exemplo do exercício
Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela. Estamos na etapa 3, análise aprofundada da base humana. Antes de rodar, me explique em até cinco linhas o que o script scripts/analisar_base.py --projeto projetos/nuvem_casa vai calcular. Depois rode o script e me mostre, nesta ordem: (1) onde a amostra mais se afasta dos alvos populacionais, (2) o ranking dos conceitos no total e em cada faixa de idade, com o n ao lado, (3) a lista de células pequenas e (4) a correlação da intenção de compra com credibilidade, relevância e apelo. Termine com três hipóteses que a etapa 7 e a etapa 8 vão precisar testar, cada uma com a célula e o número que a sustenta. Não abra a pasta 08_validacao/amostra_validacao.
Aprofunde · dado, armadilha e passo prático
Fonte primária. Santurkar e colegas compararam opiniões de modelos de linguagem com 60 grupos demográficos dos EUA e acharam desalinhamento que persiste mesmo quando o modelo é instruído a responder como o grupo. Pessoas de 65 anos ou mais estão entre os grupos mais mal representados. Uma célula de idade avançada pequena na base humana é, ao mesmo tempo, a mais difícil de gerar e a mais difícil de conferir. Santurkar et al. 2023, Whose Opinions Do Language Models Reflect?
Passo prático. Anote o menor n de cada célula crítica. Abaixo de 20, planeje coleta humana antes da geração.
Por que e detalhes da etapa 3
O que acontece
O script calcula a composição contra os alvos, a distribuição de notas por estímulo, a média da métrica principal em cada célula com o n, as células pequenas (inclusive no cruzamento de idade por região) e as correlações entre métricas.
Por que
Três coisas da base humana viram metas para o sintético: a composição que o raking vai corrigir, o ranking por célula que a validação vai cobrar, e a estrutura de correlações, que é a parte que se perde com mais facilidade. Correlação de Pearson mede de -1 a 1 o quanto duas notas sobem juntas; correlações baixas, como 0,10, somem com pouco ruído.
O script por baixo
Lê só 02_curadoria/dados. Grava cinco CSV e relatorio_analise.md em resultados/03_analise/.
O que sai
Ranking humano do total: C > B > A, repetido nas quatro faixas de idade. Treze células pequenas. Fonte: resultados/03_analise/relatorio_analise.md.
O que conferir
- As maiores lacunas contra o alvo: elas voltam no raking e na decisão.
- O menor n de cada célula crítica. Perto de 20 é aviso.
- Células pequenas ficam como hipótese, nunca achado.
- As hipóteses do final citam célula e número.
Erros comuns
- Contar linhas no lugar de pessoas. A composição é por pessoa.
- Ler ranking de célula pequena. Com 4 pessoas, a ordem muda com uma resposta.
- Hipótese sem número. Volte ao agente pedindo a célula e o valor.
O contexto do público condiciona o gerador com falas citáveis e nunca com médias
As respostas abertas do treino
contexto_do_target.py corta trechos com id e monta um cartão por segmento, sem médias
contexto_*.md e indice_de_trechos.csv
Projeto: projetos/[nome_do_estudo]. Estamos na etapa 4. Rode scripts/contexto_do_target.py --projeto projetos/[nome_do_estudo] --segmento [variável] e abra o cartão de [categoria crítica] em resultados/04_vetores_e_rag/. Me mostre o que esse público disse sobre [estímulo], com as citações. Confira que o cartão não traz média de nota. Se eu for gerar com modelo de linguagem, preencha 04_vetores_e_rag/instrucao_do_modelo.md para esse segmento e me mostre o pedido pronto, sem enviar a nenhum modelo.
Versão preenchida, exemplo do exercício
Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela. Estamos na etapa 4, vetorização e contexto do target. Leia 04_vetores_e_rag/LEIA.md e me diga em três linhas por que, no caso Nuvem Casa, esta etapa é demonstração. Depois rode scripts/contexto_do_target.py --projeto projetos/nuvem_casa e abra o cartão de 60 anos ou mais em resultados/04_vetores_e_rag/. Me mostre o que esse público disse sobre o conceito A, com as citações.
Rode a busca com o texto "argumento ambiental" e o filtro age_band=60+ e me diga se a base sustenta a ideia de que pessoas mais velhas preferem o argumento ambiental.
Aprofunde · dado, armadilha e passo prático
Fonte primária. Argyle e colegas condicionaram um modelo de linguagem com milhares de histórias de fundo em primeira pessoa tiradas de respondentes reais e chamaram de "fidelidade algorítmica" a capacidade de reproduzir distribuições de subgrupos. A mesma tabela mostra fidelidade menor em alguns grupos do que no total. Arora e colegas relatam que, no quantitativo, a qualidade do dado sintético melhora com exemplos e com recuperação de contexto real. Argyle et al. 2023, Out of One, Many · Arora et al. 2025, Journal of Marketing.
Passo prático. Antes de mandar um cartão a qualquer modelo, procure nele uma média de nota. Se achar, tire.
Por que e detalhes da etapa 4
O que acontece
O script corta as respostas abertas da base de treino em trechos, cada um com um id que volta à fonte (respondent_id/conceito/campo). Vetoriza os trechos com TF-IDF, uma lista de pesos por palavra, e monta um cartão por segmento com o perfil e as falas mais representativas. Com --buscar, procura trechos por semelhança. RAG (geração com recuperação) é o nome do processo: o gerador recebe os trechos recuperados como única evidência sobre o público.
Por que
Quando a geração usa modelo de linguagem, o condicionamento demográfico sozinho ("responda como uma mulher de 60 anos do Sul") produz estereótipo. Falas reais do público, com citação, ancoram a resposta. O cartão deixa de fora as médias de nota de propósito: média humana dentro do pedido ao modelo é calibração escondida, e a etapa 8 deixaria de medir o modelo.
O script por baixo
Opções: --segmento VAR (sem ela, a primeira variável de quota), --buscar TEXTO e --filtro VAR=CAT, que só vale com --buscar.
O que sai
A busca por "argumento ambiental" não acha trecho: TF-IDF reconhece só palavra igual, e o público fala em "embalagens", "descarte" e "proposta sustentável". Fonte: resultados/04_vetores_e_rag/contexto_age_band_60.md e resultados/04_vetores_e_rag/busca.md.
O que conferir
- Todo trecho tem citação; procure um id no
indice_de_trechos.csv. - O cartão não traz média de nota.
- Segmento pequeno traz aviso.
- Se a busca não achar nada, o agente explica o limite de vocabulário.
Erros comuns
- Ler busca vazia como "o público não pensa nisso". TF-IDF não entende sinônimo; vetores de sentido (embeddings) resolvem isso.
- Cartão com dado pessoal. Releia os trechos antes de mandar a qualquer modelo.
Quotas e regras escritas tornam a geração conferível e reproduzível
Alvos populacionais e regras_de_geracao.json
montar_regras.py transforma alvos em quotas e fixa perfil, centros e efeitos
quotas.csv e relatorio_regras.md
Projeto: projetos/[nome_do_estudo]. Estamos na etapa 5. Escreva comigo 05_construcao/regras_de_geracao.json no formato do projeto de exemplo, com [n respondentes por rodada] respondentes, [proporção] de controle e as sementes [lista de pelo menos 3 sementes]. Mostre antes de gravar. Depois rode scripts/montar_regras.py --projeto projetos/[nome_do_estudo] --recalcular-a-partir-da-base e me mostre a tabela de quotas, os centros de nota que saíram da minha base e quantos respondentes de [célula crítica] cada rodada deve ter.
Versão preenchida, exemplo do exercício
Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela. Estamos na etapa 5, construção do gerador. Leia 05_construcao/regras_de_geracao.json e me explique em linguagem simples o que cada bloco faz: quotas, distribuições sem alvo, centros de nota por conceito e efeitos declarados. Depois rode scripts/montar_regras.py --projeto projetos/nuvem_casa e me mostre a tabela de quotas e quantos respondentes de 60 anos ou mais cada rodada deve ter. Não abra a pasta motor/ nem a pasta 08_validacao/amostra_validacao.
Aprofunde · dado, armadilha e passo prático
Armadilha real: ordem e rótulo das opções. Dominguez-Olmedo e colegas aplicaram o questionário do censo americano a 43 modelos de linguagem e viram respostas governadas pela ordem e pelo rótulo das opções (por exemplo, preferência pela opção marcada "A"). Com a ordem sorteada, as respostas tenderam ao aleatório. Ao gerar com modelo, sorteie a ordem das opções e dos estímulos e registre a ordem em exposure_order. Dominguez-Olmedo et al. 2024.
Passo prático. Sorteie a ordem dos estímulos e das opções, e confira que exposure_order está preenchido.
Por que e detalhes da etapa 5
O que acontece
O script transforma os alvos em quotas (quantos respondentes sintéticos de cada categoria) e copia as regras de geração para resultados/05_construcao/. O arquivo de regras tem quatro blocos: quotas, distribuições sem alvo, centros de nota por estímulo e efeitos declarados. Com dados próprios, a opção --recalcular-a-partir-da-base troca os centros pelas médias da sua base de treino e zera os efeitos do caso.
Por que
Toda hipótese sobre o público vira regra com número. Regra sem número não gera nada que se possa medir. O template de prompt em 05_construcao/TEMPLATE_PROMPT_BASE.md mostra a mesma lógica para quem gera com modelo de linguagem: cada bloco do JSON corresponde a uma seção do prompt.
O script por baixo
O que sai
Quotas = alvos vezes 2.400. Para 60 anos ou mais, 15% dão 360 respondentes esperados por rodada. Fonte: resultados/05_construcao/quotas.csv e resultados/05_construcao/relatorio_regras.md.
O que conferir
- Quotas = alvos vezes o n por rodada.
- As quotas entram como probabilidade de sorteio; a composição final fica perto do alvo, com pequenas sobras e faltas.
- Cada efeito declarado tem número e estímulo.
- Os centros ficam perto das médias humanas da etapa 3.
Erros comuns
- Esquecer o
--recalcular-a-partir-da-basecom dados próprios. As regras ficam com centros que não são do seu público. - Menos de 3 sementes. A estabilidade da etapa 7 precisa de pelo menos 3 rodadas.
- Mudar o texto do estímulo entre rodadas. Comparar estímulos exige estímulo constante.
Várias rodadas com semente separam o acaso do gerador do vício do modelo
Regras e quotas da etapa 5
gerar_lote.py gera a audiência inteira, uma rodada por semente
lote_sintetico.csv e registro_de_geracao.md
Projeto: projetos/[nome_do_estudo]. Estamos na etapa 6. Rode scripts/gerar_lote.py --projeto projetos/[nome_do_estudo]. Não abra motor/. Me mostre o registro de geração e me diga em três linhas: quantos respondentes por rodada, quantas pessoas reais isso acrescenta à pesquisa e o que muda de uma rodada para outra. Siga a skill gerar-lote deste kit.
Versão preenchida, exemplo do exercício
Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela. Estamos na etapa 6, execução. Rode scripts/gerar_lote.py --projeto projetos/nuvem_casa, que gera a audiência sintética com as regras da etapa 5, uma rodada por semente. Não abra os arquivos de motor/: eles fazem o papel do modelo do fornecedor, e eu só posso ver o interior dele depois da etapa 8. Me mostre o registro de geração e me diga, em três linhas: quantos respondentes por rodada, quantas pessoas reais isso acrescenta à pesquisa, e o que muda de uma rodada para outra. Siga a skill gerar-lote deste kit para os passos e as conferências.
Aprofunde · dado, armadilha e passo prático
Fonte primária. Bisbee e colegas mostraram que a distribuição de respostas sintéticas muda com pequenas alterações na redação do pedido e que o mesmo pedido, repetido meses depois, devolveu resultados diferentes. Com modelo de linguagem, registre a versão do modelo, a data, a temperatura e o texto exato do pedido em registro_de_prompts.md. Bisbee et al. 2024, Synthetic Replacements for Human Survey Data?
Passo prático. Copie modelo, data, sementes e o texto exato do pedido para registro_de_prompts.md.
Por que e detalhes da etapa 6
O que acontece
Para cada semente da lista, o script gera a audiência sintética inteira e grava as rodadas empilhadas, com a coluna rodada, e um registro de geração com modelo, data, sementes e composição alcançada. Semente é o número que controla o sorteio: a mesma semente devolve exatamente o mesmo lote.
Por que
Se uma célula sai errada numa rodada, pode ser sorte. Se sai errada em todas, é o modelo. O registro de modelo, data e sementes é o que torna o lote reproduzível e citável no disclosure.
O script por baixo
As sementes e o n por rodada vêm de 05_construcao/regras_de_geracao.json.
O que sai
Cinco rodadas, 2.160 expostos com duas linhas e 240 de controle. Pessoas reais acrescentadas: zero. Fonte: resultados/06_execucao/registro_de_geracao.md.
O que conferir
- Número de rodadas e de respondentes por rodada.
- A resposta para "quantas pessoas reais" é zero.
- O ranking se repete e as médias mudam pouco.
- O registro traz modelo, data e sementes.
- O agente não abriu
motor/.
Erros comuns
- Somar 2.400 às pessoas da base. Corrija na hora: linha sintética nunca é pessoa ouvida.
- Comemorar a composição perfeita. O lote bate com o alvo porque foi sorteado a partir dele; o acerto é circular.
A calibração no treino conserta o total e deixa à vista o que só a célula revela
O lote sintético e a base de treino
calibrar.py faz raking, quantis, métricas e estabilidade; mixar_fontes.py escolhe o peso de cada origem
registro_calibracao.json e mixagem/mixagem.json, congelados
Projeto: projetos/[nome_do_estudo]. Estamos na etapa 7. Antes de rodar, me explique em até cinco linhas raking, mapeamento de quantis, KS e Wasserstein. Depois rode scripts/calibrar.py --projeto projetos/[nome_do_estudo] e me mostre, nesta ordem: (1) composição antes e depois do raking e o tamanho efetivo de Kish, (2) [métrica principal] por estímulo no humano, no sintético cru e no calibrado, (3) as correlações e a estrutura que se perdeu, (4) as células com alerta antes e depois e (5) a estabilidade entre as rodadas. Termine dizendo o que a calibração consertou e o que não conseguiu consertar. Não abra 08_validacao/amostra_validacao. Siga a skill calibrar-no-treino deste kit.
Projeto: projetos/[nome_do_estudo]. Estamos na etapa 7, mixagem de fontes. Antes de rodar, me explique a diferença entre pós-estratificação e mixagem e o que é a divergência de Jensen-Shannon. Depois rode scripts/mixar_fontes.py --projeto projetos/[nome_do_estudo] e me mostre: a curva de distância por composição em pontos e em Jensen-Shannon, quanto o pool cru dá ao sintético no total e quanto o peso ótimo dá, a tabela do peso ótimo por célula e as células em que o pool cru troca o ranking do real. Siga a skill calibrar-no-treino deste kit.
Versões preenchidas, exemplo do exercício
Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela. Estamos na etapa 7, calibração no treino. Antes de rodar, me explique em até cinco linhas o que são raking, mapeamento de quantis e as métricas KS e Wasserstein, em linguagem de quem pesquisa. Depois rode scripts/calibrar.py --projeto projetos/nuvem_casa e me mostre, nesta ordem: (1) a composição antes e depois do raking e o tamanho efetivo de Kish, (2) a intenção de compra por conceito no humano, no sintético cru e no calibrado, (3) as correlações e qual estrutura se perdeu, (4) as células com alerta antes e depois da calibração e (5) a estabilidade entre as cinco rodadas. Termine dizendo, em três linhas, o que a calibração consertou e o que ela não conseguiu consertar. Não abra a pasta 08_validacao/amostra_validacao. Siga a skill calibrar-no-treino deste kit para os passos e as conferências.
Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela. Rode scripts/calibrar.py --projeto projetos/nuvem_casa com --ampliar age_band=60+ --alvo 100 e me mostre a tabela da ampliação. Para o conceito A, compare o erro padrão aparente com o N honesto e me diga, em duas linhas, o que posso declarar ao cliente sobre o tamanho dessa célula. Siga a skill calibrar-no-treino deste kit para os passos e as conferências.
Aprofunde · dado, armadilha e passo prático
Fonte primária: achatamento. No estudo de Peng, Toubia e colegas com 19 estudos pré-registrados, o desvio padrão das respostas de "gêmeos digitais" ficou abaixo do humano em 154 de 164 desfechos (93,9%). Bisbee e colegas também acharam menos variação nas respostas sintéticas do que nos surveys reais. Razão de desvio padrão abaixo de 1 é o padrão esperado, e o mapa de quantis existe para corrigir isso no total. Peng et al. 2025, Digital Twins as Funhouse Mirrors.
Passo prático. Leia a razão de desvio padrão do cru antes da calibrada: ela mostra o achatamento real do gerador.
Por que e detalhes da etapa 7
O que acontece
- Raking (ajuste proporcional iterativo): o peso de cada pessoa é multiplicado, variável por variável, até a amostra ponderada bater com os alvos. É a pós-estratificação, ponderação que corrige a composição. O custo aparece no tamanho efetivo de Kish.
- Mapeamento de quantis: cada nota sintética recebe a nota humana que ocupa a mesma posição na fila. Corrige nível e achatamento no total.
- Métricas antes e depois: diferença de médias, razão de desvio padrão, variação total, KS, Wasserstein e correlações.
- Células no treino, com os quatro tipos de erro.
- Estabilidade entre rodadas.
- Mixagem de fontes: quanto o real e o sintético pesam no número final, célula por célula, escolhido por validação cruzada em cinco partes do treino.
Por que
Raking e quantis são ferramentas clássicas de ajuste, com regra aberta. A mixagem trata o sintético como uma fonte com viés: o peso dele sobe onde provou estar fiel ao real e cai onde erra. Tudo fica congelado com impressão digital (um código calculado do arquivo, que muda se o arquivo mudar) antes da abertura da amostra de validação.
Os scripts por baixo
--ampliar VAR=CAT completa uma célula com sintético de quatro jeitos e mostra o N honesto; --alvo N é o número de casos por estímulo (padrão 100). --pos-abertura existe só para o professor: roda uma calibração exploratória depois da abertura, gravada à parte em resultados/07_calibracao_pos_abertura/ e marcada como contaminada.
O que sai
Mixagem: o pool cru dá ao sintético 83,3% do peso no total só porque o lote tem mais linhas; o peso ótimo dá 11,9% (o real fica com 88,1%). Em 60 anos ou mais, o pool cru troca a ordem do real; a mixagem com o peso da célula (62,6% de real) mantém C, B, A. Fonte: resultados/07_calibracao/relatorio_calibracao.md e resultados/07_calibracao/mixagem/relatorio_mixagem.md.
O que conferir
- No treino o calibrado fica quase igual ao humano por construção. Esse número não é validação.
- Erro de célula que sobrevive à calibração (o mapa aprendido no total desloca todas as células juntas).
- Correlação que a calibração não recupera sai dos usos autorizados.
- Existem
registro_calibracao.jsonemixagem/mixagem.json: sem eles, a etapa 8 não abre. - A mixagem não cria pessoas: n e margem de erro continuam os do humano.
Erros comuns
- Chamar o KS calibrado de 0,01 de "validação". Corrija.
- Achar que mais rodadas consertam a célula. Estável quer dizer reprodutível; erro reprodutível continua erro.
- Usar a ampliação para declarar n maior ao cliente. Declare o N honesto.
A amostra de validação diz o que o sintético acerta com gente que nenhum ajuste viu
A amostra de validação, que sai do cofre, e a calibração congelada
validar_na_amostra_validacao.py --confirmo-abertura-unica registra a abertura e compara total, correlações e células
ABERTURA_DA_AMOSTRA_VALIDACAO.json e relatorio_validacao.md
Projeto: projetos/[nome_do_estudo]. [Frase de liberação combinada com a equipe]. Estamos na etapa 8. Antes de rodar, me diga em duas linhas por que a amostra de validação só abre uma vez e o que acontece com a etapa 7 depois. Rode scripts/validar_na_amostra_validacao.py --projeto projetos/[nome_do_estudo] --confirmo-abertura-unica e me mostre, nesta ordem: o ranking do total na validação, no cru e no calibrado; as diferenças de nível em erros padrão; as correlações; as células com alerta e o tipo de erro. Para cada inversão, mostre a distância entre as duas médias humanas e o erro padrão. Depois rode scripts/mixar_fontes.py --projeto projetos/[nome_do_estudo] --contra-amostra-validacao e diga em que lugar ficou a composição escolhida no treino. Siga a skill abrir-amostra-validacao deste kit.
Versão preenchida, exemplo do exercício
Projeto: projetos/nuvem_casa. Os caminhos de arquivo deste pedido ficam dentro dessa pasta. Os scripts ficam em scripts/, na raiz do kit, e rodam a partir dela. O professor liberou a abertura da amostra de validação. Estamos na etapa 8, validação. Antes de rodar, me diga em duas linhas por que a amostra de validação só pode ser aberta uma vez e o que acontece com a etapa 7 depois da abertura. Depois rode scripts/validar_na_amostra_validacao.py --projeto projetos/nuvem_casa com a opção --confirmo-abertura-unica e me mostre, nesta ordem: (1) o ranking do total na amostra de validação, no sintético cru e no calibrado, (2) as diferenças de nível em erros padrão, (3) as correlações, (4) as células com alerta, com o tipo de erro de cada uma, e (5) se a etapa 7 rodou a ampliação, a tabela da ampliação contra a amostra de validação. Para cada inversão de ranking, me mostre a distância entre as duas médias humanas que trocaram de posição e o erro padrão dela. Siga a skill abrir-amostra-validacao deste kit para os passos e as conferências.
Aprofunde · dado, armadilha e passo prático
Fonte primária: a régua tem teto. Park e colegas relataram que agentes generativos reproduzem respostas do General Social Survey com 85% da precisão com que as próprias pessoas repetem suas respostas duas semanas depois. Esse 85% é uma acurácia normalizada, a precisão bruta dividida pela consistência humana; a precisão bruta fica perto de 66%. O kit usa a mesma ideia de teto: a coluna "teto humano" mede a distância entre duas amostras humanas do mesmo público, e nenhum sintético pode ser cobrado abaixo dela. Park et al. 2024.
Passo prático. Antes de concluir sobre uma célula, compare a distância com o teto humano e com o erro padrão.
Por que e detalhes da etapa 8
O que acontece
Com a calibração e o peso da mixagem congelados, você escreve a frase de liberação e o agente abre a amostra de validação uma vez. O script confere as impressões digitais, registra a abertura com data e hora e compara o cru e o calibrado com a amostra de validação: no total, nas correlações e célula por célula, lendo duas vezes (só a validação, e treino com validação juntos). Depois, a mixagem é medida contra a mesma régua, com o peso que a etapa 7 escolheu. Só então o agente abre motor/modelo_simulado.json para comparar cada vício declarado com o que a validação achou.
Por que
Depois de ver a régua, todo ajuste aprende com ela. Por isso a abertura é registrada, a etapa 7 se recusa a recalibrar e rodar de novo só mostra o resultado já gravado.
Os scripts por baixo
Sem --confirmo-abertura-unica, o script só explica e não abre nada. Ele exige a calibração congelada e o peso da mixagem gravado. Depois da abertura, ele só mostra o resultado registrado.
O que sai
ABERTURA_DA_AMOSTRA_VALIDACAO.json com data, hora e três impressões digitais (amostra de validação, lote calibrado e peso da mixagem), 01_total.csv, 02_correlacoes.csv, 03_celulas.csv, o relatório e a pasta mixagem/.
Exemplo do exercício · resultados da revelação (abra depois de rodar a etapa 8)
O total confirma a ordem. A célula de 60 anos ou mais inverte A e B: o calibrado põe A 0,31 ponto acima do humano, 3,03 erros padrão, e o erro aponta para o mesmo lado no treino e na validação. A calibração no total piorou essa célula. As três correlações com a intenção ficam deslocadas. Aberto o motor, os vícios declarados batem: encolhimento de 0,78 para o meio da escala, soma de 0,16 em credibilidade, compreensão e aderência à marca, soma de 0,28 em A para 60 anos ou mais e de 0,22 em C para o Nordeste. Fonte: resultados/08_validacao/relatorio_validacao.md, resultados/08_validacao/mixagem/relatorio_mixagem_validacao.md e motor/modelo_simulado.json.
O que conferir
- O agente pediu a sua confirmação antes de abrir.
- Existe o registro da abertura, com data e hora.
- Cada célula lida duas vezes, com o n do menor estímulo ao lado.
- Inversão com médias humanas muito próximas conta como empate.
- O peso da mixagem veio da etapa 7; a validação mediu e não escolheu nada.
Erros comuns
- Opção errada. O script recusa e mostra o comando certo; as opções são
--confirmo-abertura-unicae--contra-amostra-validacao. - Mensagem de ALERTA. Algum arquivo mudou depois da abertura. Pare, não apague nada e avise o responsável.
- Concluir em célula pequena na validação sozinha. A conclusão sai das duas leituras juntas.
A decisão sai por uso e por célula, com a condição escrita ao lado
O que as etapas 7 e 8 gravaram
decidir.py, base_integrada.py e relatorio_validacao.py, sem recalcular
tabela_de_decisao.md, disclosure.md, base_integrada.xlsx e o relatório em PDF
Projeto: projetos/[nome_do_estudo]. Estamos na etapa 9. Rode scripts/decidir.py --projeto projetos/[nome_do_estudo]. Me mostre a tabela de decisão e explique, linha por linha, a regra que levou a cada AVANÇAR, REVISAR e PARAR. Abra o rascunho do disclosure e o relatório de auditoria. Não preencha a Leitura do grupo. Aponte as duas linhas mais discutíveis e por quê. Depois rode scripts/base_integrada.py e scripts/relatorio_validacao.py com --projeto projetos/[nome_do_estudo] e me diga onde estão os arquivos. Siga as skills decidir-por-celula e gerar-relatorio deste kit.
Aprofunde · dado, armadilha e passo prático
Fonte primária. A AAPOR pede que, quando a IA atua como entrevistador, respondente ou analista, o pesquisador declare a tarefa da IA, se houve supervisão ou validação humana e o número de respondentes humanos, e considera desnecessário informar o número de instâncias geradas. O disclosure do kit segue essa linha. AAPOR 2026.
Passo prático. Releia o disclosure e confira que pessoas ouvidas e respondentes gerados aparecem em linhas separadas.
Por que e detalhes da etapa 9
O que acontece
O script de decisão lê o que as etapas 7 e 8 gravaram, sem recalcular, e aplica uma regra escrita por uso. Monta a tabela de decisão, o rascunho do disclosure e o relatório de auditoria com o espaço da Leitura do grupo. Em seguida vêm a base integrada e o relatório de calibração e validação em HTML e PDF.
As regras de decisão, como estão no script
| Uso | Regra |
|---|---|
| Ordenar os estímulos no total | AVANÇAR se o ranking calibrado é igual ao da validação e estável entre rodadas. Senão, REVISAR |
| Estimar o nível no total | AVANÇAR se o cru fica a menos de um erro padrão da validação em todos os estímulos. Senão, PARAR: o nível calibrado é o do treino emprestado |
| Cruzar a métrica principal com outra | PARAR se a correlação do calibrado se afasta da validação mais que a tolerância |
| Escolher estímulo numa célula | Célula pequena: PARAR. Inversão com evidência: REVISAR com coleta dirigida. Inversão por empate: AVANÇAR com ressalva. Erro de nível: AVANÇAR para ordenar, PARAR para nível. Sem alerta: AVANÇAR |
Grave em resultados/09_decisao/relatorio_de_auditoria.md a nossa Leitura do grupo, com o texto abaixo, e o nome de quem assina. Não altere mais nada no relatório. [cole aqui a leitura e os nomes]
Os scripts por baixo
A base integrada sai em CSV e, se o pacote openpyxl existir, em xlsx. O PDF do relatório sai pelo Chrome sem interface; sem navegador compatível, abra o HTML e use Imprimir, Salvar como PDF.
Exemplo do exercício · a tabela de decisão (abra depois da revelação)
21 linhas: 13 AVANÇAR, 1 REVISAR e 7 PARAR. Ordenar os conceitos no total: AVANÇAR. Estimar nível: PARAR. Os três cruzamentos com a intenção: PARAR. A célula de 60 anos ou mais: REVISAR, com coleta humana dirigida de cerca de 100 pessoas por conceito, para erro padrão de 0,07. Norte e as duas categorias pequenas de gênero: PARAR, porque nem o humano sustenta leitura. Centro-Oeste: AVANÇAR com ressalva, porque as médias humanas de A e B ficam a 0,01 uma da outra. Fonte: resultados/09_decisao/tabela_de_decisao.md e resultados/09_decisao/relatorio_de_auditoria.md.
O que conferir
- Cada decisão traz a célula, o número e a condição.
- Ordenar e estimar nível são usos separados.
- O disclosure nunca soma pessoas ouvidas com respondentes gerados.
- A Leitura do grupo foi escrita pelo grupo, contesta pelo menos uma célula com número e vem assinada.
- A base integrada não tem nenhuma linha da amostra de validação.
Erros comuns
- Pedir ao agente que escreva a Leitura do grupo. Ele recusa; a leitura é de quem assina.
- Usar
peso_mixagemnuma célula. Ele vale só para o total por estímulo.
Cada métrica do kit responde a uma pergunta diferente sobre o sintético
Estas são exatamente as medidas que os scripts calculam, com a fórmula do código, o limiar usado e o valor real do exercício no treino. Os valores de validação ficam no bloco da revelação.
resultados/03_analise/02_distribuicoes.csv, sem peso. Sintético: rodada R01, semente 20260917, recalculada do lote que gerar_lote.py refaz idêntico.Uma conta curta diz se o erro é de nível e se a escala achatou
Mexa nos valores. Os iniciais são do conceito C no treino do exercício; 0,04 é o menor erro padrão humano por conceito, do relatório de calibração.
diferença = (sintético − humano) ÷ erro padrão
Regra do kit: 1,96 erros padrão ou mais, com o mesmo ranking, é erro de nível.
razão de desvio padrão
Abaixo de 1 é achatamento. O kit não fixa corte; esta calculadora marca abaixo de 0,90 ou acima de 1,10. No exercício, o cru fica entre 0,72 e 0,76.
| Métrica | O que mede | Fórmula no kit | Limiar no kit | Valor no exercício (treino) |
|---|---|---|---|---|
| Ranking | Acerto direcional: a ordem dos estímulos | Médias ordenadas da maior para a menor | Igual ao humano, no total e em cada célula | C > B > A no humano, cru e calibrado |
| Diferença em erros padrão | Erro de nível, em unidades de incerteza humana | (média sintética − média humana) / erro padrão humano | 1,96 ou mais: "erro de nível" | Total: maior viés 4,02 EP |
| Razão de desvio padrão | Achatamento da escala | DP sintético / DP humano | 1 é igual; o kit lê a faixa, sem corte fixo | Cru 0,72 a 0,76; calibrado 1,00 a 1,03 |
| Variação total | Quanto as proporções de cada nota diferem | ½ Σ |pk − qk|, k de 1 a 5 | 0 é idêntico | Cru 0,10 a 0,14; calibrado 0,00 a 0,02 |
| KS (Kolmogorov Smirnov) | Maior distância entre as distribuições acumuladas | max |Fp(k) − Fq(k)| | <0,05 muito próxima; <0,10 próxima; <0,20 distinta; acima, muito distinta. Sem p-valor | C cru 0,13 (distinta); calibrado 0,01 |
| Wasserstein | Quanto de nota, em média, é preciso mover | Σ |Fp(k) − Fq(k)|, k de 1 a 4 | 0 é idêntico; em pontos da escala | C cru 0,16; calibrado 0,02 |
| Correlação de Pearson entre métricas | Estrutura: se as notas andam juntas como no humano | Covariância / produto dos desvios | Diferença acima de 0,05 (tolerância de parametros.json): "estrutura deslocada" | Intenção e credibilidade: 0,10 humano, 0,02 calibrado |
| Tamanho efetivo de Kish | Custo em precisão do raking | (Σw)² / Σw² | Quanto menor que n, mais o peso custou | 413,68 para 480 pessoas |
| Estabilidade entre rodadas | Acaso do gerador | Amplitude das médias entre rodadas e contagem de rankings | ESTÁVEL se o ranking é único e a amplitude é menor que o menor erro padrão humano | Amplitude 0,03 contra EP 0,04: ESTÁVEL |
| Divergência de Jensen-Shannon | Quanto duas distribuições de notas se distinguem | ½ KL(p, m) + ½ KL(q, m), m = (p + q)/2, base 2 | De 0 (iguais) a 1 (sem nota em comum) | Curva no treino: 0,063 (100/0) a 0,057 (ótimo por célula) |
| Distância média em pontos | Erro da composição na média | |média da composição − média da régua|, média das células e estímulos | Menor é melhor; validação cruzada em 5 partes | 100/0 0,155; 70/30 0,153; pool cru 0,175; só sintético 0,185 |
| Peso ótimo do real (w*) | Quanto o real pesa na mistura | (viés² + var S) / (var R + viés² + var S) | Células com menos de 20 humanos ficam sem peso | Total 88,1% real; 60+ 62,6%; menos frequente 26,5% |
| N honesto | Quantas pessoas reais o lote ampliado vale | σ² humano / erro quadrático esperado da mistura | Comparar com o erro padrão aparente | 60+, A: EP aparente 0,06; N honesto 11 (cru) e 5 (quantis), contra 28 pessoas |
Tipos de erro por célula, na regra de scripts/kit.py: célula pequena (algum estímulo com menos de 20 humanos); inversão por empate (rankings diferentes, médias humanas que trocaram de posição a menos de um erro padrão); inversão com evidência (rankings diferentes, distância maior que um erro padrão); erro de nível (mesmo ranking, algum estímulo a 1,96 erros padrão ou mais); sem alerta.
O kit não calcula "acurácia normalizada". Esse é o indicador de Park e colegas, que divide a precisão do sintético pela consistência humana em reteste. O papel equivalente aqui é o do teto humano, o KS entre a base de treino e a amostra de validação, calculado na etapa 8.
Exemplo do exercício · as mesmas métricas contra a amostra de validação
| Métrica | Valor na validação |
|---|---|
| Ranking do total | Validação, cru e calibrado: C > B > A |
| Diferença do calibrado, total, intenção | A −0,13 EP; B −0,42 EP; C −0,28 EP |
| KS calibrado e teto humano, intenção | A 0,01 e 0,01; B 0,05 e 0,05; C 0,02 e 0,02 |
| Correlações com a intenção (validação e calibrado) | Credibilidade 0,14 e 0,02; relevância 0,14 e 0,06; apelo 0,20 e 0,08 |
| Pior célula | 60+: A 0,31 ponto acima, 3,03 EP, inversão com evidência |
| Mixagem contra a validação | 88/12 0,095; 100/0 0,096; 70/30 0,100 (3º de 7); pool cru 0,135; só sintético 0,150 |
Fonte: resultados/08_validacao/relatorio_validacao.md e resultados/08_validacao/mixagem/relatorio_mixagem_validacao.md.
A amostra de validação abre uma vez, e o kit trava o que vem depois
- Antes de abrir, o script confere que a calibração e o peso da mixagem existem e grava
ABERTURA_DA_AMOSTRA_VALIDACAO.jsoncom três impressões digitais. - Depois da abertura,
calibrar.pyse recusa a recalibrar emixar_fontes.pysem opção recusa escolher peso novo. - Se a amostra de validação, o lote calibrado ou o peso da mixagem mudar, qualquer script responde ALERTA e para: os números das etapas 8 e 9 deixaram de valer.
- Se alguém apagar o registro da abertura, o kit também responde ALERTA, porque a validação já rodou.
- Uma calibração depois da abertura só existe com
--pos-abertura, a pedido do professor, gravada à parte e marcada como contaminada.
Fonte: resultados/08_validacao/ABERTURA_DA_AMOSTRA_VALIDACAO.json.
Cada sintoma do sintético tem uma mudança concreta e uma medida para refazer
Todo ajuste desta seção acontece antes da abertura da amostra de validação, olhando só o treino. Depois de qualquer mudança na construção, refaça as etapas 5, 6 e 7 na ordem, e registre o motivo em Decisões no estado do projeto.Escolha onde o sinal apareceu e qual é ele. A árvore mostra o ajuste, o que medir de novo e o limiar.
1 · Onde o sinal apareceu?
2 · Qual é o sinal?
A tabela completa dos sintomas e as fontes
| Sintoma | Como aparece no kit | Mudança concreta | O que medir de novo |
|---|---|---|---|
| Achatamento: todo mundo no meio da escala | Razão de DP cru bem abaixo de 1; nota 5 quase vazia | O mapeamento de quantis corrige no total. Com modelo de linguagem, condicione com falas reais (etapa 4) e peça a distribuição de respostas do perfil, em vez de uma resposta "típica". Rótulos de escala completos em todos os pontos | Razão de DP e Wasserstein do cru; na validação, o KS contra o teto humano |
| Viés de desejabilidade ou cortesia | Credibilidade e métricas de "aprovação" acima do humano no cru | Redação neutra, sem adjetivo no estímulo; incluir no condicionamento as falas negativas da base (dislike_open) | Diferença em EP nas métricas de apoio; correlações |
| Otimismo de intenção | Média de intenção acima do humano, top 2 inflado | Não use o nível sintético: a regra é PARAR para nível. Para ordenar, o raking e os quantis bastam | Ranking e diferença em EP; a linha "estimar nível" da tabela |
| Segmento que não diferencia | Todas as células com o mesmo ranking do total, ou estrutura deslocada nas correlações | Condicionamento por respondente com o perfil completo e falas do segmento; conferir se o efeito existe na base humana (etapa 3) antes de cobrá-lo | Tabela de células no treino; correlações |
| Ordem de resposta influenciando | Estímulo visto primeiro sempre melhor; preferência pela primeira opção | Sortear a ordem dos estímulos e das opções; registrar exposure_order; no JSON, o efeito de "segunda posição" fica declarado com número | Médias por exposure_order no humano e no sintético |
| Erro concentrado numa célula | Inversão com evidência que sobrevive à calibração e se repete nas rodadas | Raking e quantis no total não alcançam. Revise o condicionamento dessa célula (estereótipo); se persistir, coleta humana dirigida | Tipo da célula no treino; peso ótimo da célula na mixagem |
| Base pequena por célula | "célula pequena" na etapa 3; peso de mixagem vazio | Coleta humana dirigida. Ampliar com sintético só mostra o N honesto | n por célula; N honesto da ampliação |
| Resultado instável | Veredito SENSÍVEL; ranking muda entre rodadas | Mais rodadas (acrescente sementes) e revisão da temperatura ou do pedido | Amplitude entre rodadas contra o menor EP humano |
| Composição fora do alvo | Diferença grande na etapa 3; Kish muito abaixo de n | Raking (pós-estratificação). Se o Kish cair demais, rever alvos ou coletar a categoria que falta | Kish e peso máximo |
Um bom ajuste começa por uma pergunta precisa ao agente e termina numa medida nova
Diálogos curtos, com números reais. Os quatro primeiros usam o exemplo do exercício; o quinto usa a base de aluno fictícia dos testes do kit, um projeto próprio com conceitos X, Y e Z.Clique em Tocar para ver a conversa acontecer.
O sintético tem razão de desvio padrão 0,72 no conceito C. Isso estraga o estudo?
Quer dizer que as notas sintéticas variam cerca de três quartos do que as humanas: há excesso de 4 e falta de 5 (3,5% contra 17,7%). O mapeamento de quantis da etapa 7 corrige isso no total. Posso rodar scripts/calibrar.py --projeto projetos/nuvem_casa?
Pode.
Razão de DP calibrada: 1,03. KS caiu de 0,13 para 0,01 e Wasserstein de 0,16 para 0,02. Atenção: no treino isso acontece por construção, porque o mapa foi aprendido com esses mesmos humanos. Quem diz se valeu é a etapa 8.
Em 60 anos ou mais o sintético dá C, A, B e o humano C, B, A. Dá para corrigir com mais raking?
Raking corrige quantas pessoas de cada grupo entram, e o mapa de quantis foi aprendido no total; os dois deslocam as células juntas. A inversão continua depois da calibração e se repete nas cinco rodadas, então vem do modelo. A célula tem 24 a 28 humanos por conceito no treino. Proponho mostrar a ampliação, para você ver o que o sintético vale ali.
Mostre.
Com --ampliar age_band=60+ --alvo 100, o conceito A passa a ter 28 humanos e 72 linhas sintéticas. O erro padrão aparente cai para 0,06, mas o N honesto é 11 no cru e 5 com quantis: as 72 linhas valem menos que as 28 pessoas. A recomendação é coleta humana dirigida para essa célula e REVISAR na decisão.
Quero mostrar ao cliente que quem acredita mais no conceito tem mais intenção. Posso usar o sintético?
No treino, a correlação entre intenção e credibilidade é 0,10 no humano e 0,02 no calibrado: diferença de 0,08, acima da tolerância de 0,05 do parametros.json. O mapa de quantis corrige cada métrica sozinha e não reconstrói a relação entre elas. Esse cruzamento fica fora dos usos autorizados; para ele, use só a base humana.
Agora que vi a validação, quero recalibrar para acertar a célula de 60 anos ou mais.
Não posso. A amostra de validação abriu em 19/10/2026 às 09:10, e qualquer ajuste feito depois aprende com a régua. O calibrar.py recusa, e se o lote calibrado mudar os scripts param com ALERTA. A opção --pos-abertura só roda a pedido do professor, gravada à parte e marcada como contaminada. O caminho é registrar a célula como REVISAR e levar a pergunta para o campo humano.
Criei projetos/teste_de_rotulo_xyz com a minha base de 180 pessoas. As regras ainda estão com os centros do exemplo?
Sim, se você não recalcular. Plano: rodar montar_regras.py --projeto projetos/teste_de_rotulo_xyz --recalcular-a-partir-da-base, que troca os centros pelas médias da sua base e zera os efeitos do caso, depois gerar_lote.py com as três sementes do seu JSON e calibrar.py. Confirma?
Confirmo.
Três rodadas de 600. Ranking Z > Y > X no humano, no cru e no calibrado. O cru é mais achatado que no exemplo: razão de DP de 0,63 a 0,67 na intenção, e KS de Z em 0,17 (distinta). Depois dos quantis, razão de 0,92 a 1,05 e KS até 0,04. As correlações ficaram dentro da tolerância. Próximo passo: a mixagem, antes de qualquer abertura.
Números da conversa 5 obtidos rodando os scripts do kit sobre a base de aluno fictícia dos testes, numa cópia do kit, em 19/10/2026.
As saídas finais carregam a origem de cada número até o cliente
Base integrada
Base humana de treino e todas as rodadas do sintético cru numa tabela só, com as mesmas colunas, mais cinco: origem (humano ou sintético), rodada, semente, peso (raking da etapa 7, média 1 em cada origem e rodada) e peso_mixagem (o peso que reproduz, no total de cada estímulo, a mixagem escolhida na etapa 7).
| Aba do xlsx | Conteúdo |
|---|---|
dados | Uma linha por pessoa ou respondente gerado e por estímulo, com as cinco colunas novas |
metodologia | O que é a base, de onde vem cada parte, as regras dos pesos, o que não fazer e os testes do script |
dicionario | O dicionário do projeto mais as cinco colunas novas. O dicionário original não muda |
Como filtrar no Excel
- Abra a aba
dados, selecione o cabeçalho e ligue o filtro (Dados, Filtro). - Em
origem, deixe sóhumanopara qualquer contagem de pessoas ou margem de erro. - Para ler o sintético, filtre
origem=sintéticoe umarodadapor vez, nunca as rodadas somadas como se fossem gente diferente. - Para a média mixada de um estímulo no total, use a média ponderada por
peso_mixagem(SOMARPRODUTO da nota pelo peso dividido pela SOMA do peso), com as linhas humanas e a rodada principal. Não multiplique porpesode novo: o raking já está dentro. - Em célula, não use
peso_mixagem: cada célula tem o próprio peso em07_calibracao/mixagem/07_peso_otimo_por_celula.csv.
23.712 linhas (912 humanas e 22.800 sintéticas em 5 rodadas) e 48 colunas (43 da base humana e 5 novas). Peso do real no total: 88,1%. Cinco testes do script: contagem de linhas, de colunas, nenhuma linha da validação, a média com peso_mixagem igual a w × real + (1 − w) × sintético, e o Kish de 413,68 reproduzido. Fonte: resultados/09_decisao/base_integrada/base_integrada_LEIA.md e resultados/09_decisao/base_integrada/base_integrada.xlsx.
Por que a base integrada nunca contém a amostra de validação
A amostra de validação é a régua. Se ela entrasse na base integrada, qualquer análise futura feita sobre essa base (um novo peso, um novo modelo, uma nova calibração) aprenderia com a régua, e não haveria mais como medir o método. Ela fica guardada para provar, e o script confere por teste que nenhuma linha dela entrou.
Tabela de decisão e relatório de validação
A tabela de decisão traz uso, célula, n humano, evidência com arquivo e número, decisão e condição. O relatório de calibração e validação responde três perguntas com gráfico: se a calibração no treino conserta o sintético (total contra célula), quanto o sintético pode pesar (mixagem) e o que a amostra de validação confirma (maior diferença por célula, com a linha de 1,96 erros padrão).
Como apresentar ao cliente
- Rótulo de simulação na primeira linha de todo arquivo e de todo slide com número sintético.
- Pessoas ouvidas e respondentes gerados em linhas separadas, nunca somados.
- O uso autorizado com a condição: por exemplo, "ordenar os conceitos, para triagem; a escolha final cita o dado humano".
- A célula que exige campo humano, com o tamanho de amostra proposto.
- O protocolo: modelo, data, sementes, regras e a data da abertura da amostra de validação.
"Foram ouvidas 432 pessoas na base de treino e 240 na amostra de validação. Foram gerados 2400 respondentes sintéticos por rodada pelo modelo synthetic-shrunk-v1, em 5 rodadas, com quotas iguais aos alvos populacionais, e calibrados só com a base de treino. Os grupos nunca são somados." Fonte: resultados/09_decisao/disclosure.md. As 432 são as pessoas expostas a conceito; as 48 de controle não avaliaram conceito.
O sintético quantitativo serve para ensaiar e priorizar, e a decisão final cita gente
Serve
- Pré-teste de questionário: escala, ordem, redação.
- Gerar e priorizar hipóteses por célula.
- Triagem de estímulos, com a ordem confirmada na validação.
- Planejar a coleta humana: onde gastar a amostra.
Não serve
- Dimensionar mercado ou prever vendas.
- Estimar nível de intenção para meta comercial.
- Substituir o campo humano na escolha final.
- Completar célula pequena e chamar de amostra.
- Calcular margem de erro com linhas sintéticas.
Disclosure, sempre
Declare que houve material sintético, como foi gerado (modelo, data, sementes, regras), contra o que foi validado, para que usos ele vale e quantas pessoas reais sustentam o estudo. O Código Internacional ICC/ESOMAR, revisado em 2025, pede transparência com clientes e participantes; o guia "20 Questions" da ESOMAR lista o que perguntar a quem fornece serviços com IA. Use as duas listas para conferir o seu disclosure.
Os termos do método cabem em uma linha cada
| Termo | Significado |
|---|---|
| Amostra de validação | Parte da base humana separada por sorteio antes de tudo, aberta uma vez na etapa 8 |
| Base de treino | Os humanos usados para construir, calibrar e escolher pesos |
| Condicionamento | Dar ao respondente sintético um perfil e um contexto antes de ele responder |
| Semente | Número que fixa o sorteio do gerador; a mesma semente refaz o mesmo lote |
| Rodada | O mesmo pedido de geração com outra semente |
| Raking | Ajuste proporcional iterativo dos pesos até a amostra bater com os alvos |
| Pós-estratificação | Ponderação que corrige a composição de uma amostra para a da população |
| Mapeamento de quantis | Troca cada nota sintética pela nota humana na mesma posição da fila |
| Variância e desvio padrão | O quanto as notas se espalham em torno da média |
| Achatamento | Variância sintética menor que a humana; respostas presas no meio da escala |
| Erro padrão | Incerteza de uma média por causa do tamanho da amostra |
| Distância entre distribuições | Medidas (variação total, KS, Wasserstein, Jensen-Shannon) de quanto duas distribuições de notas diferem; zero é igual |
| Acurácia normalizada | Precisão do sintético dividida pela consistência humana em reteste; não é calculada pelo kit |
| Teto humano | Distância entre duas amostras humanas do mesmo público; abaixo dela nenhum método pode ser cobrado |
| Mixagem de fontes | Estimar em cada base e combinar depois, com o peso de cada origem |
| Pool cru | Bases empilhadas sem peso, em que o sintético pesa pelo número de linhas |
| N honesto | Quantas pessoas reais dariam o mesmo erro que um lote ampliado com sintético |
| Tamanho efetivo de Kish | Quantas pessoas sem peso dariam a mesma precisão que a amostra ponderada |
| Impressão digital | Código calculado do conteúdo de um arquivo; muda se o arquivo mudar |
| RAG e TF-IDF | Geração com recuperação de trechos; TF-IDF pesa palavras frequentes no trecho e raras no conjunto |
| Disclosure | Declaração ao cliente sobre o uso de material sintético e seus limites |
Fontes
Links conferidos em 19/10/2026. Os achados citados estão registrados na base de referências do curso.
- Argyle, L. P. et al. (2023). Out of One, Many: Using Language Models to Simulate Human Samples. Political Analysis 31(3), 337 a 351. arxiv.org/abs/2209.06899
- Bisbee, J. et al. (2024). Synthetic Replacements for Human Survey Data? The Perils of Large Language Models. Political Analysis 32(4), 401 a 416. doi.org/10.1017/pan.2024.5
- Peng, T., Gui, G., Toubia, O. et al. (2025). Digital Twins as Funhouse Mirrors: Five Key Distortions. arxiv.org/abs/2509.19088
- Santurkar, S. et al. (2023). Whose Opinions Do Language Models Reflect? ICML. arxiv.org/abs/2303.17548
- Dominguez-Olmedo, R., Hardt, M., Mendler-Dünner, C. (2024). Questioning the Survey Responses of Large Language Models. arxiv.org/abs/2306.07951
- Tjuatja, L. et al. (2024). Do LLMs exhibit human-like response biases? A case study in survey design. TACL. arxiv.org/abs/2311.04076
- Park, J. S. et al. (2024). Generative Agent Simulations of 1,000 People. arxiv.org/abs/2411.10109
- Arora, N., Chakraborty, I., Nishimura, Y. (2025). AI and Human Hybrids for Marketing Research. Journal of Marketing 89(2), 43 a 70. doi.org/10.1177/00222429241276529
- AAPOR Task Force (2026). Responsible AI Integration in Survey Research. aapor.org
- ICC/ESOMAR International Code on Market, Opinion and Social Research and Data Analytics. esomar.org
- ESOMAR. 20 Questions to help buyers of AI-based services. esomar.org
- Insights Association. Code in Action: Synthetic Data Revisited. insightsassociation.org
- Deming, W. E., Stephan, F. F. (1940). On a least squares adjustment of a sampled frequency table when the expected marginal totals are known. Annals of Mathematical Statistics 11(4). Origem do raking. doi.org/10.1214/aoms/1177731829
- Lin, J. (1991). Divergence measures based on the Shannon entropy. IEEE Transactions on Information Theory 37(1). Origem da divergência de Jensen-Shannon. doi.org/10.1109/18.61115
No kit: 00_LEIA.md, AGENTS.md, as skills em .claude/skills/, os PEDIDO.md e CONFERIR.md de cada etapa em projetos/nuvem_casa/ e os scripts em scripts/.