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.
- The switch, refused rather than partly applied.
- A plan method on the objective that classifies each declared free parameter reaching an
observable, with a one line reason for every refusal.
- 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.
- 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.
- 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.
- Weight by the objective's own variances, which is what makes the closed form the optimum and
what keeps the gradient simple.
- A pseudo inverse fallback where the design matrix is singular, which happens whenever the
simulated column is constant over the group.
- Keep counting the parameter in k, and report its fitted value beside the results.
- 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.
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 andoffset 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 isthe same shape of change.
Scope, in the order an implementation would take it. ADR-0129 has the reasoning for each.
observable, with a one line reason for every refusal.
LikelihoodObjective.is_linear_gaussian()and not with the residual scale. A log family unlessthe parameter is homogeneous, where the existing geometric mean form applies. Any parameter a
noise source also reads, tested on resolved names. A Bayesian sampler.
across up to eleven experiments, so a per series solve is the wrong object.
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.
what keeps the gradient simple.
simulated column is constant over the group.
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.