[Repo Assist] feat: implement OLS.Linear.Univariable.fitWithWeighting (weighted simple linear regression)#369
Draft
github-actions[bot] wants to merge 2 commits intodeveloperfrom
Conversation
…ar regression Closes #205 Add OLS.Linear.Univariable.fitWithWeighting that fits y = a + bx by solving the weighted least-squares normal equations analytically in a single pass: [Σw Σwx ] [a] [Σwy ] [Σwx Σwx²] [b] = [Σwxy] The closed-form solution avoids matrix inversion overhead and handles the common case (order-1 polynomial with weights) cleanly. Also wire the new function into LinearRegressor.fit (the OO API entry point) so the existing Weighting parameter now works for SimpleLinear instead of raising a NotImplementedException. Added 6 tests covering: - equal-unit-weight reproduces unweighted fit - exact line recovery (intercept=2, slope=3) - down-weighting an outlier improves accuracy - scaling all weights leaves coefficients unchanged - agreement with Polynomial.fitWithWeighting order=1 - LinearRegressor.fit dispatch Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 This is an automated PR from Repo Assist.
Closes #205
Problem
OLS.Linear.Univariablehad no weighted variant. UsingLinearRegressor.fitwithWeightingandMethod.SimpleLinearthrew afailwithfat runtime. The only workaround wasPolynomial.fitWithWeighting 1, which is non-obvious and unnecessarily general.Root cause
The
Univariablemodule simply never had a weighted implementation.Fix
Add
OLS.Linear.Univariable.fitWithWeightingthat solves the WLS normal equations analytically in a single pass:Closed-form solution — no matrix allocation required:
Wire
LinearRegressor.fitto use it whenWeightingis provided andFittingMethod = SimpleLinear.Usage
Tests cover: equal-unit-weight = unweighted, exact coefficient recovery, outlier down-weighting, scale invariance, agreement with
Polynomial.fitWithWeighting 1, andLinearRegressor.fitdispatch.