Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
Statistical functions for DuckDB, open source.
DataC++ · PythonGitHub @KoliStatOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
A statistical computing toolkit for DuckDB.
Translation pending
Loading the full README.
Read the full README ↗A statistical computing toolkit for DuckDB.
The Stats Duck adds statistical analysis to SQL: descriptive statistics, hypothesis tests, grammar-of-graphics visualization, and direct readers/writers for SAS, SPSS, and Stata files. Functions are implemented as streaming aggregates and scalar primitives, so they scale from local notebooks to billion-row warehouses and also run inside DuckDB-WASM in the browser.
The Stats Duck is built by KoliStat (see the product page). It is the statistical engine of Bedevere Wise, KoliStat's browser-based statistical workbench.
The extension installs and loads in DuckDB under the technical name
stats_duck(matching the binary, the SQL function namespace, and theINSTALLkeyword). "The Stats Duck" is the project / brand name;stats_duckis what you type at the SQL prompt.
The name is a play on The Fat Duck, Heston Blumenthal's restaurant in Bray, Berkshire. That restaurant has been the inspiration for the project name from the start.
The Stats Duck is meant to cover the everyday work of a general-purpose statistician without leaving SQL. The current release covers four areas:
VISUALIZE … FROM <table> DRAW <mark>, a
Posit-published Grammar-of-Graphics SQL dialect compiled to Vega-Lite v5.
No server-side rendering: the extension emits a spec + per-layer SQL, and
the client (browser, notebook, …) runs the SQL and feeds the rows to vega.httpfs://, s3://, and registered WASM file buffers.GROUP BY, window frames, and DuckDB's
parallel execution.Future releases will add Spearman/Kendall correlations, regression with full diagnostics, multiple-testing corrections, and more distribution families.
Further documentation:
docs/visualize.md — a worked example of every
VISUALIZE mark and clause.docs/kernel_api.md — the DuckDB-free C++ kernel
and how a sibling repo consumes it.docs/fitter_conventions.md — conventions
for model-fitting functions: inputs, the return STRUCT, validation.| Function | Description |
|---|---|
ttest_1samp(column, [mu], [alpha], [alternative]) | One-sample t-test |
ttest_2samp(column1, column2, [equal_var], [alpha], [alternative]) | Two-sample t-test (Welch's or Student's) |
ttest_paired(column1, column2, [alpha], [alternative]) | Paired t-test |
mann_whitney_u(column1, column2, [alternative], [continuity]) | Mann-Whitney U test (Wilcoxon rank-sum) |
wilcoxon_signed_rank(column1, column2, [alternative], [continuity]) | Wilcoxon signed-rank test |
pearson_test(x, y, [alpha], [alternative]) | Pearson correlation with significance |
spearman_test(x, y, [alpha], [alternative]) | Spearman rank correlation |
kendall_test(x, y, [alternative]) | Kendall's tau-b rank correlation |
anova_oneway(value, group) | One-way ANOVA |
chisq_independence(row, col, [continuity]) | Chi-square test of independence |
chisq_goodness_of_fit(category) | Chi-square goodness-of-fit (uniform) |
jarque_bera(column) | Jarque-Bera normality test |
shapiro_wilk(column) | Shapiro-Wilk normality test (Royston AS R94) |
anderson_darling(column) | Anderson-Darling normality test |
ks_test_1samp(column) | Kolmogorov-Smirnov one-sample (vs fitted normal) |
ks_test_2samp(column1, column2) | Kolmogorov-Smirnov two-sample |
sign_test_1samp(column, [mu], [alternative]) | Sign test on the median |
sign_test_paired(column1, column2, [alternative]) | Paired sign test |
All tests return a STRUCT with the test statistic, degrees of freedom,
p-value, and relevant effect sizes / confidence intervals.
Every test skips NULL inputs, and treats NaN the same way: a NaN value counts as missing and never enters the test. For two-column tests a NaN on either side drops the pair (paired tests) or that single value (two-sample tests), exactly as a NULL would.
This is the beginning of the README. Read the rest at the original. Read the full README ↗