lybxkl/pipeline-recherche-empirique

Transformez n’importe quel ensemble de documents de recherche (PDF, Word, Excel, CSV, texte, pages web, entretiens, images, exportations de bases de données, etc.) en un ensemble de données auditable, des modèles statistiques, des graphiques de qualité publication et un manuscrit de recherche. Le pipeline vérifie d’abord l’intégrité, les doublons et la qualité des champs, puis code ou extrait selon un codebook, génère des fichiers CSV/SAV, exécute des statistiques descriptives et des régressions, produit des graphiques 600 dpi prêts pour la publication, et assemble le tout en Word/PDF avec un contrôle de cohérence numérique.

Qu'est-ce que pipeline-recherche-empirique ?

Ce skill permet de transformer un ensemble hétérogène de documents de recherche (PDF, Word, Excel, CSV, texte, pages web, entretiens, images, exportations de bases de données, etc.) en un pipeline reproductible et auditable. Il suit une séquence stricte : d’abord un audit complet des fichiers (intégrité, doublons, qualité des champs), puis un codage ou une extraction selon un codebook détaillé avec preuves textuelles, ensuite la génération de jeux de données au format CSV/SAV, l’exécution de statistiques descriptives et de régressions (logistique, OLS, multi‑nominale), la production de graphiques au format publication (600 dpi, format A4, police Times New Roman/SimSun), enfin l’assemblage du manuscrit Word/PDF avec un contrôle de cohérence numérique entre le texte, les tableaux et les figures. Le skill est conçu pour les chercheurs, analystes de données et agents IA qui doivent traiter des données mixtes (documents textuels, tableaux, images OCRisées, audio/vidéo après transcription) et produire des résultats interprétables et prêts à soumettre. Il prend en charge les plateformes Python (scripts fournis) et SPSS (syntaxe générée automatiquement). La documentation détaillée (SKILL.md) décrit les 7 phases allant de la définition de la portée à la vérification finale, avec pour chacune des « portes » de contrôle empêchant de passer à l’étape suivante si les critères ne sont pas remplis.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lybxkl/SPSS-Style-Charting-Skill/tree/HEAD/empirical-research-pipeline

Installed? Explore more Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Pipeline de Recherche Empirique

Transformez un « ensemble de documents hétéroclites » en « flux d’échantillons vérifiable + données codées/tracées reproductibles + modèles reproductibles + graphiques et manuscrit prêts à soumettre ». Ce skill n’est limité ni par discipline, ni par langue, ni par format de fichier ; les documents de jugements juridiques ne sont qu’un exemple de « codage textuel ». Les questionnaires, entretiens, articles de presse, documents politiques, enregistrements expérimentaux, données ouvertes, pages web et exportations de bases de données sont également pris en charge.

Les chiffres, noms de fichiers, chemins et valeurs de variables dans ce dépôt/package sont des exemples fictifs et ne contiennent aucune donnée réelle, aucun codage, aucune donnée SPSS ni aucun manuscrit de recherche.

Quand utiliser

  • L’utilisateur fournit un dossier contenant un mélange de fichiers PDF, Word, Excel, CSV, texte, pages web, entretiens, images ou scans, et demande le tri, le codage, les statistiques, la création de graphiques ou la rédaction d’un article.
  • Des données CSV/SPSS existantes nécessitent un nettoyage, une fusion, l’ajout de nouvelles sources, une correction de la définition de l’échantillon ou une ré‑exécution des modèles.
  • Des questionnaires, entretiens, expériences, observations, données publiques, etc. nécessitent des statistiques descriptives, des comparaisons inter‑groupes, des régressions, des analyses d’hétérogénéité, de robustesse ou des évaluations prédictives.
  • Il est nécessaire de produire un manuscrit Word/PDF où les chiffres (figures, tableaux, texte) sont cohérents.
  • L’utilisateur dit « j’ai un matériel similaire à traiter à nouveau » et souhaite réutiliser le même processus.

Types de documents et limites de traitement

