Skip to content

GSUA-CSB v1.10

Latest

Choose a tag to compare

@drojasd drojasd released this 13 Aug 04:37
· 3 commits to master since this release

v1.10 — Noise-calibrated fit-acceptance threshold; gsua_likelihood fix

  • New gsua_noisefloor: replaces the scale-dependent res < 1.5*res(1) multistart-acceptance idiom with a parametric-bootstrap noise floor. Simulates the best fit, estimates an observation-noise model (Poisson, quasi-Poisson [default], or global negative-binomial) from its residuals, bootstraps synthetic datasets under that noise, and scores the true model against each with the same cost function gsua_pe minimized — giving a data-calibrated acceptance threshold instead of a fit-quality-dependent one. Handles cumulative outputs via incident-series differencing, and requires the margin/alpha a gsua_pe run scored with (now auto-recovered — see below).
  • gsua_pe now records the Margin/Alpha it scored a fit with as table CustomProperties, so gsua_noisefloor can recover them automatically without the caller re-specifying (and risking a mismatch).
  • Fixed gsua_likelihood: Taux was preallocated to the size of the profiled parameter subset but indexed by each parameter's absolute row in the full table — profiling a strict, non-empty subset of parameters could error or silently corrupt every unprofiled row's range to [0,0]. Taux is now seeded from T.Range directly, fixing both the misalignment and the corruption; full-parameter-set profiling (the common case) is unaffected.
  • New regression test suite in tests/ (15 new tests: NB2 parameterization, quasi-Poisson degeneracy fallback, cumulative-output handling, seed reproducibility, the fit-exceeds-floor warning, and the gsua_likelihood subset fix).
  • Mirrored to the Python port (gsua_csb.noise_floor) as part of the same pass; see the Python changelog for details. Porting surfaced that Python's costf/rcostf were not yet NaN-tolerant (the v1.9 MATLAB fix had no Python equivalent) — that retrofit is included as a prerequisite.