Quelloffenes, reproduzierbares Werkzeug für Qualitative Comparative Analysis (QCA) — ein moderner Neubau von Ragins fs/QCA. Der Analysekern läuft local-first im Browser: Forschungsdaten verlassen das Gerät nicht.
Live: https://openqca.vercel.app · Methodik & Formeln: https://openqca.vercel.app/methodik
English: openQCA is an open-source, local-first tool for Qualitative Comparative Analysis (calibration, truth tables, Quine–McCluskey minimization, necessity analysis, robustness). The solution engine is cross-validated against the R package
QCA— seeVALIDATION.mdfor exactly which claims are externally validated and which are internal regression snapshots. Interface and reports are available in German and English; methodology documentation is indocs/qca-primer.en.md.
Die Web-App ist als forschungsfragen-zentrierter Arbeitsraum organisiert:
- Antwort zeigt früh einen berechneten, fallbasierten Befund und kennzeichnet ihn bis zur Bestätigung der Entscheidungen als vorläufig.
- Forschungsdesign bindet Frage, Falluniversum, Zeitraum, Outcome-Konzept und Bedingungsauswahl an die aktuelle Variablenrollen.
- Entscheidungen priorisiert offene Begründungen und enthält Kalibrierung, Cutoffs sowie Richtungserwartungen.
- Evidenz führt von Notwendigkeit und Truth Table über Lösungen und Falldiagnostik bis zu XY-Plot und Robustheitsraster.
- Prüfpaket erzeugt den vorläufigen Bericht und schaltet JSON, Rohdaten, Markdown und R-Skript gemeinsam frei, sobald Forschungsdesign, aktive Sets und Analyseentscheidungen bestätigt sind.
Projekte werden weiterhin automatisch lokal gespeichert, aber beim nächsten Besuch nicht
automatisch geladen. Die Einstiegskarte zeigt stattdessen den gespeicherten Kandidaten mit
Zeitpunkt; erst „Gespeichertes Projekt laden“ übernimmt ihn. ?demo=1 bleibt der direkte
synthetische Lehrmodus.
QCA scheitert in der Praxis selten an der Minimierung, sondern an der Kalibrierung: Wer nicht begründen kann, warum ein Fall ab welchem Rohwert zu einer Menge gehört, hat kein verteidigungsfähiges Ergebnis. openQCA führt deshalb den gesamten Weg von Rohdaten zu dokumentierten Set-Mitgliedschaften — mit Evidenzfeldern je Entscheidung, fallweiser Prüfung, Anker-Sensitivität und einem Protokoll, das die Analyse reproduzierbar macht.
npm install # Abhängigkeiten (Monorepo, npm workspaces)
npm run verify # vollständige Prüfkette (siehe unten)
npm run dev --workspace web # Web-App auf http://localhost:3000npm run verify führt Engine-Tests, Referenz-Suite, beide R-Kreuzvalidierungen,
den installierbaren Engine-Paketcheck, Deployment- und Research-Protocol-Verträge,
Lint, Produktions-Build und die vollständige Playwright-Suite aus — dieselben Gates
wie CI.
Die vollständige R-Prüfung benötigt das R-Paket QCA und die daraus lokal erzeugten,
nicht eingecheckten Lipset-Daten. Einmalig vor npm run verify ausführen:
Rscript scripts/r-oracle/lipset-export.Ropenqca/
├── packages/engine/ Rechenkern (TypeScript, ohne Abhängigkeiten)
├── apps/web/ Web-App (Next.js 16 + React 19) + Playwright-E2E-Suite
├── scripts/ Referenz-Suite, R-Orakel und Kreuzvalidierung, Benchmark
├── datasets/ Beispiel-Datensätze (synthetisch) + README
├── docs/ QCA-Primer (DE/EN), Qualitäts-Spezifikation, Roadmap, Übergabe
├── paper/ JOSS-Entwurf
└── legal/ Rechtstexte (Österreich) — ENTWÜRFE, juristisch zu prüfen
- Engine (57 Tests): Kalibrierung (direkt, linear, crisp, Vier-Werte), Konsistenz/Coverage/PRI, Truth Table, Quine-McCluskey-Minimierung, komplexe + intermediäre (Enhanced Standard Analysis mit Richtungserwartungen) + sparsame Lösung, Notwendigkeitsanalyse inklusive Disjunktionen (SUIN) und RoN, Fall-Diagnostik je Lösungspfad (Schneider & Rohlfing), kombinierte Robustheitsraster.
- Validierung: Lösungslogik und Notwendigkeitsanalyse sind in 23 von 25 Szenarien gegen das
R-Paket
QCAkreuzvalidiert (Formeln und Fit-Kennzahlen, Toleranz1e-6; Notwendigkeit inkl. Disjunktionen/SUIN und RoN gegensuperSubset); die zwei Abweichungen — beide aus derselben ESA-Ursache, eine davon auf dem kanonischen Lipset-Datensatz — sind analysiert und offen dokumentiert. Crisp- und lineare Fuzzy-Kalibrierung stimmen ebenfalls mitQCAüberein; die direkte Methode folgt Ragins ±3-Logit-Fixpunkten und weicht dokumentiert um < 0,01 von den R-Zielwerten ab. Welche Zahl extern validiert und welche eine interne Regression ist, steht präzise inVALIDATION.md. - Web-App: fünf kontrollierte Analyseziele — Antwort, Forschungsdesign, Entscheidungen, vorab geprüfter CSV/XLSX-Import (aktive Projekte werden erst nach Bestätigung ersetzt), Variablenrollen mit mindestens einer Bedingung und genau einem Outcome, Kalibrier-Workbench (Set-Definition, Methodenwahl, Anker, Evidenz, Fallprüfung, Anker-Sensitivität), Notwendigkeit, Truth Table mit allen drei Lösungstypen, Robustheit und Analyse des negierten Outcomes (~Y). Exporte: Protokoll (JSON), Markdown, äquivalentes R-Skript, Rohdaten und druckfähiger Bericht. DE/EN.
- Qualitätssicherung: Playwright-E2E-Tests prüfen Arbeitsraum-Flüsse, visuelle Integrität
(Hell/Dunkel × Desktop/Mobil) und Design-Konsistenz. Verbindliche Abnahmekriterien:
docs/QUALITY-SPEC.md. - Cloud (optional, abschaltbar): Konto (Supabase Magic Link), manuelle Projekt-Speicherung, geprüfte OpenAI-Schreibhilfen und Zahlungen (Stripe). Ohne passende Serverkonfiguration läuft die vollständige Analyse rein lokal.
Bewusst offen (mit Begründung in docs/ROADMAP.md): externe Validierung der
Vier-Werte-Kalibrierung (kein passendes Orakel im R-Paket), Zeitreihen-/Panel-QCA (Datenmodell fehlt),
Desktop-Build via Tauri (braucht Rust + Signierzertifikate), juristische Prüfung der [PRÜFEN]-Punkte
unter legal/, eigene Domain, Zenodo-DOI und JOSS-Einreichung.
openQCA ist kein Ersatz für das R-Paket QCA (Dușa), sondern ein geführter, reproduzierbarer Weg
durch den Standardfall. Nicht abgedeckt sind unter anderem mvQCA, temporale/Panel-QCA, die
Robustness-Fit-Kennzahlen von Oana & Schneider (RF_incl/RF_cov/RF_case) und der volle Umfang der
Enhanced Standard Analysis — inklusive zweier dokumentierter ESA-Abweichungen gegenüber R. Die
vollständige Gegenüberstellung mit Status und R-Entsprechung steht in
docs/ROADMAP.md, Abschnitt „Nicht abgedeckt gegenüber dem R-Paket QCA";
die Abweichungen sind in VALIDATION.md analysiert.
Nennenswerte Änderungen stehen im CHANGELOG.md; offene Punkte werden als
GitHub-Issues geführt.
Beiträge sind willkommen — siehe CONTRIBUTING.md und den
CODE_OF_CONDUCT.md. Für methodische Fragen gibt es eine eigene
Issue-Vorlage. Eine Regel gilt strikt: Erwartete Formeln, Toleranzen oder R-Orakel werden nie
geändert, nur damit eine Prüfung grün wird (siehe docs/ROADMAP.md, „Anspruchshygiene").
Bitte CITATION.cff verwenden. Ein Manuskript-Entwurf für das
Journal of Open Source Software liegt unter paper/paper.md.
MIT (siehe LICENSE). Die Rechtstexte unter legal/ sind unverbindliche Entwürfe nach
österreichischem Recht und vor produktiver Nutzung juristisch zu prüfen.