<div class="section-label"><span class="num">01</span> Results</div> <div class="section-title">What comes <em>back</em> from a prediction.</div> Every successful <span class="mono">predict</span>, <span class="mono">predict_maxfit</span>, or <span class="mono">predict_grid</span> call returns a **PredictionResults** object. In thin clients (Python, R, and similar), sizes and core forecast fields sit on the **root**; deeper material is nested under named groups. Missing groups are simply absent (<span class="mono">None</span> in Python, <span class="mono">NULL</span> in R). Settings that shape these fields live under [[Config/Overview|Config]]. The calls that produce them live under [[Functions/Overview|Functions]]. > [!warning]- C ABI / native integrators > This chapter describes the **thin-client** layout (Python, R, and similar). The C ABI may group, name, or own fields differently: handles, copy-out APIs, retain flags, and nesting are not guaranteed to match these attribute paths. For bindings and native integration, treat the public header contract as authoritative: [[Install/Native Runtime|Native Runtime]] and the [C ABI repository](https://github.com/CambridgeSportsAnalytics/rbp-math-c-abi) (<span class="mono">rbp_math.h</span>). <div class="pillars"> <div class="pillar"> <div class="pillar-num">↳ 01</div> <div class="pillar-title">Always on</div> <div class="pillar-text">Sizes, thresholds, yhat, fit, and related core measures on every successful run.</div> </div> <div class="pillar"> <div class="pillar-num">↳ 02</div> <div class="pillar-title">Deeper detail</div> <div class="pillar-text">prediction_weights, insights, auxiliary, and solo_distribution when the call stores them.</div> </div> <div class="pillar"> <div class="pillar-num">↳ 03</div> <div class="pillar-title">Grid extras</div> <div class="pillar-text">grid_insights on Grid runs; grid_cells only when retain_grid_objects lists keys.</div> </div> </div> <p>&nbsp;</p> <div class="section-label"><span class="num">02</span> How results are organized</div> Thin-client layout (Python attribute access shown; R uses the same names with <span class="mono">lt;/span>): **Always present** (after a successful call) ```text result PredictionResults ├── n_observations, n_variables, n_thresholds ├── thresholds └── yhat, fit, adjusted_fit, agreement, asymmetry, k_fit, outlier_influence (+ yhat_linear when include_linear_regression was on) ``` **Often present** on Predict / MaxFit (may be missing on Grid) ```text result ├── prediction_weights include, weights, weights_excluded ├── insights relevance, similarity, info_x, info_theta, … ├── auxiliary phi, lambda_sq, full_var, … └── solo_distribution y_solo, xi_solo, statistics, distribution ``` **Path-specific** ```text result ├── maxfit_index MaxFit only ├── grid_insights usual on Grid (no retain needed) │ ├── variable_weights │ ├── impact_on_fit also: marginal_contribution_to_conviction │ ├── impact_on_prediction also: marginal_contribution_to_prediction │ ├── component_contribution_to_prediction │ └── xi_solo_composite └── grid_cells only if retain_grid_objects lists keys ├── k_cells, combi_cells, ysolo_cells ├── relevance yhat_cells, adjusted_fit_cells, … └── similarity same cell fields for similarity censor ``` | Layer | Attribute / group | When you see it | | --- | --- | --- | | Core (root) | <span class="mono">yhat</span>, <span class="mono">fit</span>, … | Every successful call | | Weights | <span class="mono">prediction_weights</span> | Common on Predict / MaxFit | | Scores | <span class="mono">insights</span> | Common on Predict / MaxFit | | Auxiliary | <span class="mono">auxiliary</span> | Common on Predict / MaxFit | | Solo | <span class="mono">solo_distribution</span> | Common on Predict / MaxFit | | MaxFit marker | <span class="mono">maxfit_index</span> | MaxFit | | Grid insights | <span class="mono">grid_insights</span> | Usual on Grid | | Grid cells | <span class="mono">grid_cells</span> | Only if <span class="mono">retain_grid_objects</span> is set | <div class="solution-list"> <div class="solution-row"> <div class="solution-num">/01</div> <div class="solution-title"><a href="/Results/Core">Core</a></div> <div class="solution-desc">Root sizes, thresholds, yhat, fit, and related always-on fields.</div> </div> <div class="solution-row"> <div class="solution-num">/02</div> <div class="solution-title"><a href="/Results/Weights%20&%20Insights">Weights & Insights</a></div> <div class="solution-desc">prediction_weights and insights groups.</div> </div> <div class="solution-row"> <div class="solution-num">/03</div> <div class="solution-title"><a href="/Results/Auxiliary">Auxiliary</a></div> <div class="solution-desc">Per-threshold diagnostics under auxiliary.</div> </div> <div class="solution-row"> <div class="solution-num">/04</div> <div class="solution-title"><a href="/Results/Solo%20Distribution">Solo Distribution</a></div> <div class="solution-desc">solo_distribution: vectors, statistics, optional histogram.</div> </div> <div class="solution-row"> <div class="solution-num">/05</div> <div class="solution-title"><a href="/Results/Grid%20Insights">Grid Insights</a></div> <div class="solution-desc">grid_insights: Impact on Fit, Impact on Prediction, variable weights.</div> </div> <div class="solution-row"> <div class="solution-num">/06</div> <div class="solution-title"><a href="/Results/Grid%20Cells">Grid Cells</a></div> <div class="solution-desc">grid_cells when you set retain_grid_objects.</div> </div> </div> ## Sizes at a glance | Symbol | Meaning | Root field | | --- | --- | --- | | N | Observations | <span class="mono">n_observations</span> | | K | Variables | <span class="mono">n_variables</span> | | T | Thresholds on this result | <span class="mono">n_thresholds</span> | | Q | Attribute combinations (Grid cells) | inferred from retained cell arrays | - **Predict:** T matches the thresholds you passed - **MaxFit:** usually T = 1 (the winner) - **Grid:** usually T = 1 (the composite); scalar forecast: first element of <span class="mono">yhat</span> > [!tip] > Check that a nested group exists before you use it. In Python it may be <span class="mono">None</span>; in R it may be <span class="mono">NULL</span>. <div class="btn-row"> <a class="btn-primary" href="/Results/Core">Read core fields</a> <a class="btn-ghost" href="/Functions/Overview">Back to Functions</a> </div>