DocumentTraitement natifRemarque
PDFCouche texte, nombre de pages, nombre de caractères, nombre d’images, état de chiffrementLes scans doivent d’abord être OCRisés ; les PDF purement image sont marqués image_only
DOCX / ODT / PPTXParagraphes, tableaux, texte des diapositivesLes anciens formats .doc/.ppt doivent être convertis d’abord
XLSX / XLSMFeuilles de calcul, texte des cellules ; ouverture en lecture seuleLes fichiers .xls doivent être convertis d’abord ; openpyxl recommandé
CSV / TSV / JSON / JSONLChamps, nombre de lignes, encodage, valeurs manquantes ; audit de qualité des données tabulairesLes feuilles de codage sautent les tableaux et passent directement à auto_stats
TXT / MD / HTML / XML / YAML / RTFExtraction de texte brut ; HTML sans balisesLe texte principal des pages web est conservé ; les scripts/styles sont supprimés
Images (PNG/JPG/TIFF, etc.)Liste des fichiers ; dimensions/nombre de pagesDoivent d’abord être OCRisées avant le codage ; ce skill ne fournit pas d’OCR intégré
Audio/VidéoListe des fichiersDoivent d’abord être transcrits/sous‑échantillonnés avant le codage ; ce skill ne fournit pas d’ASR intégré
Archives (zip, etc.)Liste des fichiersDoivent d’abord être décompressées ; l’audit marquera unsupported
Formats inconnus/propriétairesListe des fichiersDoivent d’abord être convertis ou exportés dans l’un des formats ci‑dessus

« Tout document » ne signifie pas que tout binaire peut être analysé directement. Ce skill inclut d’abord tous les fichiers dans l’audit et la vérification d’échantillon ; les formats non lisibles sont clairement marqués et une voie de conversion est proposée, sans omission silencieuse.

Six règles strictes

  1. Audit d’abord, codage/modélisation ensuite. Ne commencez aucune statistique avant de connaître le nombre de fichiers, le nombre de textes lisibles, les doublons, les champs manquants et les raisons d’exclusion.
  2. Déduplication par contenu, pas par nom de fichier. Deux fichiers de noms différents mais au contenu identique, ou de même nom mais de contenu différent, sont fréquents ; utilisez au moins MD5, puis contrôlez par titre/champs clés/extrait de texte.
  3. Une ligne = une unité d’analyse. Document, répondant, affaire, institution, région‑année ou questionnaire : l’unité doit être définie au début du projet ; si plusieurs unités coexistent, précisez‑les dans les limites.
  4. Chaque valeur codée/extraite doit être étayée par une preuve. Si le texte original ne mentionne pas la valeur, notez NA / non mentionné, n’attribuez pas la valeur par défaut 0. Les affirmations négatives, suggestions d’autrui ou paraphrases ne constituent pas des faits définitifs.
  5. La description de l’échantillon N ≠ l’échantillon du modèle N. Chaque modèle doit rapporter son propre N et ses conditions de sélection ; le texte, les tableaux, les figures et le résumé doivent utiliser le même N.
  6. Association n’est pas causalité. Écrivez « association / correspondance / plus probable », pas « entraîne / rend efficace / prouve ».

Vue d’ensemble du pipeline

0 Portée et question → 1 Audit des documents/données → 2 Protocole de codage/ extraction → 3 Jeu de données
                                      ↓
                         7 Vérification finale ← 6 Assemblage du manuscrit ← 5 Graphiques publication ← 4 Analyse statistique

Chaque phase comporte des « portes ». Si une porte n’est pas franchie, on ne passe pas à l’étape suivante.


Phase 0 : Portée et question

Rédigez d’abord une page scope.md comprenant au moins :

  • Question de recherche, mécanisme théorique, contribution attendue.
  • Types de documents et sources : bases de données, requêtes/cadre d’échantillonnage, période, langue, région.
  • Unité d’analyse : un document / un répondant / une affaire / une institution / un questionnaire.
  • Critères d’inclusion/exclusion : période, type, langue, nombre de caractères, doublons, fichiers non lisibles, champs clés manquants.
  • Liste des variables attendues et leur rôle : variable dépendante, variable indépendante principale, variables de mécanisme/modération, variables de contrôle.
  • Forme des données : texte, tableau, mixte ; nécessite‑t‑il un codage manuel, une échelle de questionnaire, une répartition expérimentale ou des données secondaires ?

Porte : Pouvoir dire en une phrase, pour chaque étape « documents bruts → documents lisibles → échantillon dans la portée → échantillon d’analyse », combien de documents sont perdus et pourquoi.


Phase 1 : Audit des documents et données (à exécuter en premier)

1A Audit au niveau des fichiers

Exécutez scripts/audit_corpus.py :

python scripts/audit_corpus.py --root "répertoire_documents" --out-dir "output/audit" --min-chars 100

Par défaut, tous les types supportés sont scannés, sans avoir à spécifier --ext individuellement ; utilisez --list-ext pour voir la liste complète. Il produit :

