Exemplo n.º 1
0
    def test_compute_quantile_curve(self):
        expected_curve = numpy.array([
            9.9178000e-01, 9.8892000e-01, 9.6903000e-01, 9.4030000e-01,
            8.8405000e-01, 7.8782000e-01, 6.4897250e-01, 4.8284250e-01,
            3.4531500e-01, 3.2337000e-01, 1.8880500e-01, 9.5574000e-02,
            4.3707250e-02, 1.9643000e-02, 8.1923000e-03, 2.9157000e-03,
            7.9955000e-04, 1.5233000e-04, 1.5582000e-05])

        quantile = 0.75

        curves = [
            [9.8161000e-01, 9.7837000e-01, 9.5579000e-01, 9.2555000e-01,
             8.7052000e-01, 7.8214000e-01, 6.5708000e-01, 5.0526000e-01,
             3.7044000e-01, 3.4740000e-01, 2.0502000e-01, 1.0506000e-01,
             4.6531000e-02, 1.7548000e-02, 5.4791000e-03, 1.3377000e-03,
             2.2489000e-04, 2.2345000e-05, 4.2696000e-07],
            [9.7309000e-01, 9.6857000e-01, 9.3853000e-01, 9.0089000e-01,
             8.3673000e-01, 7.4057000e-01, 6.1272000e-01, 4.6467000e-01,
             3.3694000e-01, 3.1536000e-01, 1.8340000e-01, 9.2412000e-02,
             4.0202000e-02, 1.4900000e-02, 4.5924000e-03, 1.1126000e-03,
             1.8647000e-04, 1.8882000e-05, 4.7123000e-07],
            [9.9178000e-01, 9.8892000e-01, 9.6903000e-01, 9.4030000e-01,
             8.8405000e-01, 7.8782000e-01, 6.4627000e-01, 4.7537000e-01,
             3.3168000e-01, 3.0827000e-01, 1.7279000e-01, 8.8360000e-02,
             4.2766000e-02, 1.9643000e-02, 8.1923000e-03, 2.9157000e-03,
             7.9955000e-04, 1.5233000e-04, 1.5582000e-05],
            [9.8885000e-01, 9.8505000e-01, 9.5972000e-01, 9.2494000e-01,
             8.6030000e-01, 7.5574000e-01, 6.1009000e-01, 4.4217000e-01,
             3.0543000e-01, 2.8345000e-01, 1.5760000e-01, 8.0225000e-02,
             3.8681000e-02, 1.7637000e-02, 7.2685000e-03, 2.5474000e-03,
             6.8347000e-04, 1.2596000e-04, 1.2853000e-05],
            [9.9178000e-01, 9.8892000e-01, 9.6903000e-01, 9.4030000e-01,
             8.8405000e-01, 7.8782000e-01, 6.4627000e-01, 4.7537000e-01,
             3.3168000e-01, 3.0827000e-01, 1.7279000e-01, 8.8360000e-02,
             4.2766000e-02, 1.9643000e-02, 8.1923000e-03, 2.9157000e-03,
             7.9955000e-04, 1.5233000e-04, 1.5582000e-05],
        ]
        actual_curve = quantile_curve(curves, quantile)

        # TODO(LB): Check with our hazard experts to see if this is reasonable
        # tolerance. Better yet, get a fresh set of test data. (This test data
        # was just copied verbatim from from some old tests in
        # `tests/hazard_test.py`.
        numpy.testing.assert_allclose(expected_curve, actual_curve, atol=0.005)

        # Since this implementation is an optimized but equivalent version of
        # scipy's `mquantiles`, compare algorithms just to prove they are the
        # same:
        scipy_curve = mstats.mquantiles(curves, prob=quantile, axis=0)[0]
        numpy.testing.assert_allclose(scipy_curve, actual_curve)
Exemplo n.º 2
0
    def test_compute_quantile_curve(self):
        expected_curve = numpy.array([
            0.9910475, 0.9879525, 0.9667025, 0.9366125, 0.8806675, 0.7864,
            0.64627, 0.47537, 0.335625, 0.3135875, 0.1807475, 0.091399,
            0.042766, 0.0191415, 0.00796135, 0.002823625, 0.00077053,
            0.0001457375, 1.489975e-05
        ])

        quantile = 0.75

        curves = [
            [
                9.8161000e-01, 9.7837000e-01, 9.5579000e-01, 9.2555000e-01,
                8.7052000e-01, 7.8214000e-01, 6.5708000e-01, 5.0526000e-01,
                3.7044000e-01, 3.4740000e-01, 2.0502000e-01, 1.0506000e-01,
                4.6531000e-02, 1.7548000e-02, 5.4791000e-03, 1.3377000e-03,
                2.2489000e-04, 2.2345000e-05, 4.2696000e-07
            ],
            [
                9.7309000e-01, 9.6857000e-01, 9.3853000e-01, 9.0089000e-01,
                8.3673000e-01, 7.4057000e-01, 6.1272000e-01, 4.6467000e-01,
                3.3694000e-01, 3.1536000e-01, 1.8340000e-01, 9.2412000e-02,
                4.0202000e-02, 1.4900000e-02, 4.5924000e-03, 1.1126000e-03,
                1.8647000e-04, 1.8882000e-05, 4.7123000e-07
            ],
            [
                9.9178000e-01, 9.8892000e-01, 9.6903000e-01, 9.4030000e-01,
                8.8405000e-01, 7.8782000e-01, 6.4627000e-01, 4.7537000e-01,
                3.3168000e-01, 3.0827000e-01, 1.7279000e-01, 8.8360000e-02,
                4.2766000e-02, 1.9643000e-02, 8.1923000e-03, 2.9157000e-03,
                7.9955000e-04, 1.5233000e-04, 1.5582000e-05
            ],
            [
                9.8885000e-01, 9.8505000e-01, 9.5972000e-01, 9.2494000e-01,
                8.6030000e-01, 7.5574000e-01, 6.1009000e-01, 4.4217000e-01,
                3.0543000e-01, 2.8345000e-01, 1.5760000e-01, 8.0225000e-02,
                3.8681000e-02, 1.7637000e-02, 7.2685000e-03, 2.5474000e-03,
                6.8347000e-04, 1.2596000e-04, 1.2853000e-05
            ],
            [
                9.9178000e-01, 9.8892000e-01, 9.6903000e-01, 9.4030000e-01,
                8.8405000e-01, 7.8782000e-01, 6.4627000e-01, 4.7537000e-01,
                3.3168000e-01, 3.0827000e-01, 1.7279000e-01, 8.8360000e-02,
                4.2766000e-02, 1.9643000e-02, 8.1923000e-03, 2.9157000e-03,
                7.9955000e-04, 1.5233000e-04, 1.5582000e-05
            ],
        ]
        actual_curve = quantile_curve(quantile, curves)
        numpy.testing.assert_allclose(expected_curve, actual_curve, atol=0.005)
