Commit 009af79e authored by Gregory Ashton's avatar Gregory Ashton

Improvements to the PP plot

1) Add axes labels
2) Add individual p values to the legend
3) Use latex labels
parent 0ccf55c7
......@@ -1443,7 +1443,7 @@ def plot_multiple(results, filename=None, labels=None, colours=None,
def make_pp_plot(results, filename=None, save=True, confidence_interval=0.9,
lines=None, legend_fontsize=9, keys=None, title=True,
lines=None, legend_fontsize='x-small', keys=None, title=True,
**kwargs):
"""
Make a P-P plot for a set of runs with injected signals.
......@@ -1475,6 +1475,9 @@ def make_pp_plot(results, filename=None, save=True, confidence_interval=0.9,
`pvalues`, and `names`.
"""
if keys is None:
keys = results[0].search_parameter_keys
credible_levels = pd.DataFrame()
for result in results:
credible_levels = credible_levels.append(
......@@ -1507,11 +1510,17 @@ def make_pp_plot(results, filename=None, save=True, confidence_interval=0.9,
for ii, key in enumerate(credible_levels):
pp = np.array([sum(credible_levels[key].values < xx) /
len(credible_levels) for xx in x_values])
plt.plot(x_values, pp, lines[ii], label=key, **kwargs)
pvalue = scipy.stats.kstest(credible_levels[key], 'uniform').pvalue
pvalues.append(pvalue)
logger.info("{}: {}".format(key, pvalue))
try:
name = results[0].priors[key].latex_label
except AttributeError:
name = key
label = "{} ({:2.3f})".format(name, pvalue)
plt.plot(x_values, pp, lines[ii], label=label, **kwargs)
Pvals = namedtuple('pvals', ['combined_pvalue', 'pvalues', 'names'])
pvals = Pvals(combined_pvalue=scipy.stats.combine_pvalues(pvalues)[1],
pvalues=pvalues,
......@@ -1520,8 +1529,11 @@ def make_pp_plot(results, filename=None, save=True, confidence_interval=0.9,
"Combined p-value: {}".format(pvals.combined_pvalue))
if title:
ax.set_title("p-value = {:2.4f}".format(pvals.combined_pvalue))
ax.legend(linewidth=1, labelspacing=0.25)
ax.set_title("N={}, p-value={:2.4f}".format(
len(results), pvals.combined_pvalue))
ax.set_xlabel("C.I.")
ax.set_ylabel("Fraction of events in C.I.")
ax.legend(linewidth=1, labelspacing=0.25, fontsize=legend_fontsize)
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
fig.tight_layout()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment