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