Exemplo n.º 3
0
    def test_compute_weighted_quantile_curve_case2(self):
        expected_curve = numpy.array([0.89556, 0.83045, 0.73646])

        quantile = 0.3

        curves = [
            [9.2439e-01, 8.6700e-01, 7.7785e-01],
            [8.9556e-01, 8.3045e-01, 7.3646e-01],
            [9.1873e-01, 8.6697e-01, 7.8992e-01],
        ]
        weights = [0.2, 0.3, 0.5]

        actual_curve = quantile_curve(curves, quantile, weights)

        numpy.testing.assert_allclose(expected_curve, actual_curve)
Exemplo n.º 4
0
    def test_compute_weighted_quantile_curve_case1(self):
        expected_curve = numpy.array([0.69909, 0.60859, 0.50328])

        quantile = 0.3

        curves = [
            [9.9996e-01, 9.9962e-01, 9.9674e-01],
            [6.9909e-01, 6.0859e-01, 5.0328e-01],
            [1.0000e+00, 9.9996e-01, 9.9947e-01],
        ]
        weights = [0.5, 0.3, 0.2]

        actual_curve = quantile_curve(curves, quantile, weights)

        numpy.testing.assert_allclose(expected_curve, actual_curve)
Exemplo n.º 5
0
    def test_compute_quantile_curve(self):
        expected_curve = numpy.array(
            [0.9910475, 0.9879525, 0.9667025, 0.9366125, 0.8806675, 0.7864,
             0.64627, 0.47537, 0.335625, 0.3135875, 0.1807475, 0.091399,
             0.042766, 0.0191415, 0.00796135, 0.002823625, 0.00077053,
             0.0001457375, 1.489975e-05])

        quantile = 0.75

        curves = [
            [9.8161000e-01, 9.7837000e-01, 9.5579000e-01, 9.2555000e-01,
             8.7052000e-01, 7.8214000e-01, 6.5708000e-01, 5.0526000e-01,
             3.7044000e-01, 3.4740000e-01, 2.0502000e-01, 1.0506000e-01,
             4.6531000e-02, 1.7548000e-02, 5.4791000e-03, 1.3377000e-03,
             2.2489000e-04, 2.2345000e-05, 4.2696000e-07],
            [9.7309000e-01, 9.6857000e-01, 9.3853000e-01, 9.0089000e-01,
             8.3673000e-01, 7.4057000e-01, 6.1272000e-01, 4.6467000e-01,
             3.3694000e-01, 3.1536000e-01, 1.8340000e-01, 9.2412000e-02,
             4.0202000e-02, 1.4900000e-02, 4.5924000e-03, 1.1126000e-03,
             1.8647000e-04, 1.8882000e-05, 4.7123000e-07],
            [9.9178000e-01, 9.8892000e-01, 9.6903000e-01, 9.4030000e-01,
             8.8405000e-01, 7.8782000e-01, 6.4627000e-01, 4.7537000e-01,
             3.3168000e-01, 3.0827000e-01, 1.7279000e-01, 8.8360000e-02,
             4.2766000e-02, 1.9643000e-02, 8.1923000e-03, 2.9157000e-03,
             7.9955000e-04, 1.5233000e-04, 1.5582000e-05],
            [9.8885000e-01, 9.8505000e-01, 9.5972000e-01, 9.2494000e-01,
             8.6030000e-01, 7.5574000e-01, 6.1009000e-01, 4.4217000e-01,
             3.0543000e-01, 2.8345000e-01, 1.5760000e-01, 8.0225000e-02,
             3.8681000e-02, 1.7637000e-02, 7.2685000e-03, 2.5474000e-03,
             6.8347000e-04, 1.2596000e-04, 1.2853000e-05],
            [9.9178000e-01, 9.8892000e-01, 9.6903000e-01, 9.4030000e-01,
             8.8405000e-01, 7.8782000e-01, 6.4627000e-01, 4.7537000e-01,
             3.3168000e-01, 3.0827000e-01, 1.7279000e-01, 8.8360000e-02,
             4.2766000e-02, 1.9643000e-02, 8.1923000e-03, 2.9157000e-03,
             7.9955000e-04, 1.5233000e-04, 1.5582000e-05],
        ]
        actual_curve = quantile_curve(quantile, curves)
        numpy.testing.assert_allclose(expected_curve, actual_curve, atol=0.005)