ChakataStat is a desktop app for statistical data analysis — a
fast, spreadsheet-style editor backed by a native Rust engine, with a
broad Analyze menu, an in-app AI assistant, and reproducibility
you can check: every output names the dataset it was computed
from, and the release's validation checks re-run on your own
installed copy.
Results checked against independent implementations.
For every procedure, the statistics a reader acts on — the test
statistic, the p-value, the parameter estimates, the effect sizes —
are checked end to end through the shipped engine against values
computed independently by established reference packages, and
against certified values published by NIST, before each release.
267
statistics pinned to independently computed reference values,
across 52 procedure
families — each with its own recorded tolerance.
58
NIST Statistical
Reference Datasets — every one NIST publishes, across all
four StRD suites — run end to end and scored by digits of
agreement against their certified values.
3,101
automated tests across the engine and the application, run green
on Windows, macOS and Linux before a release ships.
Reference values are computed with SciPy, statsmodels, scikit-learn,
lifelines and pingouin, and stored with the tolerance and provenance
of each one. Every pinned value is also re-derived in a second,
independent implementation — R, with packages including metafor,
plm, MatchIt and survival — and where the two differ, the
difference is traced to a convention and that convention is
recorded.
Where a statistic has more than one valid definition —
a quantile method, a continuity correction, a contrast type — the
engine's convention is written down, and each procedure's page in
the User Guide carries a
"How this is computed"
section that links to it.
The full suite is published: every pinned statistic with
its reference value, its tolerance and the package that produced it;
the NIST datasets scored by digits of agreement; the full pin set
compared across Windows, macOS
and Linux on the release build; and the convention
recorded behind each number where more than one is defensible.
Since 0.23.0 the checks can also be run on an installed copy.
Help → Verify this installation recomputes pinned
reference checks on your own installed copy — the same numbers
validated before release, re-run on your machine and your build —
and writes a report. The same run works headlessly:
chakatastat --verify --out report.html exits non-zero
if any check fails.
One application, five ways to reach the same catalog: the GUI, an
editable syntax console, the AI assistant, an MCP server for
external agents, and a headless batch runner.
A broad Analyze menu
Descriptives, regression, GLM and mixed models, survival and time series with VAR and Granger causality, complex survey designs, multivariate methods, latent class analysis and item response theory, confirmatory factor analysis with multi-group invariance testing, equivalence tests, Bland-Altman method comparison, meta-analysis, propensity-score analysis, Bayesian and permutation tests — 108 analysis tools in one catalog, each reporting the conventional effect sizes beside the test they describe.
Data editor
A spreadsheet-style sheet with a Variable View for metadata, value labels, missing-value handling, and self-documenting column tooltips.
Your files open directly
SPSS (.sav), Stata (.dta) and SAS (.sas7bdat, with value labels from a .sas7bcat catalog beside it, and transport .xpt) files import directly and bring their metadata with them: variable labels from all of them, value labels from SPSS, Stata and a SAS catalog, and SPSS measure levels and missing-value rules. Plus CSV/TSV (plain or gzipped), Excel (.xlsx, .xls, .ods), Parquet, Arrow/Feather, JSON and NDJSON. Where a detail cannot be carried across, the import reports it.
Graphs
Histograms, scatterplots and scatterplot matrices, boxplots, violin plots, ECDF, Cleveland dot, bubble, line, bar (clustered, stacked or 100%-stacked), error-bar and Q-Q charts in a unified Chart Builder — plus a correlation heatmap, regression diagnostics for linear and GLM models alike, scree plots, dendrograms, forest, funnel and propensity balance plots beside their analyses. Every multi-series chart uses a fixed palette validated for colour-vision safety, in light and dark — with a colour-blind-safe Okabe–Ito alternative in Settings. A finished chart can be restyled in place — title, legend, colours, line width, stacking — and every edit is written back into the chart’s own syntax command, so a styled chart re-runs styled.
AI assistant
A provider-neutral agent — Claude, any OpenAI-compatible backend, or a local Ollama backend, in which case data stays on your machine — that runs analyses on your open dataset in plain language, and renders the resulting tables and charts inline in the reply.
Reproducibility
Every action emits an editable, re-runnable command, and every output footer carries a fingerprint of the dataset it was computed from. An analysis exports as a reproducibility bundle — journal, fingerprint and versions in one file that ChakataStat re-runs and verifies in one step — or to HTML, Markdown, LaTeX, or a Python script for the client on PyPI: pip install chakatastat.
Native performance
A native Rust engine — an in-house columnar store with Parquet I/O over Apache Arrow — does the heavy lifting on a worker thread, so the interface stays responsive while a long fit runs.
One command stream
Five ways in. The same analysis underneath.
The menus, the syntax console, the AI assistant, the MCP server and
the headless batch runner share one command layer. Whichever you
use, the same engine runs the same call, so a result you got by
clicking is a result you can re-run in a script.
Menus & dialogs
Syntax console
AI assistant
MCP server
Batch runner
// Recorded automatically as you click, and editable in place.
descriptives variables=[Age, BMI, SystolicBP]
independent_ttest variables=[SystolicBP], grouping=Hypertensive
// Plain language. The reply carries the real tables and charts.
Compare systolic blood pressure between the hypertensive
and non-hypertensive groups, and show me the effect size.
# The dataset stays in the native engine; nothing runs in Python.
import chakatastat as ig
with ig.open("health_study.ckd") as ds:
print(ds.descriptives(variables=["Age", "BMI", "SystolicBP"]))
ds.independent_ttest(variables=["SystolicBP"], grouping="Hypertensive")
df = ds.to_polars() # one hop to the wider ecosystem
# No window. CI-friendly exit code, report written to disk.
ChakataStat --run analysis.cks health_study.csv --out report.html
# Or serve the same tools to an external agent over MCP:
ChakataStat --mcp health_study.csv
See it in action
Screenshots of the application on the bundled sample dataset. Pick
a view; click the shot to enlarge it.
A fast, spreadsheet-style view of your dataset — one case per row, one variable per column.
Variable View — type, label, value labels, missing values and measure for every column.
Every procedure is a dialog away, and every run is journaled as a re-runnable command.
Results render straight into the output log, ready to export as HTML, Markdown or LaTeX.
Forest and funnel plots, pooled by fixed-effect, DerSimonian–Laird or REML random effects.
Propensity-score matching and weighting — the balance plot shows each covariate's standardized mean difference before and after adjustment.
Moderated mediation — the interaction plot draws the simple slopes at each probe value of the moderator, showing how the effect changes across the moderator’s range.
The scatterplot matrix — every numeric pair in one grid of square panels, the first look at a multivariate dataset.
The chart editor — restyle a finished chart on a live preview; every edit is written back into the chart’s own syntax command, so a styled chart re-runs styled.
Bland-Altman method comparison, added in 0.19.0 — bias and limits of agreement drawn over the mean-difference cloud, with the statistics table beside it.
The syntax editor, added in 0.20.0 — line numbers, syntax colouring, as-you-type checking with a “did you mean” hint, completion over the catalog and your variables, and a gutter that shows which commands have run this session.
Johnson–Neyman regions, added in 0.21.0 — the conditional effect of a moderated path drawn across the observed moderator range with its confidence band, and the moderator values where it turns significant marked on the plot.
Vector export, added in 0.22.0 — any chart saves as SVG or PDF with its labels kept as selectable text rather than outlines, or as PNG at a chosen resolution.
Help → Verify this installation, new in 0.23.0 — the release's pinned reference checks re-run on your own installed copy, so the validation can be repeated on your own machine.
108
analysis tools, one catalog
What is in the Analyze menu
Descriptive Statistics, Compare Means and Correlate; equivalence
tests (TOST); Regression
(linear — with or without an intercept — logistic, Poisson,
regularized, robust, nonlinear, instrumental variables, panel
data with fixed and random effects and the Hausman test, and
mediation with moderated, Johnson–Neyman and serial variants);
General Linear Model, Linear Mixed
Models and GLMM; complex survey designs — declare strata,
clusters and sampling weights, and the everyday procedures
estimate design-based; Factor / PCA and confirmatory factor
analysis, latent class analysis, item response theory,
Cluster and Discriminant
analysis; Survival (Kaplan-Meier, Cox, parametric); Time Series
(ARIMA, seasonal decomposition, vector autoregression with
Granger causality); Meta-Analysis (fixed effects,
DerSimonian–Laird or REML random effects, with forest and funnel
plots); propensity-score matching and weighting with balance
diagnostics; Bland-Altman method comparison; Bayesian tests;
permutation tests; and
Nonparametric methods — with the conventional effect sizes
reported by default beside the tests they describe.
Regression
Mixed models
Survey designs
Survival
Time series
Bayesian
Multivariate
Nonparametric
Get ChakataStat
Available for Windows and Linux. There is no macOS build yet.
Store installs are signed and update automatically. On Linux you
can also grab the Debian/Ubuntu .deb from the
releases
page; Windows is Microsoft Store-only.
The Python client is on PyPI —
pip install chakatastat. It drives an installed
ChakataStat over MCP; all computation runs in the installed engine,
so the client returns the same numbers as the desktop app.
See what changed in each release.