FichierUsage
corpus_audit.csvExtension, type, taille en octets, nombre de pages/tableaux, nombre de caractères, nombre d’images, MD5, statut, erreur pour chaque fichier
corpus_summary.jsonRésumé lisible par machine
corpus_duplicates.csvGroupes de doublons, suggestions de conservation/suppression
corpus_report.mdRapport en français, directement utilisable dans le journal de projet

Machine d’états (chaque fichier doit tomber dans une catégorie) :

StatutSignificationInclus dans l’analyse ?
validOuvrable, texte/données suffisantsOui
metadataFichiers système ._*, .DS_Store, etc.Non
hiddenFichiers/répertoires cachésNon, sauf confirmation utilisateur
unsupportedFormat inconnu, archives, anciens Office, analyseur manquantNon, d’abord convertir/décompresser
quarantinedSitué dans _duplicates ou autre répertoire à ignorerNon, déjà isolé
zero_byte0 octetNon
corruptFichier corrompu ou impossible à ouvrirNon
encryptedProtégé par mot de passe/permissionsNon, sauf déchiffrement possible
textlessPages/cellules existantes mais texte insuffisantNon, vérifier si le fichier est vide ou doit être réexporté
image_onlyImage/scan sans couche texteUtilisable après OCR
mediaAudio/VidéoD’abord transcrire/sous‑échantillonner

Les doublons ne sont pas un status indépendant : les fichiers de même contenu restent valid, mais sont marqués via dup_group/dup_role comme keeper/duplicate ; le rapport indique unique_valid_files en déduisant les copies.

Traitement détaillé :

  • ._*, .DS_Store : métadonnées macOS, pas des documents de recherche ; comptez‑les comme « non‑documents », ne les incluez pas dans l’échantillon. Les ._* lisibles sont signalés dans la colonne erreur, à vérifier manuellement.
  • Fichiers/répertoires cachés → hidden ; extensions non supportées → unsupported ; répertoires _duplicates → quarantined. Aucun des trois n’entre dans l’échantillon, mais ils doivent figurer dans le total et le rapport.
  • 0 octet, fichier corrompu, chiffré, texte insuffisant → respectivement zero_byte/corrupt/encrypted/textless ; PDF purement image → image_only.
  • Les distributions par niveau/répertoire ne concernent que l’échantillon unique (valid et non copie) ; n’incluez pas les métadonnées, fichiers corrompus ou copies dans la structure de l’échantillon.
  • Doublons : regroupez par MD5 ; conservez la copie dont le nom contient un identifiant/année, le chemin est plus court, le texte est complet ; déplacez les autres dans _duplicates/, ne les supprimez pas directement.
  • Troncature de nom, point final, chemins trop longs : courants sous Windows ; lisez avec Python et signalez dans le rapport, ne comptez pas manuellement avec l’explorateur.
  • Même nom, contenu différent, ou même contenu mais métadonnées/export différents (MD5 différent) : vérifiez manuellement par titre/champs clés/extrait de texte, ne vous fiez pas uniquement au MD5 pour la déduplication.

Exécutez ensuite scripts/dedupe_corpus.py pour générer un plan de déduplication :

python scripts/dedupe_corpus.py --audit "output/audit/corpus_audit.csv" --root "répertoire_documents" --out-dir "output/audit" --apply

Porte : sample_flow.md doit pouvoir faire le bilan :

Nombre de fichiers bruts (incluant .DS_Store/fichiers sans extension)
- Fichiers de métadonnées/cachés
- Formats non supportés/à convertir (unsupported)
- Répertoires isolés comme _duplicates (quarantined)
- 0 octet/corrompus/chiffrés/texte insuffisant
= Nombre de documents lisibles
- Hors portée (période/type/langue)
= Nombre de documents valides
- Copies en doublon
= Nombre d’échantillons uniques (unique_valid_files)
- Variables clés manquantes/impossibles à coder
= Taille de l’échantillon d’analyse

Chaque modèle a son propre N ; n’utilisez pas un N unique pour tout.

1B Audit de qualité des données tabulaires

Si les données sont directement au format CSV/Excel/SPSS, faites d’abord un contrôle au niveau des champs avant le codage/modélisation :

  • Nombre de lignes, nombre de colonnes, type de chaque colonne (numérique/catégoriel/texte/date), taux de valeurs manquantes, nombre de valeurs uniques.
  • La clé primaire/ID est‑elle unique ? lignes en double ? enregistrements multiples pour la même unité ?
  • Les valeurs des variables catégorielles sont‑elles orthographiées de manière incohérente (mélange « oui/non/1/0/VRAI ») ? plage de dates.
  • Plage des variables continues, valeurs aberrantes, troncature au P99, besoin de transformation log.
  • Questions inversées dans les échelles, décomposition des choix multiples, cohérence des unités.
  • Encodage (UTF-8-SIG/GB18030), séparateur décimal, validité des noms de variables SPSS.

