Skip to main content
Documentation

Analyses

Upload your data, tell Diafunc what you want to understand, and get back a report that shows the relationships in your data as formulas you can defend in a meeting, with charts, and that answers follow-up questions.

An analysis is a guided run powered by the Ufinq symbolic regression technology. The resulting report is a notebook inside a Diafunc project: editable, rerunnable, and shareable.

Starting an analysis

Start an analysis from the "Analyze data" button on the dashboard or the "Analyze" link in the top menu. A short wizard walks you through creating a project, uploading your data, describing what you want to know, and choosing how deep to go.

1. Project and data

Name a new project, choose whether it is private or public, and upload your raw data. A description is optional and can be added with Add a description. Under the choice, one sentence says what it means: private projects can be opened only by you and the members you invite; public projects can be opened by anyone and found by search engines, and they carry a license chosen on the same step.

CSV and Excel work best, and every other format Diafunc imports is accepted too: machine-learning, statistics, scientific and measurement files upload as they are. The data should be in a simple tabular format, with the column names in the first row or stored in the file itself.
A large file can take longer to import than the upload waits for. The wizard then stays on this step and shows how far the import has come, as a percentage where the format knows its number of rows and as the rows written so far where it does not. When the import has finished, the wizard moves on to the next step by itself. You can leave the page in the meantime: the import goes on, the analysis is listed under Analyses as "Importing data", and opening it there brings you back to the progress line. An analysis cannot be started before its data is fully imported, and a second upload is refused while the first is still importing. "Stop the import" ends a running import, after which the data can be uploaded again.

Supported file formats

Diafunc accepts more than 45 file formats as they are: tabular (CSV, TSV, fixed-width text, Excel, OpenDocument), machine-learning datasets (ARFF, LIBSVM, UCI .data with .names), columnar (Parquet, Arrow, ORC, Avro), semi-structured (JSON, JSONL, YAML, XML, HTML, PDF), databases and archives (SQLite, DuckDB, Access, SQL dumps, zip, tar), scientific (HDF5, NetCDF, NumPy, MATLAB, LAS well logs, TDMS, MDF, FITS, NASA CDF, ROOT), statistical software (SAS, SPSS, Stata, R, gretl), official statistics (SDMX, JSON-stat, PC-Axis), map data (GeoJSON, shapefiles, dBase) and Python pickles, which are read without running any code. Gzipped / bzipped / xz-compressed variants are unpacked automatically. The format is detected from a combination of magic bytes, MIME type, and file extension; you can usually drag the file straight into the upload area without configuring anything.

See the full supported file formats reference for the per-format matrix, the inner-table picker behavior for multi-table sources, and the known limitations of every importer. For dialect quirks (encodings, decimal separators, missing-value conventions, flattening nested JSON / YAML / XML) see preparing your data.

Several files

An analysis works on one table. When your data comes as several files, such as one export per month, one file per machine, or measurements in one file and the properties of each batch in another, choose them together in the file dialog or drag them onto the upload area at once. Diafunc uploads each file, keeps it in the project, and shows how the files fit together before anything is imported.

  1. Stacking:
    Files with the same columns are stacked into one table. The order of the columns, upper and lower case, and surrounding spaces do not matter. A column that one file lacks is named, and its cells are empty on that file's rows.

  2. A file that adds columns:
    A file with other columns that shares a key with the data, such as a column batch whose values occur in both, adds its columns to the rows that match. The key is found from the column names and their values, and the plan states it with the share of rows that found a match. No row is added or lost: a row without a match keeps empty cells in the added columns. Keys are compared as they are written; comparing without regard to case, leading zeros and number format is an option the plan offers when it would match more rows. You can change the key or leave the file out.

  3. Several rows per key:
    When the added file has several rows for one row of the data, such as sensor readings per batch, it is first reduced to one row per key: a column of numbers becomes its mean, a column of labels its most frequent value, a timestamp its first and last value, and one more column counts the rows each key had. Each column has a selector to change this or leave the column out.

  4. Which file carries the rows:
    Batches and readings per batch can be read as one row per batch or as one row per reading. Diafunc proposes one reading from the names and statistics of the columns, never from their values, and one button switches to the other. Choose the file in which one row is one observation of what you want to understand.

  5. What is left out:
    A file that shares no key with the data, a key that matches too few rows, a key that repeats on both sides, and a file too large to add columns are left out, and the plan says which and why.

  6. The file column:
    The table gets a column named file that records which file each row came from. It is often real information (the machine, the site, the month) and can be used as an input or as the segment. You can switch it off.

  7. Rows in more than one file:
    When exports overlap, a row that occurs value for value in more than one file is imported once, and the number of such rows is stated. Rows repeated inside one file are always kept. You can switch this off.

  8. What can be combined:
    Every supported format can be combined with every other, and the sheets of a workbook or the tables of a database count as tables of their own. A zip or tar archive counts as its files, so an archive of part-files is stacked the same way; folders named key=value become columns. Only a format read by a user-defined importer has to be uploaded on its own.

