Skip to content

Build the linear observable coefficient profile that issue 572's evaluation cleared #671

Description

@wshlavacek

Issue #572 asked for an evaluation before anything was built. It is done and it passes. ADR-0129
records the numbers and the scope. This issue tracks the build.

What it is. A whole fit switch, linear_profiling = 1, that solves an observable's scale and
offset from the data at every evaluation instead of searching for them, so those parameters leave
the search while staying declared and still counting in k. Modelled on noise_profiling, which is
the same shape of change.

Scope, in the order an implementation would take it. ADR-0129 has the reasoning for each.

  1. The switch, refused rather than partly applied.
  2. A plan method on the objective that classifies each declared free parameter reaching an
    observable, with a one line reason for every refusal.
  3. Refusals before the run starts. A loss that is not a sum of squares, tested with
    LikelihoodObjective.is_linear_gaussian() and not with the residual scale. A log family unless
    the parameter is homogeneous, where the existing geometric mean form applies. Any parameter a
    noise source also reads, tested on resolved names. A Bayesian sampler.
  4. One stacked solve per group of tied points. Several parameters in our benchmark corpus are tied
    across up to eleven experiments, so a per series solve is the wrong object.
  5. A stated answer to the bounds question. The closed form is unconstrained and a profiled
    parameter still has declared bounds. Leaving them inert lets a parameter declared positive come
    back negative, which happens at a third of sampled points on the fixture and scores better.
    Clamp, refuse, or accept, but say which in the output.
  6. Weight by the objective's own variances, which is what makes the closed form the optimum and
    what keeps the gradient simple.
  7. A pseudo inverse fallback where the design matrix is singular, which happens whenever the
    simulated column is constant over the group.
  8. Keep counting the parameter in k, and report its fitted value beside the results.
  9. Documentation saying that how often the profile returns a flat line is a statement about the
    declared box.

Not in scope. The Schwen reparametrization, where the declared names span the right space but
mapping back to them is ill posed as the scale goes to zero. A mixed observable with both linear
and nonlinear declared parameters in one formula.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions