Пример #1
0
    def test_mixture_density(self):
        process1 = RenewalProcess(PoissonDensity(), ConstantIntensity())
        process2 = RenewalProcess(PoissonDensity(), ExponentialDecay())
        mixed_process = MixedProcess(process1, process2)
        intensities_params = [1, 10, 2]
        t = 0.5
        vals = mixed_process._intensity_func(t, *intensities_params)
        ints = mixed_process._intensity_integral(t, *intensities_params)

        d_mix = mixed_process._density_func(vals, ints, 4)
        d1 = process1._density_func(vals[0], ints[0])
        d2 = process1._density_func(vals[1], ints[1])

        self.assertAlmostEqual(d_mix, 0.8 * d1 + 0.2 * d2)
Пример #2
0
    def test_mixture_density_array(self):
        process1 = RenewalProcess(PoissonDensity(), ConstantIntensity())
        process2 = RenewalProcess(PoissonDensity(), ExponentialDecay())
        mixed_process = MixedProcess(process1, process2)
        intensities_params = [1, 10, 2]
        t = np.array([0.5, 1, 1.5])

        vals = mixed_process._intensity_func(t, *intensities_params)
        ints = mixed_process._intensity_integral(t, *intensities_params)

        d_mix_arr = mixed_process._density_func(vals, ints, 4)
        d1_arr = process1._density_func(vals[:, 0], ints[:, 0])
        d2_arr = process1._density_func(vals[:, 1], ints[:, 1])

        for d_mix, d1, d2 in zip(d_mix_arr, d1_arr, d2_arr):
            self.assertAlmostEqual(d_mix, 0.8 * d1 + 0.2 * d2)