The report states how its table was put together: which files were stacked, which added columns on which key, and what was left out.

A file in another shape

An analysis explains one target, so it needs a table in which one row is one observation of that target. Some files arrive in another shape. Diafunc notices three of them when a file is uploaded, alone or with others, and proposes to read the file differently:
  1. One column per year, month or numbered step:
    A table with the columns site, 2019, 2020, 2021 holds one yield per site and year, spread over columns. It is read with one row per site and year, in the columns site, year and yield.

  2. A header over several rows:
    When the first rows of the data still hold names, units or groups, they become part of the column names and leave the data.

  3. Several numbers in one cell:
    A column such as blood_pressure holding 120/80 becomes two columns of numbers.

The upload step shows the file as uploaded next to the file as read, with the size of both, before you go on. Read as uploaded keeps the file exactly as it is. Columns that are different things about the same observation, such as the items of a questionnaire, stay columns.

The reshape is a function in your project. When the data is built, the file is imported as uploaded into one table, and a function named "Reshape" and the file's name writes the reshaped table. You can open that function in the Lab and change it; building the data again runs it as you left it. The report states that the file was read reshaped, with its size before and after.

A file that is fetched. A file does not have to be uploaded. Add from a data source in the upload step fetches it from a Google Sheet, an HTTPS or S3 address, or a database query, and keeps it up to date. It is stacked, matched by a key or reshaped like any other file, and every refresh builds the data again the same way; a refresh whose data no longer fits fails and leaves the data as it is. See Data sources.

CSV files

Diafunc reads the common CSV dialects automatically. These guidelines help the import:

  1. File extension:
    Use the file extension ".csv".

  2. Headers:
    Put a short, clear and consistent header for each column in the first row.

  3. Encoding:
    Save the file as UTF-8, which works across systems and supports every character.

  4. Avoid special characters:
    Avoid special characters: they can break the import and make the data harder to read.


CSV Example File

Excel files

Keep Excel files as plain as possible. These guidelines help the import:

  1. File extension:
    Use the file extension ".xlsx".

  2. Headers:
    Put a short, clear and consistent header for each column in the first row.

  3. No formatting:
    Avoid cell formatting such as colors, borders or conditional formatting.

  4. Single sheet:
    One sheet per file keeps it simple; a workbook with several sheets asks which one to import.

  5. No macros or pivot tables:
    Do not use macros, pivot tables, charts or other advanced Excel features; keep the data raw.

  6. Data types:
    Keep one type of data per column (all numbers or all text), and use only the text and number types. Numbers stored as text are fine.


Excel Example File

2. Targets and questions

Tell Diafunc what you want to understand.

Targets: pick one or more columns you want to explain or predict. Most analyses focus on a single target; two or three is the realistic upper end. The last column of your data is preselected by convention.

Questions: optionally add natural-language questions about your data (for example "Which columns are most related to customer churn?"). The assistant answers each question in a dedicated Questions & Answers chapter of the report, grounded in what the analysis found.

Columns and segments: closed by default, because most analyses need nothing from it. It holds three choices: columns to leave out of the model, columns you confirm as known before the target, and a column to segment by. While closed it says what is set, including any column Diafunc left out by itself, such as an identifier. It opens by itself when something in it wants your answer: a column Diafunc suggests leaving out, or a concern under Before you launch about one of your columns.

Names the data no longer has: a target, a column left out, a confirmed column and the segment are stored by column name. When the data of an analysis you have not launched yet is replaced outside the wizard, for example by a new upload from the command line or a column renamed in the Lab, a stored name may no longer be a column. The wizard marks each such name where its setting is, with Not in the data, and names them all next to the launch button, which stays disabled until you have removed them or chosen columns the data has. Nothing is removed for you. A name has to match its column exactly, including upper and lower case and spaces.

3. Depth

