{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# **Statistics lecture 1 Hands-on session : solutions notebook**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is the companion notebook to lecture 1 in the statistical course series, covering the following topics:\n", "1. numpy/scipy/matplotlib basics\n", "2. Quantiles of the normal distribution\n", "3. Generating data\n", "4. The Poisson distribution\n", "5. Histograms and chi2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Basics\n", "\n", "These notebooks will make use of the numpy/scipy/matplotlib stack. It's also possible to implement these examples with other tools such as `root`, for those who are more familiar with it and have it installed. We'll go with numpy/scipy/matplotlib which has the advantage of being more widely available, and easy to run in tools such as `binder`, but feel free to use other implementations if you like\n", "\n", "To start with, we need to import the relevant python packages:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np # handles most of the numerical work\n", "import scipy.stats # implements statistical tools (PDFs, etc)\n", "from matplotlib import pyplot as plt # for plotting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "numpy handles most of the underlying work. In particular operations will usually be performed on numpy arrays -- arrays of floats similar to python lists.\n", "For instance we can generate some events as follows:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2.64349692 1.78243157 3.80074684 3.49716936 3.70462971 2.51520951\n", " 2.69669487 2.47925536 3.11382683 1.89416927]\n" ] } ], "source": [ "yvals = np.random.normal(3.0, 1.0, 10) # generate 10 events from a Gaussian(mean=3, sigma=1) distribution\n", "print(yvals)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `scipy` package has some useful features like fully-featured PDF implementations, and `matplotlib` will be used for inline plots. As an example of how things work, we can draw a few Gaussian curves: " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "xvals = np.linspace(-5,5,100) # an array of 100 points between -5 and 5 which will be used for plotting\n", "means = [0.0, 1.0, -2.0] # a few mean values to plot\n", "\n", "# Now draw the plots. Note that plt.plot takes 2 arrays, one array of x values and an array of y values.\n", "# norm.pdf is a scalar function, which normally applies to a single x value and returns the value of\n", "# the normal PDF at x. However it can be applied to lists as well, and will return the list of PDF values:\n", "# norm.pdf([x1, x2]) = [norm.pdf(x1), norm.pdf(x2)]\n", "for mean in means:\n", " yvals = [ scipy.stats.norm.pdf(xval, loc=mean) for xval in xvals ] # compute the y-values for each x\n", " plt.plot(xvals, yvals, label='mean=%g' % mean) # draw the plots\n", "\n", "plt.ylim(0,0.45) # adjust the y range\n", "plt.grid(True) # draw grid lines on the plot\n", "plt.xlabel('x')\n", "plt.ylabel('G(x)')\n", "plt.title('Gaussian distributions')\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now repeat with different widths :" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "sigmas = [1.0, 2.0, 3.0] # a few sigma values to plot\n", "\n", "# ==> Make similar plots as above for the provided sigma values and zero mean " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One can also generate random datasets and plot the result:" ] }, { "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" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# generate two random variables\n", "xvals = np.random.normal(3.0, 1.0, 10000)\n", "yvals = np.random.normal(50.0, 10.0, 10000)\n", "\n", "plt.subplot(121)\n", "plt.hist(xvals, bins=100, color='b')\n", "plt.subplot(122)\n", "plt.hist(yvals, bins=100, color='b')\n", "plt.figure()\n", "plt.scatter(xvals,yvals, color='b')\n", "plt.figure()\n", "plt.hist2d(xvals, yvals, (30, 30), cmap='Reds');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now compute some sample means, variances and covariances:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sample means: 3.00029201647818 50.03816981657602\n" ] } ], "source": [ "mean_x = np.sum(xvals)/len(xvals)\n", "mean_y = np.sum(yvals)/len(xvals)\n", "print('sample means:', mean_x, mean_y)\n", "\n", "# ==> Compute the variance, covariance and correlation coefficient of x and y in the same way using np.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This can also be done more simply using numpy internal functions:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sample means: 3.00029201647818 50.03816981657602\n", "sample variances: 0.9844723464531503 100.022165215607\n", "sample covariance and correlation coefficient: 0.9844723464531502 0.008232864975020324\n" ] } ], "source": [ "print('sample means:', np.mean(xvals), np.mean(yvals))\n", "print('sample variances:', np.var(xvals, ddof=1), np.var(yvals, ddof=1))\n", "print('sample covariance and correlation coefficient:', np.cov(xvals, xvals, ddof=1)[0,1], np.corrcoef(xvals,yvals)[0,1])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the covariance and correlations coefficient should really be zero, the non-zero value here is due to fluctuations. For a case with real correlation, one can do" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "zvals = 5*xvals + yvals\n", "\n", "# ==> Plot z vs. x and compute the covariance and correlation coefficient of x and z" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Gaussian quantiles" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The *quantiles* of a PDF are the fraction of its integral within a given range of its variable. The quantiles of the normal distribution $N(x) = G(x; x_0=0,\\sigma=1)$ play an important role since they are used to define some important quantities later ($1\\sigma$ and $1\\sigma$ errors, $5\\sigma$ discovery, etc.). \n", "\n", "One defines the cumulative distribution function of normal as $\\Phi(x) = \\int\\limits_{-\\infty}^x N(t) dt$, and a two-sided version can also be defined as $\\Phi(x, y) = \\int\\limits_x^y N(t) dt$\n", "\n", "They are easy to compute using the scipy tools:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(-4.5, 0.45, 'Phi(1)=0.841345')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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//1cffXVzJ07l2uvvbbbmdujqsyaNYvXX3+dE044gbvuuouDBw8yb948vvOd7zB//nxmzPBu5JG1a9dyzjnnUFNTw/Tp05kxYwYVFRUsXLiQO+64g/nz5/PBBx/guSL5GJWVldxwww1ERUVRVVXV7nbuvfdeysvLSUxMJCsri+3bt3eYa/369bz11lucdtppnHHGGcTHx1NUVMTChQu54ooruO666/jXv/7V4TruuOMODh8+3PmbwDe/d0cLCbF/zqabVLVfPU4++WR1Gu4e0sdMX7x4sYqIioju3LlTVVV37typgN5www093q7L5dIhQ4bo6NGj25y/evVq/frrr9Xlch3Z7tSpUztcZ21trSYkJHS6XHe98sorCugZZ5yhNTU1R6Z//vnnGhYWpqmpqVpRUeHVui6++GIF9MUXX2w1vaqqSseNG6eALl++vN3X33TTTZqYmKiPP/64Avqzn/2szeXef/99zc/PV1XVF154ocNlVbXVfrVUXl6uY8eOVUDXrFnT7uv/8Y9/KKBPP/10h5/Z2Wef3ebvnTHeANZpO39XrWnIh8477zzGjBmDqrJ27dpj5ufn5zNr1ixSUlKIiIhgypQpvPPOO8cs1945go8++oiCggKuvvrqNrd/+umnM378eIKDg73OHB4ezsyZM/nkk0/YunWr16/z1l//+lcAHnvsMSIiIo5MP+WUU7j66qspLS3l9ddf92pdO3bsAOB73/teq+nR0dGcd955AJSWlrb52rfffpsXXniBJ598kqysju+zPn36dIYNG9bhMi213K+W4uLiuPDCCwHIzc1tc5ndu3fzox/9iFtuuYWLLurujdSM6RkrBD6mnvbgo5sndu3axamnnkp+fj7XX389V199NV9//TUzZsxg6dKlXq178eLFAB22+3fH1KlTW63fV+rq6li9ejVRUVGcddZZx8xv/sO3ZMkSr9Y3fvx4AN59991W06urq1myZAnR0dGcfvrpx7yupKSE2267jZkzZ3Ldddd1dTe6rTkXwIknnnjMfFXlxhtvJD4+vktNifPmzeM3v/kNTzzxBO+//z51dXU+y2wCkzUq+tDixYvJyclBRDjllFNazVu2bBmPPvpoq/bda6+9lunTp/P73/+ec845p9P1r1q1CoApU9rsE9JtzVlXrFjBXXfddWR6fn5+u1cutefGG29k+PDhAOTl5dHY2Mhxxx3XZvv16NHu8QW3bdvm1bofe+wxVq9ezY033sirr77KuHHjqKio4J133sHlcvHaa6+1+W3/9ttvp6mpiWeeeaZL+9JVeXl5vPTSSzQ2NlJcXMy7777L3r17efDBB5k4ceIxy8+ePZtly5bx4YcfEhcXx8GDB73azqxZs1o9T0tLY86cOfzgBz/wyX6YwGOFoAceffRRoPXJYlXlJz/5yTFNC8OGDTvmypMLL7yQoUOHen0Z6O7duwkNDSU5Odkn+ZtlZGQcWX9L+fn5/OIXv+jSuqZNm3akEJSXlwMQHx/f5rLN0w8dOuTVuseMGcPatWu55pprWLhwIQsXLgQgNDSUe+65h9NOO+2Y1zz//PO8/fbbzJs3j/T09C7tS1fl5eW1er/CwsL4/e9/z7333nvMslu2bOGhhx7izjvv5Pzzz/dq/TNmzOC+++5j8uTJJCcns2vXLv7xj3/wxz/+kauvvpp33nnHmpdMt1gh6IHmf/QiQkJCAmeddRa33HJLm80PkyZNarPtfsiQIXz66adebe/AgQMkJib2LHQbkpKSAPcljC1NmzbNq0sfu6u9ZrT2fPHFF8ycOZO0tDRWrlzJpEmTOHToEC+99BIPP/wwb731FmvXrj1SYPLz87nnnnu48sorueqqq/y2H82mT5+OqtLQ0MDu3bt5+eWXeeihh1i+fDnz588nLCwMcH9xuP7668nMzOR3v/ud1+v/yU9+0ur5CSecwK9+9SuysrK4++67eeihh6wQmG6xQtADXfkjmZCQ0Ob0kJAQr6/hj4yM9Mu14jU1NUfW70vNf5CbjwyOVlFR0Wq5jrhcLq666ipKS0tZs2bNkaOYmJgYHnjgAYqLi5k9ezZ/+tOfjhyp3XzzzURGRvL000/7YG+8FxoaysiRI3nkkUcICwvjwQcf5Mknn+S+++4D4Ne//jVffPEFS5cuJSYmpsfbu/XWW/nJT37Cxo0bqaysJDY2tsfrNIHFCkE/kpaWRm5uLg0NDYSGhvpsvQcOHDiy/pZ6eo5g1KhRBAcHs2PHDlwu1zHnCZqvpDn++OM7Xe/WrVvJy8vjpJNOOlIEWjrnnHOYPXs269evPzJtw4YNlJeXk5ra5k2ZePzxx3n88ceZMWMGb731lpd72DUXXXQRDz74IMuWLTtSCDZs2ICqMm3atDZf88knnyAixMfHe9VsFhERQWxsLGVlZRw+fNgKgekyKwT9yMSJE8nNzSUnJ4cJEyb4bL3Nl41OmjSp1fSeniMIDw/njDPOYOXKlaxcufKYE+Lvv/8+AOeee26n622+Mubo5qtmzZeNNje/APzwhz+kurr6mGVzc3NZsWIFkyZN4uSTT2by5Mmd71g37dmzB2jd2eu73/0uKSnH3n+pqqrqyLmMSy+9lKioKK+2kZOTQ1lZGbGxsW2u15hOtdfBoK8++nKHsrZ01qGsrU5CzZ2YXnjhhVbT//KXvyigf/vb37zerjcdxR555BEFdOHChZ0u21XedCgrLy9v9Zpdu3Zpdna2Hj58+Mi05o5vbe1/WVmZjhkzRgGdM2dOp5m86STWlWVXrlyp9fX1x0wvKSnRE088UQF99tlnO91WR5/Z9u3btbCw8JjppaWlevrppyugt912W6fbMIGLDjqU2RFBPzJz5kzuueceFi1axK233nrM/FWrVvHcc88BHBlCITc3t9WAd2019Xz44YckJCR49c28q2bNmsUbb7zB66+/zuTJk7nssss4cOAA8+bNo7Gxkb/97W/ExcW1es0Pf/hDli9fztKlS480n4SHhzN79mxuuukmbrvtNubOncvkyZMpKytjwYIFlJaWctppp3HLLbf0OPNzzz135FLdvLw8ABYuXEhhYSHgvnqp5RAfd911F0VFRUydOpWhQ4cSHBxMfn4+7733HjU1NcycOZObb765R5lWrFjBrbfeytlnn83IkSNJSkpi9+7dvPfee5SXlzNlypQunXg2ppX2KkRffQTyEYGq6syZMzU8PFwPHjx4zLzm13X0OFpOTo4C+uMf/9ir/emOhoYGfeKJJ3TChAkaERGhCQkJetFFF+knn3zS5vLN78nSpUuPmbd8+XL9/ve/rxkZGRoSEqLR0dF60kkn6a9//et2h3o4Wmff8m+44YYO38Ozzz671fL//Oc/9fLLL9cRI0ZodHS0hoaGamZmpl5yySU6d+5cbWpq8ipXR0cEX331ld5www06YcIETUpK0pCQEE1MTNQzzzxTn3zySa2rq/NqGyZw0cERgd2hrJ9ZvXo1U6dO5YknnjjmcsLuuPfee3nqqafIzs7muOOO80FCY0xfZHcoG0DOOOMMrrzySn7729+2eSK0K/bt28df//pX7r77bisCxgQwKwT90B/+8AfuvPNOdu7c2aP1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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Draw a normal distribution as before\n", "xvals = np.linspace(-5,5,100)\n", "yvals = [ scipy.stats.norm.pdf(xval) for xval in xvals ]\n", "fig = plt.figure()\n", "plt.plot(xvals, yvals)\n", "plt.ylim(0,0.5)\n", "plt.title(\"Cumulative normal distribution\")\n", "plt.xlabel('x')\n", "plt.ylabel('N(x)')\n", "\n", "# Now fill in part of the distribution and print the integral\n", "up = 1\n", "shaded_xvals = np.linspace(-5,up,100)\n", "shaded_yvals = [ scipy.stats.norm.pdf(xval) for xval in shaded_xvals ]\n", "plt.fill_between(shaded_xvals, shaded_yvals, alpha=0.5, color='g')\n", "plt.text(-4.5, 0.45, 'Phi(%g)=%g' % (up, scipy.stats.norm.cdf(up)), fontsize=20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This form is normally referred to as a *one-sided* quantile. Two-sided quantiles apply the boundary on both sides:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# ==> Draw and compute the *two-sided* 1-sigma quantile (from -1 to +1) [Feel free to copy-and-paste the code above!] " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's plot some quantiles for different values of the bounds. As we'll see, the tail integrals (a.k.a the *survival function*, corresponding to the unshaded areas above) are also useful, so compute all of the following:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "bounds = [0, 1, 2, 3, 4, 5]\n", "\n", "# The norm.cdf function computes the integral from -infinity to \"up\", while norm.sf computes the integral from \"up\" to infinity\n", "one_sided = [ scipy.stats.norm.cdf(up) for up in bounds ]\n", "one_sided_tail = [ scipy.stats.norm.sf(up) for up in bounds ]\n", "\n", "# ==> Compute the two-sided integrals for each value of \"bounds\" :\n", "two_sided = [ ] # the integral inside the bounds\n", "two_sided_tail = [ ] # the integral outside the bounds\n", "\n", "import pandas as pd\n", "import jinja2\n", "labels = [ 'Bound', '1-sided', '1-tail', '2-sided', '2-tail' ]\n", "\n", "# ==> Uncomment below to pretty-print the result, once the arrays are filled\n", "\n", "#data = np.array([ bounds, one_sided, one_sided_tail, two_sided, two_sided_tail ]).T\n", "#pd.DataFrame(data, columns=labels)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Poisson distributions and the Central-limit theorem" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First let's get acquainted with Poisson distributions. As explained in the lecture, they are critical to describe counting processes, and become progressively more Gaussian with increasing event rates, so we can check a few rate hypotheses:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RateMeanVariance
00.10.10.1
11.01.01.0
23.03.03.0
310.010.010.0
\n", "
" ], "text/plain": [ " Rate Mean Variance\n", "0 0.1 0.1 0.1\n", "1 1.0 1.0 1.0\n", "2 3.0 3.0 3.0\n", "3 10.0 10.0 10.0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "xvals = np.linspace(0, 20, 21)\n", "rates = [ 0.1, 1, 3, 10 ]\n", "\n", "for i, rate in enumerate(rates) :\n", " plt.subplot(221 + i)\n", " plt.vlines(xvals, 0, scipy.stats.poisson.pmf(xvals, rate), colors='b', lw=3, alpha=0.5, label='rate=%g' % rate)\n", " plt.legend()\n", "\n", "means = [ scipy.stats.poisson.stats(mu=rate, moments='m') for rate in rates ]\n", "variances = [ scipy.stats.poisson.stats(mu=rate, moments='v') for rate in rates ]\n", "pd.DataFrame(np.array([ rates, means, variances]).T, columns=[ 'Rate', 'Mean', 'Variance' ])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "nexp = 10000\n", "nterms = [ 1, 2, 3, 5, 10, 100 ]\n", "# ==> Check the central limit theorem by drawing Poisson events: \n", "# - For nterms=1, draw nexp=10000 Poisson(1) events (n = np.random.poisson(1)) and histogram them\n", "# - For nterms=2, draw pairs of Poisson(1) events and histogram their averages\n", "# - Repeat for the nterms values provided above, to get increasingly Gaussian distributions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Histograms and the $\\chi^2$ test\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We consider a 20-bin histogram of data over $[0,1]$, which we assume is coming from a linear distribution, $f(x) \\propto (1 - x/2)$. We also assume that we have a histogram of data, and would like to decide whether the data is compatible with the assumed linear distribution. " ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXQ0lEQVR4nO3dfYxcV3nH8e8vNjGsExo7WRvzYq+pIlqK6pCu3OC0yK0JCinCaaVEMYauWicrJGhJ1aq4jgS0kqNQ2iptVVFtQorbLAbzEmwhoLEMG1SlTtgE560ONcHOErKxN0EQiFVD7Kd/3GuyXs/s3tmZO3fOzO8jre7MmTu+j++MH5997j3nKCIwM7P0nFN1AGZmNj9O4GZmiXICNzNLlBO4mVminMDNzBK1sJ0Hu+iii2JgYKCdhzQzS94DDzzwbET0z2xvawIfGBhgfHy8nYc0M0uepCdrtbuEYmaWKCdwM7NEOYGbmSXKCdzMLFFO4GZmiXICNzNLVKEELunPJD0m6VFJOyW9XNJSSXslHcq3S8oO1oDDo/ClAfj0Odn28GjVEZlZReZM4JJeA/wpMBgRbwIWANcBW4F9EXExsC9/bmU6PAr3D8PxJ4HItvcPO4mb9aiiJZSFwCskLQT6gKeBjcCO/PUdwNUtj87O9NBNcPL4mW0nj2ftZtZz5kzgEfED4O+ACWAS+HFE3A0sj4jJfJ9JYFmt90saljQuaXxqaqp1kfei4xONtZtZVytSQllC1tteDbwaWCzpPUUPEBEjETEYEYP9/WcN5bdG9K1srN3MulqREsrbgMMRMRURPwe+CKwDjkpaAZBvj5UXpgGwZjss6DuzbUFf1m5mPadIAp8ALpPUJ0nABuAgsAcYyvcZAnaXE6L9wurNsHYE+lYByrZrR7J2M+s5c85GGBH3Sfo88CDwIvBtYAQ4D9glaQtZkr+mzEAtt3qzE7aZAQWnk42IjwAfmdF8gqw3bmZmFfBITDOzRDmBm5klygnczCxRTuBmZolyAjczS5QTuJlZopzAzcwS5QRuZpYoJ3Azs0Q5gZuZJSrpBL5+/XrWr19fdRhmZpVIOoGbmfUyJ3Azs0Q5gZuZJcoJ3MwsUT2dwH0R1MxSVmRR4zdIOjDt53lJN0paKmmvpEP5dkk7AjYzs8ycCTwivhMRl0TEJcBvAMeBu4CtwL6IuBjYlz83M7M2abSEsgF4IiKeBDYCO/L2HcDVLYzLzMzm0GgCvw7YmT9eHhGTAPl2WSsD63Sun5tZ1QoncEnnAu8CPtfIASQNSxqXND41NdVofGZmVkcjPfB3AA9GxNH8+VFJKwDy7bFab4qIkYgYjIjB/v7+5qI1M7NfaCSBb+Kl8gnAHmAofzwE7G5VUGZmNrdCCVxSH3AF8MVpzbcAV0g6lL92S+vDMzOzehYW2SkijgMXzmh7juyulGocHuUzm/az7LwT8KUBWLMdVm+uLJxGnL74OTY2VmkcZpa2Qgm84xwehfuHedX5J7Lnx5+E+4ezx4kkcTOzZqU5lP6hm+Dk8TPbTh7P2s3MekSaPfDjE42115JwCcbMDFLtgfetbKx9pmklmHPESyWYw6MtC7FMHkRkZpBqAl+zHRb0ndm2oC9rL8IlGDPrAmkm8NWbYe0Iz/xkEacC6FsFa0eKl0BaUYIxM6tYMjVwaWbLZuC2/PHYWftHzPKH9a3Myia12s3MEpFmD7xZzZZgUnV4NLtg++lzsm0iNX8zq603E3izJZgU5Rdus988IrkLt2Z2tmRKKC23ejPX7cxKMD0xInK2C7fd/B+XWRfrmQR+dg199tdmraGnyBduzbpOb5ZQelGz986bWcdxAu8VLbpw60FEZp3DCbxX9OKFW7Mu1zM1cKP3LtyadTkn8AJ6/gKomXUkl1DMzBJVdEm1CyR9XtLjkg5KeoukpZL2SjqUb5eUHWyn2LRulMO37ufknfdw+NYBNq3zYJgifAHUrLWK9sD/EfhaRPwKsAY4CGwF9kXExcC+/HnX27RulNuuH2agP5uKdqD/SW67fthJ3Mzabs4ELumVwFuBTwJExM8i4kfARmBHvtsO4OpyQuwsN197E4sXnTmicfGi49x8be2paKWzf+65J/up9dps9XYzs+mK9MBfD0wB/ybp25Jul7QYWB4RkwD5dlmtN0saljQuaXxqaqplgVdl5UW1Ry6uvLDYiEaXX8ysVYok8IXApcAnIuLNwAs0UC6JiJGIGIyIwf7+/nmG2Tkmnq09cnHiublHNLr8Mn+un5udrUgCfwp4KiLuy59/niyhH5W0AiDfHisnxM6ybdd2Xjhx5ojGF070sW3X3CMaGy2/mJnNZs77wCPiGUnfl/SGiPgOsAH4n/xnCLgl3+4uNdIOsfPebOTizdduYeWFJ5h4bhXbdm3/Rfts5lN+8T3oZlZP0YE8fwKMSjoX+B7wR2S9912StgATwDXlhNh5dt67mZ331l8NqJ6JZ1cy0H/2SkBFyi9mZjMVSuARcQAYrPHShpZG0+W27drObdcPn1FGKVp+6QiHR/nMpv0sO+9EtqLPmu2eS8WsQh6J2UY7793MDbePcGRqEadOwZGpVdxw+0ih8kvl8hV9XnV+dgE2tRV9fBHUulHic6GMVR1Aw+ZbfpmPltbPvaKPWcdxD9yK8Yo+vcULYCfBCdyK8Yo+vcMLYCfDCdyKadGKPinqufr5bOUy6yiJ18CbNVZ1AOnI69zP3L2FZeed4JzFq3wXSrdyuSwZPZ7ArZ7aF0A3A/UvwHoQUZfoW5mXT2q0W0dxCcXMztTD5bLUOIGb2ZnyBbDpWwXIC2B3MJdQ5m2s6gAsAacvfia3iPTqzU7YCXACt1J4Ei6z8rmEYmaWKPfArfN5Ei2zmpzAKzFWdQDpmDaJFvDSqEDoiSSebA3d2sIlFOs40xd4PrKn9qjAI3tu8iLQ1vOcwK2jNbuItFk3cwK3jtbMItJm3a5QApd0RNIjkg5IGs/blkraK+lQvl1Sbqj2kjF6pY7ezCLSLZFfQP36Dfd4WlXrOI1cxPydiHh22vOtwL6IuEXS1vz5h1oanfW8+Swi3bJ70BO/gOoLoN2vmbtQNgLr88c7yLqETuDWcu1cxegMXoXIOlzRGngAd0t6QFLeBWF5REwC5Ntltd4oaVjSuKTxqamp5iM2axdPq2odrmgP/PKIeFrSMmCvpMeLHiAiRoARgMHBQQ+YrtxY1QGkw9OqWocr1AOPiKfz7THgLmAtcFTSCoB8e6ysIM3aZfo96O/+eO0LqO/++Hbfg24dYc4ELmmxpPNPPwbeDjwK7AGG8t2GgN1lBWlWhZ33buaG20c4MrWIU6fgyNQqbrh9ZNYLqN2k55aSS1CREspy4C5l3Y2FwKcj4muSvgXskrQFmACuKS9Ms2pUdgHVrIA5E3hEfA9YU6P9OWBDGUFZJxurOgAzy3kkpplZojwboVmLNDqACLp3IQsPImoPJ3CzbuQ51HuCE7i10VjVAfSGxKcAsOJcAzfrVPOdSGu2KQCsqziBm3WIMwYRXT7KC2NZL/ocAcef5IWxYd59+ejcg4g8BUDPcAI360A3X3sTixed2YtevOg4N19boBddb6h/IlMAeABRcU7glogxeqmG3tRKRGu2w4IzpwBgQV/Wbl3FCdysAzW1EtHqzbB2hGd+sohTAfStgrUjvoDZhXwXilkH2rZrO7ddP3xGGWW2lYjOrolvBupPAdCx95/79seGuAdu1oF6ciKtabc/nr5wy/3DDS9j10s1dPfArUeMVR1Aw3puIi2vgNQw98DNSrJp3SiHb93PyTvv4fCtA2xa5wWRZ+XbHxvmHrhZCTatG81r2NloyIH+J7nt+mw0ZKeVQeZamKKhhaCb4RWQGuYeuFkJmrqPu1f59seGOYFb18tKGQOcvPOceZYyxmi0Bt3Ufdy9qhW3P853+oFcahdAXUKxrvZSKSPrDberlDHx7EoG+s8uBxS6j7uXrd7MdTuzC7cNT0Xbg5N4Fe6BS1og6duSvpw/Xyppr6RD+XZJeWFa6prvBc9PVaWMbbtqL4hc7z5ua4EenMSrkR74B4GDwCvz51uBfRFxi6St+fMPtTg+6wJV9YKhulLG6b/XzdduYeWFJ5h4bhXbdm3vuAuYrdDoQhalDSLqwbtYCvXAJb0W+D3g9mnNG4Ed+eMdwNUtjcy6RpUX9Joakt6knfduZvWN/8eC9warbzzSlcm7o1Q8iVcV9fOiJZRbgb8ETk1rWx4RkwD5dlmtN0oaljQuaXxqaqqZWC1RVV7Qcymjh/TgXSxzJnBJ7wSORcQD8zlARIxExGBEDPb398/nj7DEVd0Lzoakr+LUKfXGkPRe1YOTeBWpgV8OvEvSVcDLgVdKuhM4KmlFRExKWgEcKzNQS1ejEzO1WjYkvXv/EXeaTetGufna/ay86AQTzw7MWvtvef28mbtYEjRnDzwi/ioiXhsRA8B1wNcj4j3AHmAo320I2F1alJY094KbMUZK86CcvmA90J9NSHX6grWnEShHM/eB3wLskrQFmACuaU1I1o3cC+4Ns12w9uffeg0l8IgYI+8ORMRzwIbWh2RmqfII1PbySEyzrjXW9iO2cwRqx0zCVSHPhWJmLePbNtvLCdzMWqYnVxKqkEsoZtZSPbeSUIWcwM2sjrGqAyhVx8zh0gSXUMzMEuUEbmaWKCdwM7NEuQZuZiUYqzqAnuAEbmbWoEYvgEI5F0FdQjEzS5QTuJlZolxCMbMOM1Z1AMlwD9zMLFFO4GZmiXICNzNr0qZ1oxy+dT8n77yHw7cOtG0FItfAzazLjLX1aKeXkVu86ATw0jJyQOmzMBZZlf7lku6X9JCkxyT9dd6+VNJeSYfy7ZJSIzUzK9F8e9GzLSNXtiIllBPA70bEGuAS4EpJlwFbgX0RcTGwL39uZpacZhZjrnIZuSKr0kdE/DR/+rL8J4CNwI68fQdwdRkBmpmVrZle9MSztZeLK2MZuZkKXcSUtEDSAeAYsDci7gOWR8QkQL5dVue9w5LGJY1PTU21KGwzs9Zpphdd5TJyhRJ4RJyMiEuA1wJrJb2p6AEiYiQiBiNisL+/f55hmpmVp5ledJXLyDV0F0pE/EjSGHAlcFTSioiYlLSCrHduZpacbbu253eSvFRGaaQXXdUyckXuQumXdEH++BXA24DHgT3AUL7bELC7pBjNzEr1Ui96FadOKZnFmBVzzHEo6dfJLlIuIEv4uyLibyRdCOwCVgITwDUR8cPZ/qzBwcEYHx+fX6CzTN9Yy8y/VjPvb+d7qzx2N8Rd5bFTPWeOu/3HbpSkByJicGb7nCWUiHgYeHON9ueADfMPyczMmuGh9GZmiXICNzNLlBO4mVminMDNzBLlBG5mligncDOzRDmBm5klygnczCxRTuBmZolyAjczS5QTuJlZopzAzcwS5QRuZpYoJ3Azs0Q5gZuZJcoJ3MwsUU7gZmaJKrIm5uskfUPSQUmPSfpg3r5U0l5Jh/LtkvLDNTOz04r0wF8E/jwifhW4DHi/pDcCW4F9EXExsC9/bmZmbTJnAo+IyYh4MH/8E+Ag8BpgI9lix+Tbq0uK0czMamioBi5pgGyB4/uA5RExCVmSB5bVec+wpHFJ41NTU02Ga2ZmpxVO4JLOA74A3BgRzxd9X0SMRMRgRAz29/fPJ0YzM6uhUAKX9DKy5D0aEV/Mm49KWpG/vgI4Vk6IZmZWS5G7UAR8EjgYEf8w7aU9wFD+eAjY3frwzMysnoUF9rkceC/wiKQDeds24BZgl6QtwARwTSkRmplZTXMm8Ij4L0B1Xt7Q2nDMzKwoj8Q0M0uUE7iZWaKcwM3MEuUEbmaWKCdwM7NEOYGbmSXKCdzMLFFO4GZmiXICNzNLlBO4mVminMDNzBLlBG5mligncDOzRDmBm5klygnczCxRTuBmZolyAjczS1SRNTHvkHRM0qPT2pZK2ivpUL5dUm6YZmY2U5Ee+KeAK2e0bQX2RcTFwL78uZmZtdGcCTwivgn8cEbzRmBH/ngHcHVrwzIzs7nMtwa+PCImAfLtsno7ShqWNC5pfGpqap6HMzOzmUq/iBkRIxExGBGD/f39ZR/OzKxnzDeBH5W0AiDfHmtdSGZmVsR8E/geYCh/PATsbk04ZmZWVJHbCHcC/w28QdJTkrYAtwBXSDoEXJE/NzOzNlo41w4RsanOSxtaHIuZmTXAIzHNzBLlBG5mligncDOzRDmBm5klygnczCxRTuBmZolyAjczS5QTuJlZopzAzcwS5QRuZpYoJ3Azs0Q5gZuZJcoJ3MwsUU7gZmaJcgI3M0uUE7iZWaKcwM3MEtVUApd0paTvSPqupK2tCsrMzOY27wQuaQHwL8A7gDcCmyS9sVWBmZnZ7Jrpga8FvhsR34uInwGfATa2JiwzM5vLnIsaz+I1wPenPX8K+M2ZO0kaBobzpz+V9J15HOsi4NlG3iDN4yiNv79mXG069mzvbfh8NXvcBt7f8nPWorh9zhp/f9vPWQPv7apzBqyq1dhMAq/114mzGiJGgJEmjoOk8YgYbObPKIPjalynxtapcUHnxtapcUHnxtbquJopoTwFvG7a89cCTzcXjpmZFdVMAv8WcLGk1ZLOBa4D9rQmLDMzm8u8SygR8aKkDwD/CSwA7oiIx1oW2ZmaKsGUyHE1rlNj69S4oHNj69S4oHNja2lcijirbG1mZgnwSEwzs0Q5gZuZJapjEvhcw/KV+af89YclXdqmuF4n6RuSDkp6TNIHa+yzXtKPJR3Ifz7cptiOSHokP+Z4jderOmdvmHYuDkh6XtKNM/ZpyzmTdIekY5Ienda2VNJeSYfy7ZI67y11qog6sX1c0uP553WXpAvqvHfWz76EuD4q6QfTPq+r6ry3inP22WlxHZF0oM57yzxnNfNE6d+1iKj8h+wi6BPA64FzgYeAN87Y5yrgq2T3n18G3Nem2FYAl+aPzwf+t0Zs64EvV3DejgAXzfJ6Jeesxmf7DLCqinMGvBW4FHh0WtvfAlvzx1uBj9WJe9bvZEmxvR1YmD/+WK3Yinz2JcT1UeAvCnzWbT9nM17/e+DDFZyzmnmi7O9ap/TAiwzL3wj8e2T2AxdIWlF2YBExGREP5o9/AhwkG4WagkrO2QwbgCci4sk2HxeAiPgm8MMZzRuBHfnjHcDVNd5a+lQRtWKLiLsj4sX86X6y8RVtVeecFVHJOTtNkoBrgZ2tPGYRs+SJUr9rnZLAaw3Ln5kki+xTKkkDwJuB+2q8/BZJD0n6qqRfa1NIAdwt6QFlUxbMVPk5IxsfUO8fVBXnDGB5RExC9g8PWFZjn044d39M9htULXN99mX4QF7auaNOKaDqc/bbwNGIOFTn9bacsxl5otTvWqck8CLD8gsN3S+LpPOALwA3RsTzM15+kKxEsAb4Z+BLbQrr8oi4lGxGyPdLeuuM16s+Z+cC7wI+V+Plqs5ZUVWfu5uAF4HROrvM9dm32ieAXwYuASbJShUzVXrOgE3M3vsu/ZzNkSfqvq1GW6Hz1ikJvMiw/MqG7kt6GdmHMhoRX5z5ekQ8HxE/zR9/BXiZpIvKjisins63x4C7yH4Vm67q6Q7eATwYEUdnvlDVOcsdPV1KyrfHauxT5fdtCHgnsDnyIulMBT77loqIoxFxMiJOAbfVOV6V52wh8AfAZ+vtU/Y5q5MnSv2udUoCLzIsfw/wh/mdFZcBPz79q0mZ8rraJ4GDEfEPdfZ5Vb4fktaSndfnSo5rsaTzTz8mu/j16IzdKjln09TtEVVxzqbZAwzlj4eA3TX2qWSqCElXAh8C3hURx+vsU+Szb3Vc06+d/H6d41U5vcbbgMcj4qlaL5Z9zmbJE+V+18q4IjvPq7hXkV25fQK4KW97H/C+/LHIFpB4AngEGGxTXL9F9uvMw8CB/OeqGbF9AHiM7OrxfmBdG+J6fX68h/Jjd8w5y4/dR5aQf2laW9vPGdl/IJPAz8l6OluAC4F9wKF8uzTf99XAV2b7TrYhtu+S1UNPf9f+dWZs9T77kuP6j/w79DBZclnRKecsb//U6e/WtH3bec7q5YlSv2seSm9mlqhOKaGYmVmDnMDNzBLlBG5mligncDOzRDmBm5klygnczCxRTuBmZon6fy8rMVEhjnT5AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "nbins = 20\n", "nevts = 1000\n", "np.random.seed(0)\n", "xvals = np.linspace(0.5, nbins - 0.5, nbins)\n", "expected_yields = np.array([ (1 - i/2/nbins) for i in range(0, nbins) ])\n", "expected_yields *= nevts/np.sum(expected_yields)\n", "dataset = [ np.random.poisson(y) for y in expected_yields ]\n", "plt.figure()\n", "plt.bar(xvals, expected_yields, yerr=np.sqrt(expected_yields), color='b')\n", "plt.scatter(xvals, dataset, color='orange', zorder=10)\n", "\n", "# ==> 1. Compute the chi2 values between the dataset and the expected yields as the sum of (d - y)/np.sqrt(y)\n", "# ==> 2. Compute the chi2 p-value using scipy.stats.chi2.sf(chi2, nbins)\n", "# ==> 3. Compute the chi2 again using the scipy chi2 function scipy.stats.chisquare(dataset, expected_yields, ddof=-1).statistic\n", "# ==> 4. Compute the chi2 again using the scipy chi2 function scipy.stats.chisquare(dataset, expected_yields, ddof=-1).pvalue\n", "# ==> 5. Compute the significance for the pvalue using scipy.stats.norm.isf(pvalue)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The compatibility between the generated dataset the true distribution may be larger or smaller depending on the random fluctuations that were generated, but generally the agreement should be quite good.\n", "\n", "One can check that the distribution is doing what it is expected by generating datasets:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ndata = 10000\n", "all_data = [ [ np.random.poisson(y) for y in expected_yields ] for i in range(0, ndata) ]\n", "all_chi2 = [ scipy.stats.chisquare(data, expected_yields, ddof=-1).statistic for data in all_data ]\n", "bins = np.linspace(0,50,100)\n", "null = plt.hist(all_chi2, bins=bins, color='b')\n", "plt.plot(bins, scipy.stats.chi2.pdf(bins, 20)*ndata/2, color='orange')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The p-value we have computed above is the tail integral in the distribution above, and we see that it agrees quite well with the generated datasets.\n", "\n", "If we now consider a prediction with the opposite slope, this will be generally much worse:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAWcUlEQVR4nO3df4wcZ33H8ffHdhK4JG3s+GwMwTlTWWlTVIf05AanpS4mKKQodislijH02iackKAlVavixhLQSo5Cf6C0VUV1CSlucxgMJNhCQGMdXFCVJuESnF91UhPOPkIO+xJUArFkiP3tHzuXnC+7t7O3Ozv73H5e0mp2Zmc8Xz+7+ebxd+Z5RhGBmZmlZ1HZAZiZ2fw4gZuZJcoJ3MwsUU7gZmaJcgI3M0vUknaebPny5dHX19fOU5qZJe+hhx56LiJ6Z29vawLv6+tjbGysnac0M0uepCPVtruEYmaWKCdwM7NEOYGbmSXKCdzMLFFO4GZmiXICNzNLVK4ELunPJD0h6XFJuyW9RtIySfslHcqWS4sO1oDxYfhyH3x2UWU5Plx2RGZWkroJXNIbgD8F+iPizcBi4DpgOzASEWuBkWzdijQ+DA8OwvEjQFSWDw46iZt1qbwllCXAayUtAXqAZ4HNwK7s813AlpZHZ6d7ZAecPH76tpPHK9vNrOvUTeAR8QPg74EJYBL4cUTcA6yMiMlsn0lgRbXjJQ1KGpM0NjU11brIu9Hxica2m9mClqeEspRKb3sN8HrgbEnvzXuCiBiKiP6I6O/tfdVQfmtEz+rGtpvZgpanhPIOYDwipiLi58BdwAbgqKRVANnyWHFhGgDrdsLintO3Le6pbDezrpMngU8Al0nqkSRgE3AQ2AcMZPsMAHuLCdFetmYbrB+CngsBVZbrhyrbzazr1J2NMCIekPRF4GHgJeA7wBBwDrBH0vVUkvw1RQZqmTXbnLDNDMg5nWxEfAz42KzNJ6j0xs3MrAQeiWlmligncDOzRDmBm5klygnczCxRTuBmZolyAjczS5QTuJlZopzAzcwS5QRuZpYoJ3Azs0Q5gZuZtcDGjRvZuHFjW8/pBG5mligncDOzRDmBm5klygnczCxRTuBmZpkyLkQ2I89DjS+SdGDG6wVJN0paJmm/pEPZcmk7AjYzs4q6CTwinoqISyLiEuDXgePA3cB2YCQi1gIj2bqZmbVJoyWUTcDTEXEE2AzsyrbvAra0MC4zM6uj0QR+HbA7e78yIiYBsuWKVgZmZjYfqdWxm5E7gUs6E7ga+EIjJ5A0KGlM0tjU1FSj8ZmZWQ2N9MDfBTwcEUez9aOSVgFky2PVDoqIoYjoj4j+3t7e5qI1M7OXNZLAt/JK+QRgHzCQvR8A9rYqKDMzqy9XApfUA1wB3DVj8y3AFZIOZZ/d0vrwzMysliV5doqI48D5s7Y9T+WulHKMD8MjO+D4BPSshnU7Yc220sIxs9aYvgA5OjpaahwpyJXAO874MDw4CCePV9aPH6msg5O4mXWNNIfSP7LjleQ97eTxynYzsy6RZgI/PtHY9mrGh+HLffDZRZXl+HArIjMza5s0E3jP6sa2zzZdgjl+BIhXSjBO4mYt0U2DacqUZgJftxMW95y+bXFPZXseLsGY2QKQZgJfsw3WD0HPhYAqy/VD+S9gtqIEY2ZWsjTvQoFKsp7vHSc9q7PySZXtZmZ1SI1/FtH6ONLsgTer2RJMqnzh1mxBSbcH3ozpnns3DQTyvfPWIA+o6XzdmcChuRJMiua6cNtN7WC2gHRvAu82vnBrdppG69hF1LCb1Z018G7U7L3zZtZxnMC7RbdeuO1iHkyz8DmBd4tm7503s47jGng36bYLt2YLnBO4mSVprouQtT7vxAuRzXAJxcwsUXkfqXaepC9KelLSQUlvlbRM0n5Jh7Ll0qKD7Rge0Wht4guRNpe8PfB/BL4eEb8MrAMOAtuBkYhYC4xk6wufp6I1sw5RtwYu6ReAtwF/CBARPwN+JmkzsDHbbRcwCnykiCA7ikc0mrXMQhhMU6Y8PfA3AVPAv0n6jqTbJZ0NrIyISYBsuaLawZIGJY1JGpuammpZ4KVpdkSjyy9m1iJ5EvgS4FLgUxHxFuBFGiiXRMRQRPRHRH9vb+88w+wgzYxodPml67iGbUXKk8CfAZ6JiAey9S9SSehHJa0CyJbHigmxwzQzotFPAjKzFqpbA4+IH0r6vqSLIuIpYBPwP9lrALglW+4tNNJO0cxUtJ5QyhYg17HLk3cgz58Aw5LOBL4H/BGV3vseSdcDE8A1xYTYgeY7otFPAjKzFsqVwCPiANBf5aNNLY1moVu38/SHKkBaE0qND3fXQzDMOpyH0rdTyk8C6uIn+vjJNNapnMDbLdUJpXz/+4LlOUVaZbTtZ/RcKJaPL8B2la0bhhm/9X5O3nkv47f2sXWDb3XtRE7glo+f6NM1tm4Y5rYbBunrPcEiQV/vEW67YdBJvAM5gVs+iT/RxwNq8rv52h2cfdbp5bKzzzrOzdd6vEKncQ3c8kn5Aqw1ZPXy6mWx1ed3Q7lstOwAGuIEbvmlegG2C7RyMM3Ec6vp6331eIWJ510u6zQuoZjZaW7as5MXT5xeLnvxRA837UmjXNZNnMDN7DS779vG+28f4vDUWZw6BYenLuT9tw+x+z7/66vTuIRiSfBgmvbafd82dt93W7Y2WmYo8zBadgBt4wRu1iE8KZQ1yiUUM7NEuQdunW98mM9tvZ8V55yoPMXIty+aAU7g1kbzqmNnk2i97twTlfUumkSre42WHUAynMCtsyU0iVajNWxwHdua4xq4dTZPomVWkxO4dTZPomVWU64ELumwpMckHZA0lm1bJmm/pEPZcmmxoVpXKnsSrewC6jfef2/lAuq4Z+TLZxTXsovXSA/8dyLikoiYfrTadmAkItYCI9m6LXBtn9VvzTZYP8QPf3IWpwLouRDWDxVW/5Zeeb3n8mFeHK1cQF0k4PgRXhwd5D2XD7+8j1mZmimhbAZ2Ze93AVuajsasmjXbuG73Zbz9tt+GLYfbdvHS06pap8ubwAO4R9JDkrJ7uFgZEZMA2XJFtQMlDUoakzQ2NTXVfMRmbdLd06paCvLeRnh5RDwraQWwX9KTeU8QEUPAEEB/f79vmrJkeFrV0bIDsDpy9cAj4tlseQy4G1gPHJW0CiBbHisqSLNGzKxjT7/uvbfyqvZZLZ5W1Tpd3QQu6WxJ506/B94JPA7sAway3QaAvUUFaa3jR4vl52lVrdPlKaGsBO5WpauyBPhsRHxd0reBPZKuByaAa4oL06wcaU+ragtd3QQeEd8D1lXZ/jywqYigzKwVRssOwArmkZhmZonyZFYJWuhPp/GDDczycQ/cbAHaumGY8Vv7OHnnIsZv7WPrBk8BsBC5B27W0UYbPmLrhmFuu2Hw5VGkfb1HuO2Gyvg730GzsLgHbtah5tuL9hQA3cM9cCuE69jNaaYX7SkAuod74CXwYBqrp5le9MRz1Yf6d88UAN3DCdysUKPMp47dTC/aUwB0Dydwsw7UTC/6lSkALuTUKXkKgAXMNXCrqt7DClzHLtZNe3aeVgOHxnrRlSkA0kvYWzcMc/O1O1i9fIKJ51Zz056dSf492sUJfJ4W+mAaK9d00rr52h2sPn+CiecXfjLz7Y+NcwI3q2u0lLOm2ouer7ku3HZTOzTCNXCzgng0ZGN8+2Pj3ANfwHwvdnlcDmicn4DUOPfAzQrg0ZCN8+2PjevqBO4BNd2hUso4zMk7v9W2UobLAY1rxe2P3Va2cgnFFrSyShkuB8xPMxduu7FslbsHLmmxpO9I+kq2vkzSfkmHsuXS4sK01FV6Rvdz8s5729ozKquU4XJA+3Vj2aqREsqHgYMz1rcDIxGxFhjJ1q3FWvWE9TJN94z6ek+wSK/0jBZyKcOjIduvG8tWuRK4pAuA3wVun7F5M7Are78L2NLSyHJwDTsNrekZjTKf+7HLnNhp933bWHPjYRa/7xRrbjzs5F2wbpzEK28P/FbgL4FTM7atjIhJgGy5otqBkgYljUkam5qaaiZWS1SZPSOXMrpHN37XdRO4pHcDxyLiofmcICKGIqI/Ivp7e3vn80dY4sruBbuU0R268bvOcxfK5cDVkq4CXgP8gqQ7gaOSVkXEpKRVwLEiA01Vo4NpYOENqGl2YqZmdduQ9LKVOSFVt33XdXvgEfFXEXFBRPQB1wHfiIj3AvuAgWy3AWBvYVFa0rqxZ9StXrlgfYRFirZesO5GzdwHfguwR9L1wARwTWtCsoWo23pG3coTUrVXQwk8IkbJbgWIiOeBTa0PycxS1Y238pXJIzFz8KRQM42WHYB1MI9Aba+ungvFzFqrG2/lK5MTuJm1jC9Yt5dLKGbWUr5g3T5dk8Bdx542WnYAZtYiLqGYmSXKCdzMLFFO4GZmieqaGvjCMlp2AGbWAZJJ4L4IaWZ2OpdQzMwS5QRuZpaoZEooC8to2QGY2QLgHriZWaKcwM3MEuUEbmbWpK0bhhm/tY+Tdy5i/Na+tj2ByDXweRstOwAz6wDTj5GbfhLR9GPkgMIn9crzVPrXSHpQ0iOSnpD019n2ZZL2SzqULZcWGqmZWYHm24ue6zFyRctTQjkBvD0i1gGXAFdKugzYDoxExFpgJFs3M0tOMw9jLvMxcnmeSh8R8dNs9YzsFcBmYFe2fRewpYgAzcyK1kwveuK56o+La8dj5HJdxJS0WNIB4BiwPyIeAFZGxCRAtlxR49hBSWOSxqamploUdquM4lq2mTXTiy7zMXK5EnhEnIyIS4ALgPWS3pz3BBExFBH9EdHf29s7zzDNzIrTTC+6zMfINXQXSkT8n6RR4ErgqKRVETEpaRWV3rmZWXJu2rPztDtJoLFedFmPkctzF0qvpPOy968F3gE8CewDBrLdBoC9BcVoZlaoVB/GrKgz76qkX6NykXIxlYS/JyL+RtL5wB5gNTABXBMRP5rrz+rv74+xsbH5BTrHdLLVzP5rNXN8O48t89wLIe4yz51qmznu9p+7UZIeioj+2dvrllAi4lHgLVW2Pw9smn9IZmbWDA+lNzNLlBO4mVminMDNzBLlBG5mligncDOzRDmBm5klygnczCxRTuBmZolyAjczS5QTuJlZopzAzcwS5QRuZpYoJ3Azs0Q5gZuZJcoJ3MwsUU7gZmaJcgI3M0tUnmdivlHSNyUdlPSEpA9n25dJ2i/pULZcWny4ZmY2LU8P/CXgzyPiV4DLgA9KuhjYDoxExFpgJFs3M7M2qZvAI2IyIh7O3v8EOAi8AdhM5WHHZMstBcVoZmZVNFQDl9RH5QHHDwArI2ISKkkeWFHjmEFJY5LGpqammgzXzMym5U7gks4BvgTcGBEv5D0uIoYioj8i+nt7e+cTo5mZVZErgUs6g0ryHo6Iu7LNRyWtyj5fBRwrJkQzM6smz10oAj4NHIyIT874aB8wkL0fAPa2PjwzM6tlSY59LgfeBzwm6UC27SbgFmCPpOuBCeCaQiI0M7Oq6ibwiPgvQDU+3tTacMzMLC+PxDQzS5QTuJlZopzAzcwS5QRuZpYoJ3Azs0Q5gZuZJcoJ3MwsUU7gZmaJcgI3M0uUE7iZWaKcwM3MEuUEbmaWKCdwM7NEOYGbmSXKCdzMLFFO4GZmiXICNzNLVJ5nYt4h6Zikx2dsWyZpv6RD2XJpsWGamdlseXrgnwGunLVtOzASEWuBkWzdzMzaqG4Cj4hvAT+atXkzsCt7vwvY0tqwzMysnvnWwFdGxCRAtlxRa0dJg5LGJI1NTU3N83RmZjZb4RcxI2IoIvojor+3t7fo05mZdY35JvCjklYBZMtjrQvJzMzymG8C3wcMZO8HgL2tCcfMzPLKcxvhbuC/gYskPSPpeuAW4ApJh4ArsnUzM2ujJfV2iIitNT7a1OJYzMysAR6JaWaWKCdwM7NEOYGbmSXKCdzMLFFO4GZmiXICNzNLlBO4mVminMDNzBLlBG5mligncDOzRDmBm5klygnczCxRTuBmZolyAjczS5QTuJlZopzAzcwS5QRuZpaophK4pCslPSXpu5K2tyooMzOrb94JXNJi4F+AdwEXA1slXdyqwMzMbG7N9MDXA9+NiO9FxM+AzwGbWxOWmZnVU/ehxnN4A/D9GevPAL8xeydJg8BgtvpTSU/N41zLgecaOUCax1kaP75qXG0691zHNtxezZ63geNb3mYtittt1vjxbW+zBo5dUG0GXFhtYzMJvNpfJ161IWIIGGriPEgai4j+Zv6MIjiuxnVqbJ0aF3RubJ0aF3RubK2Oq5kSyjPAG2esXwA821w4ZmaWVzMJ/NvAWklrJJ0JXAfsa01YZmZWz7xLKBHxkqQPAf8JLAbuiIgnWhbZ6ZoqwRTIcTWuU2Pr1Ligc2Pr1Ligc2NraVyKeFXZ2szMEuCRmGZmiXICNzNLVMck8HrD8lXxT9nnj0q6tE1xvVHSNyUdlPSEpA9X2WejpB9LOpC9Ptqm2A5Leiw751iVz8tqs4tmtMUBSS9IunHWPm1pM0l3SDom6fEZ25ZJ2i/pULZcWuPYQqeKqBHb30l6Mvu+7pZ0Xo1j5/zuC4jr45J+MOP7uqrGsWW02ednxHVY0oEaxxbZZlXzROG/tYgo/UXlIujTwJuAM4FHgItn7XMV8DUq959fBjzQpthWAZdm788F/rdKbBuBr5TQboeB5XN8XkqbVflufwhcWEabAW8DLgUen7Htb4Ht2fvtwCdqxD3nb7Kg2N4JLMnef6JabHm++wLi+jjwFzm+67a32azP/wH4aAltVjVPFP1b65QeeJ5h+ZuBf4+K+4HzJK0qOrCImIyIh7P3PwEOUhmFmoJS2myWTcDTEXGkzecFICK+Bfxo1ubNwK7s/S5gS5VDC58qolpsEXFPRLyUrd5PZXxFW9VoszxKabNpkgRcC+xu5TnzmCNPFPpb65QEXm1Y/uwkmWefQknqA94CPFDl47dKekTS1yT9aptCCuAeSQ+pMmXBbKW3GZXxAbX+gyqjzQBWRsQkVP7DA1ZU2acT2u6PqfwLqpp6330RPpSVdu6oUQoou81+CzgaEYdqfN6WNpuVJwr9rXVKAs8zLD/X0P2iSDoH+BJwY0S8MOvjh6mUCNYB/wx8uU1hXR4Rl1KZEfKDkt426/Oy2+xM4GrgC1U+LqvN8iq77XYALwHDNXap99232qeAXwIuASaplCpmK7XNgK3M3fsuvM3q5Imah1XZlqvdOiWB5xmWX9rQfUlnUPlShiPirtmfR8QLEfHT7P1XgTMkLS86roh4NlseA+6m8k+xmcqe7uBdwMMRcXT2B2W1WebodCkpWx6rsk+Zv7cB4N3AtsiKpLPl+O5bKiKORsTJiDgF3FbjfGW22RLg94HP19qn6DarkScK/a11SgLPMyx/H/AH2Z0VlwE/nv6nSZGyutqngYMR8cka+7wu2w9J66m06/MFx3W2pHOn31O5+PX4rN1KabMZavaIymizGfYBA9n7AWBvlX1KmSpC0pXAR4CrI+J4jX3yfPetjmvmtZPfq3G+MqfXeAfwZEQ8U+3DottsjjxR7G+tiCuy87yKexWVK7dPAzuybR8APpC9F5UHSDwNPAb0tymu36Tyz5lHgQPZ66pZsX0IeILK1eP7gQ1tiOtN2fkeyc7dMW2WnbuHSkL+xRnb2t5mVP4HMgn8nEpP53rgfGAEOJQtl2X7vh746ly/yTbE9l0q9dDp39q/zo6t1ndfcFz/kf2GHqWSXFZ1Sptl2z8z/duasW8726xWnij0t+ah9GZmieqUEoqZmTXICdzMLFFO4GZmiXICNzNLlBO4mVminMDNzBLlBG5mlqj/BzuGNbG61BDJAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "new_dataset = np.flip(expected_yields)\n", "plt.figure()\n", "plt.bar(xvals, new_dataset, yerr=np.sqrt(new_dataset), color='b')\n", "plt.scatter(xvals, dataset, color='orange', zorder=10)\n", "\n", "# ==> Recompute the chi2, chi2 pvalue, and chi2 signifiance for the new dataset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One can check that the distribution is doing what it is expected to do by generating dataset:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, one can repeat the whole study with a lower number of events per dataset, e.g. 10 instead of 1000. In this regime, the Poisson distributions in each bin are not Gaussian enough, and the computed $\\chi^2$ does not in fact follow a $\\chi^2$ distribution. In this case, one needs to move away from the $\\chi^2$ formula and use a statistical model than accounts for Poisson effects." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Addendum: Correlations and correlation coefficients" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "a = np.random.uniform(-0.5,0.5,10000)\n", "b = np.random.uniform(-0.5,0.5,10000)\n", "u = (a+b)\n", "v = (a-b)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(u,v, color='b')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "# ==> Compute the correlation coefficient of u and v" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }