Skip to content

The non-grav weak-constraint guard measures the orbit's conditioning, not the amplitude's #541

Description

@matthewholman

WEAK_NONGRAV_RCOND rejects a joint state + non-grav fit when the reciprocal condition number of the whole npar×npar correlation matrix falls below 1e-8. That is not a statement about the non-grav column: a six-parameter orbit fit is itself strongly correlated, so the test is dominated by the orbit underneath. On (6489) Golevka the state block alone has rcond 2.6e-10 — twenty-five times below the threshold — while A2 correlates with the state at only 0.91–0.93 and its formal uncertainty, 1.6e-15 au/day², matches the published one. The fit is rejected for the conditioning of its own orbit, so A2 is reported as NaN even after #536.

I tried replacing it with the amplitude's variance inflation factor and measured that this does not work either. On a synthetic A2 arc (truth −5.0e-14):

arc VIF A2 ± σ
10 d 5.7e4 −7.5e−12 ± 2.6e−7
30 d 1.2e4 −3.0e−13 ± 1.8e−8
90 d 23 −5.2e−14 ± 1.3e−10
4 yr 19 −5.00e−14 ± 3.6e−13
6489 Golevka 3.2e5 −10.2e−15 ± 1.6e−15

Golevka is a 6σ detection with a higher VIF than the useless 10-day arc. Correlation with the state is not what separates them; whether the amplitude is determined is, and the covariance already reports that faithfully.

So the question is what the guard is for. With the solve fixed the state is no longer contaminated, and a large σ is an honest answer rather than a failure. Worth a decision before picking a new criterion — test_a2_weak_constraint_guard_on_short_arc encodes the current one.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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