csv_to_spss_syntax.py nettoie les noms de variables illégaux/en double et génère .sps ; auto_stats.py produit des statistiques descriptives, des tests inter‑groupes et des corrélations pour détecter les problèmes de données, mais ne remplace pas les modèles formels.

Porte : Pouvoir expliquer, pour chaque colonne : origine, type, traitement des valeurs manquantes, traitement des valeurs aberrantes, et modèle dans lequel elle entre finalement.


Phase 2 : Protocole de codage/extraction

2.1 Codage textuel

  1. Rédigez d’abord une instance de assets/codebook-template.md : chaque variable doit avoir définition, valeurs, règle de décision, emplacement de la preuve, exemple positif, contre‑exemple, règle de valeur manquante.
  2. Utilisez scripts/make_coding_sheet.py pour extraire le texte complet et les phrases de preuve candidates, générant une feuille de codage ; elle ne fournit que des fragments de preuve, pas le jugement final.
    • Par défaut --profile generic : pour entretiens, articles, documents politiques, rapports, pages web, comptes‑rendus de réunions, etc.
    • --profile legal : extrait en plus les tribunaux, numéros d’affaire, provinces, motifs candidats ; à utiliser uniquement pour les documents de jugements chinois.
    • Les tableaux CSV/TSV/JSON/XLSX sont ignorés et redirigés vers le processus statistique ; les images/audio/vidéo sont redirigés vers OCR/transcription d’abord.
  3. Lors du codage (manuel/LLM), chaque enregistrement doit conserver la phrase de preuve *_ev ; tout codage sans phrase de preuve est considéré incomplet.
  4. Échantillonnez 10–15 % des documents pour un double codage (deux codeurs/deux sessions) ; rapportez le taux d’accord ou le κ de Cohen ; les divergences sont tranchées avant de modifier le codebook.
  5. Une fois le codebook gelé, procédez au codage complet ; les modifications ultérieures doivent être documentées avec version et champ d’impact.

2.2 Questionnaire/échelle/extraction structurée

  • Commencez par un dictionnaire de variables au niveau des items : numéro de question, libellé, valeurs, questions inversées, codes de valeurs manquantes.
  • Les questions à choix multiple/classement sont décomposées en colonnes 0/1 ou multiples ; les scores d’échelle sont d’abord vérifiés pour leur fiabilité (α/ω) et leur dimensionnalité.
  • Les questions ouvertes peuvent d’abord être codées par thème, puis transformées en variables de comptage/catégorielles ; ne confondez pas fréquence des mots avec thème.
  • Les clés primaires, unités, champs temporels des données tabulaires doivent pouvoir être retracés jusqu’au fichier source.

Porte : Choisissez au hasard 10 enregistrements ; vous devez pouvoir remonter de « valeur codée → phrase de preuve/champ original → texte original/ligne originale ». Sinon, retournez au codebook.

Voir references/02-coding-protocol.md.


Phase 3 : Jeu de données

Ensemble recommandé :

  • data/coded.jsonl : détails du codage par document + fragments de preuve, faciles à retracer.
  • data/analysis.csv : tableau large pour l’analyse, une ligne par unité d’analyse.
  • data/analysis.sav : ouvrable directement dans SPSS, avec étiquettes de variables et de valeurs.

Colonnes de marquage obligatoires :

ColonneSignification
in_scopeAppartient‑il à la portée de la recherche (période, type, région, langue) ?
in_analysisInclus dans les statistiques descriptives (exclut les fichiers impossibles à coder/à clés manquantes)
model1_sample, etc.Marqueur d’échantillon spécifique à chaque modèle ; n’utilisez pas in_analysis comme substitut
dup_groupID du groupe de doublons ; 0 pour la copie conservée, 1 pour les copies
exclusion_reasonRaison de l’exclusion, pour faciliter la description du flux d’échantillon

Utilisez scripts/csv_to_spss_syntax.py pour générer .sps, évitant les erreurs de type de colonne lors de l’écriture manuelle de GET DATA. Si le CSV contient des valeurs binaires textuelles comme « oui/non, présent/absent, supporte/ne supporte pas », le script ajoute automatiquement un RECODE ... ('oui'=1) ('non'=0) INTO *_num ; les modèles Logistiques utilisent directement les colonnes numériques ; ajoutez --no-recode si non souhaité.

