Pipeline de Investigación Empírica
Convierte un "montón de materiales desordenados" en un "flujo de muestra verificable + datos codificados/trazables + modelos reproducibles + gráficos y manuscritos listos para enviar". Este skill no está limitado por disciplina, idioma o formato de archivo; los documentos judiciales son solo un ejemplo de "codificación de texto". Los cuestionarios, entrevistas, noticias, documentos de políticas, registros experimentales, datos abiertos, páginas web y exportaciones de bases de datos también son aplicables.
Los números, nombres de archivo, rutas y valores de variables de ejemplo en este repositorio/paquete son marcadores de posición ficticios y no contienen ningún material real, datos codificados, datos SPSS o manuscritos finales.
Cuándo usar
- El usuario proporciona una carpeta con una mezcla de PDF, Word, Excel, CSV, texto, páginas web, entrevistas, imágenes o escaneos, y solicita organizar, codificar, analizar estadísticamente, crear gráficos o redactar un artículo.
- Ya existen datos CSV/SPSS y se necesita limpiar, fusionar, agregar nuevos materiales, corregir el criterio de la muestra o re-ejecutar modelos.
- Se necesitan estadísticas descriptivas, comparaciones entre grupos, regresiones, heterogeneidad, robustez o evaluaciones predictivas para cuestionarios, entrevistas, experimentos, observaciones, datos públicos, etc.
- Se necesita convertir la parte empírica en un documento Word/PDF donde las cifras, tablas y el texto del cuerpo sean consistentes.
- El usuario dice "necesito hacer lo mismo con materiales similares otra vez" y desea reutilizar el mismo flujo de trabajo.
Tipos de materiales y límites de procesamiento
| Material | Procesamiento nativo | Notas |
|---|---|---|
| Capa de texto, número de páginas, número de caracteres, número de imágenes, estado de cifrado | Los escaneos requieren OCR primero; los PDF basados en imágenes se marcarán como image_only | |
| DOCX / ODT / PPTX | Párrafos, tablas, texto de diapositivas | Los formatos antiguos .doc/.ppt deben convertirse primero |
| XLSX / XLSM | Hojas de cálculo, texto de celdas; solo lectura | Los archivos .xls deben convertirse primero; se recomienda instalar openpyxl |
| CSV / TSV / JSON / JSONL | Campos, número de filas, codificación, valores faltantes; auditoría de calidad de datos tabulares | Las hojas de codificación saltarán las tablas e irán directamente a auto_stats |
| TXT / MD / HTML / XML / YAML / RTF | Extracción de texto plano; eliminación de etiquetas HTML | El contenido de páginas web es utilizable; los scripts/estilos se eliminarán |
| Imágenes (PNG/JPG/TIFF, etc.) | Listado de archivos; dimensiones/número de páginas | Requieren OCR primero, luego codificación; este skill no incluye OCR |
| Audio/Video | Listado de archivos | Requieren transcripción/extracción de fotogramas primero, luego codificación; este skill no incluye ASR |
| Archivos comprimidos | Listado de archivos | Descomprimir primero; la auditoría marcará como unsupported |
| Formatos desconocidos/propietarios | Listado de archivos | Convertir o exportar a uno de los formatos anteriores primero |
"Cualquier material" no significa que "cualquier binario se pueda analizar directamente". Este skill incluirá primero todos los archivos en la auditoría y conciliación de la muestra; los formatos que no se puedan leer directamente se marcarán claramente y se proporcionará una ruta de conversión, sin omitirlos silenciosamente.
Seis reglas estrictas
- Auditar primero, luego codificar/modelar. No comience las estadísticas hasta que sepa el número de archivos, el número de archivos legibles, los duplicados, los campos faltantes y las razones de exclusión.
- Deduplicar por contenido, no por nombre de archivo. Es común tener el mismo nombre con contenido diferente o el mismo contenido con nombres diferentes; use al menos MD5 y luego verifique con títulos/campos clave/muestras de texto.
- Una fila = una unidad de análisis. Los documentos, entrevistados, casos, instituciones, regiones-año o respuestas de cuestionarios deben estar fijados al inicio del proyecto; si hay unidades mixtas, explíquelo en las limitaciones.
- Cada valor codificado/extraído debe tener evidencia. Si el texto original no lo menciona, registre
NA/No registrado, no asuma 0 por defecto; las declaraciones negativas, sugerencias de otros o paráfrasis no pueden considerarse hechos finales. - La N de la muestra descriptiva ≠ la N de la muestra del modelo. Cada modelo debe reportar su propia N y condiciones de filtrado; el cuerpo del texto, las tablas, las figuras y el resumen deben usar el mismo conjunto de criterios.
- Asociación ≠ causalidad. Use "asociación/correspondencia/más probable" y no "causa/lleva a/prueba que es efectivo".
Resumen del flujo de trabajo
0 Alcance y pregunta → 1 Auditoría de materiales/datos → 2 Acuerdo de codificación/extracción → 3 Conjunto de datos
↓
7 Verificación final ← 6 Ensamblaje del manuscrito ← 5 Gráficos nivel publicación ← 4 Análisis estadístico
Cada etapa tiene una "compuerta" (gate). Si no se pasa la compuerta, no se avanza a la siguiente etapa.
Etapa 0: Alcance y pregunta
Primero, escriba una página scope.md que contenga al menos:
- Pregunta de investigación, mecanismo teórico y contribución esperada.
- Tipo y fuente de los materiales: base de datos, estrategia de búsqueda/marco de muestreo, rango de tiempo, idioma, región.
- Unidad de análisis: un documento/un entrevistado/un caso/una institución/un cuestionario.
- Criterios de inclusión/exclusión: tiempo, tipo, idioma, número de palabras, duplicados, ilegibles, campos clave faltantes.
- Lista de variables esperadas y su rol: variable dependiente, variable independiente principal, variables de mecanismo/mediación/moderación, variables de control.
- Forma de los datos: texto, tablas, mixto; si se necesita codificación manual, escalas de cuestionario, grupos experimentales o datos secundarios.
Compuerta: Poder decir en una oración cuántos materiales se pierden en cada paso de "material original → material legible → muestra dentro del alcance → muestra de análisis" y por qué.
Etapa 1: Auditoría de materiales y datos (debe ejecutarse primero)
1A Auditoría a nivel de archivo
Ejecute scripts/audit_corpus.py:
python scripts/audit_corpus.py --root "directorio_de_materiales" --out-dir "output/audit" --min-chars 100
Escanea todos los tipos compatibles de forma predeterminada, no es necesario especificar --ext uno por uno; use --list-ext para ver la lista completa. Produce:
| Archivo | Propósito |
|---|---|
corpus_audit.csv | Extensión, tipo, bytes, páginas/tablas, caracteres, imágenes, MD5, estado, error de cada archivo |
corpus_summary.json | Resumen legible por máquina |
corpus_duplicates.csv | Grupo de duplicados, sugerencias de conservación/eliminación |
corpus_report.md | Informe en chino listo para pegar en el registro del proyecto |
Máquina de estados (cada archivo debe caer en una categoría):
| Estado | Significado | ¿Entra en análisis? |
|---|---|---|
valid | Se puede abrir, tiene suficiente texto/datos | Sí |
metadata | Archivos de sistema como ._*, .DS_Store | No |
hidden | Archivos/directorios ocultos | No, a menos que el usuario confirme |
unsupported | Formato desconocido, comprimido, Office antiguo, falta de analizador | No, convertir/descomprimir primero |
quarantined | Ubicado en directorio _duplicates u otros directorios omitidos | No, ya es una copia aislada |
zero_byte | 0 bytes | No |
corrupt | No se puede abrir, archivo dañado | No |
encrypted | Protegido con contraseña/permisos | No, a menos que se pueda descifrar |
textless | Tiene páginas/celdas pero texto insuficiente | No, verificar si está vacío o necesita reexportación |
image_only | Imagen/escaneo, sin capa de texto | Disponible después de OCR |
media | Audio/video | Transcripción/extracción de fotogramas primero |
La duplicación no es un status independiente: los archivos con contenido idéntico siguen siendo valid, pero se marcan con dup_group/dup_role como keeper/duplicado; unique_valid_files en el informe ya deduce las copias.
Debe manejar cada elemento:
._*,.DS_Store: metadatos de macOS, no son materiales de investigación; se cuentan como "archivos no materiales", no como muestra. Los._*legibles se marcarán en la columna de error, requieren confirmación manual.- Archivos/directorios ocultos se registran como
hidden; las extensiones no listadas comounsupported; los directorios_duplicatescomoquarantined. Ninguno de los tres entra en la muestra, pero deben aparecer en el total y el informe. - 0 bytes, no se puede abrir, cifrado, texto insuficiente: se registran como
zero_byte/corrupt/encrypted/textless; PDF de imagen comoimage_only. - Las estadísticas de nivel superior/año solo cuentan muestras únicas (
validy no copia); no incluya metadatos, archivos dañados o copias duplicadas en la estructura de la muestra. - Copias duplicadas: agrupar por MD5; conservar la que tenga "identificador/año en el nombre de archivo, ruta más corta, texto completo", mover las demás a
_duplicates/, no eliminar directamente. - Nombres de archivo truncados, puntos al final, rutas demasiado largas: comunes en Windows; leer con Python y registrar en el informe, no contar manualmente con el explorador.
- Mismo nombre y diferente contenido, texto idéntico pero metadatos/configuración de exportación diferentes (MD5 diferente): se debe verificar manualmente mediante títulos/campos clave/muestras de texto, no solo confiar en MD5 para deduplicación automática.
Luego ejecute scripts/dedupe_corpus.py para generar el plan de deduplicación:
python scripts/dedupe_corpus.py --audit "output/audit/corpus_audit.csv" --root "directorio_de_materiales" --out-dir "output/audit" --apply
Compuerta: sample_flow.md debe poder conciliar:
Número de archivos originales (incluye .DS_Store/archivos sin extensión)
- Archivos de metadatos/ocultos
- No compatibles/requieren conversión (unsupported)
- Directorios aislados como _duplicates (quarantined)
- 0 bytes/dañados/cifrados/texto insuficiente
= Número de materiales legibles
- Fuera de alcance (tiempo/tipo/idioma)
= Número de materiales válidos
- Copias duplicadas
= Número de muestras únicas (según unique_valid_files)
- Variables clave faltantes/no se pueden codificar
= Número de muestras de análisis
Cada modelo tendrá su propia N, no use una sola N para todo.
1B Auditoría de calidad de datos tabulares
Si los materiales son datos CSV/Excel/SPSS, primero realice una verificación a nivel de campo, luego codifique/modelice:
- Número de filas, columnas, tipo de cada columna (numérico/categórico/texto/fecha), tasa de valores faltantes, número de valores únicos.
- Si la clave primaria/ID es única; filas duplicadas; múltiples registros para la misma unidad.
- Inconsistencias ortográficas en los valores de variables categóricas (mezcla "Sí/No/1/0/TRUE"); rango de fechas.
- Rango de variables continuas, valores atípicos, truncamiento en P99, necesidad de transformación log.
- Preguntas inversas de escalas de cuestionarios, división de opciones múltiples, consistencia de unidades.
- Codificación (UTF-8-SIG/GB18030), separador decimal, validez de nombres de variables SPSS.
csv_to_spss_syntax.py limpiará nombres de variables ilegales/duplicados y generará un .sps; auto_stats.py proporcionará estadísticas descriptivas, pruebas entre grupos y correlaciones para detectar problemas de datos, pero no reemplaza los modelos formales.
Compuerta: Poder explicar el origen, tipo, manejo de valores faltantes, manejo de valores atípicos y el modelo final al que pertenece cada columna.
Etapa 2: Acuerdo de codificación/extracción
2.1 Codificación de texto
- Primero, escriba una instancia de
assets/codebook-template.md: cada variable debe tener definición, valores, regla de juicio, ubicación de la evidencia, ejemplo positivo, ejemplo negativo, regla de valor faltante. - Use
scripts/make_coding_sheet.pypara extraer el texto completo y oraciones de evidencia candidatas, generando una hoja de codificación; solo proporciona fragmentos de evidencia, no hace el juicio final por usted.--profile genericpredeterminado: adecuado para entrevistas, noticias, políticas, informes, páginas web, actas de reuniones, etc.--profile legal: extrae candidatos para tribunal, número de caso, provincia, causa; use solo al procesar documentos judiciales chinos.- Los archivos tabulares como CSV/TSV/JSON/XLSX se omitirán y se indicará que sigan el flujo de estadísticas; las imágenes/audio/video indicarán que se haga OCR/transcripción primero.
- Durante la codificación manual/LLM, cada registro debe guardar al menos una oración de evidencia
*_ev; las codificaciones sin oración de evidencia se consideran incompletas. - Seleccione un 10%–15% de los materiales para codificación por dos personas/dos rondas, reporte la tasa de concordancia o Cohen's κ; resuelva las discrepancias primero, luego modifique el codebook.
- Congele el codebook antes de la codificación completa; los cambios posteriores deben registrar la versión y el alcance del impacto.
2.2 Cuestionarios/escalas/extracción estructurada
- Primero, cree un diccionario de variables a nivel de ítem: número de ítem, enunciado, valores, preguntas inversas, códigos de valor faltante.
- Divida las preguntas de opción múltiple/clasificación en columnas 0/1 o múltiples columnas; las puntuaciones totales de escalas deben verificar primero la fiabilidad (α/ω) y las dimensiones.
- Las preguntas abiertas se pueden codificar temáticamente primero, luego convertir a variables de conteo/categóricas; no trate la frecuencia de palabras directamente como un tema.
- La clave primaria, la unidad y el campo de tiempo de los datos tabulares deben poder rastrearse hasta el archivo original.
Compuerta: Seleccione aleatoriamente 10 registros; debe poder rastrear completamente desde valor codificado → oración de evidencia/campo original → texto original/fila original; de lo contrario, vuelva a la tabla de codificación para corregir las reglas.
Consulte references/02-coding-protocol.md para más detalles.
Etapa 3: Conjuntos de datos
Se recomienda un conjunto de tres archivos:
data/coded.jsonl: Detalles de codificación por material + fragmentos de evidencia, fácil de rastrear.data/analysis.csv: Tabla ancha para análisis, una fila por unidad de análisis.data/analysis.sav: Abierto directamente en SPSS, con etiquetas de variable/valor.
Debe incluir las siguientes columnas de marcado:
| Columna | Significado |
|---|---|
in_scope | Si está dentro del alcance de la investigación (tiempo, tipo, región, idioma) |
in_analysis | Si entra en las estadísticas descriptivas (excluye los que no se pueden codificar / tienen valores clave faltantes) |
model1_sample, etc. | Marcador de muestra para cada modelo; no use in_analysis en su lugar |
dup_group | ID del grupo de duplicados; 0 para la copia conservada, 1 para la copia |
exclusion_reason | Razón de exclusión, para facilitar la escritura del flujo de la muestra |
Use scripts/csv_to_spss_syntax.py para generar .sps, evitando errores de tipo de columna al escribir GET DATA manualmente. Si el CSV contiene valores de texto binarios como "Sí/No", "Presente/Ausente", "Apoya/No apoya", el script agregará automáticamente RECODE ... ('Sí'=1) ('No'=0) INTO *_num; use la columna numérica directamente para Logística; agregue --no-recode si no es necesario.
Compuerta: El número de filas de CSV, el número de filas de JSONL, el número de filas de SAV y el número de muestras únicas en sample_flow.md deben coincidir; el N de cada modelo debe poder recalcularse a partir de las condiciones de filtrado.
Etapa 4: Análisis estadístico y extensiones
Primero, escriba el plan de análisis, luego mire los resultados. De forma predeterminada, haga una combinación de "análisis principal + descriptivo + bivariado + multivariado + diagnóstico + heterogeneidad + robustez", no solo ejecute un modelo principal.
Primero, ejecute el script de detección automática para generar estadísticas descriptivas, pruebas entre grupos, correlaciones y modelos univariados:
python scripts/auto_stats.py --data data/analysis.csv --config assets/chart_config.example.json --out output/analysis_pack
Esto produce descriptives.csv, group_tests.csv, binary_rates.csv, correlations.csv, univariate_models.csv, univariate_skipped.csv y analysis_pack.md, que se utilizan para descubrir variables que merecen un modelado adicional; el modelo final aún se estima según las especificaciones predefinidas en SPSS/R/Stata, no use los valores p de la detección automática para seleccionar variables.
El script identifica automáticamente el tipo de variable de resultado:
- 0/1 → Resultado binario (Logístico/OR).
- Numérico continuo → Resultado continuo (OLS/media+IC), para multicategórico use Kruskal–Wallis para pruebas entre grupos.
- Multicategórico → Resultado categórico, use Chi-cuadrado/V de Cramér para pruebas entre grupos; las variables independientes multicategóricas entrarán en OLS/Logit univariado como variables dummy y se reportarán como
variable_nivel. - Los resultados multicategóricos en sí mismos no se convierten en Logit binario; el modelo principal debe usar Logit multinomial o combinar categorías primero.
- Las etiquetas de texto comunes como "Sí/No", "Presente/Ausente", "Apoya/No apoya" se asignan automáticamente a 0/1; otros textos binarios deben especificar la clase positiva usando el elemento de configuración
outcome_map. - Los modelos univariados con separación completa o estimación inestable se escribirán en
univariate_skipped.csv, sin dar OR enormes falsos. - Si la columna de resultado está completamente faltante, no hay filas después del filtrado, o
filter_queryestá mal escrito, el script falla directamente con un error.
Como mínimo, incluya:
- Estadísticas descriptivas: N, proporción/media, tasa de resultado, intervalo de Wilson del 95% para cada grupo.
- Modelo principal: Logística binaria / OLS / Logit multinomial, especificando la variable dependiente, la categoría de referencia, las variables independientes principales y las variables de control.
- Modelos de mecanismo/moderación: términos de interacción, pendientes simples o valores predichos por grupo.
- Robustez: reemplazar la variable dependiente, reemplazar la muestra, agregar/eliminar variables de control, antes/después de la deduplicación.
- Diagnóstico: multicolinealidad, separación completa, celdas con tamaño de muestra insuficiente, calibración/discriminación.
- Heterogeneidad: por categoría/región/año/grupo.
- Análisis exploratorios posibles: PCA, análisis de correspondencia, clustering, ROC/calibración predictiva; marcar como "exploratorio".
La tabla de resultados debe incluir al menos: coeficiente/OR, IC del 95%, p, N, indicadores de ajuste, descripción de la categoría de referencia. Cada modelo debe tener su propia fila N.
Escriba los análisis realizados y omitidos en analysis_manifest.md (plantilla en references/08-analysis-expansion.md), no solo reporte resultados significativos.
Consulte references/03-analysis-spss.md para plantillas de sintaxis SPSS y normas de interpretación; consulte references/08-analysis-expansion.md para la lista de análisis extendidos.
Compuerta: Cualquier OR/β debe poder rastrearse en tres pasos desde analysis.sps → archivo de salida → tabla; analysis_manifest.md debe explicar por qué se hizo o no cada análisis y cuántas muestras tuvo; el texto del cuerpo no debe contener conclusiones causales como "el texto mencionaba cierta situación" que se convierten en "en realidad se produjo cierto efecto".
Etapa 5: Gráficos de nivel de publicación (por defecto, hacer una vista panorámica, no solo dibujar 8 gráficos)
Primero, ejecute scripts/auto_chart_pack.py para generar un paquete de gráficos panorámicos, luego seleccione las figuras principales del cuerpo, las figuras del apéndice y los gráficos de modelo que necesitan complementarse:
python scripts/auto_chart_pack.py \
--data data/analysis.csv \
--config assets/chart_config.example.json \
--out output/chart_pack --tiff
No es necesario modificar el script para resultados continuos/multicategóricos: la variable de resultado cambiará automáticamente a gráficos de "distribución de resultados + media/composición por grupo"; los resultados de texto también pueden usar outcome_map para especificar la codificación. --coef admite columnas metric (OR/HR/RR/beta) y n, el gráfico de forest escribirá N según el tamaño de la muestra del modelo; --pred admite etiquetas 0/1 o "Sí/No", las predicciones constantes/categoría única omitirán ROC/PR/calibración y explicarán el motivo. term_labels puede asignar nombres de términos de modelo como lv3 a chino. Los gráficos de pesas de dos proporciones requieren dos columnas 0/1 especificadas con dumbbell en config. Cuando haya columnas de tiempo de seguimiento y evento, use --survival-time, --survival-event (se puede agregar --survival-group) para generar curvas de Kaplan–Meier.
Por defecto, cubre 7 grupos, aproximadamente 40–55 gráficos: alrededor de 44 para binarios, alrededor de 51 con entrada de modelo; alrededor de 42 para continuos, alrededor de 41 para multicategóricos. El número variará según los tipos de columna, valores faltantes y elementos omitidos; el número real está determinado por chart_manifest.csv.
- A Calidad de datos: tasa de valores faltantes, distribución de muestras por categoría/año/región, tasa de incidencia de variables binarias.
- B Univariado: distribución de resultados (binario/continuo/multicategórico procesado por separado, Q-Q para resultados continuos), composición de tratamientos (barras + anillo), distribución numérica, composición de categorías.
- C Bivariado: categoría × resultado, etapa × resultado, mapa de calor/apilado de categoría × etapa, diferencias regionales/de nivel de revisión, mapa de calor de correlaciones, ajuste de dispersión, gráfico de burbujas; para resultados continuos use media+IC95%, para resultados multicategóricos use gráficos de composición apilada dentro del grupo.
- D Multivariado: violín/diagrama de caja, matriz de dispersión, gráfico de pesas, scree plot/biplot/mapa de calor de cargas de PCA, dendrograma de clustering jerárquico (Ward), MDS clásico.
- E Temporal: tendencia de la tasa de resultados/media, gráfico de control 3σ, tamaño de la muestra, apilado/área de composición por etapa; para resultados multicategóricos, agregue tendencia de composición de categorías de resultados.
- F Diagnóstico del modelo: gráfico de forest, ROC, calibración, distribución de predicciones, matriz de confusión, curva PR, Lift por decil (requiere
--coef/--pred); Kaplan–Meier (requiere columna de seguimiento). - G Apéndice: análisis de correspondencia, Pareto.
Estrategia de creación de gráficos:
- Al menos 2 gráficos por hallazgo principal: gráfico de resultado principal + gráfico de robustez/diagnóstico/heterogeneidad.
- 7–10 gráficos en el cuerpo, 20–50 en el apéndice; no hay límite superior en el número de gráficos.
- Cada gráfico debe responder primero a "¿qué pregunta responde?"; si no hay pregunta, no se dibuja.
- Use
references/07-chart-atlas.mdpara seleccionar el tipo, cubriendo los gráficos avanzados comunes de SPSS: barras agrupadas/apiladas/100% apiladas, líneas/áreas, histograma, diagrama de caja/violín, barras de error, dispersión/burbujas, matriz de dispersión, Pareto, ROC, calibración, Kaplan-Meier (cuando haya datos de supervivencia), scree plot, cargas de factores, dendrograma de clustering, análisis de correspondencia, MDS, gráfico de control, etc. - Cada gráfico se escribe en
chart_manifest.csv: número de figura, pregunta, tipo, variables, N, nota de figura, ruta de archivo. - La semántica de color debe ser uniforme en todo el manuscrito: la misma etapa/misma categoría usa el mismo color en cada gráfico.
- Las notas de figura deben incluir N, fuente de datos, configuración del modelo, categoría de referencia; los gráficos exploratorios (PCA/CA/clustering) deben indicar "exploratorio" en la nota de la figura.
Use scripts/pubfig.py para unificar el estilo:
from pubfig import set_style, save_fig, wilson_ci, forest_plot
set_style() # 15 cm de ancho de caja, fuente Song/Times New Roman, 600 dpi
Puntos clave de las normas:
- Ancho físico de 15 cm (ancho del cuerpo A4 dentro de 15.4 cm), tamaño de fuente 7.2–8.5 pt.
- Fuente Song para chino, Times New Roman para occidental; incrustación de fuentes en PDF (Type 42).
- Sin título dentro de la figura; el título y la nota de la figura se colocan en Word.
- Salida simultánea de PNG 600 dpi, PDF vectorial, TIFF LZW (con
--tiff). - Las barras de error indican IC del 95%; el punto sólido en el gráfico de forest = significativo, punto hueco = no significativo.
- Las variables continuas sesgadas se transforman con log10 o se truncaron con P99, y se indica en la etiqueta del eje/nota de la figura.
Compuerta: Cada gráfico en chart_manifest.csv tiene pregunta, N, nota de figura, archivo; las figuras principales del cuerpo y las del apéndice no se repiten; el ancho incrustado de las figuras en PDF ≥ 3000 px (aproximadamente 600 dpi para un ancho de 15 cm); la nota de la figura, la figura y la referencia en el cuerpo deben estar completas.
Consulte references/04-figures-publication.md y references/07-chart-atlas.md para más detalles.
Etapa 6: Ensamblaje del manuscrito
Requisitos de formato de Word:
- Las figuras, los títulos de figuras y las notas de figuras deben configurarse como "Mantener con el siguiente párrafo" para evitar que el título de la figura quede en una página separada.
- Las filas de las tablas no deben dividirse entre páginas; los encabezados de las tablas deben repetirse en las páginas siguientes.
- La nota de la tabla/figura va debajo de la tabla/figura; primero se da la N, luego las reglas de significancia.
- Cuando se cita por primera vez una figura/tabla en el texto, el número debe coincidir con el archivo (Figura 1, Tabla 1, Figura complementaria 1).
- La N y los porcentajes en el resumen, el cuerpo, las tablas, las figuras y el apéndice deben ser todos de la misma fuente; la N de
chart_manifest.csvse escribirá en la nota de la figura.
Al exportar Word a PDF, Word comprime las figuras de 600 dpi a aproximadamente 200 dpi. Use scripts/export_pdf_hires.py para exportar y luego rellenar las figuras originales:
python scripts/export_pdf_hires.py --docx "manuscript.docx" --out-pdf "manuscript.pdf" --figure-map "figure_map.json"
Compuerta: El número de páginas del PDF, el número de figuras y el número de títulos de figuras coinciden; el ancho incrustado de cada figura ≥ 3000 px; las tablas no tienen filas/encabezados rotos.
Consulte references/05-manuscript-assembly.md para más detalles.
Etapa 7: Verificación final
Ejecute:
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
Luego repase manualmente con references/06-qa-checklist.md. El enfoque no es el formato, sino:
- Cada número en el flujo de la muestra debe coincidir.
- Las copias duplicadas deben eliminarse de la muestra de análisis, o reportar explícitamente el impacto de no eliminarlas.
- Cada N en el texto debe coincidir con la tabla/figura/modelo correspondiente.
- Las figuras y el texto deben decir lo mismo, no "la figura sube, el texto dice que baja".
- Los números de las notas de las figuras en el PDF deben poder reconocer formatos como "Figura 1:", "Fig. 1.", "Table 1:", etc.; la verificación de baja resolución solo mira las imágenes lo suficientemente grandes; los CSV vacíos fallarán directamente con un error.
- Las variables de codificación teórica deben explicar su origen en la sección de métodos, no escribirse como si se hubieran medido directamente de los materiales originales.
- Las conclusiones deben usar "asociación/correspondencia", no lenguaje causal.
Lista de scripts
Los siguientes comandos asumen que el directorio actual es el directorio raíz del skill; si se ejecuta desde el directorio del proyecto, reemplace scripts/ con la ruta absoluta del skill.
| Script | Propósito |
|---|---|
scripts/audit_corpus.py | Escanea cualquier directorio de materiales: estado del archivo, texto/páginas, MD5, duplicados, distribución de formatos, sugerencias de año |
scripts/dedupe_corpus.py | Genera un plan de deduplicación basado en los resultados de la auditoría; --apply mueve a _duplicates/ |
scripts/make_coding_sheet.py | Extrae el texto completo y oraciones de evidencia de palabras clave de PDF/Word/PPT/HTML/texto; solo extrae campos de tribunal/número de caso con --profile legal |
scripts/text_extract.py | Extracción de texto genérico y verificación de archivos (PDF/DOCX/ODT/PPTX/XLSX/HTML/texto/imágenes/audio/video) |
scripts/analysis_utils.py | Funciones compartidas internas: filtrado de muestra, identificación de tipo de resultado, codificación de etiquetas binarias; importado por los scripts de estadísticas/gráficos automáticos |
scripts/csv_to_spss_syntax.py | Genera sintaxis SPSS GET DATA a partir de los encabezados de CSV; limpia nombres de variables ilegales/duplicados y escribe etiquetas de variable |
scripts/auto_stats.py | Estadísticas descriptivas automáticas, pruebas entre grupos, correlaciones, modelos univariados (variables independientes multicategóricas como dummies), verificación de separación completa |
scripts/auto_chart_pack.py | Genera automáticamente entre 40 y 55 gráficos de calidad de datos/distribución/bivariados/clustering/temporal/diagnóstico de modelo/supervivencia y manifest según el rol de la columna |
scripts/pubfig.py | Estilo unificado para gráficos de publicación, Wilson CI, forest plot, mapa de calor, violín, ROC/PR, PCA, MDS, clustering, KM, gráfico de control, etc. (más de 30 tipos de gráficos) |
scripts/export_pdf_hires.py | Word→PDF y rellena las figuras originales de 600 dpi |
scripts/qa_outputs.py | Verifica la resolución de las figuras en PDF, el número de tablas/figuras en docx, datos vacíos, claves duplicadas, N/notas de figura/rutas en manifest |
Documentos de referencia
| Archivo | Cuándo leerlo |
|---|---|
references/01-corpus-audit.md | Al comenzar la auditoría, encontrar duplicados/dañados/escaneos/múltiples formatos |
references/02-coding-protocol.md | Al diseñar variables, escribir codebook, hacer pruebas de fiabilidad |
references/03-analysis-spss.md | Al configurar modelos, escribir sintaxis SPSS, interpretar OR |
references/04-figures-publication.md | Al dibujar gráficos, elegir colores, exportar archivos para envío |
references/05-manuscript-assembly.md | Al dar formato en Word, exportar PDF, manejar notas de figura |
references/06-qa-checklist.md | Al revisar elemento por elemento antes del envío/entrega |
references/07-chart-atlas.md | Al seleccionar tipos de gráficos, correspondientes a gráficos avanzados de SPSS, determinar la cantidad de gráficos |
references/08-analysis-expansion.md | Al decidir qué análisis adicionales ejecutar además del modelo principal y cómo registrar lo que se hace/no se hace |
Plantillas
assets/scope-template.md: Alcance de la investigación, criterios de inclusión/exclusión, esqueleto del flujo de la muestra.assets/codebook-template.md: Esqueleto del manual de codificación de variables.assets/figure-spec-template.md: Notas de figura y tabla de especificaciones de creación de gráficos.assets/figure_map.example.json: Ejemplo de mapeo de figuras para rellenar en PDF desde Word.assets/delivery-checklist.md: Lista de verificación de entrega.assets/coding-keywords.json: Diccionario de palabras clave reemplazable (ejemplo de marcador de posición genérico).assets/chart_config.example.json: Rol de columna, etiquetas, filtro de muestra de análisis (filter_query) de ejemplo.assets/analysis-manifest-template.md: Lista de análisis principal/extensiones/elementos omitidos.
Los puntos de fallo más comunes
- Tomar el número de archivos en la carpeta directamente como el tamaño de la muestra. Primero debe restar los metadatos, archivos dañados, duplicados, formatos no compatibles y fuera de alcance.
- Deduplicar solo por nombre de archivo. Un mismo contenido a menudo tiene múltiples versiones como "con identificador/sin identificador", "- copia", "(2)".
- Usar la N de las estadísticas descriptivas y la N del modelo indistintamente. Los modelos tienen valores faltantes y condiciones de filtrado, por lo que la N siempre es menor.
- Considerar que "el material menciona cierta situación" significa que "realmente ocurrió cierto resultado". Esto es una asociación textual, no un efecto causal.
- El PDF exportado desde Word se ve bien, pero las figuras en realidad solo tienen 200 dpi. Debe rellenar y verificar el ancho de la imagen incrustada.
- Solo dibujar una figura del resultado principal. Las figuras de distribución, heterogeneidad, robustez y diagnóstico no se dibujan, y el usuario tiene que preguntar repetidamente.
- Tratar el contenido de las referencias/apéndices como material principal. El tipo de documento, el tipo de informe, la navegación web, etc., deben juzgarse por el título/estructura del texto, no solo por palabras clave en todo el texto.
- Tratar los resultados de texto "Sí/No" como una variable continua. Use
outcome_mappara especificar la clase positiva, o codifique como 0/1 en el CSV; el script no adivinará la dirección positiva/negativa. - La auditoría solo cuenta un formato específico y omite silenciosamente otros archivos. Todos los archivos deben tener un estado;
total_filesdebe poder conciliarse con el explorador de archivos. - Meter datos tabulares en la codificación de texto. CSV/Excel van directamente al flujo de
auto_stats/SPSS; la codificación de texto es adecuada para documentos, entrevistas, páginas web y otros materiales no estructurados.