def test_quadratic(cls): """Checks the optimality of quadratic simplex lattice designs.""" answer_d = [ 2.772588722239781, 8.317766166719345, 16.63553233343869, 27.725887222397816, 41.58883083359672, 58.224363167035406, 77.63248422271388, 99.81319400063214, 124.76649250079016, 152.49237972318798, 182.99085566782557, 216.26192033470295, 252.30557372382012, 291.1218158351771, 332.7106466687738, 377.0720662246103, 424.2060745026866, 474.1126715030026, 526.7918572255585, 582.2436316703541, 640.4679948373896, 701.4649467266647, 765.2344873381797, 831.7766166719344, 901.091334727929, 973.1786415061633, 1048.0385370066374, 1125.6710212293513, 1206.076094174305, ] actual_d = [] order = ModelOrder.quadratic for i in range(2, 31): design = build_simplex_lattice(i, order) model = "-1 + " + make_model(design.columns, order, include_powers=False) x_matrix = patsy.dmatrix(model, design, return_type="dataframe") actual_d.append(det_xtxi(x_matrix, use_log=True)) np.testing.assert_allclose(answer_d, actual_d, rtol=1e-5)
def test_practical(cls): """Tests a 9 factor practical central composite design.""" ccd_data = build_ccd(9, "practical") x_matrix = patsy.dmatrix(make_quadratic_model(ccd_data.columns), ccd_data, return_type="dataframe") answer_d = -314.58564545825374 np.testing.assert_allclose(answer_d, det_xtxi(x_matrix), rtol=1e-3)
def test_orthogonal(cls): """Tests a 7 factor orthogonal central composite design.""" ccd_data = build_ccd(7, "orthogonal") x_matrix = patsy.dmatrix(make_quadratic_model(ccd_data.columns), ccd_data, return_type="dataframe") answer_d = -164.17093230784621 np.testing.assert_allclose(answer_d, det_xtxi(x_matrix), rtol=1e-3)
def test_spherical(cls): """Tests a 3 factor spherical central composite design.""" ccd_data = build_ccd(3, "spherical") x_matrix = patsy.dmatrix(make_quadratic_model(ccd_data.columns), ccd_data, return_type="dataframe") answer_d = -23.673909747960984 np.testing.assert_allclose(answer_d, det_xtxi(x_matrix), rtol=1e-4)
def test_rotatable(cls): """Tests a 5 factor rotatable central composite design.""" ccd_data = build_ccd(5, "rotatable") x_matrix = patsy.dmatrix(make_quadratic_model(ccd_data.columns), ccd_data, return_type="dataframe") answer_d = -75.66313056042111 np.testing.assert_allclose(answer_d, det_xtxi(x_matrix), rtol=1e-4)
def test_fcd(cls): """Tests a simple 2 factor face-centered central composite design.""" ccd_data = build_ccd(2, 1.0) x_matrix = patsy.dmatrix(make_quadratic_model(ccd_data.columns), ccd_data, return_type="dataframe") answer_d = -8.55333223803211 np.testing.assert_allclose(answer_d, det_xtxi(x_matrix), rtol=1e-5)
def test_three_factor(self): """Tests a 3 factor Box-Behnken design.""" factor_count = 3 design = build_box_behnken(factor_count) self.assertEqual(17, len(design)) x_matrix = patsy.dmatrix(make_quadratic_model(design.columns), design, return_type="dataframe") answer_d = -17.551823065312842 np.testing.assert_allclose(answer_d, det_xtxi(x_matrix), rtol=1e-5)
def test_twelve_factor(self): """Tests a 12 factor Box-Behnken design.""" factor_count = 12 design = build_box_behnken(factor_count) self.assertEqual(197, len(design)) x_matrix = patsy.dmatrix(make_quadratic_model(design.columns), design, return_type="dataframe") answer_d = -285.7997819420118 np.testing.assert_allclose(answer_d, det_xtxi(x_matrix), rtol=1e-5)
def test_six_factor(self): """Tests a 6 factor Box-Behnken design.""" factor_count = 6 design = build_box_behnken(factor_count) self.assertEqual(53, len(design)) x_matrix = patsy.dmatrix(make_quadratic_model(design.columns), design, return_type="dataframe") answer_d = -70.8199239661506 np.testing.assert_allclose(answer_d, det_xtxi(x_matrix), rtol=1e-5)
def test_five_factor(self): """Tests a 5 factor Box-Behnken design.""" factor_count = 5 design = build_box_behnken(factor_count) self.assertEqual(45, len(design)) x_matrix = patsy.dmatrix(make_quadratic_model(design.columns), design, return_type="dataframe") answer_d = -42.74068763678364 np.testing.assert_allclose(answer_d, det_xtxi(x_matrix), rtol=1e-5)
def test_twentyone_factor(self): """Tests a 21 factor Box-Behnken design.""" factor_count = 21 design = build_box_behnken(factor_count) self.assertEqual(341, len(design)) x_matrix = patsy.dmatrix(make_quadratic_model(design.columns), design, return_type="dataframe") answer_d = -765.04475512524230 np.testing.assert_allclose(answer_d, det_xtxi(x_matrix), rtol=1e-5)
def test_d_optimality(cls): answer_d = [ 2.513455e3, 2.197654e6, 5.52777e9, 1.85905e13, 3.447727e16, 1.275709e19 ] actual_d = [] for i in range(3, 9): design = build_simplex_centroid(i) model = "-1 + " + make_quadratic_model(design.columns, include_squared=False) x_matrix = patsy.dmatrix(model, design, return_type="dataframe") actual_d.append(det_xtxi(x_matrix, use_log=False)) np.testing.assert_allclose(answer_d, actual_d, rtol=1e-5)
def test_linear(cls): """Checks the optimality of linear simplex lattice designs.""" answer_d = [ 1 ] * 29 actual_d = [] order = ModelOrder.linear for i in range(2, 31): design = build_simplex_lattice(i, order) model = "-1 + " + make_model(design.columns, order, include_powers=False) x_matrix = patsy.dmatrix(model, design, return_type="dataframe") actual_d.append(det_xtxi(x_matrix, use_log=False)) np.testing.assert_allclose(answer_d, actual_d, rtol=1e-5)
def test_cubic(cls): """Checks the optimality of cubic simplex lattice designs.""" answer_d = [ 2.2096470973347775, 13.228395211331954, 39.6547285196038, 88.08632361788068, 165.1201784728033, 277.35271609131553, 431.37986869540055, 633.7971466915958, 891.1996956551948, 1210.1823437751189, 1597.3396416379908, 2059.265895808832, ] actual_d = [] order = ModelOrder.cubic for i in range(2, 14): design = build_simplex_lattice(i, order) model = "-1 + " + make_model(design.columns, order, include_powers=False) x_matrix = patsy.dmatrix(model, design, return_type="dataframe") actual_d.append(det_xtxi(x_matrix, use_log=True)) np.testing.assert_allclose(answer_d, actual_d, rtol=1e-4)