Porte : Le nombre de lignes du CSV, du JSONL, du SAV et le nombre d’échantillons uniques dans sample_flow.md doivent correspondre. Le N de chaque modèle doit pouvoir être recalculé à partir des conditions de filtre.


Phase 4 : Analyse statistique et extensions

Rédigez d’abord un plan d’analyse avant d’examiner les résultats. Par défaut, combinez « analyse principale + descriptives + bivarié + multivarié + diagnostic + hétérogénéité + robustesse », pas seulement un modèle principal.

Exécutez d’abord le script de dépistage automatique pour produire les statistiques descriptives, les tests inter‑groupes, les corrélations et les modèles univariés :

python scripts/auto_stats.py --data data/analysis.csv --config assets/chart_config.example.json --out output/analysis_pack

Il produit descriptives.csv, group_tests.csv, binary_rates.csv, correlations.csv, univariate_models.csv, univariate_skipped.csv et analysis_pack.md, utiles pour identifier les variables méritant une modélisation plus poussée ; les modèles finaux sont estimés selon les spécifications prédéfinies dans SPSS/R/Stata ; ne filtrez pas les variables en utilisant les p‑values du dépistage automatique.

Le script identifie automatiquement le type de variable de résultat :

  • 0/1 → résultat binaire (Logistique/OR).
  • Numérique continu → résultat continu (OLS/moyenne+IC), test inter‑groupe avec Kruskal–Wallis si plusieurs catégories.
  • Multi‑catégoriel → résultat catégoriel, test inter‑groupe avec χ²/Cramér’s V ; les variables indépendantes multi‑catégorielles sont transformées en variables muettes pour les modèles univariés OLS/Logit, rapportées sous forme variable_niveau.
  • Un résultat multi‑catégoriel n’est pas transformé en Logit binaire ; le modèle principal doit utiliser un Logit multinomial ou fusionner les catégories.
  • Les étiquettes textuelles courantes comme « oui/non, présent/absent, supporte/ne supporte pas » sont automatiquement mappées en 0/1 ; pour tout autre texte binaire, utilisez l’option de configuration outcome_map.
  • Les modèles univariés avec séparation complète ou estimation instable sont écrits dans univariate_skipped.csv, sans OR aberrants.
  • Si la colonne de résultat est entièrement manquante, si le filtrage donne 0 ligne ou si filter_query est mal orthographié, le script échoue directement avec une erreur.

Incluez au minimum :

  • Statistiques descriptives : N pour chaque groupe, proportion/moyenne, taux de résultat, intervalle de Wilson à 95 %.
  • Modèle principal : Logistique binaire / OLS / Logit multinomial, en précisant variable dépendante, catégorie de référence, variable indépendante principale, variables de contrôle.
  • Modèle de mécanisme/modération : termes d’interaction, pentes simples ou valeurs prédites par groupe.
  • Robustesse : changement de variable dépendante, changement d’échantillon, ajout/suppression de variables de contrôle, avant/après déduplication.
  • Diagnostics : multicolinéarité, séparation complète, cellules avec échantillon insuffisant, calibration/discrimination.
  • Hétérogénéité : par catégorie/région/année/groupe.
  • Explorations possibles : ACP, analyse des correspondances, clustering, ROC/calibration prédictive ; marquez‑les comme « exploratoire ».

Les tableaux de résultats doivent inclure : coefficient/OR, IC à 95 %, p, N, indicateurs d’ajustement, description de la catégorie de référence. Chaque modèle a sa propre ligne pour N.

Documentez les analyses effectuées et ignorées dans analysis_manifest.md (modèle dans references/08-analysis-expansion.md), ne rapportez pas seulement les résultats significatifs.

Les modèles de syntaxe SPSS et les normes d’interprétation se trouvent dans references/03-analysis-spss.md ; la liste des analyses étendues dans references/08-analysis-expansion.md.

Porte : Tout OR/β doit pouvoir être retracé en trois étapes : analysis.sps → fichier de sortie → tableau. analysis_manifest.md doit expliquer pourquoi chaque analyse est faite/ignorée, avec la taille d’échantillon. Le texte ne doit pas écrire « le document mentionne une situation » comme « la situation s’est réellement produite » en termes causaux.


Phase 5 : Graphiques de qualité publication (par défaut, vue d’ensemble, pas seulement 8 figures)

Exécutez d’abord scripts/auto_chart_pack.py pour générer un ensemble complet de graphiques, puis sélectionnez les figures principales pour le texte, les figures pour l’annexe et les graphiques supplémentaires nécessaires :

python scripts/auto_chart_pack.py \
  --data data/analysis.csv \
  --config assets/chart_config.example.json \
  --out output/chart_pack --tiff

