{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Statistical tools\n", "This package provides functions and classes to solve several statistical problems in High Energy Physics. Here, we will see how to calculate uncertainties for poissonian values. Some other classes, focused on handling probability density functions are also discussed." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import hep_spt\n", "hep_spt.set_style()\n", "import math\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Uncertainties on poissonian values\n", "There are several options for calculating poissonian uncertainties, depending if one follows a bayesian of frequentist approach. Here, we will take a look at the frequentist uncertainties and to the method based on the differential of the logarithm of likelihood, comparing them to the standard rule of $\\sqrt{n}$, which is only valid when the central limit theorem applies to our values." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "value = 4\n", "\n", "# Frequentist\n", "fu_l, fu_h = hep_spt.poisson_fu(value)\n", "# Differential logarithm of likelihood\n", "du_l, du_h = hep_spt.poisson_llu(value)\n", "# Usual approach sqrt(n)\n", "su = math.sqrt(value)\n", "\n", "# Plot the results\n", "errs = np.array([(fu_l, fu_h), (du_l, du_h), (su, su)])\n", "\n", "x = np.arange(1, len(errs) + 1)\n", "y = value*np.ones(len(errs))\n", "\n", "plt.errorbar(x, y, yerr=errs.T, ls='none', marker='o');\n", "plt.xticks(x, ['Frequentist', 'DLL', '$\\sqrt{n}$']);\n", "plt.gca().set_xlim([0, len(errs) + 1]);\n", "plt.gca().set_ylim([0, 8]);\n", "\n", "for ix, iy, (l, h) in zip(x, y, errs):\n", " plt.gca().annotate('-{:.2f}'.format(l), (ix - 0.25, iy - 0.5), rotation=90, va='top')\n", " plt.gca().annotate('+{:.2f}'.format(h), (ix - 0.25, iy + 0.5), rotation=90, va='bottom')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The FlatDistTransform class\n", "The class FlatDistTransform allows to build a method to use the inverse transform sampling theorem to transform values following a certain distribution into anothers following a flat distribution. Let's consider two different normal distributions, corresponding to two different types of data." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "smp_a = np.random.normal(100, 5, 10000)\n", "smp_b = np.random.normal(80, 20, 10000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's create the FlatDistTransform object, and transform the two samples." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "trf = hep_spt.FlatDistTransform(smp_a)\n", "\n", "t_a = trf.transform(smp_a)\n", "t_b = trf.transform(smp_b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The transform of \"smp_a\" should follow a flat distribution. Let's plot the results to check it." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "f = plt.figure(figsize=(10, 5))\n", "ax0, ax1 = f.subplots(1, 2)\n", "\n", "cm = {'bins': 40, 'histtype': 'step'}\n", "\n", "cm.update({'range': (10, 150)})\n", "ax0.hist(smp_a, color='blue', **cm);\n", "ax0.hist(smp_b, color='red', **cm);\n", "ax0.set_title('Original');\n", "\n", "cm.update({'range': (0, 1)})\n", "ax1.hist(t_a, color='blue', **cm);\n", "ax1.hist(t_b, color='red', **cm);\n", "ax1.set_title('Transformation');\n", "ax1.set_yscale('log', nonposy='clip')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }