Recency-weighted robust centre, replacing the baseline median #10
Labels
No Label
P0
P1
P2
release-blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: null/Privacy-Period-Tracker#10
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
BaselinePredictionEnginetakes a plain median of every confirmed interval, weighting a cycle from two years ago exactly as much as last month's. PRODUCT_PLAN.md §11 names an unweighted average as an acceptable prototype and an unacceptable final engine, and §12 step 3 asks for recency weighting explicitly.What to build, in
domain/prediction:The trap: recency weighting and outlier robustness pull against each other. Weight recent cycles hard enough and a single recent outlier becomes the forecast, which is the §51 outlier case failing in a new way. The existing acceptance tests are the guard — all twelve must still pass.
Keep
BaselinePredictionEnginein the tree. It is the thing the new engine has to beat, and a comparison test between them is what turns "different" into "better".Verify:
./gradlew :domain:prediction:testpasses all §51 acceptance cases against the new engine, and a comparison test shows lower mean absolute error thanBaselinePredictionEngineacross the §51 fixtures.