Pas besoin de modifier le script pour les résultats continus/multi‑catégoriels : le type de résultat est automatiquement commuté pour produire des graphiques de distribution + moyenne/composition par groupe ; les résultats textuels peuvent également être mappés via outcome_map. L’option --coef supporte les colonnes metric (OR/HR/RR/beta) et n, et les forêts de points sont annotées avec N par échantillon du modèle ; --pred supporte les étiquettes 0/1 ou « oui/non » ; en cas de prédiction constante ou de catégorie unique, les courbes ROC/PR/calibration sont ignorées avec justification. term_labels peut mapper des noms de colonnes comme lv3 en français. Les graphiques en haltères à double proportion nécessitent la spécification de deux colonnes 0/1 dans la config via dumbbell. Pour les données de suivi temporel et événement, utilisez --survival-time, --survival-event (avec éventuellement --survival-group) pour les courbes de Kaplan‑Meier.

Par défaut, 7 groupes sont couverts, environ 40–55 figures : environ 44 pour les résultats binaires, 51 avec entrées de modèle ; environ 42 pour les résultats continus, 41 pour les multi‑catégoriels. Le nombre réel peut varier selon les types de colonnes, valeurs manquantes et éléments ignorés ; consultez chart_manifest.csv.

  • A Qualité des données : taux de valeurs manquantes, distribution de l’échantillon par catégorie/année/région, taux d’occurrence des variables binaires.
  • B Univariate : distribution du résultat (binaire/continu/multi‑catégoriel traité séparément, avec Q‑Q pour les continus), composition du traitement (barres + anneau), distributions numériques, composition catégorielle.
  • C Bivariate : catégorie × résultat, phase × résultat, heatmap/empilé catégorie × phase, différence région/niveau, heatmap de corrélation, nuage de points avec lissage, graphique à bulles ; pour les résultats continus, moyenne + IC à 95 %, pour les résultats multi‑catégoriels, diagramme empilé de composition intra‑groupe.
  • D Multivariate : violon/boxplot, matrice de nuages de points, haltères, PCA (éboulis/bipolaire/heatmap des contributions), dendrogramme de clustering Ward, MDS classique.
  • E Temporel : tendance du taux/moyenne du résultat, graphique de contrôle 3σ, taille de l’échantillon, barres empilées/surface de composition par phase ; pour les résultats multi‑catégoriels, tendance de composition par catégorie de résultat.
  • F Diagnostic du modèle : forêt de points, ROC, calibration, distribution des prédictions, matrice de confusion, PR, Lift par décile (nécessite --coef/--pred) ; Kaplan‑Meier (nécessite colonnes de suivi).
  • G Annexe : analyse des correspondances, Pareto.

Stratégie de création de figures :

  • Chaque résultat principal doit avoir au moins 2 figures : figure du résultat principal + figure de robustesse/diagnostic/hétérogénéité.
  • 7–10 figures dans le texte, 20–50 en annexe ; pas de limite supérieure.
  • Pour chaque figure, commencez par écrire « Quelle question répond‑elle ? » ; ne dessinez pas sans question.
  • Utilisez references/07-chart-atlas.md pour la sélection, couvrant les graphiques avancés courants de SPSS : barres groupées/empilées/100 %, lignes/surfaces, histogrammes, boxplots/violons, barres d’erreur, nuages de points/bulles, matrice de nuages de points, Pareto, ROC, calibration, Kaplan‑Meier (avec données de survie), éboulis, contributions factorielles, dendrogramme de clustering, analyse des correspondances, MDS, graphiques de contrôle, etc.
  • Chaque figure est enregistrée dans chart_manifest.csv : numéro de figure, question, type, variables, N, légende, chemin de fichier.
  • Cohérence des couleurs dans tout le manuscrit : même phase/même catégorie utilise la même couleur dans chaque figure.
  • La légende de la figure indique N, source des données, spécification du modèle, catégorie de référence ; les figures exploratoires (PCA/CA/clustering) doivent porter la mention « exploratoire ».

Utilisez scripts/pubfig.py pour un style unifié :

from pubfig import set_style, save_fig, wilson_ci, forest_plot
set_style()  # 15 cm de largeur, Police SimSun/Times New Roman, 600 dpi