Pick how much the analysis may spend. A depth is a credit budget and the longest time the analysis may take; the twelve steps double the credits from one to the next, and you move along them on the depth scale, with the minus and plus buttons, or with the arrow keys. Set your own time and credits takes any other pair. The time covers the whole run, not only the search: preparing and profiling your data, the searches and the closing charts and report all count against it. Waiting in the queue does not, and neither does work the platform had to redo after an interruption. An interrupted run keeps what it had already finished, the prepared data, its written chapters and its finished searches, and that work stays part of both its time and its credits, counted once.

DepthCreditsLongest timeBest for
Express5001 hourA quick first look at a small dataset
Compact1,0001 hour
Quick2,0002 hoursFirst-pass exploration
Standard4,0004 hoursMost analyses of everyday datasets
Thorough8,0008 hoursDatasets with many columns or subtle relations
Extended16,00016 hours
Deep32,0001.3 daysProblems where quality matters most
Profound64,0002.7 days
Extensive128,0005.3 days
Comprehensive256,00010.7 days
Vast500,0003 weeks
Grand1,000,0006 weeks

Express is selected for an account's first analysis, Standard afterwards. Any depth can be chosen. The scale marks the steps your balance does not cover, and they stay selectable. From Profound on an analysis runs for days and shares the server with other analyses, so it may use less than its budget in that time; if the run is interrupted, its search starts again from the beginning and the interrupted attempt is not charged. The same scale comes back when an analysis is run again or refined, so a depth is chosen the same way everywhere.

Before you launch

Above the Launch button, the wizard says what a run of your settings would warn about in its first minute, before a single credit is spent: too few rows behind the model, a target that never varies, a target or a column with many missing values, or a credit budget too thin to share between them. The rows warning says about how many rows the model would be found on and how many its quality would be measured on. It is critical below 50 rows to find the model on or below 10 to measure it on (one target with nothing missing: tables up to about 60 rows), and a warning below 30 rows to measure it on (tables up to about 150 rows), because below 30 rows the report states its figures without grading them. The counts are the same for one target and for several: every model is found on the same rows. A table with a date column raises no warning: its most recent rows are the ones held out, and the report says so in a note (How Diafunc measures quality). It uses the same rules and the same words as the analysis itself, reads your data as uploaded, and checks again whenever you change the targets, the segment or the depth. A critical warning does not stop you: Launch asks Launch anyway? with the reason, and the choice is yours. The analysis checks the processed data again once it runs, and its reading is the one that stands.

While it runs

The card says what the platform is doing, not only how far along it is: the phase the run is in, the step it is on within that phase, what it already knows about your data, and the report taking shape.

PhaseWhat happens
Waiting for a slotQueued. Diafunc limits how many analyses run at once; nothing is needed from you. The card says which of two waits it is: behind your own running analyses, where it starts when one of them finishes, or behind a busy platform, where it starts on its own as soon as a slot frees up.
PreparingDiafunc sets up the project, reads your data and lays out the report notebook.
Profiling your dataColumn descriptions, correlations and the first charts. This is where the earliest chapters appear in the notebook.
Discovering formulasThe symbolic search itself, one search per target column. Usually the longest phase: the searches share what the analysis's hours leave after preparing and profiling your data, less a short reserve for the charts and report that follow.
Building charts and diagnosticsInput importance, predictions and held-out results for each discovered model.
Writing the reportThe headline, the stakeholder summary and the narrative chapters. Several of these are language-model steps, so this takes minutes rather than seconds.

