-
Notifications
You must be signed in to change notification settings - Fork 186
/
example_fc_gauss_analytical.py
53 lines (40 loc) · 1.53 KB
/
example_fc_gauss_analytical.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"""
Analytical solution for Gaussian with a boundary at the origin.
Produces Fig. 10 from the Feldman Cousins paper.
"""
from functools import partial
from astropy.utils.console import ProgressBar
import numpy as np
import matplotlib.pyplot as plt
from gammapy.stats import fc_find_acceptance_interval_gauss, fc_fix_limits
if __name__ == "__main__":
sigma = 1
n_sigma = 10
n_bins_x = 1000
step_width_mu = 0.005
mu_min = 0
mu_max = 8
cl = 0.90
x_bins = np.linspace(-n_sigma * sigma, n_sigma * sigma, n_bins_x, endpoint=True)
mu_bins = np.linspace(mu_min, mu_max, mu_max / step_width_mu + 1, endpoint=True)
print("Generating FC confidence belt for {} values of mu.".format(len(mu_bins)))
partial_func = partial(
fc_find_acceptance_interval_gauss, sigma=sigma, x_bins=x_bins, alpha=cl
)
results = ProgressBar.map(partial_func, mu_bins, multiprocess=True)
LowerLimitAna, UpperLimitAna = zip(*results)
LowerLimitAna = np.asarray(LowerLimitAna)
UpperLimitAna = np.asarray(UpperLimitAna)
fc_fix_limits(LowerLimitAna, UpperLimitAna)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(LowerLimitAna, mu_bins, ls="-", color="red")
plt.plot(UpperLimitAna, mu_bins, ls="-", color="red")
plt.grid(True)
ax.xaxis.set_ticks(np.arange(-10, 10, 1))
ax.xaxis.set_ticks(np.arange(-10, 10, 0.2), True)
ax.yaxis.set_ticks(np.arange(0, 8, 0.2), True)
ax.set_xlabel(r"Measured Mean x")
ax.set_ylabel(r"Mean $\mu$")
plt.axis([-2, 4, 0, 6])
plt.show()