Normes :

  • Largeur physique 15 cm (dans A4, largeur du texte ≤ 15,4 cm), taille de police 7,2–8,5 pt.
  • Police chinoise SimSun, police occidentale Times New Roman ; intégration des polices dans le PDF (Type 42).
  • Pas de titre dans la figure ; le titre et la légende sont placés dans le document Word.
  • Sortie simultanée PNG 600 dpi, PDF vectoriel, TIFF LZW (avec --tiff).
  • Les barres d’erreur indiquent IC à 95 % ; dans les forêts de points, points pleins = significatifs, points vides = non significatifs.
  • Les variables continues asymétriques sont transformées en log10 ou tronquées au P99, avec mention dans les étiquettes d’axe/légende.

Porte : Chaque figure dans chart_manifest.csv a une question, N, légende et fichier ; les figures principales du texte et celles de l’annexe ne se chevauchent pas ; la largeur des images intégrées dans le PDF est ≥ 3000 px (environ 600 dpi pour 15 cm de large) ; légende, figure et citation dans le texte sont tous présents.

Voir references/04-figures-publication.md et references/07-chart-atlas.md.


Phase 6 : Assemblage du manuscrit

Exigences de mise en page Word :

  • Les figures, titres de figures et légendes doivent être paramétrés en « même page que le paragraphe suivant » pour éviter les sauts de page au milieu d’une figure.
  • Les lignes des tableaux ne doivent pas être coupées par un saut de page ; répétez l’en‑tête du tableau sur chaque page.
  • La légende du tableau figure sous le tableau ; donnez d’abord N, puis les règles de significativité.
  • La première référence à une figure/tableau dans le texte doit utiliser le même numéro que le fichier (Figure 1, Tableau 1, Figure annexe 1).
  • Les N et pourcentages dans le résumé, le texte, les tableaux, les figures et l’annexe doivent provenir de la même source ; le N de chart_manifest.csv est renvoyé dans les légendes.

Lors de l’exportation Word vers PDF, Word réduit souvent les images 600 dpi à environ 200 dpi. Utilisez scripts/export_pdf_hires.py pour exporter puis réinsérer les images originales :

python scripts/export_pdf_hires.py --docx "manuscript.docx" --out-pdf "manuscript.pdf" --figure-map "figure_map.json"

Porte : Le nombre de pages, de figures et de titres de figures du PDF sont cohérents ; chaque image intégrée a une largeur ≥ 3000 px ; les tableaux ne présentent pas de lignes coupées/d’en‑tête manquant.

Voir references/05-manuscript-assembly.md.


Phase 7 : Vérification finale

Exécutez :

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

Puis passez en revue manuellement selon references/06-qa-checklist.md. Les points essentiels ne sont pas le format, mais :

  • Chaque nombre dans le flux d’échantillon doit correspondre.
  • Les copies en doublon ont été retirées de l’échantillon d’analyse, ou leur impact doit être clairement rapporté.
  • Chaque N dans le texte correspond à celui de la table/figure/modèle correspondant.
  • Les figures et le texte indiquent la même direction : pas de « figure en hausse, texte dit baisse ».
  • Les numéros de légende dans le PDF doivent être reconnaissables (par ex. « Figure 1 : », « Figure 1. », « Table 1 : ») ; la vérification de faible résidence ne concerne que les images suffisamment grandes ; un CSV vide provoque une erreur directe.
  • Les variables de codage théorique doivent être clairement expliquées dans la section Méthodes, sans être présentées comme mesurées directement à partir des documents bruts.
  • Les conclusions utilisent « association/corrélation », pas de langage causal.

Liste des scripts

Les commandes ci‑dessous supposent que le répertoire courant est la racine du skill ; si vous exécutez depuis un répertoire de projet, remplacez scripts/ par le chemin absolu du skill.

ScriptRôle
scripts/audit_corpus.pyScanne n’importe quel répertoire de documents : statut des fichiers, texte/nombre de pages, MD5, doublons, distribution des formats, indices d’année
scripts/dedupe_corpus.pyGénère un plan de déduplication basé sur l’audit ; --apply déplace vers _duplicates/
scripts/make_coding_sheet.pyExtrait le texte intégral et les phrases de preuve clés depuis PDF/Word/PPT/HTML/texte ; --profile legal extrait en plus les tribunaux/numéros d’affaire
scripts/text_extract.pyExtraction de texte et vérification de fichiers généralisée (PDF/DOCX/ODT/PPTX/XLSX/HTML/texte/images/audio/vidéo)
scripts/analysis_utils.pyFonctions internes partagées : filtrage d’échantillon, identification du type de résultat, encodage des étiquettes binaires ; importé par les scripts de stats/figures automatiques
scripts/csv_to_spss_syntax.pyGénère la syntaxe SPSS GET DATA à partir de l’en‑tête CSV ; nettoie les noms de variables illégaux/en double et écrit les étiquettes de variables
scripts/auto_stats.pyStatistiques descriptives automatiques, tests inter‑groupes, corrélations, modèles univariés (variables muettes pour les catégorielles), détection de séparation complète
scripts/auto_chart_pack.pyGénère automatiquement 40–55 figures de qualité/ distribution/bivariées/clustering/temporelles/diagnostic de modèle/survie + manifest, selon le rôle des colonnes
scripts/pubfig.pyStyle unifié pour les figures de publication, Wilson CI, forêt de points, heatmap, violon, ROC/PR, PCA, MDS, clustering, KM, graphiques de contrôle, etc. (30+ types)
scripts/export_pdf_hires.pyExporte Word → PDF et réinsère les images originales en 600 dpi
scripts/qa_outputs.pyVérifie la résolution des figures PDF, le nombre de figures/tableaux dans le docx, les données vides, les doublons de clés, le N/les légendes/les chemins du manifest

