Пример #1
0
    def setUp(self):
        super(HarmoniserWithModelTestCase, self).setUp()
        native_measures_1 = self.measures[0:self.number_of_measures / 3]
        native_measures_2 = self.measures[
            self.number_of_measures / 3:2 * self.number_of_measures / 3]
        target_measures = self.measures[2 * self.number_of_measures / 3:]
        emsr = EmpiricalMagnitudeScalingRelationship(
            native_measures=native_measures_1,
            target_measures=target_measures)
        self.a_model, _ = emsr.apply_regression_model(
            LinearModel)

        emsr = EmpiricalMagnitudeScalingRelationship(
            native_measures=native_measures_2,
            target_measures=target_measures)
        self.ya_model, _ = emsr.apply_regression_model(
            LinearModel)
    def test_regression_with_initial_values(self):
        # Assess
        A = 0.85
        B = 1.03
        native_measures = catalogue.MagnitudeMeasure.make_from_lists(
            'mb',
            np.random.uniform(3., 8.5, 1000),
            np.random.uniform(0.02, 0.2, 1000))
        target_measures = catalogue.MagnitudeMeasure.make_from_lists(
        'Mw', A + B * np.array([m.value for m in native_measures]),
        np.random.uniform(0.025, 0.2, 1000))
        emsr = EmpiricalMagnitudeScalingRelationship(
            native_measures,
            target_measures)

        # Act
        _, output = emsr.apply_regression_model(LinearModel,
                                                initial_values=[0, 1])

        # Assert
        self.assertTrue(allclose(np.array([A, B]), output.beta))
        self.assertTrue(output.res_var < 1e-20)
    def test_polynomial_regression(self):
        # Assess
        A = 0.046
        B = 0.556
        C = 0.673
        native_measures = catalogue.MagnitudeMeasure.make_from_lists(
            'mb', np.random.uniform(3., 8.5, 1000),
            np.random.uniform(0.02, 0.2, 1000))
        target_measures = catalogue.MagnitudeMeasure.make_from_lists(
            'Mw',
            (C + B * np.array([m.value for m in native_measures]) +
             A * (np.array([m.value for m in native_measures]) ** 2.)),
             np.random.uniform(0.025, 0.2, 1000))
        emsr = EmpiricalMagnitudeScalingRelationship(
            native_measures,
            target_measures)

        # Act
        _, output = emsr.apply_regression_model(PolynomialModel,
                                             order=2)

        # Assert
        self.assertTrue(allclose(np.array([C, B, A]), output.beta))
        self.assertTrue(output.res_var < 1e-20)