Pipeline de Dados de Pesquisa Empírica
Transforme "um monte de materiais bagunçados" em "um fluxo de amostragem verificável + dados de codificação/campos rastreáveis + modelos reproduzíveis + gráficos e manuscritos prontos para submissão". Este skill não se limita a uma disciplina, idioma ou formato de arquivo; documentos legais são apenas um exemplo de "codificação de texto". Questionários, entrevistas, notícias, documentos de políticas, registros experimentais, dados abertos, páginas web e exportações de banco de dados são igualmente aplicáveis.
Os números, nomes de arquivos, caminhos e valores de variáveis de exemplo neste repositório/pacote são placeholders fictícios e não contêm nenhum material real, dados de codificação, dados SPSS ou manuscritos concluídos.
Quando usar
- O usuário fornece uma pasta contendo PDFs, Word, Excel, CSV, texto, páginas web, transcrições de entrevistas, imagens ou scans e solicita organização, codificação, estatísticas, criação de gráficos ou redação de um artigo.
- Já existem dados CSV/SPSS que precisam ser limpos, mesclados, complementados com novos materiais, ter o escopo da amostra corrigido ou os modelos reexecutados.
- Questionários, entrevistas, experimentos, observações, dados públicos, etc., exigem estatísticas descritivas, comparações entre grupos, regressão, heterogeneidade, robustez ou avaliação preditiva.
- É necessário compilar a parte empírica em Word/PDF, com total consistência numérica entre gráficos, tabelas e texto do manuscrito.
- O usuário diz "preciso fazer o mesmo com materiais semelhantes" e deseja reutilizar o mesmo fluxo.
Tipos de material e limites de processamento
| Material | Processamento nativo | Descrição |
|---|---|---|
| Camada de texto, número de páginas, contagem de caracteres, número de imagens, status de criptografia | Scans devem primeiro passar por OCR; PDFs baseados em imagem serão marcados como image_only | |
| DOCX / ODT / PPTX | Parágrafos, tabelas, texto de slides | Formatos antigos .doc/.ppt devem ser convertidos primeiro |
| XLSX / XLSM | Planilhas, texto de células; aberto somente leitura | .xls deve ser convertido primeiro; recomenda-se instalar openpyxl |
| CSV / TSV / JSON / JSONL | Campos, número de linhas, codificação, valores ausentes; auditoria de qualidade de dados tabulares | Planilhas de codificação ignorarão tabelas e seguirão diretamente para auto_stats |
| TXT / MD / HTML / XML / YAML / RTF | Extração de texto puro; HTML sem tags | Conteúdo de página web pode ser usado; scripts/estilos serão removidos |
| Imagens (PNG/JPG/TIFF, etc.) | Listagem de arquivos; dimensões/páginas | Primeiro OCR, depois codificação; este skill não inclui OCR próprio |
| Áudio/Vídeo | Listagem de arquivos | Primeiro transcrição/extração de quadros, depois codificação; este skill não inclui ASR próprio |
| Arquivos compactados | Listagem de arquivos | Primeiro descompactar; a auditoria marcará como unsupported |
| Formatos desconhecidos/proprietários | Listagem de arquivos | Primeiro converter ou exportar para um dos formatos acima |
"Qualquer material" não significa "qualquer binário pode ser interpretado diretamente". Este skill primeiro incluirá todos os arquivos na auditoria e reconciliação de amostras; formatos que não podem ser lidos diretamente serão claramente marcados com um caminho de conversão, sem serem silenciosamente omitidos.
Seis regras rígidas
- Audite primeiro, depois codifique/modelize. Sem saber o número de arquivos, o número de textos legíveis, o número de duplicatas, a falta de campos e os motivos de exclusão, não comece as estatísticas.
- Deduplicação por conteúdo, não por nome de arquivo. Diferentes conteúdos com o mesmo nome e o mesmo conteúdo com nomes diferentes são comuns; use pelo menos MD5 e, em seguida, verifique por amostragem com base em título/campos-chave/corpo do texto.
- Uma linha = uma unidade de análise. Documentos, entrevistados, casos, instituições, região-ano ou respostas de questionário devem ser fixados no início do projeto; se houver mistura de unidades, indique na seção de limitações.
- Cada valor codificado/extraído deve ter evidência. Se o texto original não menciona, registre
NA/Não mencionado, não registre 0 por padrão; negação, sugestões de terceiros ou paráfrases não podem ser tomadas como fatos finais. - Descreva N da amostra ≠ N da amostra do modelo. Cada modelo deve reportar seu próprio N e condições de filtragem; texto, tabela, gráfico e resumo devem usar o mesmo escopo.
- Associação ≠ causalidade. Escreva "associação/correspondência/mais provável", não "causa/leva a/prova ser eficaz".
Visão geral do fluxo
0 Escopo e Pergunta → 1 Auditoria de Material/Dados → 2 Protocolo de Codificação ou Extração → 3 Conjunto de Dados
↓
7 Verificação Final ← 6 Montagem do Manuscrito ← 5 Gráficos de Nível de Publicação ← 4 Análise Estatística
Cada estágio tem um "portão". Se o portão não for aprovado, não avance para o próximo estágio.
Estágio 0: Escopo e pergunta
Primeiro, escreva uma página scope.md contendo pelo menos:
- Pergunta de pesquisa, mecanismo teórico, contribuição esperada.
- Tipos e fontes de material: banco de dados, string de busca/quadro de amostragem, intervalo de tempo, idioma, região.
- Unidade de análise: um documento/um entrevistado/um caso/uma instituição/um questionário.
- Critérios de inclusão/exclusão: tempo, tipo, idioma, número de palavras, duplicatas, ilegíveis, campos-chave ausentes.
- Lista de variáveis esperadas e suas funções: variável dependente, variável independente principal, variável de mecanismo/moderação, variáveis de controle.
- Forma dos dados: texto, tabela, misto; necessidade de codificação manual, escalas de questionário, grupos experimentais ou dados secundários.
Portão: Ser capaz de descrever em uma frase quantos materiais se perdem em cada etapa de "material original → material legível → amostra dentro do escopo → amostra de análise" e por quê.
Estágio 1: Auditoria de material e dados (deve ser executada primeiro)
1A Auditoria em nível de arquivo
Execute scripts/audit_corpus.py:
python scripts/audit_corpus.py --root "diretório de materiais" --out-dir "output/audit" --min-chars 100
Por padrão, ele verifica todos os tipos suportados sem precisar especificar --ext individualmente; use --list-ext para ver a lista completa. Ele gera:
| Arquivo | Propósito |
|---|---|
corpus_audit.csv | Para cada arquivo: extensão, tipo, bytes, páginas/tabelas, caracteres, imagens, MD5, status, erro |
corpus_summary.json | Resumo legível por máquina |
corpus_duplicates.csv | Grupos de duplicatas, sugestões de manter/remover |
corpus_report.md | Relatório em chinês pronto para ser colado no log do projeto |
Máquina de estados (cada arquivo deve cair em uma categoria):
| Status | Significado | Entra na análise? |
|---|---|---|
valid | Pode ser aberto, tem texto/dados suficientes | Sim |
metadata | Arquivos de sistema como ._*, .DS_Store | Não |
hidden | Arquivos/diretórios ocultos | Não, a menos que o usuário confirme |
unsupported | Formato desconhecido, arquivo compactado, Office antigo, falta analisador | Não, converter/descompactar primeiro |
quarantined | Localizado em diretórios de salto como _duplicates | Não, cópia já isolada |
zero_byte | 0 byte | Não |
corrupt | Não pode ser aberto, arquivo corrompido | Não |
encrypted | Protegido por senha/restrições de acesso | Não, a menos que seja possível descriptografar |
textless | Tem páginas/células, mas texto insuficiente | Não, verificar se é arquivo vazio ou precisa de reexportação |
image_only | Imagem/scan, sem camada de texto | Pode ser usado após OCR |
media | Áudio/vídeo | Transcrição/extração de quadros primeiro |
Duplicação não é um status independente: arquivos de mesmo conteúdo ainda são valid, mas marcados com dup_group/dup_role como keeper/duplicate; o relatório unique_valid_files já deduz as cópias.
Itens que devem ser tratados um a um:
._*,.DS_Store: metadados do macOS, não são materiais de pesquisa; conte como "arquivos não-materiais", não na amostra.._*legíveis serão anotados na coluna de erro e precisam de confirmação manual.- Arquivos/diretórios ocultos: marque como
hidden; extensões não na lista de suporte:unsupported; diretórios de salto como_duplicates:quarantined. Nenhum deles entra na amostra, mas devem aparecer no total e no relatório. - 0 byte, ilegível, criptografado, texto insuficiente: registre como
zero_byte/corrupt/encrypted/textless; PDFs baseados em imagem:image_only. - Distribuição de nível superior/ano: conte apenas amostras únicas (
valide não cópias); não inclua metadados, arquivos corrompidos ou cópias duplicadas na estrutura da amostra. - Cópias duplicadas: agrupe por MD5; mantenha uma cópia que tenha "nome com identificador/ano, caminho mais curto, texto completo" e mova as demais para
_duplicates/, não delete diretamente. - Nomes de arquivo truncados, pontos finais, caminhos muito longos: comuns no Windows; use Python para ler e registre no relatório, não conte manualmente com o explorador de arquivos.
- Mesmo nome com conteúdo diferente, mesmo texto com metadados/configurações de exportação diferentes (MD5 diferente): deve ser verificado manualmente por amostragem com base em título/campos-chave/corpo do texto, não apenas por MD5 para deduplicação automática.
Em seguida, execute scripts/dedupe_corpus.py para gerar o plano de deduplicação:
python scripts/dedupe_corpus.py --audit "output/audit/corpus_audit.csv" --root "diretório de materiais" --out-dir "output/audit" --apply
Portão: sample_flow.md deve ser reconciliável:
Número de arquivos originais (incluindo arquivos .DS_Store/sem extensão)
- Arquivos de metadados/ocultos
- Não suportados/precisam de conversão (unsupported)
- Diretórios de salto como _duplicates (quarantined)
- 0 byte/corrompidos/criptografados/texto insuficiente
= Número de materiais legíveis
- Fora do escopo (tempo/tipo/idioma)
= Número de materiais válidos
- Cópias duplicadas
= Número de amostras únicas (por unique_valid_files)
- Variáveis-chave ausentes/não podem ser codificadas
= Número de amostras de análise
Cada modelo também deve ter seu próprio N; não use um único N para todos.
1B Auditoria de qualidade de dados tabulares
Se o material em si são dados CSV/Excel/SPSS, primeiro faça uma verificação no nível do campo antes de codificar/modelizar:
- Número de linhas, colunas, tipo de cada coluna (numérico/categórico/texto/data), taxa de valores ausentes, número de valores únicos.
- Se a chave primária/ID é única; linhas duplicadas; múltiplos registros para a mesma unidade.
- Se os valores de variáveis categóricas têm ortografia inconsistente ("Sim/Não/1/0/TRUE" misturados); intervalo de datas.
- Intervalo de variáveis contínuas, outliers, truncamento no P99, necessidade de transformação log.
- Questões reversas de escalas de questionário, divisão de múltipla escolha, consistência de unidades.
- Codificação (UTF-8-SIG/GB18030), separador decimal, validade de nomes de variáveis SPSS.
csv_to_spss_syntax.py limpará nomes de variáveis inválidos/duplicados e gerará .sps; auto_stats.py fornecerá estatísticas descritivas, testes entre grupos e correlações para detectar problemas nos dados, mas não substitui modelos formais.
Portão: Ser capaz de explicar a fonte, tipo, tratamento de valores ausentes, tratamento de outliers e em qual modelo final cada coluna entra.
Estágio 2: Protocolo de codificação/extração
2.1 Codificação de texto
- Primeiro, escreva uma instância de
assets/codebook-template.md: cada variável deve ter definição, valores, regra de julgamento, localização da evidência, exemplo positivo, exemplo negativo, regra para valores ausentes. - Use
scripts/make_coding_sheet.pypara extrair o texto completo e sentenças de evidência candidatas, gerando uma planilha de codificação; ele fornece apenas fragmentos de evidência, não faz o julgamento final.- Padrão
--profile generic: adequado para entrevistas, notícias, documentos de políticas, relatórios, páginas web, atas de reuniões e qualquer outro material textual. --profile legal: extrai adicionalmente tribunal, número do caso, província, causa candidata; use apenas ao processar documentos judiciais chineses.- Tabelas CSV/TSV/JSON/XLSX serão ignoradas com instrução para seguir o fluxo estatístico; imagens/áudio/vídeo serão instruídos para OCR/transcrição primeiro.
- Padrão
- Durante a codificação manual/LLM, cada registro deve pelo menos salvar a sentença de evidência
*_ev; codificação sem sentença de evidência é considerada incompleta. - Amostra 10%–15% dos materiais para codificação dupla/duas rodadas, relatando a taxa de concordância ou Cohen's κ; divergências primeiro decididas, depois o codebook é ajustado.
- Congele o codebook antes da codificação em larga escala; alterações posteriores devem registrar versão e escopo de impacto.
2.2 Questionário/Escala/Extração estruturada
- Primeiro, crie um dicionário de variáveis em nível de item: número da questão, enunciado, valores, questões reversas, códigos de valores ausentes.
- Questões de múltipla escolha/ordenação: divida em 0/1 ou múltiplas colunas; pontuação total da escala: verifique confiabilidade (α/ω) e dimensionalidade primeiro.
- Questões abertas: primeiro codifique por tema, depois transforme em variáveis de contagem/categoria; não trate frequência de palavras como tema diretamente.
- As colunas de chave primária, unidade e campo de tempo de dados tabulares devem ser rastreáveis até o arquivo original.
Portão: Amostre 10 registros aleatoriamente e seja capaz de rastrear completamente de "valor codificado → sentença de evidência/campo original → texto original/linha original"; caso contrário, volte à planilha de codificação para ajustar as regras.
Consulte references/02-coding-protocol.md.
Estágio 3: Conjuntos de dados
Conjunto recomendado de três arquivos:
data/coded.jsonl: detalhes de codificação por material + fragmentos de evidência, para rastreabilidade.data/analysis.csv: tabela larga para análise, uma linha por unidade de análise.data/analysis.sav: abre diretamente no SPSS, com rótulos de variável/rótulos de valor.
Colunas de marcação obrigatórias:
| Coluna | Significado |
|---|---|
in_scope | Se pertence ao escopo da pesquisa (tempo, tipo, região, idioma) |
in_analysis | Se entra na estatística descritiva (exclui não codificável/ausência crítica) |
model1_sample, etc. | Marcador de amostra separado para cada modelo; não use in_analysis como substituto |
dup_group | ID do grupo de duplicatas; a cópia mantida é 0, as cópias são 1 |
exclusion_reason | Motivo da exclusão, para facilitar a escrita do fluxo da amostra |
Use scripts/csv_to_spss_syntax.py para gerar .sps, evitando erros de tipo de coluna ao escrever GET DATA manualmente. Se houver texto binário como "Sim/Não", "Tem/Não tem", "Apoiar/Não apoiar" no CSV, o script adicionará automaticamente RECODE ... ('Sim'=1) ('Não'=0) INTO *_num; Logística usará diretamente as colunas numéricas; adicione --no-recode se não for necessário.
Portão: O número de linhas no CSV, o número de linhas no JSONL, o número de linhas no SAV e o número de amostras únicas em sample_flow.md devem coincidir; o N de cada modelo pode ser recalculado a partir das condições de filtragem.
Estágio 4: Análise estatística e extensão
Primeiro, escreva o plano de análise, depois examine os resultados. Por padrão, execute uma combinação de "análise principal + descritiva + bivariada + multivariada + diagnóstico + heterogeneidade + robustez", não apenas um modelo principal.
Primeiro, use o script de verificação automática para executar estatísticas descritivas, testes entre grupos, correlações e modelos univariados:
python scripts/auto_stats.py --data data/analysis.csv --config assets/chart_config.example.json --out output/analysis_pack
Ele gera descriptives.csv, group_tests.csv, binary_rates.csv, correlations.csv, univariate_models.csv, univariate_skipped.csv e analysis_pack.md, usados para identificar variáveis que valem a pena modelar ainda mais; o modelo final ainda deve ser estimado de acordo com as especificações pré-registradas em SPSS/R/Stata, não use o p-valor da verificação automática para selecionar variáveis.
O script identifica automaticamente o tipo de variável de resultado:
- 0/1 → resultado binário (Logistic/OR).
- Numérico contínuo → resultado contínuo (OLS/média+IC), comparação entre grupos com Kruskal–Wallis para multicategóricas.
- Multicategórico → resultado categórico, comparação entre grupos com qui-quadrado/Cramér’s V; variáveis independentes multicategóricas entrarão em OLS/Logit univariado como dummies, reportadas como
variável_nível. - O resultado multicategórico em si não é submetido a Logit binário; o modelo principal deve usar Logit multinomial ou combinar categorias primeiro.
- Rótulos de texto comuns como "Sim/Não", "Tem/Não tem", "Apoiar/Não apoiar" são automaticamente mapeados para 0/1; outros textos binários devem usar o item de configuração
outcome_mappara especificar a classe positiva. - Modelos univariados com separação completa ou estimativa instável são gravados em
univariate_skipped.csv, sem produzir OR enormes falsos. - Colunas de resultado completamente ausentes, 0 linhas após filtragem,
filter_querycom erro de digitação: saída com erro imediatamente.
Mínimo a incluir:
- Estatística descritiva: N, proporção/média, taxa de resultado, IC 95% Wilson para cada grupo.
- Modelo principal: Logística binária / OLS / Logit multinomial, especifique a variável dependente, categoria de referência, variável independente principal, variáveis de controle.
- Modelo de mecanismo/moderação: termo de interação, inclinação simples ou valores preditos por grupo.
- Robustez: substituir variável dependente, substituir amostra, adicionar/remover variáveis de controle, antes/depois da deduplicação.
- Diagnóstico: multicolinearidade, separação completa, células com amostra insuficiente, calibração/discriminação.
- Heterogeneidade: por categoria/por região/por ano/por grupo.
- Explorações possíveis: PCA, análise de correspondência, cluster, ROC/predição/calibração; marque como "exploratório".
A tabela do relatório deve incluir pelo menos: coeficiente/OR, IC95%, p, N, indicadores de ajuste, descrição da categoria de referência. Cada modelo com N em linha separada.
Registre as análises feitas e ignoradas em analysis_manifest.md (modelo em references/08-analysis-expansion.md), não relate apenas resultados significativos.
Modelos de sintaxe SPSS e normas de interpretação em references/03-analysis-spss.md; lista de análises de extensão em references/08-analysis-expansion.md.
Portão: Qualquer OR/β deve ser rastreável em três etapas: analysis.sps → arquivo de saída → tabela; analysis_manifest.md deve explicar por que cada análise foi feita ou não e qual o tamanho da amostra; o texto do manuscrito não deve transformar "o texto menciona uma situação" em "a situação realmente ocorreu" com conclusões causais.
Estágio 5: Gráficos de nível de publicação (padrão: pacote completo, não apenas 8 gráficos)
Primeiro, execute scripts/auto_chart_pack.py para gerar um pacote de gráficos completo e, em seguida, selecione os gráficos principais para o texto, os gráficos do apêndice e os gráficos adicionais que precisam ser desenhados:
python scripts/auto_chart_pack.py \
--data data/analysis.csv \
--config assets/chart_config.example.json \
--out output/chart_pack --tiff
Não é necessário modificar o script para resultados contínuos/multicategóricos: o tipo de resultado automaticamente alterna para gráficos de "distribuição do resultado + média/proporção por grupo"; resultados de texto também podem usar outcome_map para especificar a codificação. --coef suporta colunas metric (OR/HR/RR/beta) e n, e o forest plot escreverá N com base no tamanho da amostra do modelo; --pred suporta rótulos 0/1 ou "Sim/Não", e predição constante/única categoria pulará ROC/PR/calibração com explicação. term_labels pode mapear nomes de itens de modelo como lv3 para chinês. Gráfico de halteres de proporção dupla requer duas colunas 0/1 especificadas com dumbbell no config. Se houver colunas de tempo de acompanhamento e evento, use --survival-time, --survival-event (pode adicionar --survival-group) para gerar curvas Kaplan–Meier.
Padrão: cobre 7 grupos, normalmente cerca de 40–55 gráficos: binário: cerca de 44, com entrada de modelo: cerca de 51; contínuo: cerca de 42, multicategórico: cerca de 41. O número pode variar com base no tipo de coluna, valores ausentes e itens ignorados; o número real está em chart_manifest.csv.
- A Qualidade dos dados: taxa de valores ausentes, distribuição de amostra por classe/ano/região, taxa de incidência de variáveis binárias.
- B Univariado: distribuição do resultado (binário/contínuo/multicategórico tratados separadamente, resultado contínuo com Q-Q), composição do tratamento (barras + anel), distribuição numérica, composição categórica.
- C Bivariado: categoria × resultado, estágio × resultado, mapa de calor/empilhado de categoria × estágio, diferenças por região/nível de julgamento, mapa de calor de correlação, scatter com ajuste, gráfico de bolhas; resultado contínuo com média+IC95%, resultado multicategórico com gráfico de empilhamento de composição intra-grupo.
- D Multivariado: violino/caixa, matriz de scatter, gráfico de halteres, PCA scree/biplot/mapa de calor de loadings, dendrograma de cluster Ward, MDS clássico.
- E Tempo: tendência de taxa/média de resultado, gráfico de controle 3σ, tamanho da amostra, barras/área empilhadas de composição por estágio; resultado multicategórico adiciona tendência de composição por categoria de resultado.
- F Diagnóstico do modelo: forest plot, ROC, calibração, distribuição de preditos, matriz de confusão, curva PR, Lift por decis (requer
--coef/--pred); Kaplan–Meier (requer colunas de acompanhamento). - G Apêndice: análise de correspondência, Pareto.
Estratégia de criação de gráficos:
- Cada descoberta principal: pelo menos 2 gráficos: gráfico de resultado principal + gráfico de robustez/diagnóstico/heterogeneidade.
- Texto principal: 7–10 gráficos, apêndice: 20–50 gráficos; sem limite máximo para o número de gráficos.
- Cada gráfico: primeiro escreva "que pergunta responde"; se não houver pergunta, não desenhe.
- Use
references/07-chart-atlas.mdpara seleção de tipo, cobrindo gráficos avançados comuns do SPSS: barras agrupadas/empilhadas/100% empilhadas, linha/área, histograma, caixa/violino, barras de erro, scatter/bolhas, matriz de scatter, Pareto, ROC, calibração, Kaplan-Meier (com dados de sobrevivência), scree, loadings fatoriais, dendrograma de cluster, análise de correspondência, MDS, gráfico de controle, etc. - Cada gráfico: registre em
chart_manifest.csv: número do gráfico, pergunta, tipo, variáveis, N, legenda, caminho do arquivo. - Semântica de cores: unificada em todo o manuscrito; mesmo estágio/mesma categoria usa a mesma cor em todos os gráficos.
- Legenda: escreva N, fonte dos dados, configuração do modelo, categoria de referência; gráficos exploratórios (PCA/CA/cluster) indique "exploratório" na legenda.
Use scripts/pubfig.py para estilo unificado:
from pubfig import set_style, save_fig, wilson_ci, forest_plot
set_style() # 15 cm de largura, Song/Times New Roman, 600 dpi
Pontos de estilo:
- Largura física 15 cm (A4 texto principal 15.4 cm), tamanho da fonte 7.2–8.5 pt.
- Fonte chinesa Song, fonte ocidental Times New Roman; PDF incorpora fontes (Type 42).
- Gráfico sem título; título e legenda do gráfico vão no Word.
- Saída simultânea PNG 600 dpi, PDF vetorial, TIFF LZW (
--tiff). - Barras de erro: IC 95%; forest plot: ponto sólido = significativo, ponto vazio = não significativo.
- Variáveis contínuas assimétricas: use log10 ou truncamento no P99, e indique no rótulo do eixo/legenda.
Portão: Cada gráfico em chart_manifest.csv tem pergunta, N, legenda, arquivo; gráfico principal do texto e gráfico do apêndice não se repetem; largura da imagem embutida no PDF ≥ 3000 px (cerca de 600 dpi para 15 cm de largura); legenda, gráfico e referência no texto completos.
Consulte references/04-figures-publication.md e references/07-chart-atlas.md.
Estágio 6: Montagem do manuscrito
Requisitos de formatação do Word:
- Figura, título da figura e legenda da figura: configurados como "manter com o próximo parágrafo" para evitar quebra de página entre eles.
- Linhas de tabela: proibido quebrar entre páginas; repetir cabeçalho em páginas seguintes.
- Legenda da tabela: abaixo da figura/tabela; primeiro o N, depois a regra de significância.
- Primeira referência a figura/tabela no texto: número consistente com o arquivo (Figura 1, Tabela 1, Figura Suplementar 1).
- N e percentuais do resumo, texto, tabela, gráfico, apêndice: todos da mesma fonte; o N de
chart_manifest.csvé reescrito na legenda do gráfico.
Ao exportar Word para PDF, o Word comprime imagens de 600 dpi para cerca de 200 dpi. Use scripts/export_pdf_hires.py para exportar e reembutir as imagens originais:
python scripts/export_pdf_hires.py --docx "manuscript.docx" --out-pdf "manuscript.pdf" --figure-map "figure_map.json"
Portão: Número de páginas do PDF, número de figuras, número de títulos de figuras: consistentes; largura embutida de cada figura ≥ 3000 px; tabelas sem quebra de linha/cabeçalho.
Consulte references/05-manuscript-assembly.md.
Estágio 7: Verificação final
Execute:
python scripts/qa_outputs.py --docx "manuscript.docx" --pdf "manuscript.pdf" --figures "figures" --data "data/analysis.csv" --audit "output/audit/corpus_audit.csv" --manifest "output/chart_pack/chart_manifest.csv" --strict
Em seguida, percorra manualmente de acordo com references/06-qa-checklist.md. O foco não é o formato, mas:
- Cada número no fluxo da amostra deve corresponder.
- Cópias duplicadas foram removidas da amostra de análise, ou o impacto foi explicitamente relatado.
- Cada N no texto corresponde à tabela/gráfico/modelo correspondente.
- Gráfico e texto falam na mesma direção, nenhum "gráfico sobe, texto desce".
- A numeração das legendas no PDF deve reconhecer formatos como "Figura 1:", "Fig. 1.", "Table 1:"; a verificação de baixa resolução analisa apenas imagens grandes o suficiente; CSV vazio gera erro diretamente.
- Variáveis de codificação teórica: fonte explicada na seção de métodos, não escritas como medidas diretamente do material original.
- Conclusão: use "associação/correspondência", não linguagem causal.
Lista de scripts
Os comandos abaixo assumem que o diretório atual é a raiz do skill; se executar a partir do diretório do projeto, substitua scripts/ pelo caminho absoluto do skill.
| Script | Função |
|---|---|
scripts/audit_corpus.py | Escaneia qualquer diretório de materiais: status do arquivo, texto/páginas, MD5, duplicatas, distribuição de formatos, dica de ano |
scripts/dedupe_corpus.py | Gera plano de deduplicação baseado nos resultados da auditoria; --apply move para _duplicates/ |
scripts/make_coding_sheet.py | Extrai texto completo e sentenças-chave de evidência de PDF/Word/PPT/HTML/texto; --profile legal extrai campos de tribunal/número do caso |
scripts/text_extract.py | Extração de texto genérica e verificação de arquivos (PDF/DOCX/ODT/PPTX/XLSX/HTML/texto/imagem/áudio/vídeo) |
scripts/analysis_utils.py | Funções compartilhadas internas: seleção de amostra, identificação de tipo de resultado, codificação de rótulos binários; importadas por scripts de estatística automática e geração de gráficos |
scripts/csv_to_spss_syntax.py | Gera sintaxe SPSS GET DATA a partir do cabeçalho CSV; limpa nomes de variáveis inválidos/duplicados e escreve rótulos de variável |
scripts/auto_stats.py | Estatística descritiva automática, testes entre grupos, correlações, modelos univariados (dummies para variáveis independentes multicategóricas), verificação de separação completa |
scripts/auto_chart_pack.py | Gera automaticamente cerca de 40–55 gráficos de qualidade de dados/distribuição/bivariados/cluster/tempo/diagnóstico de modelo/sobrevivência com base nas funções das colunas, mais manifest |
scripts/pubfig.py | Estilo unificado de figuras para publicação, Wilson CI, forest plot, mapa de calor, violino, ROC/PR, PCA, MDS, cluster, KM, gráfico de controle, mais de 30 tipos de gráfico |
scripts/export_pdf_hires.py | Word→PDF e reembutir imagens originais de 600 dpi |
scripts/qa_outputs.py | Verifica resolução de imagens no PDF, número de figuras/tabelas no docx, dados vazios, chaves duplicadas, N/legenda/caminho no manifest |
Documentos de referência
| Arquivo | Quando ler |
|---|---|
references/01-corpus-audit.md | Ao iniciar a auditoria, encontrar duplicatas/arquivos corrompidos/scans/formatos variados |
references/02-coding-protocol.md | Ao projetar variáveis, escrever o codebook, fazer teste de confiabilidade |
references/03-analysis-spss.md | Ao definir modelos, escrever sintaxe SPSS, interpretar OR |
references/04-figures-publication.md | Ao desenhar gráficos, escolher cores, exportar arquivos para submissão |
references/05-manuscript-assembly.md | Ao formatar Word, exportar PDF, lidar com legendas |
references/06-qa-checklist.md | Antes da submissão/entrega, verificar item por item |
references/07-chart-atlas.md | Ao selecionar tipos de gráfico, corresponder a gráficos avançados do SPSS, determinar o número de gráficos |
references/08-analysis-expansion.md | Ao considerar quais análises adicionais executar além do modelo principal, como registrar o que foi feito/não feito |
Modelos
assets/scope-template.md: Escopo da pesquisa, critérios de inclusão/exclusão, esqueleto do fluxo da amostra.assets/codebook-template.md: Esqueleto do manual de codificação de variáveis.assets/figure-spec-template.md: Tabela de especificações de legendas e desenho de gráficos.assets/figure_map.example.json: Exemplo de mapeamento para reembutir imagens do Word para PDF.assets/delivery-checklist.md: Lista de verificação de entrega.assets/coding-keywords.json: Dicionário de palavras-chave substituível (exemplo de placeholder genérico).assets/chart_config.example.json: Exemplo de funções de coluna, rótulos, filtro de amostra de análise (filter_query).assets/analysis-manifest-template.md: Lista de análise principal/análise de extensão/itens ignorados.
Os pontos de falha mais comuns
- Tratar o número de arquivos em uma pasta como o tamanho da amostra. Primeiro subtraia metadados, corrompidos, duplicatas, formato não suportado, fora do escopo.
- Deduplicar apenas por nome de arquivo. O mesmo conteúdo frequentemente tem múltiplas versões "com identificador/sem identificador", "- cópia", "(2)".
- Misturar N da estatística descritiva com N do modelo. O modelo tem valores ausentes e condições de filtragem, então N é sempre menor.
- Tratar "material menciona uma situação" como "a situação realmente ocorreu". Isso é associação textual, não efeito causal.
- O PDF exportado do Word parece normal, mas as imagens têm apenas 200 dpi. Deve-se reembutir e verificar a largura da imagem embutida.
- Desenhar apenas um gráfico de resultado principal. Gráficos de distribuição, heterogeneidade, robustez e diagnóstico não são desenhados, forçando o usuário a perguntar repetidamente.
- Tratar conteúdo de citações/anexos como material principal. O tipo de documento, tipo de relatório, navegação da página web, etc., devem ser julgados pela estrutura do título/corpo do texto, não apenas por palavras-chave no texto completo.
- Resultado é texto "Sim/Não" e é tratado como variável contínua diretamente. Use
outcome_mappara especificar a classe positiva explicitamente, ou codifique como 0/1 no CSV; o script não adivinha a direção positiva/negativa. - Auditar apenas um formato específico, omitindo outros arquivos silenciosamente. Todos os arquivos devem ter status;
total_filesdeve ser reconciliável com o explorador de arquivos. - Enfiar dados tabulares na codificação de texto. CSV/Excel vão diretamente pelo fluxo
auto_stats/SPSS; codificação de texto é para documentos, entrevistas, páginas web, etc., materiais não estruturados.