Documentation de référence

FichierQuand le lire
references/01-corpus-audit.mdAu début de l’audit, lorsqu’on rencontre des doublons/fichiers corrompus/scans/formats multiples
references/02-coding-protocol.mdLors de la conception des variables, de la rédaction du codebook, du test de fiabilité
references/03-analysis-spss.mdLors de la définition du modèle, de l’écriture de la syntaxe SPSS, de l’interprétation des OR
references/04-figures-publication.mdLors du dessin des figures, du choix des couleurs, de l’exportation pour soumission
references/05-manuscript-assembly.mdLors de la mise en page Word, de l’exportation PDF, du traitement des légendes
references/06-qa-checklist.mdAvant soumission/livraison, pour une vérification exhaustive
references/07-chart-atlas.mdPour choisir les types de figures, correspondre aux graphiques SPSS avancés, déterminer le nombre de figures
references/08-analysis-expansion.mdPour savoir quelles analyses supplémentaires exécuter en dehors du modèle principal, comment documenter ce qui est fait/ignoré

Modèles

  • assets/scope-template.md : squelette de la portée de recherche, critères d’inclusion/exclusion, flux d’échantillon.
  • assets/codebook-template.md : squelette du manuel de codage des variables.
  • assets/figure-spec-template.md : tableau de spécifications des légendes et des figures.
  • assets/figure_map.example.json : exemple de mappage des figures pour le renvoi Word → PDF.
  • assets/delivery-checklist.md : liste de contrôle de livraison.
  • assets/coding-keywords.json : dictionnaire de mots‑clés remplaçables (exemple de placeholder générique).
  • assets/chart_config.example.json : exemple de configuration des colonnes, étiquettes, filtre d’échantillon d’analyse (filter_query).
  • assets/analysis-manifest-template.md : liste des analyses principales/étendues/ignorées.

Points d’échec les plus fréquents

  1. Prendre le nombre de fichiers dans un dossier comme taille d’échantillon. Il faut d’abord retirer les métadonnées, fichiers corrompus, doublons, formats non supportés, hors portée.
  2. Dédupliquer uniquement par nom de fichier. Un même contenu peut avoir plusieurs versions avec/sans identifiant, « - copie », « (2) ».
  3. Confondre le N des statistiques descriptives avec le N du modèle. Les modèles ont des valeurs manquantes, des filtres ; le N est toujours plus petit.
  4. Considérer que « le document mentionne une situation » signifie « la situation s’est réellement produite ». C’est une association textuelle, pas un effet causal.
  5. Le PDF exporté depuis Word semble correct, mais les images ne font que 200 dpi. Il faut réinsérer les images et vérifier leur largeur intégrée.
  6. Ne dessiner qu’une seule figure principale du résultat. Les distributions, l’hétérogénéité, la robustesse, les diagnostics ne sont pas produits ; l’utilisateur devra demander des précisions.
  7. Considérer le contenu des citations/annexes comme du matériel principal. Les types de documents, rapports, navigation web doivent être déterminés par la structure du titre/du corps, pas seulement par les mots‑clés du texte intégral.
  8. Traiter le résultat textuel « oui/non » comme une variable continue. Utilisez outcome_map pour définir la classe positive, ou codez en 0/1 dans le CSV ; le script ne devine pas la direction.
  9. Auditer un seul format de fichier et ignorer silencieusement les autres. Tous les fichiers doivent avoir un statut ; total_files doit correspondre à l’explorateur de fichiers.
  10. Mettre des données tabulaires dans le processus de codage textuel. Les CSV/Excel passent directement par auto_stats/SPSS ; le codage textuel est adapté aux documents non structurés comme les entretiens, les pages web.

Skills associés