Source code for iact_estimator.statistics
"""Functions that implement some statistical formulas."""
from gammapy.stats import WStatCountsStatistic
import numpy as np
from scipy.special import erfc, erfcinv
__all__ = ["sigma_to_probability", "probability_to_sigma", "significance_li_ma"]
[docs]
def sigma_to_probability(sigma):
"""Convert significance to one side of the two-sided probability.
Parameters
----------
sigma : float
Significance value.
Returns
-------
probability : float
Probability value."""
probability = erfc(sigma / np.sqrt(2.0)) / 2
return probability
#
[docs]
def probability_to_sigma(probability):
"""Inversion function of `.sigma_to_probability()`.
Parameters
----------
probability : float
Probability value.
Returns
-------
sigma : float
Significance value.
"""
sigma = erfcinv(probability * 2) * np.sqrt(2)
return sigma
[docs]
def significance_li_ma(n_on, n_off, alpha, mu_sig=None):
"""
Get the Li & Ma significance.
This is equivalent to eq.17 of [1]_.
Parameters
----------
n_on : `int`
Measured counts in ON region.
n_off : `int`
Measured counts in OFF region.
alpha : `float`
Acceptance ratio of ON and OFF measurements.
mu_sig : `float`
Expected signal counts in ON region.
Returns
-------
sqrt_ts : `float``
Significance as the square root of the Test Statistic.
Notes
-----
The implementation uses `gammapy.stats.WStatCountsStatistic`
and takes the square root of the Test Statistic.
References
----------
.. [1] Li, T.-P. & Ma, Y.-Q., ApJ, 1983, 272, 317, 10.1086/161295.
"""
statistics = WStatCountsStatistic(n_on, n_off, alpha, mu_sig)
sqrt_ts = statistics.sqrt_ts
return sqrt_ts