Skip to content

Commit d2bde2e

Browse files
committed
Update: test setup
1 parent 31f57af commit d2bde2e

2 files changed

Lines changed: 67 additions & 39 deletions

File tree

test/fit/eiv/test_eiv_jax.py

Lines changed: 45 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,46 +16,42 @@ class ErrorsInVariablesTest(unittest.TestCase):
1616
Tests EIV regression.
1717
"""
1818

19-
def test_linear_model(self):
20-
"""
21-
Tests EIV regression by fitting a linear model to generated
22-
test data with known uncertainties of x and y.
23-
"""
19+
def setUp(self):
2420
n = 100
2521
x = np.linspace(0.0, 100.0, n).reshape((n, 1))
2622
u = 1.0 + np.sqrt(x)
2723

28-
rng = np.random.default_rng(42)
29-
y = x + rng.normal(0.0, u, (n, 1))
30-
x = x + rng.normal(0.0, u, (n, 1))
24+
rng = np.random.default_rng(5489)
25+
self.n = n
26+
self.u = u
27+
self.x = x + rng.normal(0.0, u, (n, 1))
28+
self.y = x + rng.normal(0.0, u, (n, 1))
3129

32-
result = EIV().fit(Linear(), x, y, ux=u, uy=u)
30+
def test_linear_model(self):
31+
"""
32+
Tests EIV regression by fitting a linear model to generated
33+
test data with known uncertainties of x and y.
34+
"""
35+
result = EIV().fit(Linear(), self.x, self.y, ux=self.u, uy=self.u)
3336

3437
self.assertEqual(0, result.info)
3538
self.assertAlmostEqual(1.0, result.popt[0], delta=0.05)
3639
self.assertAlmostEqual(0.0, result.popt[1], delta=1.00)
3740
self.assertAlmostEqual(0.0, result.punc[0], delta=0.05)
3841
self.assertAlmostEqual(0.0, result.punc[1], delta=1.00)
3942
self.assertAlmostEqual(0.0, result.pcov[0, 0], delta=0.001)
40-
self.assertAlmostEqual(0.0, result.pcov[0, 1], delta=0.015)
41-
self.assertAlmostEqual(0.0, result.pcov[1, 0], delta=0.015)
43+
self.assertAlmostEqual(0.0, result.pcov[0, 1], delta=0.020)
44+
self.assertAlmostEqual(0.0, result.pcov[1, 0], delta=0.020)
4245
self.assertAlmostEqual(0.0, result.pcov[1, 1], delta=1.000)
4346

44-
result = EIV().fit(Linear(), x, y, ux=u, uy=u, covar=True)
45-
46-
self.assertEqual(0, result.info)
47-
self.assertAlmostEqual(1.0, result.popt[0], delta=0.05)
48-
self.assertAlmostEqual(0.0, result.popt[1], delta=1.00)
49-
self.assertAlmostEqual(0.0, result.punc[0], delta=0.05)
50-
self.assertAlmostEqual(0.0, result.punc[1], delta=1.00)
51-
self.assertAlmostEqual(0.0, result.pcov[0, 0], delta=0.001)
52-
self.assertAlmostEqual(0.0, result.pcov[0, 1], delta=0.015)
53-
self.assertAlmostEqual(0.0, result.pcov[1, 0], delta=0.015)
54-
self.assertAlmostEqual(0.0, result.pcov[1, 1], delta=1.000)
47+
dof = self.n - 2
48+
self.assertAlmostEqual(
49+
dof, 2.0 * result.cost, delta=np.sqrt(2.0 * dof)
50+
)
5551

5652
RegressionPlot(result).plot(
57-
x,
58-
y,
53+
self.x,
54+
self.y,
5955
xlabel=r"$x$",
6056
ylabel=r"$y$",
6157
xrange=(-10.0, 110.0),
@@ -64,7 +60,7 @@ def test_linear_model(self):
6460
title="Errors-in-variables regression",
6561
)
6662
MatrixPlot().plot(
67-
result.ycov_p(np.linspace(0.5, 99.5, n)),
63+
result.ycov_p(np.linspace(0.5, 99.5, self.n)),
6864
xlabel=r"$x$",
6965
ylabel=r"$x$",
7066
xrange=(0.5, 99.5),
@@ -76,6 +72,30 @@ def test_linear_model(self):
7672
title="Errors-in-variables regression",
7773
)
7874

75+
def test_linear_model_with_covar(self):
76+
"""
77+
Tests EIV regression by fitting a linear model to generated
78+
test data with known uncertainties of x and y.
79+
"""
80+
result = EIV().fit(
81+
Linear(), self.x, self.y, ux=self.u, uy=self.u, covar=True
82+
)
83+
84+
self.assertEqual(0, result.info)
85+
self.assertAlmostEqual(1.0, result.popt[0], delta=0.05)
86+
self.assertAlmostEqual(0.0, result.popt[1], delta=1.00)
87+
self.assertAlmostEqual(0.0, result.punc[0], delta=0.05)
88+
self.assertAlmostEqual(0.0, result.punc[1], delta=1.00)
89+
self.assertAlmostEqual(0.0, result.pcov[0, 0], delta=0.001)
90+
self.assertAlmostEqual(0.0, result.pcov[0, 1], delta=0.020)
91+
self.assertAlmostEqual(0.0, result.pcov[1, 0], delta=0.020)
92+
self.assertAlmostEqual(0.0, result.pcov[1, 1], delta=1.000)
93+
94+
dof = self.n - 2
95+
self.assertAlmostEqual(
96+
dof, 2.0 * result.cost, delta=np.sqrt(2.0 * dof)
97+
)
98+
7999

80100
if __name__ == "__main__":
81101
unittest.main()

test/fit/eiv/test_eiv_numpy.py

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,34 +16,42 @@ class ErrorsInVariablesTest(unittest.TestCase):
1616
Tests EIV regression.
1717
"""
1818

