add one-sided and double-sided interval distinction
This commit is contained in:
parent
03cdfa01b0
commit
5e0ecc9cc9
27
views.py
27
views.py
@ -251,6 +251,7 @@ class UpperLimitView(APIView):
|
||||
# BAYESIAN IMPLEMENTATION VIA POISSON_CONF_INTERVAL
|
||||
# **************************************************************
|
||||
|
||||
# double sided interval
|
||||
low, high = poisson_conf_interval(
|
||||
n=N,
|
||||
background=B,
|
||||
@ -262,26 +263,42 @@ class UpperLimitView(APIView):
|
||||
bayesian_count_ul = high[0]
|
||||
bayesian_count_ll = low[0]
|
||||
|
||||
bayesian_count_UL = (
|
||||
sp.gammaincinv(
|
||||
N + 1, confidence_level * sp.gammaincc(N + 1, B) + sp.gammainc(N + 1, B)
|
||||
)
|
||||
- B
|
||||
)
|
||||
|
||||
bayesian_rate_ul = bayesian_count_ul / t / EEF # count rate limits
|
||||
bayesian_rate_ll = bayesian_count_ll / t / EEF
|
||||
bayesian_rate_UL = bayesian_count_UL / t / EEF
|
||||
|
||||
bayesian_flux_ul = bayesian_rate_ul * ECF # flux limits
|
||||
bayesian_flux_ll = bayesian_rate_ll * ECF
|
||||
bayesian_flux_UL = bayesian_rate_UL * ECF
|
||||
|
||||
# CLASSICAL IMPLEMENTATION VIA GAMMAINCCINV
|
||||
# ****************************************************************
|
||||
|
||||
classic_count_ul = sp.gammainccinv(N + 1, 1 - confidence_level) - B
|
||||
classic_count_ll = sp.gammainccinv(N, confidence_level) - B
|
||||
# confidence level for the double sided interval
|
||||
cl2 = (1 + confidence_level) / 2
|
||||
# double sided interval
|
||||
classic_count_ul = sp.gammainccinv(N + 1, 1 - cl2) - B
|
||||
classic_count_ll = sp.gammainccinv(N, cl2) - B
|
||||
# one sided interval
|
||||
classic_count_UL = sp.gammainccinv(N + 1, 1 - confidence_level) - B
|
||||
|
||||
if not np.isfinite(classic_count_ll) or classic_count_ll < 0:
|
||||
classic_count_ll = 0.0
|
||||
|
||||
classic_rate_ul = classic_count_ul / t / EEF # count rate limits
|
||||
classic_rate_ll = classic_count_ll / t / EEF
|
||||
classic_rate_UL = classic_count_UL / t / EEF
|
||||
|
||||
classic_flux_ul = classic_rate_ul * ECF # flux limits
|
||||
classic_flux_ll = classic_rate_ll * ECF
|
||||
classic_flux_UL = classic_rate_UL * ECF
|
||||
|
||||
# FLUX ESTIMATION
|
||||
# ****************************************************************
|
||||
@ -392,17 +409,23 @@ class UpperLimitView(APIView):
|
||||
# frequentist limits
|
||||
"ClassicUpperLimit": classic_count_ul,
|
||||
"ClassicLowerLimit": classic_count_ll,
|
||||
"ClassicOneSideUL": classic_count_UL,
|
||||
"ClassicCountRateUpperLimit": classic_rate_ul,
|
||||
"ClassicCountRateLowerLimit": classic_rate_ll,
|
||||
"ClassicCountRateOneSideUL": classic_rate_UL,
|
||||
"ClassicFluxUpperLimit": classic_flux_ul,
|
||||
"ClassicFluxLowerLimit": classic_flux_ll,
|
||||
"ClassicFluxOneSideUL": classic_flux_UL,
|
||||
# bayesian limits
|
||||
"BayesianUpperLimit": bayesian_count_ul,
|
||||
"BayesianLowerLimit": bayesian_count_ll,
|
||||
"BayesianOneSideUL": bayesian_count_UL,
|
||||
"BayesianCountRateUpperLimit": bayesian_rate_ul,
|
||||
"BayesianCountRateLowerLimit": bayesian_rate_ll,
|
||||
"BayesianCountRateOneSideUL": bayesian_rate_UL,
|
||||
"BayesianFluxUpperLimit": bayesian_flux_ul,
|
||||
"BayesianFluxLowerLimit": bayesian_flux_ll,
|
||||
"BayesianFluxOneSideUL": bayesian_flux_UL,
|
||||
# flux 'center value' estimate
|
||||
"FluxEstimate": Flux,
|
||||
# raw data
|
||||
|
Loading…
x
Reference in New Issue
Block a user