Empirische Forschungspipeline
Verwandelt „einen Haufen ungeordneter Materialien“ in einen überprüfbaren Stichprobenprozess, nachvollziehbare Codierungs-/Felddaten, reproduzierbare Modelle und einreichbare Grafiken und Manuskripte. Dieser Skill ist nicht auf eine bestimmte Disziplin, Sprache oder ein bestimmtes Dateiformat beschränkt; juristische Urteile sind nur ein Beispiel für „Textcodierung“. Fragebögen, Interviews, Nachrichten, politische Dokumente, Versuchsprotokolle, offene Daten, Webseiten und Datenbankexporte sind gleichermaßen geeignet.
Die Beispielzahlen, Dateinamen, Pfade und Variablenwerte in diesem Repository/Paket sind fiktive Platzhalter und enthalten keine echten Materialien, Codierungsdaten, SPSS-Daten oder Manuskriptentwürfe.
Wann verwenden
- Der Benutzer übergibt einen Ordner, der eine Mischung aus PDFs, Word, Excel, CSV, Text, Webseiten, Interviewtranskripten, Bildern oder Scans enthält, und fordert Aufbereitung, Codierung, Statistik, Diagramme oder die Erstellung eines Papers.
- Es liegen bereits CSV/SPSS-Daten vor, die bereinigt, zusammengeführt, um neue Materialien ergänzt, mit korrigierter Stichprobendefinition oder mit erneuten Modellläufen versehen werden müssen.
- Fragebögen, Interviews, Experimente, Beobachtungen, öffentliche Daten usw. benötigen deskriptive Statistiken, Gruppenvergleiche, Regressionen, Heterogenitäts-, Robustheits- oder Vorhersagebewertungen.
- Ein Word/PDF des empirischen Teils wird benötigt, wobei die Zahlen in Diagrammen, Tabellen und Text absolut konsistent sein müssen.
- Der Benutzer sagt „ähnliches Material muss noch einmal bearbeitet werden“ und möchte denselben Ablauf wiederverwenden.
Materialtypen und Verarbeitungsgrenzen
| Material | Native Verarbeitung | Hinweis |
|---|---|---|
| Textebene, Seitenzahl, Zeichenzahl, Bildanzahl, Verschlüsselungsstatus | Scans zuerst OCR; bildbasierte PDFs werden als image_only markiert | |
| DOCX / ODT / PPTX | Absätze, Tabellen, Folientext | Alte Formate .doc/.ppt zuerst konvertieren |
| XLSX / XLSM | Arbeitsblätter, Zelltext; schreibgeschützt öffnen | .xls zuerst konvertieren; Installation von openpyxl empfohlen |
| CSV / TSV / JSON / JSONL | Felder, Zeilenanzahl, Kodierung, Fehlende Werte; Datenqualitätsaudit für Tabellen | Kodierungsblätter überspringen Tabellen und gehen direkt zu auto_stats |
| TXT / MD / HTML / XML / YAML / RTF | Reine Textextraktion; HTML-Entfernung von Tags | Webseitentext verwendbar; Skripte/Styles werden entfernt |
| Bilder (PNG/JPG/TIFF usw.) | Dateiliste; Maße/Seitenzahl | Zuerst OCR, dann Codierung; dieser Skill hat keine eigene OCR |
| Audio/Video | Dateiliste | Zuerst Transkription/Frameextraktion, dann Codierung; dieser Skill hat kein eigenes ASR |
| Archive | Dateiliste | Zuerst entpacken; Audit markiert als unsupported |
| Unbekannte/proprietäre Formate | Dateiliste | Zuerst konvertieren oder in obige Formate exportieren |
„Beliebiges Material“ bedeutet nicht, dass jede Binärdatei direkt analysiert werden kann. Dieser Skill nimmt zunächst alle Dateien in das Audit und den Stichprobenabgleich auf; Formate, die nicht direkt gelesen werden können, werden klar markiert und mit einem Konvertierungspfad versehen – sie werden nicht stillschweigend übersehen.
Sechs harte Regeln
- Erst auditieren, dann codieren/modellieren. Bevor nicht klar ist, wie viele Dateien, wie viele lesbare Texte, wie viele Duplikate, wie viele Feldfehlstellen und Ausschlussgründe, beginne nicht mit der Statistik.
- Nach Inhalt deduplizieren, nicht nach Dateinamen. Gleicher Name, anderer Inhalt / anderer Name, gleicher Inhalt sind häufig; verwende mindestens MD5, dann Überprüfung anhand Titel/Schlüsselfelder/Textstichprobe.
- Eine Zeile = eine Analyseeinheit. Dokument, Befragter, Fall, Institution, Region-Jahr oder Fragebogen müssen zu Projektbeginn festgelegt werden; bei gemischten Einheiten in den Einschränkungen erläutern.
- Jeder Codierungs-/Extraktionswert benötigt einen Beleg. Steht nichts im Originaltext, notiere
NA/nicht dokumentiert, nicht standardmäßig 0; Verneinungen, Meinungen Dritter, Paraphrasen nicht als endgültige Fakten werten. - Beschreibe Stichprobe N ≠ Modell N. Jedes Modell berichtet eigenes N und Selektionskriterien; Text, Tabelle, Grafiken, Abstract müssen denselben Stichprobenumfang verwenden.
- Assoziation ≠ Kausalität. Schreibe „Assoziation/Entsprechung/Wahrscheinlicher“, nicht „verursacht/führt zu/erweist sich als wirksam“.
Prozessübersicht
0 Bereich & Frage → 1 Material-/Datenaudit → 2 Codierungs-/Extraktionsprotokoll → 3 Datensatz
↓
7 Endkontrolle ← 6 Manuskriptmontage ← 5 Publikationsgrafiken ← 4 Statistische Analyse
Jede Phase hat ein „Gate“. Wird das Gate nicht passiert, wird die nächste Phase nicht betreten.
Phase 0: Bereich & Frage
Schreibe zuerst eine Seite scope.md, die mindestens enthält:
- Forschungsfrage, theoretischer Mechanismus, erwarteter Beitrag.
- Materialtyp und -quelle: Datenbank, Suchstrategie/Stichprobenrahmen, Zeitraum, Sprache, Region.
- Analyseeinheit: Ein Dokument/ein Befragter/ein Fall/eine Institution/ein Fragebogen.
- Ein-/Ausschlusskriterien: Zeit, Typ, Sprache, Zeichenzahl, Duplikate, Nicht-lesbar, Fehlen von Schlüsselfeldern.
- Erwartete Variablenliste und Rollen: Abhängige Variable, zentrale unabhängige Variable, Mechanismus/Moderator, Kontrollvariablen.
- Datenform: Text, Tabelle, gemischt; manuelle Codierung, Fragebogenskalen, experimentelle Gruppen oder Sekundärdaten erforderlich.
Gate: Kann in einem Satz erklären, wie viele Einheiten bei jedem Schritt von „Rohmaterial → lesbares Material → Stichprobe im Bereich → Analysestichprobe“ wegfallen und warum.
Phase 1: Material- & Datenaudit (muss zuerst laufen)
1A Dateiebene-Audit
Führe scripts/audit_corpus.py aus:
python scripts/audit_corpus.py --root "Materialverzeichnis" --out-dir "output/audit" --min-chars 100
Standardmäßig scannt es alle unterstützten Typen; es ist nicht nötig, einzeln --ext anzugeben; --list-ext zeigt die vollständige Liste. Es erzeugt:
| Datei | Zweck |
|---|---|
corpus_audit.csv | Dateierweiterung, -typ, Byte, Seiten/Tabellen, Zeichen, Bilder, MD5, Status, Fehler |
corpus_summary.json | Maschinenlesbare Zusammenfassung |
corpus_duplicates.csv | Duplikatgruppen, Vorschlag zum Behalten/Entfernen |
corpus_report.md | Direkt ins Projektlog einfügbarer chinesischer Bericht |
Zustandsautomat (jede Datei muss in eine Kategorie fallen):
| Status | Bedeutung | Geht in Analyse? |
|---|---|---|
valid | Öffenbar, ausreichend Text/Daten | Ja |
metadata | ._*, .DS_Store usw. | Nein |
hidden | Versteckte Dateien/Verzeichnisse | Nein, außer vom Benutzer bestätigt |
unsupported | Unbekanntes Format, Archiv, altes Office, fehlender Parser | Nein, zuerst konvertieren/entpacken |
quarantined | In Übersprungsverzeichnissen wie _duplicates | Nein, isolierte Kopie |
zero_byte | 0 Byte | Nein |
corrupt | Nicht öffenbar, Datei beschädigt | Nein |
encrypted | Passwort-/Berechtigungsschutz | Nein, außer entschlüsselbar |
textless | Seiten/Zellen vorhanden, aber nicht genug Text | Nein, prüfen ob leere Datei oder Neu-Export nötig |
image_only | Bild/Scan, keine Textebene | Nach OCR nutzbar |
media | Audio/Video | Zuerst Transkription/Frameextraktion |
Duplikate sind kein eigener status: Inhaltlich gleiche Dateien bleiben valid, zusätzlich mit dup_group/dup_role als keeper/duplicate markiert; der Bericht unique_valid_files zieht bereits Kopien ab.
Jeder Punkt muss einzeln behandelt werden:
._*,.DS_Store: macOS-Metadaten, keine Forschungsmaterialien; als „Nicht-Materialdateien“ verbuchen, nicht in die Stichprobe einrechnen. Lesbare._*-Dateien werden in der Fehlerspalte vermerkt und müssen manuell geprüft werden.- Versteckte Dateien/Verzeichnisse als
hiddennotieren; nicht unterstützte Erweiterungen alsunsupported; Übersprungsverzeichnisse wie_duplicatesalsquarantined. Keine der drei Kategorien gelangt in die Stichprobe, muss aber in der Gesamtzahl und im Bericht erscheinen. - 0 Byte, nicht öffenbar, verschlüsselt, textarm: jeweils als
zero_byte/corrupt/encrypted/textlesserfassen; bildbasierte PDFs alsimage_only. - Top-Level-/Jahresverteilung nur für eindeutige Stichproben (
validund kein Duplikat) berechnen; Metadaten, beschädigte Dateien oder Duplikate nicht in die Stichprobenstruktur einrechnen. - Duplikatkopien: Nach MD5 gruppieren; diejenige mit „Kennung/Jahr im Dateinamen, kürzerem Pfad, vollständigem Text“ behalten, restliche nach
_duplicates/verschieben, nicht löschen. - Abgeschnittene Dateinamen, nachgestellte Punkte, zu lange Pfade: unter Windows häufig; mit Python auslesen und im Bericht festhalten, nicht manuell im Explorer zählen.
- Gleicher Name, anderer Inhalt / gleicher Inhalt, aber unterschiedliche Metadaten/Exporteinstellungen (MD5 unterschiedlich): müssen manuell anhand Titel/Schlüsselfelder/Textstichprobe überprüft werden, nicht nur automatisch nach MD5 deduplizieren.
Anschließend scripts/dedupe_corpus.py ausführen, um den Deduplizierungsplan zu erstellen:
python scripts/dedupe_corpus.py --audit "output/audit/corpus_audit.csv" --root "Materialverzeichnis" --out-dir "output/audit" --apply
Gate: sample_flow.md muss abgeglichen werden:
Ursprüngliche Dateianzahl (inkl. .DS_Store/Dateien ohne Erweiterung)
- Metadaten/versteckte Dateien
- Nicht unterstützt/zu konvertieren (unsupported)
- _duplicates etc. Isolationsverzeichnisse (quarantined)
- 0 Byte/beschädigt/verschlüsselt/textarm
= Lesbare Materialien
- Außerhalb des Bereichs (Zeit/Typ/Sprache)
= Gültige Materialien
- Duplikatkopien
= Eindeutige Stichproben (nach unique_valid_files)
- Fehlende Schlüsselvariablen/nicht codierbar
= Analysestichprobe
Jedes Modell hat sein eigenes N; nicht mit einem einzigen N für alles arbeiten.
1B Datenqualitätsaudit für Tabellen
Wenn die Materialien selbst CSV/Excel/SPSS-Daten sind, zuerst eine feldebene Prüfung durchführen, bevor codiert/modelliert wird:
- Zeilenanzahl, Spaltenanzahl, Typ jeder Spalte (numerisch/kategorial/text/Datum), Fehlstellenrate, Anzahl eindeutiger Werte.
- Primärschlüssel/ID eindeutig? Doppelte Zeilen? Mehrfache Aufzeichnungen derselben Einheit.
- Schreibweisen kategorialer Variablen inkonsistent (z.B. "ja/nein/1/0/TRUE" gemischt); Datumsbereich.
- Bereich stetiger Variablen, Ausreißer, P99-Abschneidung, Log-Transformation erforderlich?
- Fragebogenskalen: invertierte Items, Mehrfachauswahl aufteilen, Einheitenkonsistenz.
- Kodierung (UTF-8-SIG/GB18030), Dezimaltrennzeichen, SPSS-Variablennamen-Gültigkeit.
csv_to_spss_syntax.py bereinigt ungültige/doppelte Variablennamen und erzeugt .sps; auto_stats.py liefert deskriptive Statistiken, Gruppenvergleiche und Korrelationen, um Datenprobleme zu erkennen, ersetzt jedoch nicht das formale Modell.
Gate: Kann für jede Spalte Quelle, Typ, Fehlstellenbehandlung, Ausreißerbehandlung und das endgültige Modell, in das sie eingeht, angeben.
Phase 2: Codierungs-/Extraktionsprotokoll
2.1 Textcodierung
- Zuerst eine Instanz von
assets/codebook-template.mderstellen: Jede Variable benötigt Definition, Ausprägungen, Entscheidungsregel, Belegstelle, Positivbeispiel, Negativbeispiel, Fehlstellenregel. - Mit
scripts/make_coding_sheet.pyden Volltext und Kandidatenbelegsätze extrahieren, um ein Codierungsarbeitsblatt zu erzeugen; es liefert nur Belegfragmente, nicht die endgültige Entscheidung.- Standard
--profile generic: geeignet für Interviews, Nachrichten, Politikdokumente, Berichte, Webseiten, Sitzungsprotokolle und beliebige Textmaterialien. --profile legal: extrahiert zusätzlich Gericht, Aktenzeichen, Provinz, Streitgegenstand-Kandidaten; nur bei chinesischen Gerichtsurteilen verwenden.- Tabellen (CSV/TSV/JSON/XLSX) werden übersprungen und auf den statistischen Prozess verwiesen; Bilder/Audio/Video werden auf vorherige OCR/Transkription hingewiesen.
- Standard
- Bei manueller/LLM-Codierung mindestens den
*_ev-Belegsatz pro Datensatz speichern; Codierung ohne Belegsatz gilt als unvollständig. - 10–15% der Materialien doppelt/zweimalig codieren, Übereinstimmungsrate oder Cohens κ berichten; Unstimmigkeiten zuerst klären, dann Codebuch ändern.
- Codebuch einfrieren, dann vollständige Codierung; spätere Änderungen mit Version und betroffenem Umfang dokumentieren.
2.2 Fragebögen/Skalen/Strukturierte Extraktion
- Zuerst ein Variablenwörterbuch auf Item-Ebene erstellen: Item-Nummer, Item-Text, Ausprägungen, invertierte Items, Fehlstellencode.
- Mehrfachauswahl-/Rangfolgeitems in 0/1-Spalten oder mehrere Spalten aufteilen; Skalensummen zuerst auf Reliabilität (α/ω) und Dimensionen prüfen.
- Offene Items können zunächst thematisch codiert, dann in Zähl-/Kategorievariablen umgewandelt werden; Wortfrequenz nicht direkt als Thema behandeln.
- Primärschlüssel, Einheit, Zeitfeld von Tabellendaten müssen auf die Originaldatei zurückverfolgbar sein.
Gate: Zufällig 10 Datensätze auswählen; muss vom „Codierungswert → Belegsatz/Originalfeld → Originaltext/Originalzeile“ vollständig zurückverfolgbar sein; sonst zurück zur Codierungstabelle, Regeln anpassen.
Siehe references/02-coding-protocol.md.
Phase 3: Datensatz
Empfohlenes Dreiergespann:
data/coded.jsonl: Codierungsdetails pro Material + Belegfragmente, ermöglicht Rückverfolgung.data/analysis.csv: Analyse-Breittabelle, eine Zeile pro Analyseeinheit.data/analysis.sav: Direkt in SPSS öffnbar, mit Variablen-/Wertelabels.
Erforderliche Markierungsspalten:
| Spalte | Bedeutung |
|---|---|
in_scope | Gehört zum Forschungsbereich (Zeit, Typ, Region, Sprache) |
in_analysis | Geht in deskriptive Statistik ein (ausgeschlossen bei nicht codierbar/schlüssel fehlt) |
model1_sample usw. | Stichprobenmarkierung pro Modell; nicht in_analysis als Ersatz verwenden |
dup_group | Duplikatgruppen-ID; behaltene = 0, Kopie = 1 |
exclusion_reason | Ausschlussgrund, erleichtert Schreiben des Stichprobenflusses |
Mit scripts/csv_to_spss_syntax.py .sps generieren, um Spaltentyp-Fehlstellungen bei manuellem GET DATA zu vermeiden. Bei binären Textwerten wie „ja/nein, vorhanden/nicht vorhanden, unterstützt/nicht unterstützt“ fügt das Skript automatisch RECODE ... ('ja'=1) ('nein'=0) INTO *_num an; Logistic verwendet die numerische Spalte; mit --no-recode unterdrücken.
Gate: Zeilenanzahl von CSV, JSONL, SAV und unique_valid_files in sample_flow.md stimmen überein; jedes Modell-N kann aus den Filterbedingungen neu berechnet werden.
Phase 4: Statistische Analyse & Erweiterungen
Zuerst Analyseplan schreiben, dann Ergebnisse ansehen. Standardmäßig eine Kombination aus „Hauptanalyse + deskriptiv + bivariat + multivariat + Diagnose + Heterogenität + Robustheit“ durchführen, nicht nur ein einziges Hauptmodell.
Zuerst das automatische Screening-Skript für deskriptive Statistiken, Gruppenvergleiche, Korrelationen und univariate Modelle ausführen:
python scripts/auto_stats.py --data data/analysis.csv --config assets/chart_config.example.json --out output/analysis_pack
Es erzeugt descriptives.csv, group_tests.csv, binary_rates.csv, correlations.csv, univariate_models.csv, univariate_skipped.csv und analysis_pack.md, die Variablen für weitere Modellierung identifizieren; das endgültige Modell wird dennoch gemäß vordefinierter Spezifikation in SPSS/R/Stata geschätzt, nicht mit p-Werten aus dem automatischen Screening.
Das Skript erkennt automatisch den Ergebnistyp:
- 0/1 → Binäres Ergebnis (Logistic/OR).
- Kontinuierlich numerisch → Kontinuierliches Ergebnis (OLS/Mittelwert+CI); bei Mehrfachkategorien Gruppenvergleich mittels Kruskal–Wallis.
- Mehrfachkategorisch → Kategoriales Ergebnis, Gruppenvergleich mit Chi-Quadrat/Cramér’s V; mehrkategoriale unabhängige Variablen gehen als Dummy-Variablen in univariate OLS/Logit ein und werden als
Variable_Stufeberichtet. - Ein mehrkategoriales Ergebnis selbst wird nicht als binäres Logit modelliert; das Hauptmodell sollte stattdessen ein multinomiales Logit verwenden oder Kategorien zusammenfassen.
- Häufige Textlabels wie „ja/nein, vorhanden/nicht, unterstützt/nicht“ werden automatisch auf 0/1 abgebildet; andere binäre Textwerte müssen mit der Konfigurationsoption
outcome_mapals positive Klasse definiert werden. - Univariate Modelle mit vollständiger Separation oder instabiler Schätzung werden in
univariate_skipped.csvgeschrieben; es werden keine fiktiven riesigen ORs ausgegeben. - Wenn die Ergebnis-Spalte vollständig fehlt, nach Filterung 0 Zeilen oder
filter_queryfalsch geschrieben ist, wird das Skript mit einem Fehler abgebrochen.
Mindestens enthalten:
- Deskriptive Statistik: N, Anteil/Mittelwert, Ergebnisrate, 95% Wilson CI pro Gruppe.
- Hauptmodell: Binäres Logistic / OLS / Multinomiales Logit, mit Angabe der abhängigen Variable, Referenzkategorie, zentralen unabhängigen Variable und Kontrollvariablen.
- Mechanismus-/Moderationsmodell: Interaktionsterme, einfache Steigungen oder gruppierte Vorhersagewerte.
- Robustheit: Austausch der abhängigen Variable, Austausch der Stichprobe, Hinzufügen/Entfernen von Kontrollvariablen, vor/nach Deduplizierung.
- Diagnose: Multikollinearität, vollständige Separation, Zellen mit unzureichender Stichprobengröße, Kalibrierung/Diskrimination.
- Heterogenität: Nach Kategorie/Region/Jahr/Gruppe.
- Mögliche Exploration: PCA, Korrespondenzanalyse, Cluster, ROC/Kalibrierung für Vorhersage; als „explorativ“ kennzeichnen.
Berichtstabellen müssen enthalten: Koeffizient/OR, 95%-KI, p, N, Anpassungsgüte, Beschreibung der Referenzkategorie. Jedes Modell mit eigener N-Zeile.
Die durchgeführten und ausgelassenen Analysen in analysis_manifest.md festhalten (Vorlage siehe references/08-analysis-expansion.md); nicht nur signifikante Ergebnisse berichten.
SPSS-Syntaxvorlage und Interpretationsstandards siehe references/03-analysis-spss.md; Erweiterungsliste siehe references/08-analysis-expansion.md.
Gate: Jedes OR/β kann von analysis.sps → Ausgabedatei → Tabelle dreistufig zurückverfolgt werden; analysis_manifest.md erklärt, warum jede Analyse durchgeführt/nicht durchgeführt wurde, mit Stichprobenumfang; der Text enthält keine kausalen Schlussfolgerungen wie „im Text steht ein Fall“ = „tatsächlich ist ein Effekt eingetreten“.
Phase 5: Publikationsgrafiken (Standardmäßig Gesamtpaket, nicht nur 8 Grafiken)
Zunächst scripts/auto_chart_pack.py ausführen, um das gesamte Grafikpaket zu generieren, dann daraus Hauptgrafiken für den Text, Anhangsgrafiken und nachzuzeichnende Modellgrafiken auswählen:
python scripts/auto_chart_pack.py \
--data data/analysis.csv \
--config assets/chart_config.example.json \
--out output/chart_pack --tiff
Bei kontinuierlichen/mehrkategorialen Ergebnissen muss das Skript nicht geändert werden: Der Ergebnistyp wird automatisch auf „Ergebnisverteilung + Gruppenmittelwerte/Zusammensetzung“ umgestellt; Text-Ergebnisse können ebenfalls mit outcome_map codiert werden. --coef unterstützt die Spalten metric (OR/HR/RR/beta) und n; Forest-Plots schreiben N basierend auf der Modellstichprobengröße; --pred unterstützt 0/1 oder „ja/nein“-Labels; bei konstanten Vorhersagen/einer einzelnen Kategorie werden ROC/PR/Kalibrierung übersprungen und der Grund angegeben. term_labels können Modellterm-Namen wie lv3 in chinesische Bezeichnungen übersetzen. Für Dumbell-Plots mit zwei Proportionen müssen im Config zwei 0/1-Spalten unter dumbbell angegeben werden. Bei vorhandenen Follow-up-Zeit- und Ereignisspalten mit --survival-time, --survival-event (optional --survival-group) Kaplan–Meier-Kurven generieren.
Standardmäßig 7 Gruppen abdecken, üblicherweise 40–55 Grafiken: Binär ca. 44 Grafiken, mit Modell-Eingaben ca. 51; kontinuierlich ca. 42, mehrkategorial ca. 41. Spaltentyp, Fehlstellen und Übersprünge lassen die Anzahl schwanken; die genaue Anzahl ist chart_manifest.csv zu entnehmen.
- A Datenqualität: Fehlstellenrate, Stichprobenkategorie/Jahr/Region, Inzidenz binärer Variablen.
- B Univariate: Ergebnisverteilung (binär/kontinuierlich/mehrkategorial getrennt, kontinuierl. + Q-Q), Behandlungszusammensetzung (Balken + Ring), numerische Verteilung, Kategorienzusammensetzung.
- C Bivariat: Kategorie×Ergebnis, Phase×Ergebnis, Kategorie×Phase Heatmap/Stacked, Region/Instanz-Unterschiede, Korrelations-Heatmap, Scatter-Fit, Bubble; kontinuierl. Ergebnis mit Mittelwert+95%-KI, mehrkategorial mit gruppierter Zusammensetzung als Stacked.
- D Multivariat: Violin/Boxplot, Scatterplot-Matrix, Dumbell, PCA Scree/ Biplot/ Loading Heatmap, Ward-Cluster Dendrogramm, Klassisches MDS.
- E Zeit: Ergebnisrate/Mittelwert-Trend, 3σ-Kontrollkarte, Stichprobengröße, Phasenzusammensetzung als Stacked-Bar/Fläche; bei mehrkategorialem Ergebnis zusätzlich Ergebniskategorie-Trend.
- F Modelldiagnose: Forest Plot, ROC, Kalibrierung, Vorhersageverteilung, Confusion Matrix, PR-Kurve, Dekil-Lift (benötigt
--coef/--pred); Kaplan–Meier (benötigt Follow-up-Spalten). - G Anhang: Korrespondenzanalyse, Pareto.
Grafikstrategie:
- Jede Hauptentdeckung mindestens 2 Grafiken: Hauptergebnisgrafik + Robustheits-/Diagnose-/Heterogenitätsgrafik.
- Text 7–10, Anhang 20–50 Grafiken; keine Obergrenze.
- Jede Grafik beantwortet eine Frage; keine Frage, keine Grafik.
- Typenauswahl gemäß
references/07-chart-atlas.md, deckt SPSS-übliche erweiterte Grafiken ab: Gruppiert/Stacked/100% Stacked Bar, Linie/Fläche, Histogramm, Boxplot/Violin, Fehlerbalken, Scatter/Bubble, Scatter-Matrix, Pareto, ROC, Kalibrierung, Kaplan-Meier (falls Überlebensdaten), Scree, Faktorladungs-Heatmap, Cluster-Dendrogramm, Korrespondenzanalyse, MDS, Kontrollkarten usw. - Jede Grafik in
chart_manifest.csveintragen: Grafiknummer, Frage, Typ, Variablen, N, Bildunterschrift, Dateipfad. - Farbsemantik im gesamten Manuskript einheitlich: Gleiche Phase/Kategorie hat in jeder Grafik dieselbe Farbe.
- Bildunterschriften enthalten N, Datenquelle, Modelleinstellungen, Referenzkategorie; explorative Grafiken (PCA/CA/Cluster) als „explorativ“ kennzeichnen.
Einheitlichen Stil mit scripts/pubfig.py:
from pubfig import set_style, save_fig, wilson_ci, forest_plot
set_style() # 15 cm Satzspiegel, SimSun/Times New Roman, 600 dpi
Standardanforderungen:
- Physische Breite 15 cm (A4 Text 15,4 cm), Schriftgröße 7,2–8,5 pt.
- Chinesisch SimSun, Westlich Times New Roman; PDF-Schriftarten eingebettet (Type 42).
- Keine Titel in der Grafik; Grafiküberschrift und -unterschrift im Word gesetzt.
- Gleichzeitige Ausgabe: PNG 600 dpi, Vektor-PDF, LZW TIFF (
--tiff). - Fehlerbalken mit 95% KI; Forest Plot: gefüllter Punkt = signifikant, leer = nicht signifikant.
- Schiefe kontinuierliche Variablen mit log10 oder P99-Abschneidung, in Achsenbeschriftung/Anmerkung vermerken.
Gate: Jede Grafik in chart_manifest.csv hat Frage, N, Bildunterschrift, Datei; Hauptgrafiken im Text überschneiden sich nicht mit Anhangsgrafiken; eingebettete Grafikbreite im PDF ≥ 3000 px (bei 15 cm Breite ca. 600 dpi); Bildunterschrift, Grafik und Textverweis vollständig.
Siehe references/04-figures-publication.md und references/07-chart-atlas.md.
Phase 6: Manuskriptmontage
Word-Formatierungsanforderungen:
- Grafiken, Grafiküberschriften, -unterschriften auf „Mit nächstem Absatz zusammenhalten“ setzen, um Seitenumbrüche in der Mitte zu vermeiden.
- Tabellenzeilen dürfen nicht über Seitenumbrüche hinweg getrennt werden; Seitenwechsel mit Tabellenkopf wiederholen.
- Tabellenunterschrift unter der Tabelle/Abbildung; zuerst N, dann Signifikanzregeln angeben.
- Beim ersten Verweis auf eine Grafik/Tabelle im Text muss die Nummer mit der Datei übereinstimmen (Abbildung 1, Tabelle 1, Anhang Abbildung 1).
- N und Prozentsätze von Abstract, Text, Tabellen, Grafiken und Anhang müssen aus derselben Quelle stammen; das N aus
chart_manifest.csvwird in die Bildunterschriften zurückgeschrieben.
Beim Export von Word nach PDF komprimiert Word 600 dpi auf ca. 200 dpi. Mit scripts/export_pdf_hires.py exportieren und Originalgrafiken wieder einfügen:
python scripts/export_pdf_hires.py --docx "manuscript.docx" --out-pdf "manuscript.pdf" --figure-map "figure_map.json"
Gate: PDF-Seitenzahl, Grafikanzahl und Anzahl der Grafiküberschriften stimmen überein; jede eingebettete Grafik hat eine Breite ≥ 3000 px; Tabellen haben keine Zeilenumbrüche/unterbrochene Kopfzeilen.
Siehe references/05-manuscript-assembly.md.
Phase 7: Endkontrolle
Ausführen:
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
Dann manuell gemäß references/06-qa-checklist.md durchgehen. Schwerpunkt nicht auf Format, sondern auf:
- Jede Zahl im Stichprobenfluss stimmt überein.
- Duplikatkopien wurden aus der Analysestichprobe entfernt oder der Effekt der Nicht-Entfernung wird klar berichtet.
- Jedes N im Text stimmt mit der entsprechenden Tabelle/Grafik/Modell überein.
- Grafiken und Text beschreiben dieselbe Richtung; kein „Grafik steigt, Text sagt fällt“.
- Bildunterschriftennummern im PDF erkennen Schreibweisen wie „Abbildung 1:“, „Abb. 1.“, „Table 1:“; Niedrigauflösungsprüfung betrifft nur ausreichend große Bilder; leeres CSV führt zu direktem Fehler.
- Theoretische Codierungsvariablen im Methodenteil mit Quelle angegeben, nicht als direkt aus den Rohdaten gemessen.
- Schlussfolgerungen verwenden „Assoziation/Korrespondenz“, nicht kausale Formulierungen.
Skriptliste
Die folgenden Befehle gehen davon aus, dass das aktuelle Verzeichnis das Skill-Root-Verzeichnis ist; wenn aus dem Projektverzeichnis ausgeführt, ersetze scripts/ durch den absoluten Pfad des Skills.
| Skript | Zweck |
|---|---|
scripts/audit_corpus.py | Durchsucht beliebiges Materialverzeichnis: Dateistatus, Text/Seiten, MD5, Duplikate, Formatverteilung, Jahresangaben |
scripts/dedupe_corpus.py | Erstellt Deduplizierungsplan basierend auf Audit-Ergebnissen; --apply verschiebt nach _duplicates/ |
scripts/make_coding_sheet.py | Extrahiert Volltext und Schlüsselwort-Belegsätze aus PDF/Word/PPT/HTML/Text; --profile legal extrahiert nur dann Gerichts-/Aktenzeichenfelder |
scripts/text_extract.py | Allgemeine Textextraktion und Dateiprüfung (PDF/DOCX/ODT/PPTX/XLSX/HTML/Text/Bilder/Audio/Video) |
scripts/analysis_utils.py | Interne gemeinsam genutzte Funktionen: Stichprobenfilter, Ergebnistyp-Erkennung, Codierung binärer Labels; von Auto-Statistik/Chart-Skripten importiert |
scripts/csv_to_spss_syntax.py | Erzeugt SPSS GET DATA-Syntax aus CSV-Kopfzeile; bereinigt ungültige/doppelte Variablennamen und schreibt Variablenlabels |
scripts/auto_stats.py | Automatische deskriptive Statistik, Gruppenvergleiche, Korrelationen, univariate Modelle (Dummy-Variablen für mehrkategoriale unabh. Variablen), vollständige Separationsprüfung |
scripts/auto_chart_pack.py | Generiert automatisch ca. 40–55 Grafiken (Datenqualität/Verteilung/Bivariat/Cluster/Zeit/Modelldiagnose/Überleben) und Manifest nach Spaltenrolle |
scripts/pubfig.py | Einheitlicher Stil für Publikationsgrafiken, Wilson CI, Forest Plot, Heatmap, Violin, ROC/PR, PCA, MDS, Cluster, KM, Kontrollkarten usw. 30+ Grafiktypen |
scripts/export_pdf_hires.py | Word→PDF mit Rückeinspielung der 600-dpi-Originalgrafiken |
scripts/qa_outputs.py | Prüft PDF-Grafikauflösung, docx-Grafik-/Tabellenanzahl, leere Daten, doppelte Schlüssel, Manifest-N/-Bildunterschrift/-Pfad |
Referenzdokumente
| Datei | Wann lesen |
|---|---|
references/01-corpus-audit.md | Beginn Audit; bei Duplikaten/Beschädigungen/Scans/mehreren Formaten |
references/02-coding-protocol.md | Variablen entwerfen, Codebuch schreiben, Reliabilitätstest durchführen |
references/03-analysis-spss.md | Modelle festlegen, SPSS-Syntax schreiben, OR interpretieren |
references/04-figures-publication.md | Grafiken zeichnen, Farben wählen, Einreichungsdateien exportieren |
references/05-manuscript-assembly.md | Word setzen, PDF exportieren, Bildunterschriften behandeln |
references/06-qa-checklist.md | Vor Einreichung/Übergabe Punkt für Punkt prüfen |
references/07-chart-atlas.md | Grafiktypen auswählen, SPSS-erweiterte Grafiken abdecken, Grafikanzahl festlegen |
references/08-analysis-expansion.md | Welche Analysen außer dem Hauptmodell durchgeführt werden, wie Durchführung/Nicht-Durchführung dokumentiert wird |
Vorlagen
assets/scope-template.md: Forschungsbereich, Ein-/Ausschlusskriterien, Stichprobenfluss-Grundgerüst.assets/codebook-template.md: Variablen-Codierungshandbuch-Grundgerüst.assets/figure-spec-template.md: Tabelle für Bildunterschriften und Zeichnungsspezifikationen.assets/figure_map.example.json: Beispiel-Mapping für Word→PDF-Rückspielung von Grafiken.assets/delivery-checklist.md: Checkliste für die Abgabe.assets/coding-keywords.json: Austauschbares Schlüsselwortwörterbuch (generischer Platzhalter).assets/chart_config.example.json: Beispiel für Spaltenrollen, Labels, Filter der Analysestichprobe (filter_query).assets/analysis-manifest-template.md: Liste der Haupt-/Erweiterungs-/übersprungenen Analysen.
Häufigste Fehlerquellen
- Die Anzahl der Dateien im Ordner direkt als Stichprobenumfang nehmen. Zuerst Metadaten, Beschädigungen, Duplikate, nicht unterstützte Formate und außerhalb des Bereichs abziehen.
- Nur nach Dateinamen deduplizieren. Gleicher Inhalt hat oft mehrere Versionen mit/ohne Kennung, „ - Kopie“, „(2)“.
- Deskriptives N mit Modell-N vermischen. Modelle haben fehlende Werte, Filterkriterien; N ist immer kleiner.
- „Material erwähnt Fall“ als „tatsächlich eingetretenes Ergebnis“ behandeln. Das ist Textassoziation, kein Kausaleffekt.
- Word-exportiertes PDF sieht normal aus, aber Grafiken haben nur 200 dpi. Originalgrafiken müssen zurückgespielt und eingebettete Bildbreite verifiziert werden.
- Nur eine einzige Hauptergebnisgrafik zeichnen. Verteilungs-, Heterogenitäts-, Robustheits- und Diagnosegrafiken fehlen; der Benutzer muss immer wieder nachfragen.
- Referenzen/Anhänge als Hauptmaterial behandeln. Dokumenttyp, Berichtstyp, Webseiten-Navigation usw. müssen nach Titel/Textstruktur beurteilt werden, nicht nur nach Volltext-Schlüsselwörtern.
- Ergebnis als „ja/nein“-Text als kontinuierliche Variable behandeln. Mit
outcome_mapexplizit positive Klasse angeben oder im CSV als 0/1 codieren; das Skript errät keine positive/negative Richtung. - Audit zählt nur ein einziges Format und übersieht stillschweigend andere Dateien. Alle Dateien müssen einen Status haben;
total_filesmuss mit dem Explorer abgeglichen werden können. - Tabellendaten in Textcodierung stecken. CSV/Excel gehen direkt in
auto_stats/SPSS-Prozess; Textcodierung eignet sich für unstrukturierte Materialien wie Dokumente, Interviews, Webseiten.