19-
def test_linear_model(self):
20-
"""
21-
Tests EIV regression by fitting a linear model to generated
22-
test data with known uncertainties of x and y.
23-
"""
19+
def setUp(self):
2420
n = 100
2521
x = np.linspace(0.0, 100.0, n).reshape((n, 1))
2622
u = 1.0 + np.sqrt(x)
2723

28-
rng = np.random.default_rng(42)
29-
y = x + rng.normal(0.0, u, (n, 1))
30-
x = x + rng.normal(0.0, u, (n, 1))
24+
rng = np.random.default_rng(5489)
25+
self.n = n
26+
self.u = u
27+
self.x = x + rng.normal(0.0, u, (n, 1))
28+
self.y = x + rng.normal(0.0, u, (n, 1))
3129

32-
result = EIV().fit(Linear(), x, y, ux=u, uy=u)
30+
def test_linear_model(self):
31+
"""
32+
Tests EIV regression by fitting a linear model to generated
33+
test data with known uncertainties of x and y.
34+
"""
35+
result = EIV().fit(Linear(), self.x, self.y, ux=self.u, uy=self.u)
3336

3437
self.assertEqual(0, result.info)
3538
self.assertAlmostEqual(1.0, result.popt[0], delta=0.05)
3639
self.assertAlmostEqual(0.0, result.popt[1], delta=1.00)
3740
self.assertAlmostEqual(0.0, result.punc[0], delta=0.05)
3841
self.assertAlmostEqual(0.0, result.punc[1], delta=1.00)
3942
self.assertAlmostEqual(0.0, result.pcov[0, 0], delta=0.001)
40-
self.assertAlmostEqual(0.0, result.pcov[0, 1], delta=0.015)
41-
self.assertAlmostEqual(0.0, result.pcov[1, 0], delta=0.015)
43+
self.assertAlmostEqual(0.0, result.pcov[0, 1], delta=0.020)
44+
self.assertAlmostEqual(0.0, result.pcov[1, 0], delta=0.020)
4245
self.assertAlmostEqual(0.0, result.pcov[1, 1], delta=1.000)
4346

47+
dof = self.n - 2
48+
self.assertAlmostEqual(
49+
dof, 2.0 * result.cost, delta=np.sqrt(2.0 * dof)
50+
)
51+
4452
RegressionPlot(result).plot(
45-
x,
46-
y,
53+
self.x,
54+
self.y,
4755
xlabel=r"$x$",
4856
ylabel=r"$y$",
4957
xrange=(-10.0, 110.0),
@@ -52,7 +60,7 @@ def test_linear_model(self):
5260
title="Errors-in-variables regression",
5361
)
5462
MatrixPlot().plot(
55-
result.ycov_p(np.linspace(0.5, 99.5, n)),
63+
result.ycov_p(np.linspace(0.5, 99.5, self.n)),
5664
xlabel=r"$x$",
5765
ylabel=r"$x$",
5866
xrange=(0.5, 99.5),

0 commit comments

Comments
 (0)