Skip to main content
Documentation

Analyses

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

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

Starting an analysis

Start an analysis from the "Start analyzing" 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 and upload your raw data. CSV and Excel work best, and every other format Diafunc imports is accepted too. The data should be in a simple tabular format, with the column names in the first row.

Supported file formats

Diafunc accepts more than 20 file formats out of the box: tabular (CSV, TSV, Excel), columnar (Parquet, Arrow, ORC, Avro), semi-structured (JSON, JSONL, YAML, XML, HTML, PDF), archives (SQLite, zip, tar), scientific (HDF5, NetCDF), and statistical-software formats (SAS, SPSS, Stata, R RDS). Gzipped / bzipped / xz-compressed variants are unwrapped transparently. 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.

CSV files

All common CSV formats should be supported automatically. To support the data import, please follow the guidelines below.

  1. File extension:
    Use ".csv" as file extension to make it clear that it's a CSV file.

  2. Headers:
    Include clear and consistent headers for each column into the first row to describe the data, but keep them simple.

  3. Encoding:
    Save the CSV file with UTF-8 encoding to ensure compatibility with different systems and to support all characters.

  4. Avoid special characters:
    Do not use special characters to avoid problems and to make the data readable.


CSV Example File

Excel files

Excel files should be as plain as possible. Please follow the guidelines below to ensure the import goes smoothly.

  1. File extension:
    Use ".xlsx" as file extension to make it clear that it's an Excel file.

  2. Headers:
    Include clear and consistent headers for each column into the first row to describe the data, but keep them simple.

  3. No formatting:
    Avoid using cell formatting options like colors, borders, or conditional formatting. Keep the text plain and simple.

  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 any macros, pivot tables, charts or any other advanced Excel features. The data should be as raw and uncomplicated as possible.

  6. Data types:
    Ensure that each column contains data of the same type (e.g., all numbers, all text). Use only text and number types. It's perfectly fine to provide numbers using the text data type.


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 actually found.

3. Depth preset

Pick how much compute to spend. Longer runs search deeper, and the per-hour rate grows super-linearly because deep search finds non-obvious relations that short search misses. 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 a restart. A restarted 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.

PresetTimeCreditsBest for
Express1 hour500Quick sanity check on a small dataset
Quick2 hours2 000First-pass exploration
Standard (default)4 hours10 000Most analyses of everyday datasets
Thorough8 hours40 000Datasets with many columns or subtle relations
Deep24 hours150 000Maximum-quality discovery on important problems

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 to trust a formula, a target that never varies, a target or a column with many missing values, too few rows for the number of targets, a credit budget too thin to share between them, or data with a date column that the model would validate without regard to time. 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, and yours starts automatically as soon as a slot frees up. Nothing is wrong and nothing is needed from you.
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 diagnosticsFeature 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. Even the first minute is named: 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, and that is expected: it is one long search, not a series of quick steps. So during the search a sentence under the step line reads the search's recent history for you: 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 budget will end the search first, the time budget 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 honoured.
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. Cancelling really stops the analysis, and no credits are charged for work that hasn't 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, 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, and New starts over. A run that failed or was cancelled 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.

The report

The resulting analysis is a notebook inside the created project with two top-level chapters. Analysis holds everything Diafunc found and is positioned first so the reader sees the insights immediately; Foundation follows as a reference for the underlying data and the function that produced the report.
Inside Analysis the findings are organised 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
AnalysisEverything 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 SuspicionPredictors that track a target suspiciously closely, often leaked or derived columns.
GeneralDataset-wide description: Missing Values, Outlier Ranges, 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 multi-output model, with the per-target chapters nested under it.
LeaderboardSeveral targets only: all targets side by side against simple baselines.
Multi-OutputSeveral targets only: cross-output quality and how the outputs' 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.
Per-Segment Quality / PerformanceModel quality broken down by segments of the data: automatically chosen feature segments, and your segment-by column if you picked one.
FairnessPer target, how the model behaves across different groups of rows.
Out-of-DistributionHow to recognise 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.
Discovered Relations and Questions & Answers are filled in by the platform's language model once modeling has finished, grounded in the actual 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 outcome.
Multiclass classificationA category with several possible values.
Time seriesA number paired with a date column, judged in temporal order.
Multi-outputSeveral targets modelled together as one composite model.
Structured outputA tuple-shaped target with meaningful internal structure.
Dense outputA 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 outputs 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 Multi-Output chapter measures how the outputs' errors relate. The shape of the composite output is chosen automatically from your column names.

Formula explanations

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


The explanations are produced by our Ufinq symbolic regression technology, the same technology that powers standalone modeling in Diafunc projects.

Ufinq

Each model also has gauges summarising 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 Budget. Hover a gauge, focus it with the keyboard, or tap it to see what it means, how to read it and which rows it was measured on.

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 budget. Lower means a simpler formula.
ErrorHow much of the variation the formula leaves unexplained: 0 % is perfect, 100 % is no better than always predicting the average.
TimeThe search time used of the time allowed, and why the search stopped.
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
Feature ImportanceThe features the model relies on most, ranked.
BaselinesThe model against cheap reference predictors (mean, median, linear regression): a formula is only interesting if it beats them.
GeneralizationTraining vs. held-out quality: does the formula hold on rows it never saw?
Per-Term Partial DependenceHow each term of the formula responds to its inputs.
Per-Row Contribution WaterfallFor a single row, how the terms add up to the prediction.
Term AblationHow 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.
2-Feature InteractionsPairs of features whose combined effect differs from their individual effects.
Worst PredictionsThe held-out rows the model gets most wrong, usually worth inspecting by hand.
Search ProgressHow solution quality improved over the course of the search: did it converge, or did the 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 additionally 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 outcome 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 honestly 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. 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 actually fall inside them.

Reading the honest-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 reveal problems in the data that 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.

Outlier Ranges: for every numeric column, shows the 25th, 50th, and 75th percentiles alongside the full range. A variable whose range extends far beyond the 75th percentile usually has a few extreme rows pulling formulas around. Consider whether those rows are data errors, rare-but-real events, or a signal worth modeling separately.

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

Potential Data Leaks: when a predictor correlates suspiciously strongly with a target (Pearson > 0.95), the report flags it. Very high correlations usually mean the predictor is either a direct transformation of the target, was computed from the target, or is a near-duplicate column. If a leaked variable stays in the analysis, the discovered formula will look great but fail on new data.

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.

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, and it appears in search. That is a separate choice in the project's settings.

Ask opens a chat session scoped to the analysis. The assistant has the findings in context, so follow-up questions land against the specific results of your run.
Download report: a completed run downloads in three formats. 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. All three carry the same content hash, because it describes what the analysis found rather than the file it arrived in.
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.

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. This is the fastest way to run the same analysis on next month's data.

What next?