def test_cvm(size=1000): y_pred = random.uniform(size=size) y = random.uniform(size=size) > 0.5 sample_weight = random.exponential(size=size) bin_indices = random.randint(0, 10, size=size) mask = y == 1 groups_indices = bin_to_group_indices(bin_indices=bin_indices, mask=mask) cvm1 = bin_based_cvm(y_pred[mask], sample_weight=sample_weight[mask], bin_indices=bin_indices[mask]) cvm2 = group_based_cvm(y_pred, mask=mask, sample_weight=sample_weight, groups_indices=groups_indices) assert numpy.allclose(cvm1, cvm2)
def test_cvm_sde_limit(size=2000): """ Checks that in the limit CvM coincides with MSE """ effs = numpy.linspace(0, 1, 2000) y_pred = random.uniform(size=size) y = random.uniform(size=size) > 0.5 sample_weight = random.exponential(size=size) bin_indices = random.randint(0, 10, size=size) y_pred += bin_indices * random.uniform() mask = y == 1 val1 = bin_based_cvm(y_pred[mask], sample_weight=sample_weight[mask], bin_indices=bin_indices[mask]) val2 = compute_sde_on_bins(y_pred, mask=mask, bin_indices=bin_indices, target_efficiencies=effs, sample_weight=sample_weight) assert numpy.allclose(val1, val2 ** 2, atol=1e-3, rtol=1e-2)
def test_cvm_sde_limit(size=2000): """ Checks that in the limit CvM coincides with MSE """ effs = numpy.linspace(0, 1, 2000) y_pred = random.uniform(size=size) y = random.uniform(size=size) > 0.5 sample_weight = random.exponential(size=size) bin_indices = random.randint(0, 10, size=size) y_pred += bin_indices * random.uniform() mask = y == 1 val1 = bin_based_cvm(y_pred[mask], sample_weight=sample_weight[mask], bin_indices=bin_indices[mask]) val2 = compute_sde_on_bins(y_pred, mask=mask, bin_indices=bin_indices, target_efficiencies=effs, sample_weight=sample_weight) assert numpy.allclose(val1, val2**2, atol=1e-3, rtol=1e-2)