def test_LeastSquares(loss, verbose): rng = np.random.default_rng(1) x = np.linspace(0, 1, 1000) ye = 0.1 y = rng.normal(2 * x + 1, ye) def model(x, a, b): return a + b * x cost = LeastSquares(x, y, ye, model, loss=loss, verbose=verbose) assert cost.ndata == len(x) m = Minuit(cost, a=0, b=0) m.migrad() assert_allclose(m.values, (1, 2), rtol=0.05) assert cost.loss == loss if loss != "linear": cost.loss = "linear" assert cost.loss != loss m.migrad() assert_allclose(m.values, (1, 2), rtol=0.05) assert m.ndof == len(x) - 2 assert_allclose(m.fmin.reduced_chi2, 1, atol=5e-2)
def test_LeastSquares(loss, verbose): np.random.seed(1) x = np.random.rand(20) y = 2 * x + 1 ye = 0.1 y += ye * np.random.randn(len(y)) def model(x, a, b): return a + b * x cost = LeastSquares(x, y, ye, model, loss=loss, verbose=verbose) m = Minuit(cost, a=0, b=0) m.migrad() assert_allclose(m.values, (1, 2), rtol=0.03) assert cost.loss == loss if loss != "linear": cost.loss = "linear" assert cost.loss != loss m.migrad() assert_allclose(m.values, (1, 2), rtol=0.02)