How-to
Task-oriented steps for running a fit and using the result. These assume you already know the core concepts; see Reference for how to read the output.
How to pick a dataset
When you create a new project the dataset picker opens automatically. It lists every CSV and XLSX file in your org's Data Hub.
- Search — type to filter by file name.
- Upload new — adds a file to the Data Hub and selects it in one step.
- Change dataset later — every project's
⋯menu has a Change dataset option that re-opens the picker.
Once a file is attached, the Fitter extracts column metadata — name, dtype, row count, and basic summary stats — so the column picker can show informed hints.
How to configure the fit
The Detail tab on the right is where you configure what to fit. Most projects only touch the first two controls.
| Control | What it does |
|---|---|
| Column | The column to fit. All columns are listed with a type badge; numeric columns are at the top. |
| Fill by | Optional categorical column. When set, the Fitter runs one fit per unique value of the fill-by column and saves one library entry per stratum (e.g. one per region). |
| Candidate set | Which distributions to try. Defaults to all supported for the data's kind (continuous or discrete). Narrow this if you know the family in advance. |
| Discrete / continuous | Auto-detected from the column's dtype and cardinality. Override if the auto-detection is wrong — e.g. ratings stored as floats. |
| Force lower bound | Restrict the fit to values ≥ this number. Use for non-negative quantities like durations or counts. |
| Force upper bound | Restrict to values ≤ this number. Use for proportions bounded at 1. |
| Re-fit | Re-runs the fit with the current configuration. |
Leave the candidate set on all supported for your first pass. The AIC ranking will tell you which family to take seriously, and you can narrow the list on a re-fit if you want a head-to-head between two contenders.
How to run the fit
Click Re-fit. For datasets under 100,000 rows the fit returns in well under a second. Above 100k rows the Fitter switches to an async job — you'll see a progress indicator, and the histogram renders immediately from a downsample while the full fit runs.
When the fit completes:
- A histogram of the column appears at the top with the best-fit PDF overlaid as a smooth curve.
- A diagnostics row appears beneath: Q-Q plot, P-P plot, and CDF overlay.
- A ranked table at the bottom lists every candidate with AIC, BIC, KS, AD, and the KS p-value.
Click any row in the ranked table to promote that candidate — the histogram overlay and the diagnostic plots redraw against your selection.
Edge cases the Fitter handles automatically
| Situation | What happens |
|---|---|
| Fewer than 8 values in the column | Fit is refused. Need at least 8 to identify a distribution. |
| Negative values when fitting a positive-only distribution | A zero lower bound is applied and the fit re-runs, with a notice. |
| Many zeros plus a continuous tail (zero-inflated) | The Fitter offers a compound bernoulli × <fitted continuous> fit. |
| All values identical | Collapses to a constant with a warning. |
| Heavy ties in supposedly continuous data | Suggests switching to discrete mode. |
| Bounded [0, 1] data | Auto-includes beta and drops unbounded candidates. |
| NaN / missing values | Dropped before fitting; the count of dropped rows is shown. |
How to save a fit to the library
When the candidate you want is selected, click Save to library on its row. A small modal asks for a name — pick something self-explanatory, like:
Monthly revenue (lognormal)Task duration — onboarding (gamma)Daily ticket count (poisson)
The entry stores everything needed to re-create the distribution downstream: the canonical distribution name, the fitted parameters, the goodness-of-fit snapshot, and a pointer back to the source file and column.
Per-stratum entries
When you ran the fit with a Fill by column set (e.g. fitting duration filled by region), saving creates one library entry per stratum instead of a single base entry. Each entry's name is suffixed with the stratum label:
Task duration (lognormal) — region=WestTask duration (lognormal) — region=EastTask duration (lognormal) — region=Central
In Process Map, inserting a stratified library entry into a Task node generates a distribution_rules block — one rule per stratum — that routes by the matching label at simulation time. See Core concepts for why this is the highest-leverage feature of the Fitter.
What's not stored
The library entry stores the distribution, not the entire fit run. The ranked table, diagnostics, and intermediate fit results are not persisted — only the candidate you chose to save, plus a snapshot of its goodness-of-fit numbers (so you can see them later in the library picker).
If you want to re-examine the full ranked table or diagnostics, re-run the fit from the original project.
How to insert a library entry into other tools
Each tool's distribution editor has a From library… option that opens a shared picker modal listing every entry in the org library.
| Tool | Where to find it |
|---|---|
| Process Map | Task node Detail panel → Distribution editor → From library… button. Inserts a single distribution, or a distribution_rules block for stratified entries. |
| Spreadsheet Sim | Assumption panel → Distribution dropdown → From library… option. |
| Probability Playground | Editor → Insert from library button. Inserts a ~ line at the cursor with the appropriate alias (e.g. exponential becomes exp, negative_binomial becomes negbinom). |
Each tool translates the canonical library form into its own native vocabulary automatically. You don't need to know how lognormal is parameterized in each consumer — the adapter handles it.
How to manage library entries
The library is reachable from any of the consumer pickers. From the picker you can:
- Search by name, distribution type, or source file
- Rename an entry (the rename action lives on each entry's
⋯menu) - Delete an entry (with confirmation)
If a fit needs to be re-run with different settings, run the new fit in the Fitter and save it as a separate entry. You can keep old entries around for comparison or delete them once the new one is in use.