From bc140a7fc0860873470fd68be5011634a3b8d171 Mon Sep 17 00:00:00 2001 From: Giordon Stark Date: Sat, 16 Jan 2021 13:52:01 -0500 Subject: [PATCH] feat: Add discovery p0 test statistic (#1232) * Add discovery test statistic q0 * Teach the calculators to switch the asimov mu depending on the test statistic (to be refactored in later PR) * Add tests for discovery test stat * Add validation ROOT files and tests Co-authored-by: Nikolai Hartmann --- docs/api.rst | 1 + src/pyhf/infer/__init__.py | 31 ++- src/pyhf/infer/calculators.py | 7 +- src/pyhf/infer/test_statistics.py | 63 ++++++ src/pyhf/infer/utils.py | 14 +- tests/test_infer.py | 24 ++- tests/test_teststats.py | 28 +++ tests/test_validation.py | 195 +++++++++++++++--- validation/data/1bin_example1_q0.json | 9 + .../config/HistFactorySchema.dtd | 160 ++++++++++++++ .../config/example.xml | 23 +++ .../config/example_channel.xml | 26 +++ .../multibin_histfactory_p0/data/data.root | Bin 0 -> 4716 bytes .../results/example_GaussExample.root | Bin 0 -> 503 bytes .../example_channel1_GaussExample_model.root | Bin 0 -> 39721 bytes .../example_combined_GaussExample_model.root | Bin 0 -> 40946 bytes validation/run_single_q0.py | 36 ++++ 17 files changed, 571 insertions(+), 46 deletions(-) create mode 100644 validation/data/1bin_example1_q0.json create mode 100644 validation/multibin_histfactory_p0/config/HistFactorySchema.dtd create mode 100644 validation/multibin_histfactory_p0/config/example.xml create mode 100644 validation/multibin_histfactory_p0/config/example_channel.xml create mode 100644 validation/multibin_histfactory_p0/data/data.root create mode 100644 validation/multibin_histfactory_p0/results/example_GaussExample.root create mode 100644 validation/multibin_histfactory_p0/results/example_channel1_GaussExample_model.root create mode 100644 validation/multibin_histfactory_p0/results/example_combined_GaussExample_model.root create mode 100644 validation/run_single_q0.py diff --git a/docs/api.rst b/docs/api.rst index e6156af405..a7fa872067 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -122,6 +122,7 @@ Inference .. autosummary:: :toctree: _generated/ + test_statistics.q0 test_statistics.qmu test_statistics.qmu_tilde test_statistics.tmu diff --git a/src/pyhf/infer/__init__.py b/src/pyhf/infer/__init__.py index 4aa1d16a13..2195c0cf8c 100644 --- a/src/pyhf/infer/__init__.py +++ b/src/pyhf/infer/__init__.py @@ -153,18 +153,27 @@ def hypotest( tensorlib.astensor(CLs), ) - _returns = [CLs] + is_q0 = kwargs.get('test_stat', 'qtilde') == 'q0' + + _returns = [CLsb if is_q0 else CLs] if return_tail_probs: - _returns.append([CLsb, CLb]) + if is_q0: + _returns.append([CLb]) + else: + _returns.append([CLsb, CLb]) if return_expected_set: CLs_exp = [] for n_sigma in [2, 1, 0, -1, -2]: expected_bonly_teststat = b_only_distribution.expected_value(n_sigma) - CLs = sig_plus_bkg_distribution.pvalue( - expected_bonly_teststat - ) / b_only_distribution.pvalue(expected_bonly_teststat) + if is_q0: + # despite the name in this case this is the discovery p value + CLs = sig_plus_bkg_distribution.pvalue(expected_bonly_teststat) + else: + CLs = sig_plus_bkg_distribution.pvalue( + expected_bonly_teststat + ) / b_only_distribution.pvalue(expected_bonly_teststat) CLs_exp.append(tensorlib.astensor(CLs)) if return_expected: _returns.append(CLs_exp[2]) @@ -173,10 +182,16 @@ def hypotest( n_sigma = 0 expected_bonly_teststat = b_only_distribution.expected_value(n_sigma) - CLs = sig_plus_bkg_distribution.pvalue( - expected_bonly_teststat - ) / b_only_distribution.pvalue(expected_bonly_teststat) + if is_q0: + # despite the name in this case this is the discovery p value + CLs = sig_plus_bkg_distribution.pvalue(expected_bonly_teststat) + else: + CLs = sig_plus_bkg_distribution.pvalue( + expected_bonly_teststat + ) / b_only_distribution.pvalue(expected_bonly_teststat) + _returns.append(tensorlib.astensor(CLs)) + # Enforce a consistent return type of the observed CLs return tuple(_returns) if len(_returns) > 1 else _returns[0] diff --git a/src/pyhf/infer/calculators.py b/src/pyhf/infer/calculators.py index 5dcc6cae1d..37d3c8ec64 100644 --- a/src/pyhf/infer/calculators.py +++ b/src/pyhf/infer/calculators.py @@ -267,7 +267,8 @@ def teststatistic(self, poi_test): ) sqrtqmu_v = tensorlib.sqrt(qmu_v) - asimov_mu = 0.0 + asimov_mu = 1.0 if self.test_stat == 'q0' else 0.0 + asimov_data = generate_asimov_data( asimov_mu, self.data, @@ -286,7 +287,7 @@ def teststatistic(self, poi_test): ) self.sqrtqmuA_v = tensorlib.sqrt(qmuA_v) - if self.test_stat == "q": + if self.test_stat in ["q", "q0"]: # qmu or q0 teststat = sqrtqmu_v - self.sqrtqmuA_v else: # qtilde @@ -528,7 +529,7 @@ def distributions(self, poi_test, track_progress=None): signal_sample = signal_pdf.sample(sample_shape) bkg_pars = self.pdf.config.suggested_init() - bkg_pars[self.pdf.config.poi_index] = 0.0 + bkg_pars[self.pdf.config.poi_index] = 1.0 if self.test_stat == 'q0' else 0.0 bkg_pdf = self.pdf.make_pdf(tensorlib.astensor(bkg_pars)) bkg_sample = bkg_pdf.sample(sample_shape) diff --git a/src/pyhf/infer/test_statistics.py b/src/pyhf/infer/test_statistics.py index 0cd2c066f6..9aebf6ba98 100644 --- a/src/pyhf/infer/test_statistics.py +++ b/src/pyhf/infer/test_statistics.py @@ -290,3 +290,66 @@ def tmu_tilde(mu, data, pdf, init_pars, par_bounds, fixed_params): + 'Use the tmu test statistic (pyhf.infer.test_statistics.tmu) instead.' ) return _tmu_like(mu, data, pdf, init_pars, par_bounds, fixed_params) + + +def q0(mu, data, pdf, init_pars, par_bounds, fixed_params): + r""" + The test statistic, :math:`q_{0}`, for discovery of a positive signal + as defined in Equation (12) in :xref:`arXiv:1007.1727`, for :math:`\mu=0`. + + .. math:: + :nowrap: + + \begin{equation} + q_{0} = \left\{\begin{array}{ll} + -2\ln\lambda\left(0\right), &\hat{\mu} \ge 0,\\ + 0, & \hat{\mu} < 0, + \end{array}\right. + \end{equation} + + Example: + >>> import pyhf + >>> pyhf.set_backend("numpy") + >>> model = pyhf.simplemodels.hepdata_like( + ... signal_data=[12.0, 11.0], bkg_data=[50.0, 52.0], bkg_uncerts=[3.0, 7.0] + ... ) + >>> observations = [60, 65] + >>> data = pyhf.tensorlib.astensor(observations + model.config.auxdata) + >>> test_mu = 0.0 + >>> init_pars = model.config.suggested_init() + >>> par_bounds = model.config.suggested_bounds() + >>> fixed_params = model.config.suggested_fixed() + >>> pyhf.infer.test_statistics.q0(test_mu, data, model, init_pars, par_bounds, fixed_params) + array(2.98339447) + + Args: + mu (Number or Tensor): The signal strength parameter (must be set to zero) + data (Tensor): The data to be considered + pdf (~pyhf.pdf.Model): The HistFactory statistical model used in the likelihood ratio calculation + init_pars (:obj:`list`): Values to initialize the model parameters at for the fit + par_bounds (:obj:`list` of :obj:`list`\s or :obj:`tuple`\s): The extrema of values the model parameters are allowed to reach in the fit + fixed_params (:obj:`list`): Parameters held constant in the fit + + Returns: + Float: The calculated test statistic, :math:`q_{0}` + """ + + if pdf.config.poi_index is None: + raise UnspecifiedPOI( + 'No POI is defined. A POI is required for profile likelihood based test statistics.' + ) + if mu != 0.0: + log.warning( + 'q0 test statistic only used for fit configuration with POI set to zero. Setting mu=0.' + ) + mu = 0.0 + + tensorlib, optimizer = get_backend() + + tmu_like_stat, (_, muhatbhat) = _tmu_like( + mu, data, pdf, init_pars, par_bounds, fixed_params, return_fitted_pars=True + ) + q0_stat = tensorlib.where( + muhatbhat[pdf.config.poi_index] < 0, tensorlib.astensor(0.0), tmu_like_stat + ) + return q0_stat diff --git a/src/pyhf/infer/utils.py b/src/pyhf/infer/utils.py index b45485a8db..46539fd82e 100644 --- a/src/pyhf/infer/utils.py +++ b/src/pyhf/infer/utils.py @@ -2,7 +2,7 @@ from .calculators import AsymptoticCalculator, ToyCalculator from ..exceptions import InvalidTestStatistic -from .test_statistics import qmu, qmu_tilde +from .test_statistics import q0, qmu, qmu_tilde import logging @@ -49,12 +49,19 @@ def create_calculator(calctype, *args, **kwargs): def get_test_stat(name): """ - Get the test statistic function, :func:`~pyhf.infer.test_statistics.qmu` or - :func:`~pyhf.infer.test_statistics.qmu_tilde`, by name. + Get the test statistic function by name. The following test statistics are supported: + + - :func:`~pyhf.infer.test_statistics.q0` + - :func:`~pyhf.infer.test_statistics.qmu` + - :func:`~pyhf.infer.test_statistics.qmu_tilde` Example: >>> from pyhf.infer import utils, test_statistics + >>> utils.get_test_stat("q0") + + >>> utils.get_test_stat("q0") == test_statistics.q0 + True >>> utils.get_test_stat("q") >>> utils.get_test_stat("q") == test_statistics.qmu @@ -72,6 +79,7 @@ def get_test_stat(name): callable: The test statistic function """ _mapping = { + "q0": q0, "q": qmu, "qtilde": qmu_tilde, } diff --git a/tests/test_infer.py b/tests/test_infer.py index cddf88a22f..1070b0f64a 100644 --- a/tests/test_infer.py +++ b/tests/test_infer.py @@ -93,40 +93,47 @@ def test_hypotest_poi_outofbounds(tmpdir, hypotest_args): pyhf.infer.hypotest(10.1, data, pdf) -def test_hypotest_return_tail_probs(tmpdir, hypotest_args): +@pytest.mark.parametrize('test_stat', ['q0', 'q', 'qtilde']) +def test_hypotest_return_tail_probs(tmpdir, hypotest_args, test_stat): """ Check that the return structure of pyhf.infer.hypotest with the return_tail_probs keyword arg is as expected """ tb = pyhf.tensorlib - kwargs = {'return_tail_probs': True} + kwargs = {'return_tail_probs': True, 'test_stat': test_stat} result = pyhf.infer.hypotest(*hypotest_args, **kwargs) # CLs_obs, [CL_sb, CL_b] assert len(list(result)) == 2 assert isinstance(result[0], type(tb.astensor(result[0]))) - assert len(result[1]) == 2 + assert len(result[1]) == 1 if test_stat == 'q0' else 2 assert check_uniform_type(result[1]) -def test_hypotest_return_expected(tmpdir, hypotest_args): +@pytest.mark.parametrize('test_stat', ['q0', 'q', 'qtilde']) +def test_hypotest_return_expected(tmpdir, hypotest_args, test_stat): """ Check that the return structure of pyhf.infer.hypotest with the additon of the return_expected keyword arg is as expected """ tb = pyhf.tensorlib - kwargs = {'return_tail_probs': True, 'return_expected': True} + kwargs = { + 'return_tail_probs': True, + 'return_expected': True, + 'test_stat': test_stat, + } result = pyhf.infer.hypotest(*hypotest_args, **kwargs) # CLs_obs, [CLsb, CLb], CLs_exp assert len(list(result)) == 3 assert isinstance(result[0], type(tb.astensor(result[0]))) - assert len(result[1]) == 2 + assert len(result[1]) == 1 if test_stat == 'q0' else 2 assert check_uniform_type(result[1]) assert isinstance(result[2], type(tb.astensor(result[2]))) -def test_hypotest_return_expected_set(tmpdir, hypotest_args): +@pytest.mark.parametrize('test_stat', ['q0', 'q', 'qtilde']) +def test_hypotest_return_expected_set(tmpdir, hypotest_args, test_stat): """ Check that the return structure of pyhf.infer.hypotest with the additon of the return_expected_set keyword arg is as expected @@ -137,12 +144,13 @@ def test_hypotest_return_expected_set(tmpdir, hypotest_args): 'return_tail_probs': True, 'return_expected': True, 'return_expected_set': True, + 'test_stat': test_stat, } result = pyhf.infer.hypotest(*hypotest_args, **kwargs) # CLs_obs, [CLsb, CLb], CLs_exp, CLs_exp @[-2, -1, 0, +1, +2]sigma assert len(list(result)) == 4 assert isinstance(result[0], type(tb.astensor(result[0]))) - assert len(result[1]) == 2 + assert len(result[1]) == 1 if test_stat == 'q0' else 2 assert check_uniform_type(result[1]) assert isinstance(result[2], type(tb.astensor(result[2]))) assert len(result[3]) == 5 diff --git a/tests/test_teststats.py b/tests/test_teststats.py index 1db33a4ecd..d55c4dcc76 100644 --- a/tests/test_teststats.py +++ b/tests/test_teststats.py @@ -4,6 +4,25 @@ import logging +def test_q0(caplog): + mu = 1.0 + model = pyhf.simplemodels.hepdata_like([6], [9], [3]) + data = [9] + model.config.auxdata + init_pars = model.config.suggested_init() + par_bounds = model.config.suggested_bounds() + fixed_params = model.config.suggested_fixed() + + with caplog.at_level(logging.WARNING, "pyhf.infer.test_statistics"): + pyhf.infer.test_statistics.q0( + mu, data, model, init_pars, par_bounds, fixed_params + ) + assert ( + "q0 test statistic only used for fit configuration with POI set to zero" + in caplog.text + ) + caplog.clear() + + def test_qmu(caplog): mu = 1.0 model = pyhf.simplemodels.hepdata_like([6], [9], [3]) @@ -99,6 +118,15 @@ def test_no_poi_test_stats(): par_bounds = model.config.suggested_bounds() fixed_params = model.config.suggested_fixed() + with pytest.raises(pyhf.exceptions.UnspecifiedPOI) as excinfo: + pyhf.infer.test_statistics.q0( + test_poi, data, model, init_pars, par_bounds, fixed_params + ) + assert ( + "No POI is defined. A POI is required for profile likelihood based test statistics." + in str(excinfo.value) + ) + with pytest.raises(pyhf.exceptions.UnspecifiedPOI) as excinfo: pyhf.infer.test_statistics.qmu( test_poi, data, model, init_pars, par_bounds, fixed_params diff --git a/tests/test_validation.py b/tests/test_validation.py index 3168b153ff..481f349680 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -61,6 +61,75 @@ def expected_result_1bin_shapesys(): return expected_result +@pytest.fixture(scope='module') +def source_1bin_shapesys_q0(): + with open('validation/data/1bin_example1_q0.json') as read_json: + return json.load(read_json) + + +source_1bin_shapesys_q0_toys = source_1bin_shapesys_q0 + + +@pytest.fixture(scope='module') +def spec_1bin_shapesys_q0(source_1bin_shapesys_q0): + source = source_1bin_shapesys_q0 + spec = { + 'channels': [ + { + 'name': 'singlechannel', + 'samples': [ + { + 'name': 'signal', + 'data': source['bindata']['sig'], + 'modifiers': [ + {'name': 'mu', 'type': 'normfactor', 'data': None} + ], + }, + { + 'name': 'background', + 'data': source['bindata']['bkg'], + 'modifiers': [ + { + 'name': 'uncorr_bkguncrt', + 'type': 'shapesys', + 'data': source['bindata']['bkgerr'], + } + ], + }, + ], + } + ] + } + return spec + + +spec_1bin_shapesys_q0_toys = spec_1bin_shapesys_q0 + + +@pytest.fixture(scope='module') +def expected_result_1bin_shapesys_q0(): + expected_result = { + "exp": [ + 1.2204714710520103e-05, + 0.0006405237426269669, + 0.013202867164405075, + 0.11119604157594337, + 0.41286079728391695, + ], + "obs": 0.003936883191585841, + } + return expected_result + + +@pytest.fixture(scope='module') +def expected_result_1bin_shapesys_q0_toys(): + expected_result = { + "exp": [0.0, 0.0005, 0.0145, 0.1205, 0.403], + "obs": 0.005, + } + return expected_result + + @pytest.fixture(scope='module') def source_1bin_lumi(): with open('validation/data/1bin_lumi.json') as read_json: @@ -565,45 +634,115 @@ def expected_result_2bin_2channel_coupledshapefactor(): return expected_result -def validate_hypotest(pdf, data, mu_test, expected_result, tolerance=1e-6): +def validate_hypotest( + pdf, + data, + mu_test, + expected_result, + test_stat="q", + tolerance=1e-6, + calctype="asymptotics", +): init_pars = pdf.config.suggested_init() par_bounds = pdf.config.suggested_bounds() + kwargs = {'return_expected_set': True, 'test_stat': test_stat, 'calctype': calctype} + + np.random.seed(0) CLs_obs, CLs_exp_set = pyhf.infer.hypotest( mu_test, data, pdf, init_pars, par_bounds, - return_expected_set=True, - test_stat="q", + **kwargs, ) + assert abs(CLs_obs - expected_result['obs']) / expected_result['obs'] < tolerance for result, expected in zip(CLs_exp_set, expected_result['exp']): - assert abs(result - expected) / expected < tolerance, result + assert result == pytest.approx(expected, rel=tolerance), result @pytest.fixture( params=[ - ('1bin_shapesys', {'init_pars': 2, 'par_bounds': 2}, 1e-6), - ('1bin_lumi', {'init_pars': 2, 'par_bounds': 2}, 4e-6), - ('1bin_normsys', {'init_pars': 2, 'par_bounds': 2}, 2e-9), - ('2bin_histosys', {'init_pars': 2, 'par_bounds': 2}, 8e-5), - ('2bin_2channel', {'init_pars': 5, 'par_bounds': 5}, 1e-6), - ('2bin_2channel_couplednorm', {'init_pars': 2, 'par_bounds': 2}, 1e-6), + ( + '1bin_shapesys', + {'init_pars': 2, 'par_bounds': 2}, + 1.0, + "q", + 1e-6, + "asymptotics", + ), + ( + '1bin_shapesys_q0', + {'init_pars': 2, 'par_bounds': 2}, + 0.0, + "q0", + 3e-4, + "asymptotics", + ), + ( + '1bin_shapesys_q0_toys', + {'init_pars': 2, 'par_bounds': 2}, + 0.0, + "q0", + 1e-6, + "toybased", + ), + ('1bin_lumi', {'init_pars': 2, 'par_bounds': 2}, 1.0, "q", 4e-6, "asymptotics"), + ( + '1bin_normsys', + {'init_pars': 2, 'par_bounds': 2}, + 1.0, + "q", + 2e-9, + "asymptotics", + ), + ( + '2bin_histosys', + {'init_pars': 2, 'par_bounds': 2}, + 1.0, + "q", + 8e-5, + "asymptotics", + ), + ( + '2bin_2channel', + {'init_pars': 5, 'par_bounds': 5}, + 1.0, + "q", + 1e-6, + "asymptotics", + ), + ( + '2bin_2channel_couplednorm', + {'init_pars': 2, 'par_bounds': 2}, + 1.0, + "q", + 1e-6, + "asymptotics", + ), ( '2bin_2channel_coupledhistosys', {'auxdata': 1, 'init_pars': 2, 'par_bounds': 2}, + 1.0, + "q", 1e-6, + "asymptotics", ), ( '2bin_2channel_coupledshapefactor', {'auxdata': 0, 'init_pars': 3, 'par_bounds': 3}, + 1.0, + "q", 2.5e-6, + "asymptotics", ), ], ids=[ '1bin_shapesys_mu1', + '1bin_shapesys_q0_mu1', + '1bin_shapesys_q0_mu1_toys', '1bin_lumi_mu1', '1bin_normsys_mu1', '2bin_histosys_mu1', @@ -613,26 +752,28 @@ def validate_hypotest(pdf, data, mu_test, expected_result, tolerance=1e-6): '2bin_2channel_coupledshapefactor_mu1', ], ) -def setup_and_tolerance(request): +def setup(request): _name = request.param[0] source = request.getfixturevalue(f"source_{_name}") spec = request.getfixturevalue(f"spec_{_name}") expected_result = request.getfixturevalue(f"expected_result_{_name}") config = request.param[1] - tolerance = request.param[2] - return ( - { - 'source': source, - 'spec': spec, - 'mu': 1.0, - 'expected': {'result': expected_result, 'config': config}, - }, - tolerance, - ) + mu = request.param[2] + test_stat = request.param[3] + tolerance = request.param[4] + calctype = request.param[5] + return { + 'source': source, + 'spec': spec, + 'mu': mu, + 'expected': {'result': expected_result, 'config': config}, + "test_stat": test_stat, + "tolerance": tolerance, + "calctype": calctype, + } -def test_validation(setup_and_tolerance): - setup, tolerance = setup_and_tolerance +def test_validation(setup): source = setup['source'] pdf = pyhf.Model( @@ -655,7 +796,13 @@ def test_validation(setup_and_tolerance): ) validate_hypotest( - pdf, data, setup['mu'], setup['expected']['result'], tolerance=tolerance + pdf, + data, + setup['mu'], + setup['expected']['result'], + test_stat=setup['test_stat'], + tolerance=setup['tolerance'], + calctype=setup['calctype'], ) diff --git a/validation/data/1bin_example1_q0.json b/validation/data/1bin_example1_q0.json new file mode 100644 index 0000000000..6e12c32f5b --- /dev/null +++ b/validation/data/1bin_example1_q0.json @@ -0,0 +1,9 @@ +{ + "binning": [2,-0.5,1.5], + "bindata": { + "data": [80.0], + "bkg": [50.0], + "bkgerr": [7.0], + "sig": [25.0] + } +} diff --git a/validation/multibin_histfactory_p0/config/HistFactorySchema.dtd b/validation/multibin_histfactory_p0/config/HistFactorySchema.dtd new file mode 100644 index 0000000000..a1dbc10333 --- /dev/null +++ b/validation/multibin_histfactory_p0/config/HistFactorySchema.dtd @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validation/multibin_histfactory_p0/config/example.xml b/validation/multibin_histfactory_p0/config/example.xml new file mode 100644 index 0000000000..08cd5fb9db --- /dev/null +++ b/validation/multibin_histfactory_p0/config/example.xml @@ -0,0 +1,23 @@ + + + + + + + + ./config/example_channel.xml + + SigXsecOverSM + Lumi + + diff --git a/validation/multibin_histfactory_p0/config/example_channel.xml b/validation/multibin_histfactory_p0/config/example_channel.xml new file mode 100644 index 0000000000..d410ffe6f6 --- /dev/null +++ b/validation/multibin_histfactory_p0/config/example_channel.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + diff --git a/validation/multibin_histfactory_p0/data/data.root b/validation/multibin_histfactory_p0/data/data.root new file mode 100644 index 0000000000000000000000000000000000000000..cdfe2019ee4d19e4fa7d16d69c7ab83d441835f7 GIT binary patch literal 4716 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 literal 0 HcmV?d00001 diff --git a/validation/multibin_histfactory_p0/results/example_GaussExample.root b/validation/multibin_histfactory_p0/results/example_GaussExample.root new file mode 100644 index 0000000000000000000000000000000000000000..a5872c7e5897e4311067e23f4a0a561dc697b823 GIT binary patch literal 503 zcmXTQ&o5zM_?W@Kz>vbg!1x`AR{+`mK+FilSu8*z70BiS(xD8DheH})Y-JUE+04ku z$WXuUJy4V=u#5p@P+}6x<^Tp)u*pE%7#LVX+%j`gmG$(CQj1G-N{aPUD-v@Ha#G{n z6HAMWT_GI3B9I%2QpCUtvH^$#frfhmaTXARZ322Bo}lwX!LAeq>vsUT67201))1e} z;u46d+Yx;=sTl$iNEr8v_&2S{U#I8_EJU j6zp}NLx7GV!Rt_y{J{osAsGaUDUu8VdFgw(=@bS4bo_B$ literal 0 HcmV?d00001 diff --git a/validation/multibin_histfactory_p0/results/example_channel1_GaussExample_model.root b/validation/multibin_histfactory_p0/results/example_channel1_GaussExample_model.root new file mode 100644 index 0000000000000000000000000000000000000000..e177652e830de076494bf3fd185c4e072cd17df4 GIT binary patch literal 39721 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

mM51jq>mO~p^t852> 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

-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 X<+hl9ZS}Pm)oXOuZLRqKa}}|+Pj-u# literal 0 HcmV?d00001 diff --git a/validation/multibin_histfactory_p0/results/example_combined_GaussExample_model.root b/validation/multibin_histfactory_p0/results/example_combined_GaussExample_model.root new file mode 100644 index 0000000000000000000000000000000000000000..aaa6288c0b6e535e8973de0a3b3b58396892d8b9 GIT binary patch literal 40946 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 literal 0 HcmV?d00001 diff --git a/validation/run_single_q0.py b/validation/run_single_q0.py new file mode 100644 index 0000000000..1c148f55d8 --- /dev/null +++ b/validation/run_single_q0.py @@ -0,0 +1,36 @@ +if __name__ == "__main__": + import ROOT + import sys + import json + + infile = sys.argv[1] + + infile = ROOT.TFile.Open(infile) + workspace = infile.Get("combined") + data = workspace.data("obsData") + + sbModel = workspace.obj("ModelConfig") + poi = sbModel.GetParametersOfInterest().first() + poi.setVal(1) + sbModel.SetSnapshot(ROOT.RooArgSet(poi)) + + bModel = sbModel.Clone() + bModel.SetName("bonly") + poi.setVal(0) + bModel.SetSnapshot(ROOT.RooArgSet(poi)) + + ac = ROOT.RooStats.AsymptoticCalculator(data, sbModel, bModel) + ac.SetPrintLevel(10) + ac.SetOneSidedDiscovery(True) + + result = ac.GetHypoTest() + pnull_obs = result.NullPValue() + palt_obs = result.AlternatePValue() + pnull_exp = [] + for sigma in [-2, -1, 0, 1, 2]: + usecls = 0 + pnull_exp.append(ac.GetExpectedPValues(pnull_obs, palt_obs, sigma, usecls)) + + print( + json.dumps({'p0_obs': pnull_obs, 'p0_exp': pnull_exp}, sort_keys=True, indent=4) + )