The wizard shows these phases as a rail above the progress bar, with the phases already passed, the one the run is in, and the ones still to come, so you can see where the run is without reading a percentage. Above the rail, a row of figures keeps the run's facts in view: how long it has been running, at most how long it has left, the credits spent against the budget, and during the search the current generation and the quality reached so far.
Under the bar, a line names the step the run is on, in the words the notebook uses for it, with the column or target it belongs to: Profiling your data · price · Correlation (step 10 of 21), Discovering formulas for Alcohol · target 2 of 3 on a multi-target analysis, Writing the report · The stakeholder summary (step 4 of 7). The count is the step that is running within the phase; the percentage beside the bar is the share of the whole run. The first minute is named too: reading your data, describing the columns, scaffolding the report. If the line says the search is waiting for a search slot, the platform's cap on concurrent searches is holding it; it starts the moment a slot frees, nothing is wrong, and no time figure is shown until its clock starts.
A bar that appears to sit still is almost always in Discovering formulas: it is one long search, not a series of quick steps. During the search a sentence under the step line summarizes the search's recent history: whether quality is still rising and by how much, whether it has held for a while and the search is now refining the formula, or whether the data is already fitted and the search is only confirming what it found. A held quality is not a fault; the search keeps looking for a briefer formula and ends by itself once none turns up. A second line says which will end the search first, the time limit or the credit budget, whichever is further along. Show search detail opens a compact view of the search itself, headed with the target it is fitting: the live quality-over-generations chart, the current generation and the quality to four decimals, how much of the time and credit budgets are used, and the spread of the population the search is working on. Within a phase the bar only ever moves forward; it resets only when the run enters its next phase, or is restarted after an interruption.
Quality is never rounded up, so only an exact result reads 100%, and it shows as many decimals as it takes to see it move: 61.3% in the middle of the range, 99.97% near the top, where a search that has fitted the data spends its time shortening the formula. Hover the quality in the row of figures for the precise value.
A line repeats back what the run is working on: the target columns, the segment if one was chosen, the rows and columns of the uploaded data, the depth with its hours and credits, and how many questions were asked, so a glance confirms the platform understood the upload.
What we know so far says in plain sentences what the analysis has already found out about your data, from the first minute: warnings first (too few rows, a column that may be derived from the target), then facts such as whether values are missing and which column each target moves most closely with. It never shows a formula before the analysis has finished finding it.
Your report shows the report taking shape, part by part in the order you will read it: the summary, the data with one entry per column, the model with one per target, and the implications. Each entry is written, being written or still to come, and a written one opens the notebook at that place. Expand a part to see the chapters under each column. Every link opens the same notebook tab, and the notebook fills in while you read it: each chapter the analysis finishes appears in place, and the ones still to come are marked as such rather than looking empty.
The time figure during the search is deliberately an upper bound ("at most"). The search stops at whichever comes first: the time it was given out of your analysis's hours, or its credit budget. It can also stop earlier by converging once it stops finding better formulas, which no budget predicts, and time a search does not use goes to the next target. Runs frequently finish well inside the figure shown, and never overrun it.
A run can go past its hours for two reasons, and the card says which. When preparing and profiling your data used most of the hours, each search is still given a minimum amount of time so that it is worth running. And a minimum search time you set under Advanced is always honored.
You can close the page. The analysis keeps running, and you get a notification when it finishes, and an email too, when the analysis's Email me when the analysis finishes option is on (set it at launch, or any time later from the Lab's Analysis panel). You can also open the report notebook while it runs to read the chapters that have already landed. Canceling stops the analysis, and no credits are charged for work that has not completed.
When the run ends, the same card turns into its receipt: how long it took, what it cost, and when it finished, followed by the discovered model itself: the formula, its quality figures and the one-line takeaway. Under the model, the Analysis report row downloads the report in one click as PDF, EPUB or Excel, each with a line saying who that format is for (the PDF and the EPUB each as a Summary and as the whole Report), and Share sends it as an unlisted link or by email. Below it, Open notebook takes you to the full report, Ask the assistant opens a conversation about the analysis, Save as preset keeps the settings for the next analysis like this one (the button then reads Saved as preset), and New starts over. A run that failed or was canceled shows its receipt and the reason instead of a model; the report row is absent then, because there is no report to download or share.

Several analyses at once

You do not have to wait for one analysis before starting the next. While another analysis of yours is queued or running, a box above the card lists your active analyses, each with what it is doing and how far it has come. Click one to open it, New analysis to start another, or All analyses for the full list, finished ones included. With more than three active, Show all lists the rest. With a single analysis running and nothing else active, there is no box: New beside Cancel starts the next one. On a phone the box folds into one line, such as 2 running, 1 waiting, that opens on a tap.
Nothing you entered is lost by switching. Settings on the launch step are saved before you leave, and the analysis is waiting as a draft on the Analyses page. Only a file that is still uploading cannot be kept, so you are asked before leaving one. A running analysis needs nobody watching it: it goes on, and you get the notification when it finishes.
A limited number of your analyses run at the same time. You can launch more than that: the extra ones wait and start in the order you launched them, as soon as one of yours finishes. The launch step tells you beforehand when an analysis will wait. The number beside Analyses in the top bar, and the line beside the title of the dashboard's Analyses card, count what is queued and running, wherever you are. Analyze in the top bar always starts a new analysis, or takes up one you began and have not launched yet.

The report

