# AsymptoticTestStatDistribution

class pyhf.infer.calculators.AsymptoticTestStatDistribution(shift, cutoff=-inf)[source]

Bases: object

The distribution the test statistic in the asymptotic case.

Note: These distributions are in $$-\hat{\mu}/\sigma$$ space. In the ROOT implementation the same sigma is assumed for both hypotheses and $$p$$-values etc are computed in that space. This assumption is necessarily valid, but we keep this for compatibility reasons.

In the $$-\hat{\mu}/\sigma$$ space, the test statistic (i.e. $$\hat{\mu}/\sigma$$) is normally distributed with unit variance and its mean at the $$-\mu'$$, where $$\mu'$$ is the true poi value of the hypothesis.

__init__(shift, cutoff=-inf)[source]

Asymptotic test statistic distribution.

Parameters:

shift (float) – The displacement of the test statistic distribution.

Returns:

The asymptotic distribution of test statistic.

Return type:

AsymptoticTestStatDistribution

Methods

cdf(value)[source]

Compute the value of the cumulative distribution function for a given value of the test statistic.

Example

>>> import pyhf
>>> pyhf.set_backend("numpy")
>>> bkg_dist = pyhf.infer.calculators.AsymptoticTestStatDistribution(0.0)
>>> bkg_dist.cdf(0.0)
0.5

Parameters:

value (float) – The test statistic value.

Returns:

The integrated probability to observe a test statistic less than or equal to the observed value.

Return type:

Float

expected_value(nsigma)[source]

Return the expected value of the test statistic.

Example

>>> import pyhf
>>> pyhf.set_backend("numpy")
>>> bkg_dist = pyhf.infer.calculators.AsymptoticTestStatDistribution(0.0)
>>> n_sigma = pyhf.tensorlib.astensor([-2, -1, 0, 1, 2])
>>> bkg_dist.expected_value(n_sigma)
array([-2., -1.,  0.,  1.,  2.])

Parameters:

nsigma (int or tensor) – The number of standard deviations.

Returns:

The expected value of the test statistic.

Return type:

Float

pvalue(value)[source]

The $$p$$-value for a given value of the test statistic corresponding to signal strength $$\mu$$ and Asimov strength $$\mu'$$ as defined in Equations (59) and (57) of [1007.1727]

$p_{\mu} = 1-F\left(q_{\mu}\middle|\mu'\right) = 1- \Phi\left(\sqrt{q_{\mu}} - \frac{\left(\mu-\mu'\right)}{\sigma}\right)$

with Equation (29)

$\frac{(\mu-\mu')}{\sigma} = \sqrt{\Lambda}= \sqrt{q_{\mu,A}}$

given the observed test statistics $$q_{\mu}$$ and $$q_{\mu,A}$$.

Example

>>> import pyhf
>>> pyhf.set_backend("numpy")
>>> bkg_dist = pyhf.infer.calculators.AsymptoticTestStatDistribution(0.0)
>>> bkg_dist.pvalue(0.0)
array(0.5)

Parameters:

value (float) – The test statistic value.

Returns:

The integrated probability to observe a value at least as large as the observed one.

Return type:

Tensor