The resulting analysis is a notebook inside the created project with two top-level chapters. Evidence holds everything Diafunc found and comes first, so the reader starts with the findings; Foundation follows as a reference for the underlying data and the function that produced the report.
A report opens for reading: findings, figures and tables, without the functions that computed them. As the owner you can switch with Edit report in the bar above the report, which shows the source of every function and the tools to add, move and change sections; Read report switches back. Your notes under a chapter are available in both views. People you share the report with always get the reading view. The function that produced the whole report stays readable for everyone under Foundation.
A report reads in three depths. The first screen answers in a few seconds: what the formula says, how good it is, a prediction to try, the answers to your questions, what the analysis found and What to do next, the one step the report recommends. The Summary follows: six chapters, each headed by what it found rather than by a technique (for example "Cement and Age carry 79% of the formula"), on what the formula relies on, how well the model holds on rows it never saw, where it is weak, what to watch, what to collect next, and what the analysis cannot tell you. Evidence chapters are numbered (2, 2.1, 2.1.3), the same in the notebook and in the PDF and EPUB, and a figure carries the number of its chapter. Each shows the figures it rests on and links to their full chapter. The headings are chosen by rule from the report's own figures, so they never claim more than the figures say. Everything after the Summary is the Evidence: every chapter of the analysis in full. Reports written before October 2026 have no Summary and open with the chapters below. The index on the left follows the page: Discovered model, What it found, Summary, then the Evidence.
The Evidence chapter is stored under the name Analysis: that is the name the editing view, the project tree and reports written before October 2026 show, and it is the same chapter. Inside it the findings are organized in three layers. Data describes what is in your table, Model holds one discovered model per target together with its diagnostics, and Implications turns the results into conclusions you can act on. Above the layers sit a Headline with the strongest findings at a glance and a Concerns chapter that collects every issue the built-in detectors raised.
ChapterDescription
Evidence (Analysis)Everything the analysis found, layered from data to conclusions.
HeadlineThe strongest findings at a glance, and the first thing a reader sees.
ConcernsEvery issue the built-in detectors raised about the data or the models, collected in one place. Read this before trusting anything else.
Discovered RelationsThe headline formulas Diafunc found for your targets.
Questions & AnswersAn answer to each of the questions you asked in the wizard. Only present if you asked any.
DataWhat is in your table. Read this to judge how far to trust the models.
VariableA chapter per analyzed variable with Description, Correlation, and Visualization sub-chapters, Class Balance for non-numeric variables, and an Over Time view when the data has a date column.
Column ProfilesA compact profile of every column in one overview.
Column · namePer-column detail. Free-text columns add token statistics and an embedding view; coordinate pairs add a Geospatial · lat × lng map.
Duplicate RowsDuplicated rows in the dataset and how much of it they make up.
Leakage SuspicionColumns that track a target almost completely, with the question whether each is known before the target, and the columns you have confirmed as such.
GeneralDataset-wide description: Missing Values, Outliers, Correlation with Potential Data Leaks, and Clusters. A Segments chapter (Segment Distribution, Segment Profile, Target by Segment) is added when you picked a segment-by column.
ModelOne chapter per target, plus cross-target chapters when you picked several.
TargetThe discovered model: the formula, its metric gauges, a Prediction chapter that applies the model to held-out rows with a scatter chart of actual vs. predicted values, and the diagnostic chapters described below.
Composite ModelSeveral targets only: the per-target models assembled into one model of all targets, with the per-target chapters nested under it.
LeaderboardSeveral targets only: all targets side by side against simple baselines.
All targets togetherSeveral targets only: the quality across the targets and how the targets' errors relate.
ImplicationsWhat the results mean and what to do next.
Stakeholder SummaryA plain-language summary for readers who won't open the technical chapters.
Recommended Next DataWhich data would improve the models most if you collected it next.
Quality by Input RangeModel quality broken down by automatically chosen ranges of each input, to show where the model is weaker. It holds one Target by Input Range chapter for each target.
Per-Segment PredictionsOnly if you picked a segment-by column: how each model predicts within each segment.
FairnessPer target, how the model behaves across different groups of rows.
Rows unlike the ones the model learned fromHow to recognize future rows that lie outside what the model was trained on.
Causal HonestyWhat the formulas do and do not say about cause and effect.
Deployment ReadinessA checklist of what has (and hasn't) been verified before you rely on the model.
Provenance & AuditWhat produced this report: the data, configuration, and models behind every finding.
FoundationThe data and the function that underlie the analysis.
Raw DataThe dataset exactly as you uploaded it.
Analysis FunctionThe function that produced this report, rerunnable on new data.
Processed DataThe cleaned, typed, and normalized dataset used for modeling.
Correlation MatrixOne row per pair of numeric columns with its correlation measures; every correlation in the report is read from it.
Held-out Rows of TargetPer target, the held-out rows the predictions were made for: Input Extraction and the Input Table hold the inputs of those rows, next to the function that predicts them.
Discovered Relations and Questions & Answers are filled in by the platform's language model once modeling has finished, grounded in the facts of the analysis.

Target kinds

Diafunc detects what kind of prediction problem each target is, from its column type and statistical structure, and picks the matching analyzer automatically. The loss the model is trained against, the headline metrics, and the diagnostic chapters all follow the detected kind.
KindThe target looks like
RegressionA continuous number: the classical case.
CountNon-negative whole-number counts.
OrdinalA small set of ordered levels, such as ratings from 1 to 5.
Binary classificationA yes/no target.
Multiclass classificationA category with several possible values.
Time seriesA number paired with a date column, judged in temporal order.
Several targetsSeveral targets modeled together as one composite model.
Structured targetA tuple-shaped target with meaningful internal structure.
Dense targetA matrix or tensor target.

Several targets, one composite model

When you select more than one target, each target still gets its own chapter and its own formula, and the per-target models are then assembled into a single composite model that predicts all targets at once, without any additional fitting. The composite model is the headline artifact of a multi-target analysis; the per-target chapters become its per-field breakdown, the Leaderboard chapter compares the targets side by side, and the All targets together chapter measures how the targets' errors relate. The shape of the composite model's output is chosen automatically from your column names.

Formula explanations

The per-target Model chapter is the core of the report. Each model is shown as a mathematical formula alongside a plain-English restatement and the inputs it relies on most.


The formulas come from Ufinq, our symbolic regression technology, which also runs standalone modeling in Diafunc projects.

Ufinq

Each model also has gauges summarizing its key metrics. On a model's own page, a model that came from an analysis leads with Quality, Complexity and Error measured on rows the analysis kept out of the search, the figures the report shows; the search's own figures follow under During the search, with Time and Credit budget. Under the gauges a line states the rows behind them, for every table: "Found on 30 rows · measured on 10 rows the search never saw". Hover a gauge, focus it with the keyboard, or tap it to see what it means and how to read it.

MetricDescription
QualityHow well the formula predicts, marked down for the size of the formula. For a continuous target it sits at or just below R², and the gap between the two is what the formula's size costs: small for a formula fitted on many rows, visible for a long formula fitted on few. 0% means no better than always predicting the average, 100% means exact. Higher is better.
ComplexityHow long the formula is, as a share of the complexity limit. Lower means a simpler formula.
ErrorHow far the predictions lie from the held-out values, as a share of the miss of always predicting the average: 0% is exact, 100% is no better than the average. For a count target the comparison is always predicting the average count, and for a yes/no or category target it is always predicting the most common class, so a formula that only repeats the most common class reads 100%. The gauge's tooltip says which comparison a figure uses.
TimeThe search time used of the time allowed, and why the search stopped.
Credit budgetThe credits used of the credits allowed for the search. Only the credits used are charged.

Model diagnostics

Every model chapter carries a set of diagnostic sub-chapters that probe the formula from different angles:
ChapterDescription
Which inputs matter mostThe inputs the model relies on most, ranked (input importance).
BaselinesThe model against the simple yardsticks of its kind of target (for a number: the mean, the median and a linear regression; for a yes or no: the most common class and a logistic regression): a formula is only interesting if it beats them.
GeneralizationThe figures on the training rows against those on the held-out rows: does the formula hold on rows it never saw? Below 30 held-out rows the chapter gives no verdict, however high the figure: it reads as not yet enough evidence.
How each term responds to its inputsOne curve per term of the formula over its inputs (per-term partial dependence).
Contributions per termFor a single row, how the terms add up to the prediction.
What each term is worthHow much quality each term contributes: what would be lost by dropping it.
What-IfMove the inputs and watch the prediction respond.
SensitivityHow strongly the prediction reacts to each input.
How two inputs act togetherPairs of inputs whose combined contribution to the prediction differs from their separate contributions.
How the formula behaves outside the dataWhat the formula does as each input leaves the range of the training rows: where it grows without bound, levels off or is undefined.
Worst PredictionsThe held-out rows the model gets most wrong, usually worth inspecting by hand.
Search ProgressQuality on the training rows over the generations of the search: did it converge, or did the time limit or the credit budget run out first?
Model ConstraintsMathematical-hygiene checks on the held-out predictions: finite outputs, within-domain values, no runaway predictions.
Further diagnostic chapters follow the target kind. Regression targets add Prediction Interval Coverage and Regression Diagnostics; time-series targets add Temporal Diagnostics on top; count targets add a Count Distribution chapter and ordinal targets a Level Distribution chapter. Classification targets add Classification Performance (the confusion matrix), and binary targets also get Calibration, Classification Curves, and Decision Boundary chapters.
Classification models output a continuous model score rather than a guaranteed probability. The score estimates how likely the positive class is and is clamped to the range 0 to 1; the Calibration chapter (a reliability diagram with Brier score and expected calibration error) tells you whether the scores can be read as probabilities.
The headline held-out metrics come with bootstrap 95% confidence intervals, so you can see how much the numbers could move on a different sample. Below 30 held-out rows a figure is stated with its rows and its interval and is not graded: on 10 rows an R² of 0.90 is as compatible with a moderate model as with an excellent one. From 30 rows the grade is taken from the lower end of the interval. For regression targets the prediction chart adds prediction intervals derived from the held-out residuals, and the Prediction Interval Coverage chapter checks how many held-out rows fall inside them; it gives a verdict from 100 held-out rows and, below that, shows the counts ("13 of 16") and "Too few rows to judge". The interval beside a prediction reads "9 in 10 within" from 100 held-out rows, "about 9 in 10 within" from 20, and below 20 only the count on those rows, such as "8 of 10 within".

Reading the data chapters

The Data layer's General and per-variable chapters tell you how far to trust the model. Skim these first when you open a new analysis; they often show problems in the data that would make the headline formulas misleading.

Missing Values: shows each column's row count against the dataset total. If a column is missing more than about 30% of its values, treat any formula that relies on it with caution: the model learned from whatever rows happened to have a value, which may not be representative.

Outliers: for every numeric column, counts the values that lie far outside the middle half of the column: more than 1.5 times the interquartile range below the first quartile or above the third. The table gives the two limits, how many values lie beyond each, their share of the column and the values that lie furthest out. The box plots draw the same values as points beyond their whiskers. A few extreme rows can pull formulas around. Consider whether those rows are data errors, rare-but-real events, or a signal worth modeling separately. A notebook created before October 2026 has an Outlier Ranges chapter in its place, which lists each column's quartiles beside its full range.

Class Balance (for non-numeric targets): shows the row count per target class. If one class holds more than about 90% of the rows, a model can look accurate only by always predicting the majority class. The analysis flags this so you can judge quality correctly.

Potential Data Leaks: when a column tracks a target almost completely (the stronger of Pearson's r and Spearman's rho at 0.95 or more), the report asks whether the column is known before the target. The coefficients cannot tell: a strong input whose value exists before the target's reads the same as a column computed from the target or recorded after it. A leaked column makes the discovered formula look right on these rows and fail on new data, because the column is not available when a prediction is needed. You answer the question on the concern with "known before the target", under Columns and segments in the Analyze wizard, or on the command line; a confirmed column raises no leakage concern. A column at 0.999 or more reproduces the target, which is what a copy looks like, and is critical when the model reads it.

Segments (only if you selected a segment-by column): the Segment Profile shows descriptive statistics grouped by segment, and the per-target Target by Segment chapters show how target values differ between groups. Look for variables whose mean, spread, or missing-value rate changes substantially between segments; those shifts are often more actionable than the aggregate formulas.

A chart of any two columns: the report draws each column's own charts, its relation to every target, and the strongest column pairs. Any other pair is drawn when you ask for it. Each column's chapter closes with Chart against another column, where that column is already chosen and you pick the other; Chart two columns, in the Data part before Further Charts and with its own entry in the chapter list, takes any two. The column list can be searched and states each column's type and role. The chart is the one the report would draw for the pair: a scatter for two numbers, box plots for a number by the groups of a category, a heat map of counts for two categories; where more than one fits you can switch between them. Above the chart the report says how many rows have a value in both columns, and when a pair cannot be charted it says why. The pair is part of the page address, so the link you copy opens the same chart. Every reader of the report can do this, signed out on a public project included, and it costs no credits. As an editor of the project you can add a drawn chart to the report with Keep in the report: it is written under Further Charts at the end of the Data part, for every reader and in the PDF and EPUB, and is drawn again from the new data when the analysis runs again. A row of the Correlation table opens its pair with Chart.

Reading the prediction chart

Each model chapter includes a Prediction sub-chapter with a scatter plot of actual values (x-axis) against predicted values (y-axis) for held-out rows the model never saw during training.

Points on the diagonal are accurate predictions. Vertical offsets reveal bias (the model systematically over- or under-predicts), vertical spread reveals noise (how much individual predictions vary), and points far from the diagonal are cases the model handles poorly, often the rows worth inspecting by hand.

After it runs

Share creates an unlisted link to the report and copies it. Anyone with the link can read the report in their browser, with its contents beside it, and download it as PDF, EPUB or Excel, without an account. Nothing else in the project becomes visible: the project stays private, and it does not appear in search. In the same dialog you can give a link a label and an expiry, see every link you have handed out and when it was last opened, and revoke one. Send by email mails the report to up to ten addresses, each with a link of its own and, if you ask, the PDF attached. A link whose mail could not be delivered is revoked at once.

Sharing a report is not the same as making the project public. A public project is readable in full by anyone, its data and code included. It appears in Explore, and its notebook can be found by search engines. That is a separate choice in the project's settings, and a public project needs a license that says what other people may do with it.

Ask opens an Assistant session scoped to the analysis. The assistant has the findings in context, so follow-up questions are answered from the results of your run.
Download report: a completed run downloads in three formats, the PDF and the EPUB each as a Summary and as the whole Report. The Summary PDF and EPUB hold the first screen and the Summary with its figures; the Report PDF and EPUB add the Evidence, every chapter in full. A report written before the Summary existed has one edition, and both entries download it whole. The PDF is typeset for paper: fixed pages that hold a wide table across the sheet, covering the formulas, diagnostics, concerns, provenance and every chapter of the notebook. Every chapter is a bookmark, and a long report opens with a contents page after its cover. The EPUB is the same document reflowed for a reader, so it fits a phone or an e-reader at whatever type size the reader chose, keeps the structure of the written findings, and carries figures whose axis labels are real text a screen reader can read aloud. The Excel workbook is the headline numbers as data, with no narrative and no figures, for someone who wants to compute with them. In the PDF and the EPUB the fitted formula is typeset as on the notebook's Formula view, with fractions, powers and roots drawn as such; the workbook holds it as one line of text. All three carry the same content hash, because it describes what the analysis found rather than the file it arrived in.
Publish again: when Diafunc's report improves after your analysis finished, with a new chapter, a clearer quality figure or a new way of telling the story, the button beside Run again and Refine on the analysis panel builds your report again on today's report. There is no new search. Every formula stays as it is, and the quality is measured on the same rows as before, so only the rebuild is charged. Your current report stays readable until the new one is finished, and its provenance record then names the run whose search found the formulas. If a setting that shaped the search has changed since, such as the targets, the time limit or the credit budget, the run stops before it builds anything and says what changed: run the analysis again to search with the new settings.
Rate the result: under the discovered model, a thumbs up or down tells us whether the result was useful to you. On your first three finished analyses the readout asks "Was this result useful?"; after that the control stays there without asking. A thumbs down lets you say what was missing (the model is too complex, the quality is too low, it answered the wrong question, or it did not explain enough) and add a comment. Your rating stays selected when you come back to the result, without the question being asked again, and picking the other thumb changes it. Rating is optional and changes nothing about the analysis.

Run again or refine

A finished analysis offers two ways to go further, under the same two names wherever it appears: the menu of each row on the Analyses page and on the dashboard, the notebook's action bar, the project overview and the Lab's analysis panel.

Run again starts a new run of the same analysis on its data as it is now, with the same targets, columns and settings. It opens with the wizard's depth scale, set to the depth the analysis has, so a run can be given more time or fewer credits; the credits remaining on your account are shown beneath them. A depth you change is kept for the analysis, and its scheduled runs use it too. The current report stays readable while the run works and is replaced only once the new one is finished.

Refine starts a new analysis from this one, on a copy of its data with your changes applied: other targets, columns dropped, a segment, a focus on one value of a column, and a depth chosen on the same scale. The analysis you started from and its report stay exactly as they were, and the two can be compared. For a change a run cannot make, Run again points you to Refine instead.

Reusing an analysis

Once a configuration works well, save it as a preset: the same targets, questions, segment key, and depth preset are reused the next time you start an analysis from that preset. Use it to run the same analysis on next month's data.

What next?