{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction to Plotting and Fitting\n", "\n", "### Authors: \n", "- Christian Michelsen (Niels Bohr Institute)\n", "- Troels C. Petersen (Niels Bohr Institute)\n", "\n", "### Date: \n", "- 13-11-2018 (latest update)\n", "\n", "***\n", "\n", "This is an introduction on how to use the Python packages iminuit and probfit to do fitting, and matplotlib to plot the results nicely.\n", "\n", "***\n", "\n", "First, we import the modules we want to use:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np # Matlab like syntax for linear algebra and functions\n", "import matplotlib.pyplot as plt # Plots and figures like you know them from Matlab\n", "import seaborn as sns # Make the plots nicer to look at\n", "from iminuit import Minuit # The actual fitting tool, better than scipy's\n", "from probfit import BinnedLH, Chi2Regression, Extended # Helper tool for fitting\n", "import sys # Module to see files and folders in directories\n", "from scipy import stats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above block imports packages written by others. But you may want to include your own code from some external file, which holds your custom/favorite functions. This is done as follows, and refers to the Python file called `ExternalFunctions.py` located in the Folder `External_Functions` right next to `Week0`, `Week1` etc:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "sys.path.append('../../External_Functions')\n", "from ExternalFunctions import nice_string_output, add_text_to_ax # useful functions to print fit results on figure\n", "\n", "# in case you want to load function from a jupyter notebook from the current working directory, you can use the function below:\n", "#from ipynb.fs.full.ExternalFunctions import nice_string_output, add_text_to_ax # useful functions to print fit results on figure" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we set the random seed for the random number generator (RNG). This ensures reproducability (the same results every time the notebook is restarted). " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "r = np.random # Random generator\n", "r.seed(42) # Set a random seed (but a fixed one)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then set some plotting settings (where we take advantage of Seaborn's plotting capabilities):" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "sns.set()\n", "sns.set_context(\"paper\", font_scale=1.4)\n", "sns.set_style(\"ticks\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally we define some global constants that we are going to use throughout the notebook:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "save_plots = False # For now, don't save plots (once you trust your code, switch on)\n", "verbose = True # For now, print a lot of output (once you trust your code, switch off)\n", "Nverbose = 10 # But only print a lot for the first 10 random numbers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create the data:\n", "\n", "We create some normally distributed data. First we define the number of random points to produce:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "Npoints = 10000 # Number of random points produced" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And then we initialize two empty arrays to keep all the points:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "x_all = np.zeros(Npoints) # create empty arrays to store the numbers in\n", "y_all = np.zeros(Npoints)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(*Notice that we create an empty array first with a length of `Npoints` instead of appending the individual values to an initial empty list, for computationally speed*).\n", "\n", "We then loop over all `Npoints` points and fill in a random number (from our RNG). " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Array value, index 0: x = -0.103 y = 0.320\n", "Array value, index 2: x = 0.018 y = 2.480\n", "Array value, index 4: x = -0.687 y = 0.196\n", "Array value, index 6: x = 0.763 y = 1.498\n", "Array value, index 8: x = -0.876 y = 1.205\n", "Array value, index 10: x = -0.871 y = -0.105\n", "Array value, index 12: x = -0.306 y = -1.987\n", "Array value, index 14: x = -1.880 y = -0.231\n", "Array value, index 16: x = -1.310 y = 0.909\n", "Array value, index 18: x = -1.226 y = -1.336\n" ] } ], "source": [ "# Loop to get some random values and fill them into the arrays:\n", "for iexp in range(Npoints):\n", " \n", " xval = r.normal()*0.8 - 0.5\n", " yval = r.normal()*1.3 + 0.5\n", " \n", " x_all[iexp] = xval\n", " y_all[iexp] = yval\n", "\n", " if (verbose and iexp < Nverbose):\n", " print(f\"Array value, index {2*iexp}: x = {xval:6.3f} y = {yval:6.3f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An alternative - and way easier - way of creating arrays filled with random numbers (as above) is to use numpy directly:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "lines_to_next_cell": 2 }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-0.221371 -0.27334113 -1.24921588 ... -0.90109385 -2.01388546\n", " -0.68310737]\n" ] } ], "source": [ "# Numpy-version:\n", "x_all = r.normal(loc=-0.5, scale=0.8, size=Npoints)\n", "y_all = r.normal(0.5, 1.3, Npoints)\n", "\n", "print(x_all)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Where we have shown that you can use keywords (e.g. `loc=-0.5` to indicate the location of the normal distributuion) in the functions to make it easier to read. Available keywords can be seen running `?r.normal()` in a cell." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# ?r.normal() # comment this line in" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Histogram of data (1D):\n", "\n", "In the following section, we want to produce two histograms (of normal distributions in this case), and plot them together in a single plot. \n", "This can be done in two ways! \n", "\n", "The first method is very MatLab-like, and probably also the simplest, but in the longer run has a few drawbacks, while the second method is more pythonic (i.e. object oriented, OO), and allows for returning to these plots later in the code.\n", "\n", "First we define the number of bins for the histograms to use along with the minimum and maximum values of x:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "# General input (for both methods):\n", "Nbins = 100\n", "xmin, xmax = -5, 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Method 0 (MatLab-like)\n", "\n", "The Matlab-like way of making plots is to simply to call `plt.plotmethod_name_here(keywords_here)`. Below we first create an empty figure, then fill it with two histograms and lastly we set the text properties (labels, title and legend):" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuEAAAGKCAYAAACim5+WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XtcVHX+x/H3gKggoqKAmrLpYqDVrlMQlpd0SkxNV6XcsmhLzOvi5edmpmZ5yXbtpoJprZlm6uaKpqnZxdUyzQvGWq6CN1rLFdJIZUAEcX5/uM46CsLgzBkur+fjMY+a7zlzzmcuznzOh8/5HpPNZrMJAAAAgGG8PB0AAAAAUN2QhAMAAAAGIwkHAAAADEYSDgAAABiMJBwAAAAwGEk4AAAAYDCScAAes3btWt1///0u3+7kyZM1fvx4+32LxaLly5e7fD8pKSkym80qKChw+badsX//fvXt21dms1kjRozwaCw3YtCgQZozZ46nw3CLxMRE9e/f39NhAKhAang6AABVz/jx4/XRRx+pZs2aMplM8vPzU3h4uH73u9+pV69eMplMkqTevXurd+/eZd7m+fPn9cYbb5S67tSpU28o/rLuPzIyUqmpqS7fl7Nee+013X777Vq9evV119uyZYvee+897du3T4WFhWrQoIFuu+02Pfroo7r77rsNirZkCxYs8HQIAGAYKuEA3CImJkapqan65ptvtGHDBvXt21czZ87Un/70J7fts6ioSBcvXnTb9iuqY8eOqXXr1tdd569//av+7//+T507d9b69euVmpqqNWvWqHv37vrkk08MihSu5Om/wAC4MSThANwuICBADz74oF555RWtW7dOX3/9tSRp1apVat++vX29jRs3qlevXrrjjjsUHR2tRx99VDk5OZo7d64++ugjffrppzKbzTKbzcrIyNDOnTsVHh6udevWqVu3bmrbtq2OHz+u8ePHa8yYMQ4xZGVlaeDAgTKbzerWrZs2bNhgX3Z1HFePlbb/8+fPS7p0ELBgwQJ169ZNd955p/r27atNmzbZt3l5/U8//VTdu3eX2WzWI488osOHD1/39Vu1apUefPBB3XHHHerZs6f+/ve/S7qUhJnNZv3www+aMWOGzGazfdmV/vOf/2jWrFmaMGGCnnjiCQUFBUmS6tatq+7du+vFF1+0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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# create just a single figure and axes\n", "plt.figure(figsize=(12, 6)) # figsize is in inches\n", "\n", "# create a histogram with Nbin anount of bins in the range from xmin to xmax.\n", "# Choose a step-type histogram with a line width of 2 in the color and label chosen.\n", "plt.hist(x_all, bins=Nbins, range=(xmin, xmax), histtype='step', linewidth=2, color='red', label='Gaussian ($\\mu$ = -0.5)')\n", "plt.hist(y_all, bins=Nbins, range=(xmin, xmax), histtype='step', linewidth=2, color='blue', label='Gaussian ($\\mu$ = +0.5)')\n", "\n", "plt.xlabel(\"Random numbers\") # the label of the x axis\n", "plt.ylabel(\"Frequency\") # the label of the y axis\n", "plt.title(\"Distribution of Gaussian numbers\") # the title of the plot\n", "plt.legend(loc='best'); # could also be # loc = 'upper right' e.g." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We end the last line with a semicolon (`;`) above to suppress the output since we only want to see the actual figure and not anything else.\n", "\n", "#### Method 1 (Python-like)\n", "\n", "In this second method we start out by creating a figure and axis handle that contain everything we need about the plot. Each figure can contain several axes (subplots). This way we can fill each axis - e.g. with histograms of the data: " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuEAAAGKCAYAAACim5+WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XtcVHX+x/H3gKggoqKAmrLpYqDVrlMQlpd0SkxNV6XcsmhLzOvi5edmpmZ5yXbtpoJprZlm6uaKpqnZxdUyzQvGWq6CN1rLFdJIZUAEcX5/uM46CsLgzBkur+fjMY+a7zlzzmcuznzOh8/5HpPNZrMJAAAAgGG8PB0AAAAAUN2QhAMAAAAGIwkHAAAADEYSDgAAABiMJBwAAAAwGEk4AAAAYDCScAAes3btWt1///0u3+7kyZM1fvx4+32LxaLly5e7fD8pKSkym80qKChw+badsX//fvXt21dms1kjRozwaCw3YtCgQZozZ46nw3CLxMRE9e/f39NhAKhAang6AABVz/jx4/XRRx+pZs2aMplM8vPzU3h4uH73u9+pV69eMplMkqTevXurd+/eZd7m+fPn9cYbb5S67tSpU28o/rLuPzIyUqmpqS7fl7Nee+013X777Vq9evV119uyZYvee+897du3T4WFhWrQoIFuu+02Pfroo7r77rsNirZkCxYs8HQIAGAYKuEA3CImJkapqan65ptvtGHDBvXt21czZ87Un/70J7fts6ioSBcvXnTb9iuqY8eOqXXr1tdd569//av+7//+T507d9b69euVmpqqNWvWqHv37vrkk08MihSu5Om/wAC4MSThANwuICBADz74oF555RWtW7dOX3/9tSRp1apVat++vX29jRs3qlevXrrjjjsUHR2tRx99VDk5OZo7d64++ugjffrppzKbzTKbzcrIyNDOnTsVHh6udevWqVu3bmrbtq2OHz+u8ePHa8yYMQ4xZGVlaeDAgTKbzerWrZs2bNhgX3Z1HFePlbb/8+fPS7p0ELBgwQJ169ZNd955p/r27atNmzbZt3l5/U8//VTdu3eX2WzWI488osOHD1/39Vu1apUefPBB3XHHHerZs6f+/ve/S7qUhJnNZv3www+aMWOGzGazfdmV/vOf/2jWrFmaMGGCnnjiCQUFBUmS6tatq+7du+vFF1+0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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# create just a single figure and axes\n", "fig, ax = plt.subplots(figsize=(12, 6)) # figsize is in inches\n", "\n", "# create a histogram and give it a name.\n", "# It has with Nbin anount of bins in the range from xmin to xmax.\n", "# Choose a step type histogram with a line width of 2 in the color and label chosen.\n", "hist1 = ax.hist(x_all, bins=Nbins, range=(xmin, xmax), histtype='step', linewidth=2, color='red', label='Gaussian ($\\mu$ = -0.5)')\n", "hist2 = ax.hist(y_all, bins=Nbins, range=(xmin, xmax), histtype='step', linewidth=2, color='blue', label='Gaussian ($\\mu$ = +0.5)')\n", "\n", "# set the figure texts; xlabel, ylabel and title.\n", "ax.set(xlabel=\"Random numbers\", # the label of the y axis\n", " ylabel=\"Frequency\", # the label of the y axis\n", " title=\"Distribution of Gaussian numbers\") # the title of the plot\n", "ax.legend(loc='best'); # could also be # loc = 'upper right' e.g." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As can be seen, the two figures are exactly the same. Sometimes it is quicker to play around with the `plt`-method of plotting in the beginning of a plot, but for more advanced plots the pythonic/OO-method (the one with `ax`) is recommended. \n", "\n", "## Fit to the data / histogram (1D):\n", "\n", "Having created the data, we also want to be able to fit the distributions. We first define the function, a Gaussian PDF in this case:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# Define your PDF / model\n", "def gauss_pdf(x, mu, sigma):\n", " \"\"\"Normalized Gaussian\"\"\"\n", " return 1 / np.sqrt(2 * np.pi) / sigma * np.exp(-0.5 * (x - mu)**2 / sigma**2)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def gauss_extended(x, N, mu, sigma) :\n", " \"\"\"Non-normalized (extended) Gaussian\"\"\"\n", " return N * gauss_pdf(x, mu, sigma)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`gauss_extended` could also be written as: `gauss_extended = Extended(gauss_pdf)` using the `Extended` method from __[Probfit.](https://probfit.readthedocs.io/en/latest/)__ \n", "***\n", "Having defined our fitting function, we also want to make a *binned likelihood* fit of `gauss_extended` to the data `x_all`. What a binned likelihood-fit (and all the other types of fits in this section) is exactly you'll learn more about during the course. It is important to use the same bins and bounds as the original histogram. In this case we are also treating the number of events/random numbers as being a fit variable which makes this a so-called *extended fit* (more on that later as well). \n", "***\n", "We initialize our fitting object, `binned_likelihood`, by using the `BinnedLH` function from probfit. This first takes the function to fit as input, then the input data and finally other fitting options such as the number of bins, the bounds and whether or not it is an extended fit):" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "binned_likelihood = BinnedLH(gauss_extended, \n", " x_all,\n", " bins=Nbins, \n", " bound=(xmin, xmax),\n", " extended=True)\n", "# extended=True: this means that we let the number of events N be a variable as well\n", "# extended=False: this means that we have a fixed number of events, N." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we are ready to fit `binned_likelihood`. This is done using __[iMinuit](https://iminuit.readthedocs.io/en/latest/)__ which is a Python-wrapper for the wonderful minimization tool Minuit developed by CERN. We can help and constrain the fit in several ways. Minuit allows one to specify the initial guess of the parameters' values, the range allowed for the values and has the ability to fix certain parameters' values to constant values. Let's start with a basic example:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "minuit = Minuit(binned_likelihood, mu=-1, sigma=1, N=1000, pedantic=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we tell Minuit that we want to minimize the `binned_likelihood` object, tells it the initial values for `mu`, `sigma` and `N` and finally disables some automatic warnings that Minuit shows (which are unimportant in most cases). In the text below here we show how to implement the ranges of the parameters and how to fix variables:\n", "\n", "``` \n", "minuit = Minuit(binned_likelihood, mu=-1, sigma=1, N=1000, pedantic=False,\n", " limit_sigma = (0,10) # set the range for sigma to be between 0 and 10\n", " fix_N=True # fix the value of N to its initial value (1000)\n", " )\n", "```\n", "\n", "We now let Minuit actually run the fitting routine:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "lines_to_next_cell": 2 }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/envs/python3/lib/python3.6/site-packages/ipykernel_launcher.py:1: LogWarning: x is really small return 0\n", " \"\"\"Entry point for launching an IPython kernel.\n" ] }, { "data": { "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FCN = 25.950645342578525TOTAL NCALL = 121NCALLS = 121
EDM = 1.4814284584570755e-08GOAL EDM = 5e-06\n", " UP = 0.5
\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", "
ValidValid ParamAccurate CovarPosDefMade PosDef
TrueTrueTrueTrueFalse
Hesse FailHasCovAbove EDMReach calllim
FalseTrueFalseFalse
" ] }, "metadata": {}, "output_type": "display_data" }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
+NameValueHesse ErrorMinos Error-Minos Error+Limit-Limit+Fixed?
0N9999.9999.9999No
1mu-0.5096690.00793662No
2sigma0.7931370.00561577No
\n", "
\n",
       "\n",
       "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "minuit.migrad(); # perform the actual fit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When run in a notebook, we get a very nice overview of the fit results. \n", "\n", "1. The first table shows the function value (25.95), the total number of calls (121) during the fit along with some other metrics indicating the distance to the (estimated) global minimum. \n", "2. The second table shows the validity of the fit indicated by all the green squares. It is always important to check that the fit converged! \n", "3. The last table shows the fitted parameters' values along with their uncertainties. These uncertainties are super important (!) and the primary reason why we are not using the minimizer found in scipy (because scipy does not provide uncertainty bounds on general minimization estimates). \n", "\n", "Below we show how to extract the values into variables which we can use further on and print the values:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fit value: N = 9999.99117 +/- 99.99991\n", "Fit value: mu = -0.50967 +/- 0.00794\n", "Fit value: sigma = 0.79314 +/- 0.00562\n", "25.950645342578525\n" ] } ], "source": [ "fit_N, fit_mu, fit_sigma = minuit.args # the fitted values of the parameters\n", "for name in minuit.parameters:\n", " value, error = minuit.values[name], minuit.errors[name]\n", " print(f\"Fit value: {name} = {value:.5f} +/- {error:.5f}\")\n", " \n", "LLH_value = minuit.fval # the LogLikeliHood (LLH) value\n", "print(LLH_value)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see if the fitted values actually match the distribution. This is always an important check to make as our eyes are extremely good at estimating the goodness of a fit (compared to just seeing some numbers). This also serves an extra check of the code, since sometimes you've made an error in the code which suddenly becomes very visible when plotted.\n", "\n", "Since we are dealing with binned data, we have to take the binwidth into account. This is calculated as: $\\text{binwidth} = \\frac{\\Delta x}{\\text{Nbins}}$. We then multiply the fitted (y) values with the binwidth to get matching scales in the plot and plot the fit in the the `ax` object from the figure above:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "binwidth = (xmax-xmin) / Nbins # the scale factor between the histogram and the fit. Takes bin width into account.\n", "x_fit = np.linspace(-5, 5, 1000) # Create the x-axis for the plot of the fitted function\n", "y_fit = binwidth*gauss_extended(x_fit, fit_N, fit_mu, fit_sigma) # the fitted function" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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Lo60tDTWrVvHt99+S+/evQFo1KgRly5dYsmSJaSnp7Njx45MQ0gcOX+fPn348MMP+f3330lLS2PNmjVs2LCBPn365CszWIdOLF68mB9++IG0tDS2bt3KggUL8jTndM2aNYmOjubll19m7ty5nDhxAoBz587ZjclOTU3l0qVL+Pj44O3tTWJiIlOnTrVrq0mTJuzbt48ffvjBVkivXr3atn///v188803JCcn4+bmZvs5uru757jvamfPnsXd3d02HGXLli0sW7Ysrx9fnjnyu5BfycnJvPXWW1y6dInDhw8zY8YMoqKi7IbSPPvss7YhLMnJyXzzzTeZ7j3I6Ndff2Xbtm1cvHiR0qVL4+3tjcViceiLqYgYSz3hIuIUV2YSMZlMeHp60qBBA0aNGkXPnj2zPN5isbBgwQJeeOEFUlJS8PX15Z577rHdTHjXXXexdetWWrRogcViyfN47r59+/LOO+8QHx+Pv78/r776KrfccgtgHRbwwgsv8NZbb/Hiiy8SEhLC3XffzSeffGJ7vSPnf+ihh0hPT2fkyJGcOHGC2rVrM3XqVJo1a5anrBl16dKF5ORkJkyYwJEjR6hatSqjR4+me/fueWonOjqawMBAPv30U6ZOncrly5epVKkSDRs25KOPPqJMmTKUKVOGCRMmMGPGDCZPnkytWrV48MEH+eabb2ztBAcH88gjj/Dkk09y4cIF2rdvT+/evW3zpaempjJr1iz27NlDWloa/v7+jBkzhuDgYBISErLdd7WoqCh+/PFHevTogZubGy1btqR79+5O7wl35Hchv2666Sbc3NwICwsjLS2NiIgIRo8eDVh7uD/88EPeeecd7r33Xk6cOIG3tzdBQUE888wz2bZ57tw5XnvtNf7880/A+oXrjTfeoEaNGtecV0Scy2TJ7m4gERERERFxCl2vEhERERFxMRXhIiIiIiIupiJcRERERMTFVISLiIiIiLhYsZ8dJTAw0OgIIiIiIlJCJCQkOHRcsS/CwfEPQ0REREQkv/LS+avhKCIiIiIiLqYiXERERETExVSEi4iIiIi4mIpwEREREREXUxEuIiIiIuJiJWJ2FBERETGexWLh1KlTnDp1yugoIvlWsWJFKlasiMlkuqZ2VISLiIiISxw9ehSTycR1112Hm5suxkvRk56ezrFjxzh69CjVqlW7prb0/wARERFxiQsXLhAQEKACXIosNzc3AgICuHDhwrW3VQB5RERERHJlMpmu+RK+iNEK6vdYRbiIiIiIiIupCBcRERFxwMCBA5k/f36BtxsbG8u9996b4zGBgYH88ccfBX5uV4qLiyM8PNzoGIWGinARERGRf/Xr14/GjRtjNpttjyVLlgAQExPDXXfdBcDWrVsJDQ0tkHP26NGDuXPn2p6Hh4ezcePGa2rz8uXLxMTE0K1bN2655RZatmzJ3Xffzeeff36tcfMtODiYr776yiltL168mKioKKe07SyaHUVEREQkgzFjxnDfffcZHeOaPP744xw4cIDnnnuOJk2aUKpUKXbs2MGHH35Inz59cHd3NzpiiaeecBGRwshkyv0hIi7Vr18/Pv30U86ePcvDDz/MqVOnbL3lv/76q92xKSkpBAUFcejQIQCWL19OYGAgP//8MwCbN28mIiICsO/Fffzxx/n777959NFHMZvNvPzyy7Y2f/zxRyIjI2natCmPPvpotjN0/PDDD2zcuJFZs2YREhJCmTJlcHd355ZbbmHq1Km2AnzTpk1ERUXRrFkzWrduzaRJk7h8+TIAhw4dIjAwkHPnztnaHTNmDK+++ioAJ0+eZOjQoYSEhBASEkKfPn1ISkoCYOnSpXTs2BGz2Uy7du346KOPgMxXD5YuXUrXrl0xm82EhYXx7rvv2vZdOf/SpUvp0KEDwcHBPPfcc1gslkzvNyEhgeeee45du3bZfh7//PMPKSkpTJ48mXbt2tGiRQtGjx7NmTNnsvzM1q9fT6tWrThx4gQA+/btIzg4ONPPtSCpJ1xERESMc+oUnD/v3HN4eUHFigXWXPny5Xn//fcZMWIEW7duzfIYDw8PmjZtytatW6lZsyZbt26lVq1abN26laCgILZu3Urz5s0zve6NN97g559/5tlnnyUsLMxu35o1a/j0008xmUzcc889fPHFF9x///2Z2ti8eTNNmjShRo0aOb6PsmXLMnHiROrXr8+ff/7Jww8/TO3atXMdnw4we/ZsLBYLmzZtwsPDg127dlGmTBnOnz/P008/zZw5cwgODubUqVP8/fffWbbh6+vL22+/zXXXXcdvv/3GgAEDCAwMpH379rZjvv32W2JjYzl16hS9e/embdu2dOjQwa6dwMBAXnjhBT799FMWL15s2z59+nS+//575s+fj7e3N0888QTjx49n6tSpmbLcdtttbNq0ibFjxzJjxgwef/xxBg0aRJMmTXL9LPJLPeEiIoWZxZL5IVJcXL4M110HNWo493HdddZzOei1114jODjY9siv0NBQW5G+detWhg0bZvc8r2PKBw0ahJ+fH76+voSFhbFz584sjzt58iT+/v5228LCwggODqZJkyZs374dgFtvvZUGDRrg5uZG3bp16d27d7ZfKq5WunRpTp06xcGDB3F3d6dx48aUK1cOgFKlSrF//36Sk5OpWLEijRo1yrKNdu3acf3112MymWjSpAkRERGZzj9ixAjKlStHjRo1CA0NzfY9ZyU2NpZhw4ZRtWpVvL29efLJJ1m9ejWXLl3K8vhx48Zx+PBh7rjjDnx9fRk4cKDD58oP9YSLiIiIMUqVgv/9zzU94aUcL3mefPLJAhkTHhoaymeffcbRo0dJS0ujW7duvPrqq5w+fZodO3Zw66235qm9ypUr2/7t6enJ+Ww+N19fXw4cOGC37cqNnqGhoaSnpwPwyy+/MGXKFPbs2UNKSgqXL192uOd3wIABXLx4keHDh3P+/Hl69OjByJEj8fLyYubMmXzwwQe8+uqrNGzYkFGjRmE2mzO18c033/DOO+/w559/cvnyZVJSUujWrVu+3nNWEhMT7a4G1KxZE4vFwrFjx6hVq1am48uWLUuvXr14/fXXiYmJcfqiUirCRURExDgVKxboUBFXcaRAa9y4MWfOnGH+/PmEhobi4eFBYGAgH330EbVr16ZKlSpZvu5aF4Jp2bIlc+bM4dChQ9SsWTPb40aNGsWdd97Ju+++i6enJ++88w4//PADAF5eXgBcvHjR1sN9/PhxfH19AShXrhyjR49m9OjR/O9//2PgwIHUqVOHPn360LJlS1q2bElKSgqzZ8/mscce45tvvrE7d0pKCiNGjODFF1+kS5cueHh48PTTT5OWlpav95zVzyMgIIDDhw/TuHFjwDrO3GQyZbpKcMWff/7Je++9xx133MGkSZMICQmhbNmy+crjUGantSwiIiJSTFWqVInk5GROnjyZ7TGlSpUiODiYjz/+2Db0JDQ01O55VipXrszBgwfzna1Fixa0adOGYcOGsX37di5dukRaWhq//fYbKSkptuPOnTuHj48Pnp6eJCQksHDhQts+Pz8/qlatypIlS0hLS2Pjxo1s27bNtn/jxo0cOHCA9PR0vL29cXd3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N24cMTEx6orihaKjo01HEA/Q81w96HmuHvQ8+z89x97JJ0ZHERERERHxJz7TJ1xERERExF+oCBcRERER8TAV4SIiIiIiHqYiXNzq0UcfJSIigszMTNNRxIVSUlIYPHgw7du3JyYmhhkzZpCTk2M6lrhAYWEhs2fPpmPHjkRHRzN//nx06JB/KSgoYMaMGVitVqKiorjttttYvXq16VjiJkeOHCE6OpqBAweajiIlqAgXt9m0aRMHDhwwHUPcID8/n4SEBDZt2sSHH37IoUOHmDt3rulY4gIvv/wy33//PWvXriUlJYV169axbNky07HEhYqKimjSpAlJSUls27aNp59+mqeffprNmzebjiZu8NRTT9GyZUvTMaQUKsLFLU6ePMkTTzzBrFmzTEcRNxg2bBjR0dHUrFmT0NBQ7rrrLrZu3Wo6lrhAcnIy999/P40bN6Z58+bExsaSnJxsOpa4kMViYeLEibRo0YKAgADatm1LdHS03sN+aMOGDWRnZzNgwADTUaQUKsLFLRYtWkT37t0JDw83HUU8YMuWLWpp8QO///47Bw8eJDIy0rEuMjKSPXv2qEuKHzt16hQ7duzQe9jP5Ofn88QTTzB79mzNq+KlVISLy2VkZPDpp58yYcIE01HEA7766itWrlxJfHy86ShykfLy8gCoV6+eY139+vUpLCykoKDAVCxxI5vNxvTp07niiivo0aOH6TjiQomJifTo0UNfrryYz0xbL95h5MiRpKWllbl9165dzJw5k2nTplGrVi0PJhNXKe853r17t2N58+bNTJkyhUWLFhEREeGJeOJGFosFgNzcXOrXrw9ATk4OwcHBhISEmIwmbmCz2Zg1axZZWVkkJSURGKh2OX+RkZHBunXrWLNmjekocgEqwqVSli5desHtx48fZ+fOnUybNs1p/ciRI5k4cSLDhg1zZzxxgfKe47M2b97MxIkTWbBgAV26dHFzKvGEBg0acOmll5KRkUHz5s0B+4d5eHi4fs72MzabjTlz5rBz506SkpKcfv0Q3/fNN99w6NAhunXrBtiP0zp58iRdu3YlNTWV0NBQwwkFNG29uJjNZuPw4cNO62JiYli6dClt2rShdu3ahpKJK3377bc8+OCDPPvss9xyyy2m44gLLVy4kI0bN/LKK69w6tQpxo4dy7Bhwxg5cqTpaOJCc+bMYevWrbz11ls0bNjQdBxxsfz8fHJzcx3nP/roI1avXs3rr7/OJZdcoi/VXkIt4eJSAQEBNGnS5Lz1oaGhKsD9yKJFi8jNzT2vH/j27dsNJRJXmTBhAkeOHKFnz54EBgYyaNAgRowYYTqWuND+/ftZvnw5ISEhWK1Wx/p+/frx+OOPG0wmrlK7dm2nz9x69eoRFBRU6uezmKOWcBERERERD9NRGCIiIiIiHqYiXERERETEw1SEi4iIiIh4mIpwEREREREPUxEuIiIiIuJhKsJFRERERDxMRbiIiA947rnnqtWEOSNHjuS5554zHUNExG00WY+ISAVNnTqVDz74gJCQEAAaNmxI7969iY+PJzg42HA6ERHxJSrCRUQqoWfPnrzwwgsA/Pjjj8TGxlK3bl0mTJhgOJmUp6CgwPEFSkTENHVHERGpomuvvZaOHTvy3XffOdYdPnyYv/71r9x4441ERUXRr18/UlNTna4XERHB0qVLGTlyJFFRUfTs2ZNPP/3U6TJJSUlYrVbatWvHxIkTyc3Nddp+/PhxZs6cyU033UR0dDSxsbHs2bPHsT0xMZGhQ4eyaNEiYmJiiIqK4qmnniInJ4dHHnmEvVs6HgAABn1JREFUDh06cMstt/DRRx+V+fj27dtHREQE7733HgMHDnQ8nvT0dMdlpk6dSnx8vNP1Sq6zWq0sXLiQcePGERUVRffu3Vm/fj1bt26lf//+REVFMWLECLKzs51uJzc3l4kTJ9KuXTusVitvvfWW0/asrCzuv/9+unbtSteuXUlISODIkSOO7SNHjmT27NlMnjyZTp06MXPmTHJycpg8eTKdO3emXbt2dOvWjeXLl5f5PxARcRcV4SIiVWCz2dixYwdpaWlcffXVjvVnzpxh4MCBfPLJJ6SlpTFq1CgSEhLIyMhwuv4777zD7NmzSU9PZ8iQIUyZMoXjx48DkJqaSmJiIvPmzSMtLY3bbruN5ORkp+tPmTKFrKwsVq1axZdffkmrVq0YPXo0OTk5jsv88MMPWCwWvvjiC5YtW8by5csZMWIEgwcPJi0tjXHjxjF9+nTH/ZZl1apVLF68mLS0NDp27MgjjzyCzWar1P9r9erVPPzww6Snp9OrVy+mTJnCG2+8weuvv87GjRsJCAg4rw94cnIyffv2JS0tjWeeeYYXX3yRtWvXAnD06FGGDx9OVFQUn3/+OWvXrqWwsJCEhASn20hJSaFv375s3ryZWbNm8frrr3P8+HE+++wztm3bxvLly7nhhhsq9VhERFxBRbiISCV8+umndOjQgTZt2jBkyBC6du1KXFycY3vTpk3p1asXdevWJTg4mCFDhhAeHs4333zjdDtjxozhmmuuISgoiGHDhpGXl+doyU5OTmbAgAF07NiRGjVq0Lt3b7p27eq47i+//MIXX3zB1KlTadq0KbVr12by5MnYbDanFvWmTZsyduxYgoODue6664iIiCAyMpLOnTsTGBjIgAEDyMvL46effrrgY37ggQcICwsjODiYu+66i+zsbH755ZdK/d8GDRpE69atCQoKon///hw5coRRo0ZxySWXYLFY6N27Nzt37nS6TkxMDD179qRGjRp06tSJQYMGsXLlSgDWrFnDpZdeyvjx46lZsyb16tUjISGBDRs2cOjQIcdt3HzzzVitVoKCgrBYLAQHB3Ps2DH+/e9/c/r0aZo1a8Z1111XqcciIuIK6hMuIlIJPXr04IUXXqCwsJC3336bpKQkcnJysFgsAPz+++88++yzbNq0iWPHjhEYGEheXh6//fab0+00a9bMsVynTh0AR5eT7OxsbrrpJqfLX3755Y7W9IMHDwLQokULx/YaNWpw2WWXceDAAce6Jk2aON2GxWJxWnc284kTJy74mJs2bXredXJzc50eQ3mK32/t2rVLXVcyx3/913+dd37Tpk2AvStKZmYmHTp0cLpMSEgI+/fvd2QreRv33nsvNpuNWbNm8fPPP9OhQwcmTZpEZGRkhR+LiIgrqCVcRKQKgoODGTNmDNdffz1z5851rF+wYAF79uxh6dKlbN26lfT0dMLDwyvVfSMsLIz9+/c7rfv5558dy5deeikAe/fudaw7ffo0Bw4coHnz5lV9SFVSp04d8vLynNYVb4m+GCX/B/v27SMsLAywF/A33HAD6enpTqedO3fSrl07x3UCA50/5mrVqkVcXBwpKSl8+eWXhIWF6aBaETFCRbiIyEWIj4/n888/dxysmJOTQ61atQgNDaWwsJClS5c6HTBZEQMGDCAlJYX09HROnz7NJ598wsaNGx3bmzZtys0338y8efP49ddfOXnyJAsWLMBms9G9e3eXPr7ytGnThrS0NHbv3s3p06f58MMP2bJli0tue8OGDXz22WecPn2a9PR0Vq9ezaBBgwB795affvqJpKQkTpw4gc1m49dffz3vINiS1q1bR2ZmJkVFRYSEhFCrVq3zCnUREU/QnkdE5CJcc8013HnnncyfPx+ASZMmUVhYSExMDFarlcOHDzu1zFZEv379mDBhAgkJCXTs2JHU1FRH8XnW/PnzadGiBQMHDuTmm28mIyODN998k/r167vssVU0a//+/Rk1ahQ33ngj27dvp1evXi657YEDB/LBBx/QsWNHpkyZwkMPPUSfPn0A+68F//jHP9i+fTu9e/emffv2DB8+nK1bt17wNvft20dcXBwdOnQgJiaGH3/8kZdeeskleUVEKiPAVtlD3EVERERE5KKoJVxERERExMNUhIuIiIiIeJiKcBERERERD1MRLiIiIiLiYSrCRUREREQ8TEW4iIiIiIiHqQgXEREREfEwFeEiIiIiIh72/zqnf4jFuukSAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ax.plot(x_fit, y_fit, '-', color='red', label='Fit with Gaussian to x')\n", "ax.set(ylabel=f\"Frequency / {binwidth}\")\n", "ax.legend(loc='upper right') # Here we don't put any \";\", as fig is the last command, which does not give any output.\n", "fig" ] }, { "cell_type": "markdown", "metadata": { "lines_to_next_cell": 2 }, "source": [ "Note, we refer to the old figure `fig`. Had we done another plot in between, we would not have been able to plot on top of the old figure with the matlab syntax." ] }, { "cell_type": "markdown", "metadata": { "lines_to_next_cell": 2 }, "source": [ "Note, had we wanted to plot either of the histograms as errorbars, we would have needed the following: \n", "\n", "```\n", "y, bin_edges = np.histogram(x_all, bins=Nbins, range=(xmin, xmax), normed=False)\n", "x = 0.5*(bin_edges[:-1] + bin_edges[1:])\n", "sy = np.sqrt(y)\n", "hist1 = ax.errorbar(x, y, sy, fmt='.', label='Gaussian number distribution')\n", "```\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get statistics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section we calculate the needed statistical values for the fit. First we extract the x and y values of the histogram and assume Poisson statistics to calculate the uncertainties:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "entries, bin_edges, _ = hist1\n", "bin_centers = 0.5*(bin_edges[:-1] + bin_edges[1:])\n", "\n", "hist1_x = bin_centers \n", "hist1_y = entries\n", "hist1_sy = np.sqrt(hist1_y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then calculate the chi squared value ($\\chi^2$). Remember that $\\chi^2$ is calculated as: \n", "\\begin{equation*}\n", "\\chi^2 = \\sum_{i}^{N} \\frac{(y_i - f(x_i))^2}{\\sigma_i^2}\n", "\\end{equation*}" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "# Here we calculate the chi2 value of the fit and the number of non-empty bins\n", "chi2_val = 0\n", "N_NotEmptyBin = 0\n", "\n", "for x, y, sy in zip(hist1_x, hist1_y, hist1_sy):\n", " if y > 0:\n", " f = binwidth * gauss_extended(x, fit_N, fit_mu, fit_sigma) # calc the model value\n", " chi2_val += (y - f)**2 / sy**2 # calulate the chi2 value\n", " N_NotEmptyBin += 1 # count the bin as non-empty since y>0 (and thus sy>0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Above we have shown how do calculate $\\chi^2$ in a loop-oriented way for pedagogical reasons. This, however, is usually not the optimal way of utilizing Numpy's true power. It can be computationally optimized by vectorizing the code:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "f = binwidth * gauss_extended(hist1_x, fit_N, fit_mu, fit_sigma)\n", "mask_zeroes = (hist1_y > 0)\n", "\n", "chi2_val_np = np.sum( (f[mask_zeroes] - hist1_y[mask_zeroes])**2 / hist1_sy[mask_zeroes]**2)\n", "N_NotEmptyBin_np = np.sum(mask_zeroes)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can see that the two results are similar (using `np.allclose` to do a boolean comparison of floats):" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "46.03138780649255\n", "46.03138780649254\n", "True\n", "\n", "58\n", "58\n", "True\n" ] } ], "source": [ "print(chi2_val)\n", "print(chi2_val_np)\n", "print(np.allclose(chi2_val,chi2_val_np)) # np.allclose to do a boolean comparison of floats\n", "print(\"\")\n", "print(N_NotEmptyBin)\n", "print(N_NotEmptyBin_np)\n", "print(np.allclose(N_NotEmptyBin, N_NotEmptyBin_np))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we find the number of degrees of freedom (`N_DOF`), which is the number of data points in the fit (non-empty) minus the number of fitting parameters:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "N_DOF = N_NotEmptyBin - len(minuit.args)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Given the $\\chi^2$ value and `N_DOF`, we can also calculate the $\\chi^2$ probability `chi2_prob`:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8001262163693811" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chi2_prob = stats.chi2.sf(chi2_val, N_DOF) # The chi2 probability given N_DOF degrees of freedom\n", "chi2_prob" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This shows us that there is a 80% probability of obtaining a worse fit just by chance. Or, to quote __[Wikipedia](https://en.wikipedia.org/wiki/Chi-squared_distribution)__: *The p-value is the probability of observing a test statistic at least as extreme in a chi-squared distribution*. But we will talk **a lot** more about p-values and the chi-square distribution later on in the course. \n", "\n", "***\n", "\n", "Below we also show how to add all of the above information into the figure as well. We define a dictionary `d` which has the information that we want in the plot in it. It has the names of the different elements as keys and the corresponding numbers as values. In case we want to include numbers as uncertainties, we include them as a length-2 list (see `mu` below). Other than that, the function `nice_string_output` takes care of the rest of the formatting (including floats vs. ints). It allows the user to set a custom amount of spacing, `extra_spacing`, between then names and the numbers in the string and the number of decimals to show, `decimals`. \n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "d = {'Entries': len(x_all),\n", " 'Mean': x_all.mean(),\n", " 'Std': x_all.std(ddof=1),\n", " # 'N': [minuit.values['N'], minuit.errors['N']],\n", " 'mu': [minuit.values['mu'], minuit.errors['mu']],\n", " # 'sigma': [minuit.values['sigma'], minuit.errors['sigma']],\n", " 'Chi2': chi2_val,\n", " 'ndf': N_DOF,\n", " 'Prob': chi2_prob,\n", " }" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10000" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d['Entries']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Above we have commented out the fitted normalisation `N` and width `sigma` for simplicity, but below we'll show you a way to avoid \"manually\" writing all parameters by hand. Now we use `nice_string_output` to define the text and then `add_text_to_ax` to add the text to the plot. `fig.tight_layout()` is used to remove unnecessary spacing around the figure in the end. " ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "lines_to_next_cell": 2 }, "outputs": [ { "data": { "image/png": "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lF69bF0OAQCwA4uKAIAn2rVLOn5c6tbNdBLvEBkp+ftfPl/QvCnmSwGAz+NIlCG//fabatWqpYyMDNNRAHiiZcuke+6RqlQxncQ7BARIXbqYTgEA8BAUUXaIiIhQ/fr1FRISottuu00TJ05UZmam6VjwIL///rt69+6t+vXrq2PHjjpw4IBd17NarZo8ebJuvfVWNW7cWEOHDlVCQkL2/i1btujuu+9WgwYNNHDgQF24cKHY9wkPERPDUShH69FDqlbN1vUwr3lTAAD8hSLKTrNnz9ahQ4e0YMECLVu2THPnzjUdCR5k7NixCg0N1b59+9S9e3cNGTLEruutWLFC0dHRWrNmjbZv365z587prbfekiSlpKToH//4h55++mnt2bNHFotFU6dOLfZ9wgMcPy7t3s2RE0e77z7pzBlp2zbTSQAAbo4iqpAaNGigFi1a5OojP3LkSL3wwgt6/PHHFRISohYtWighIUFWq1VvvvmmbrvtNoWHh+uFF15Qenp6rtubMWOGwsLC1K5dO+3Zs8fVvw5cICEhQRs3btSwYcNUpkwZDR48WMeOHdOPP/54zeseO3ZMzZs3V82aNRUYGKh27drp4MGDkqTNmzerfPny6tmzpwIDA/XEE09oxYoVxb5PeICYGCkkRGrY0HQS71KhgtSmjfTX/yMAAPJDEVVIsbGx2rp1q5o0aZJr++LFi9W3b18dOHBAH330kUqUKKFVq1ZpwYIFWrFihb7++mvt2LFDc+bMyXW9s2fPas+ePerXr5+GDRumrKwsF/42cIVffvlFpUqVUlBQkHr27KmjR4/qhhtu0OHDh6953R49eui3337T8ePHlZSUpPXr16tt27aSpMOHD6t+/fratm2bHnroId144406d+6c/vzzz2LdJzzAypVS166mU3in7t0pogAA10QRZadBgwapUaNGGjRokP72t7/pgQceyLX/rrvuUocOHeTv768mTZqoTJkyWrt2raKiolSrVi1VqlRJDz/8sL788stc1xs8eLACAgL08MMP6/fff9eRI0dc+WvBBZKTkxUUFKTExEQdPHhQ586dU9myZZWcnHzN6wYHBys8PFwREREKCwuTv7+/+vfvn+t2//jjDx08eFABAQGSpKSkpGLdJ9xcSoq0fj1FlLN06ybt3y/xhQMAoAAUUXb68MMPFRsbqy1btmjs2LHy88v9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\n", "text/plain": [ "
" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "text = nice_string_output(d, extra_spacing=2, decimals=3)\n", "add_text_to_ax(0.02, 0.95, text, ax, fontsize=12)\n", "fig.tight_layout()\n", "# Note, we refer to the old plot \"ax\". Had we done another plot inbetween,\n", "# we would not have been able to plot on top of the old figure with the matlab syntax\n", "\n", "fig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now a final, nicely looking plot which we can save for later use, e.g. in a report. We give it a name and specify the resolution with the `dpi` keyword, where 600 is usually a good choice. " ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "if save_plots:\n", " fig.savefig('Histogram.pdf', dpi=600)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Graph with fit (1D):\n", "\n", "In addition to fitting a histogram, we sometimes get measurements of both x and y, e.g. measuring the distance versus time, along with their uncertainties. This part of the exercise shows hwo to fit the data in thus cases.\n", "***\n", "We first initialize the needed arrays (all of lenght 51):" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "# Define points for a graph with errors:\n", "Ndata = 51\n", "x = np.zeros(Ndata) # create empty arrays to store the numbers in\n", "y = np.zeros(Ndata)\n", "sx = np.zeros(Ndata)\n", "sy = np.zeros(Ndata)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Having defined four arrays filled with zeros, below we fill it with randomly generated values:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Graph point 0: x = -1.250 +- 0.000 y = -2.267 +- 0.100\n", "Graph point 1: x = -1.200 +- 0.000 y = -1.836 +- 0.100\n", "Graph point 2: x = -1.150 +- 0.000 y = -1.712 +- 0.100\n", "Graph point 3: x = -1.100 +- 0.000 y = -1.473 +- 0.100\n", "Graph point 4: x = -1.050 +- 0.000 y = -1.233 +- 0.100\n", "Graph point 5: x = -1.000 +- 0.000 y = -1.164 +- 0.100\n", "Graph point 6: x = -0.950 +- 0.000 y = -1.224 +- 0.100\n", "Graph point 7: x = -0.900 +- 0.000 y = -0.849 +- 0.100\n", "Graph point 8: x = -0.850 +- 0.000 y = -0.764 +- 0.100\n", "Graph point 9: x = -0.800 +- 0.000 y = -1.033 +- 0.100\n" ] } ], "source": [ "for i in range(Ndata):\n", " x[i] = -1.25 + 0.05*i\n", " y[i] = -2.0 - 2.0*x[i] + 1.0*x[i]*np.sin(x[i]) + 2.0*x[i]**3\n", " if (x[i] > 0.0):\n", " y[i] += 0.5 # Put in a discontinuity by hand!\n", " y[i] += r.normal(0., 0.1) # Adding a Gaussian variation of 0.1\n", " sx[i] = 0.0 # Deciding that x is precise!\n", " sy[i] = 0.1 # The uncertainty/error of y\n", " if (verbose and i < Nverbose):\n", " print(f\"Graph point {i:2d}: x = {x[i]:6.3f} +- {sx[i]:5.3f} y = {y[i]:6.3f} +- {sy[i]:5.3f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again this can be done with Numpy. In this case though, it is not much quicker:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "x = np.linspace(-1.25, -1.25+0.05*(Ndata-1), Ndata)\n", "y = -2.0 - 2.0*x + 1.0*x*np.sin(x) + 2.0*x**3\n", "y[x>0.0] += 0.5 # added discontinuity at x=0\n", "y += r.normal(0., 0.1, Ndata)\n", "sx = np.zeros(Ndata)\n", "sy = 0.1*np.ones(Ndata)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now plot the data. Notice that we give the plots new names (`fig2`, `ax2`) so we can differentiate between the old (`fig`, `ax`) and the new plots." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAugAAAGKCAYAAABejrRcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3X90U3We//FX06Q/0lJxujjaAfkhmHZ0gK5gseCPwYo/WFGLOtpjXbHOoMwpyKLI7LqVRXGwOzowZQZwj6xn8dQ5i8BMkZUf43q6OEVQl3HXH20VHeWXgkWkaZo0afv9Y790jG0hCc3NJ8nzcU5O4PaT5H3Te9PX/dzP5yalu7u7WwAAAACMYIt1AQAAAAD+goAOAAAAGISADgAAABiEgA4AAAAYhIAOAAAAGISADgAAABiEgA4Ahurs7FRhYaF279494M/9u9/9Tj/84Q9VWFiof/u3fxvw57faQw89pIceeijWZQDAgLDHugAASGaLFi3S5s2blZaW1rMsNTVVb731llJTU7V3796e5Q0NDZo1a5bee+892e2Rf3x3dHToscce07Jly3T99defUf0AgIFHQAeAGJs2bZp++ctfWvZ6R44ckdfr1fe//33LXrMv3d3d6uzsPKODDQBIRAxxAQBDBQIBuVwuNTQ06JNPPtH9998vSZo4caIKCwv161//us/Heb1ePfXUU5o6daomTpyosrKynp74//qv/9Lf/M3fSJJuuukmFRYWav/+/b2e48iRI/rJT36i4uJiFRYW6sYbb9Qrr7xyynpbWlpUWVmpCRMm6KqrrtJvf/tbFRUV6fe//70k6dNPP5XL5dL69es1Y8YMjRs3Tn/605+0e/du3XHHHSoqKtLEiRN1991364MPPuh53oaGBrlcLm3evFklJSW65JJLdN999+nw4cNBr9/Z2amlS5dq0qRJKioq0uLFi9XZ2Rniuw0A5iCgA0AcGDlypFavXi1JevPNN7V371799Kc/7bPtz3/+c73++uv613/9V/3xj39USUmJ7r33Xh06dEhXXHFFT2D+/e9/r71792rYsGG9nqOrq0u33nqrduzYoT179uiuu+7SQw89pA8//LDfGhcsWCCv16s//OEPevnll/Xf//3fam1t7dVuw4YNWr16tf70pz/pBz/4gex2ux555BHt3LlTr732moYOHao5c+aoo6Mj6HGbN2/Wv//7v6u+vl7Z2dmaM2eOurq6en6+Y8cOXXzxxXr99df1wgsvaPPmzT3rCgDxhIAOADG2Y8cOTZgwoef29NNPR/xcnZ2d2rBhg+bNm6fhw4crLS1N9957r4YNG6bf/e53IT/Pueeeq2nTpikrK0sOh0M/+tGPNGLECL3xxht9tj906JB27dqlhQsXavDgwcrOztaiRYv67MH+6U9/qry8PNlsNqWnp+uSSy5RYWGh0tLSlJ2drYceekiHDh3SJ598EvS4BQsW6Dvf+Y6ys7P1j//4j3r//ff13nvv9fy8sLBQN910k+x2u8aMGaOioiL9z//8T8jrDACmYOAfAMTYNddcM2Bj0L/88kv5/X6df/75QcuHDx/ea0jIqRw/flzV1dV64403dPz4cdlsNnk8HrW0tPTZ/uRzf+973+tZ9p3vfEdOp7NX26FDhwb9/4MPPtDy5cv1/vvvy+12KzU1VZJ07Nixfh+Xm5srp9Opw4cP6wc/+IEk6bvf/W5Qe6fTKbfbHeoqA4Ax6EEHgDiRkpJy2jZ/9Vd/JYfDoc8++yxo+Weffabzzjsv5Neqrq7Wn//8Z73wwgt6++239dZbb2nkyJHq7u7us/3J5z548GDPsmPHjsnj8fRqa7MF/+mprKzU+eefr5dffll79+7V9u3bJanXa33zuVtaWuTxeHTuueeGvE4AEC8I6AAQJ8455xxJ6jX045tSU1NVWlqqX/3qV9q/f786Ojr0/PPP689//rNmzJgR8mu53W5lZmZq8ODB8vv9ev7550/5unl5eSoqKtIvfvELHT9+XG1tbaquru7pDT+V1tZWZWdna9CgQTp+/LieeuqpPts988wz+uqrr+R2u7V06VLl5+fr4osvDnmdACBeENABIE5ccMEFKi8v1913360JEyZo1apVfbb72c9+puLiYt19990qLi7Wtm3btHbt2l5DS05l/vz5am9vV3Fxsa6++mqdOHFC48aNO+VjnnnmGdntdpWUlGj69OkaP368MjMzlZ6efsrH/fznP9d//Md/6K//+q/1ox/9SFdeeWWf7aZPn67bbrtNV1xxhb7++mv95je/6dUbDwCJIKW7v/OVAACcgSNHjujyyy/X+vXrNXbs2IifZ6C+oAkA4gWfdACAAdHY2KhAIKDvf//7OnbsmBYvXqwxY8booosuinVpABBXCOgAgAHhdrv1D//wDzpy5IjS09M1fvx4/eY3vwlpHDoA4C8Y4gIAAAAYhNk1AAAAgEGSeoiLy+WKdQkAAABIAk1NTSG3TeqALoX3ZgEAAADhCrdTmCEuAAAAgEEI6AAAAIBBCOgAAACAQQjoAAAAgEEI6AAAAIBBCOgAAACAQQjoAAAAgEEI6AAAAIBBCOgAAACAQQjoAAAAgEEI6AAAAIBBCOgAAACAQQjoAAAAgEEI6AAAAEAIPF6/arc1yuP1R/V1COgAAABACNp9Ab24vUntvkBUX4eADgAAABiEgA4AAAAYhIAOAAAAGISADgAAABiEgA4AAACEwB/oCrqPFgI6AAAAcBr+QKeq1jRIkqrWNMgf6IzaaxHQAQAAgNM4dLRNLSe8kqSWE14dOtoWtdcioAMAAACnkTckS7k5GZKk3JwM5Q3JitprEdABAACA03DYU7VkdrEkacnsYjnsqVF7LQI6AAAAEAKH3RZ0Hy0EdAAAAMAgBHQAAADAIAR0AAAAwCAEdAAAAMAgBHQAAADAIAR0AAAAIASZ6XbdOc2lzHR7VF/HuID+wgsvqLS0VBdffLHmzp17yrZut1vz589XYWGhpkyZorVr11pUJQAAAJKNM8Ohsmvz5cxwRPV1ohv/I3DOOedozpw5amho0JdffnnKto8//ri8Xq927typgwcP6p577tGIESM0depUi6oFAAAABpZxPejTpk1TSUmJzj777FO2a29v15YtWzRv3jxlZ2fL5XLp9ttv14YNGyyqFAAAABh4xvWgh+qTTz5RV1eXLrzwwp5l+fn5euWVV/psX1NTo5UrV1pVHgAAABCRuA3oHo9HTqdTNttfTgLk5OSora2tz/aVlZWqrKwMWuZyuaJaIwAAABAu44a4hMrpdMrj8ai7u7tnWWtrq7KysmJYFQAAAHBm4jagjxw5UjabTc3NzT3LPvjgA40ZMyaGVQEAAABnxriAHggE5PP5FAgE1NXVJZ/Pp46Ojl7tMjMzdcMNN2jFihVyu91qbm7WSy+9pJkzZ8agagAAAGBgGBfQV61apbFjx2r16tXasWOHxo4dq4qKCknSfffdp9WrV/e0raqqUlpami6//HLNmjVLFRUVXGIRAAAAcS2l+5uDuJOMy+VSU1NTrMsAAABAAgs3cxrXgw4AAAAkMwI6AAAAYBACOgAAAGAQAjoAAABgEAI6AAAAYBACOgAAAGAQAjoAAABgEAI6AAAAYBACOgAAAGAQAjoAAABgEAI6AAAAko7H61fttkZ5vP5Yl9ILAR0AAABJp90X0Ivbm9TuC8S6lF4I6AAAAIBBCOgAAACAQQjoAAAAgEEI6AAAAIBBCOgAAABIOv5AV9C9SQjoAAAASCr+QKeq1jRIkqrWNMgf6IxxRcEI6AAAAEgqh462qeWEV5LUcsKrQ0fbYlxRMAI6AAAAkkrekCzl5mRIknJzMpQ3JCvGFQUjoAMAACCpOOypWjK7WJK0ZHaxHPbUGFcUjIAOAACApOOw24LuTWJeRQAAAEASI6ADAAAABiGgAwAAAAYhoAMAAAAGIaADAAAg6WSm23XnNJcy0+2xLqUX8yoCAAAAosyZ4VDZtfmxLqNP9KADAAAABiGgAwAAAAYhoAMAAAAGMW4Mut/v19KlS7VlyxbZbDbNnDlTDz/8sFJSUnq1LS8v1969e+VwOHqW7d69W2lpaVaWDAAAAAwY4wL6qlWr9O6772rr1q3y+XyaNWuWzjvvPJWXl/fZftGiRbrrrrssrhIAAACIDuOGuGzYsEEPPPCAcnNzlZeXp4qKCm3YsCHWZQEAAACWMCqgf/311/r888+Vn/+XS97k5+fro48+Und3d5+PqampUVFRkUpLS7V9+/Z+n7umpkYulyvoBgAAAJjGqCEuHo9HkjRo0KCeZTk5OfL7/ero6FB6enpQ+wULFmj06NFKT0/Xzp07tWDBAg0ePFiXXnppr+eurKxUZWVl0DJCOgAAAExjVA+60+mUJLnd7p5lra2tcjgcfU78HD9+vLKzs+VwODR16lTdeOON2rp1q2X1AgAAAAPNqIB+1lln6dxzz1VjY2PPssbGRo0ePbrPq7h8W0pKSr9DYQAAAIB4YFRAl6TS0lKtXr1ax44d0+HDh7V27VrNnDmzV7sTJ06ovr5eXq9XnZ2dqq+vV11dna655poYVA0AAAAMDKPGoEvSnDlzdOzYMU2bNq3nOugnL6N43333acKECbr//vsVCARUU1Oj+fPnKyUlRcOGDdMTTzyh4uLiGK8BAAAAELmU7iQeE+JyudTU1BTrMgAAAJDAws2cxg1xAQAAAJIZAR0AAAAwCAEdAAAAMAgBHQAAADAIAR0AAAAwCAEdAAAAcc/j9at2W6M8Xn+sSzljBHQAAADEvXZfQC9ub1K7LxDrUs4YAR0AAAAwCAEdAAAAMAgBHQAAADAIAR0AAAAwCAEdAAAAMAgBHQAAAHHPH+gKuo9nBHQAAADENX+gU1VrGiRJVWsa5A90xriiM0NABwAAQFw7dLRNLSe8kqSWE14dOtoW44rODAEdAAAAcS1vSJZyczIkSbk5GcobkhXjis4MAR0AAABxzWFP1ZLZxZKkJbOL5bCnxriiM0NABwAAQNxz2G1B9/Es/tcAAAAASCAEdAAAAMAgBHQAAADAIAR0AAAAwCAEdAAAAMS9zHS77pzmUma6PdalnLH4XwMAAAAkPWeGQ2XX5se6jAFBDzoAAABgEAI6AAAAYBACOgAAAGAQAjoAAABgEAI6AAAAYBACOgAAAGAQAjoAAABgEOMCut/v1+LFizVx4kQVFRWpurpa3d3dfbZ1u92aP3++CgsLNWXKFK1du9biagEAAICBZdwXFa1atUrvvvuutm7dKp/Pp1mzZum8885TeXl5r7aPP/64vF6vdu7cqYMHD+qee+7RiBEjNHXq1BhUDgAAAJw543rQN2zYoAceeEC5ubnKy8tTRUWFNmzY0Ktde3u7tmzZonnz5ik7O1sul0u33357n20BAACAeGFUD/rXX3+tzz//XPn5f/ma1vz8fH300Ufq7u5WSkpKz/JPPvlEXV1duvDCC4PavvLKK30+d01NjVauXBm94gEAAIABYFRA93g8kqRBgwb1LMvJyZHf71dHR4fS09OD2jqdTtlstqC2bW1tfT53ZWWlKisrg5a5XK6BLB8AAAA4Y0YNcXE6nZL+b/LnSa2trXI4HEpLS+vV1uPxBE0gbW1tVVZWljXFAgAAAFFgVEA/66yzdO6556qxsbFnWWNjo0aPHh00vEWSRo4cKZvNpubm5p5lH3zwgcaMGWNZvQAAAMBAMyqgS1JpaalWr16tY8eO6fDhw1q7dq1mzpzZq11mZqZuuOEGrVixQm63W83NzXrppZf6bAsAAADEC+MC+pw5c1RQUKBp06bppptu0lVXXaW77rpLknTfffdp9erVPW2rqqqUlpamyy+/XLNmzVJFRQWXWAQAAIhzHq9ftdsa5fH6Y11KTKR09/ctQEnA5XKpqakp1mUAAADgG1q+btc9S7br+appyj0rM9blnLFwM6dxPegAAABAMiOgAwAAAAYhoAMAAAAGIaADAAAABiGgAwAAwCj+QFfQfbIhoAMAAMAY/kCnqtY0SJKq1jTIH+iMcUXWI6ADAADAGIeOtqnlhFeS1HLCq0NH22JckfUI6AAAADBG3pAs5eZkSJJyczKUNyQrxhVZj4AOAAAAYzjsqVoyu1iStGR2sRz21BhXZD0COgAAAIzisNuC7pNNcq41AAAAYCgCOgAAAGAQAjoAAABgEAI6AAAAYBACOgAAAGAQAjoAAACMkplu153TXMpMt8e6lJhIzrUGAACAsZwZDpVdmx/rMmKGHnQAAADAIAR0AAAAwCAEdAAAAESNx+tX7bZGebz+WJcSNwjoAAAAiJp2X0Avbm9Suy8Q61LiBgEdAAAAMAgBHQAAADAIAR0AAAAwCAEdAAAAMAgBHQAAAFHjD3QF3eP0COgAAACICn+gU1VrGiRJVWsa5A90xrii+EBABwAAQFQcOtqmlhNeSVLLCa8OHW2LcUXxgYAOAACAqMgbkqXcnAxJUm5OhvKGZMW4ovhAQAcAAEBUOOypWjK7WJK0ZHaxHPbUGFcUHwjoAAAAiBqH3RZ0j9Mz6p3asWOHrrnmGo0bN07l5eXav39/v203btyogoICFRYW9tzWr19vYbUAAADAwLPHuoCTPv74Yy1cuFA1NTWaMGGCnnnmGc2bN08bN27s9zEFBQWn/DkAAAAQb4zpQa+rq9PkyZM1ZcoUZWRkaO7cufrwww/V2NgY69IAAAAAyxjTg97U1KSLLrqo5//Z2dk6//zz1dzcrPz8/D4fs2/fPk2aNEnZ2dkqKSnR3Llz5XQ6+2xbU1OjlStXRqV2AAAAYKAY04Pu8XiUnZ0dtGzQoEFqa+v7epkTJ07U5s2b1dDQoOeee07vvPOOnnjiiX6fv7KyUk1NTUE3AAAARFdmul13TnMpM92YfmHjhRzQN2zYIJ/PF9GLlJeXy+Vy9XuTJKfTKbfbHfQ4t9utrKy+r5c5bNgwnX/++bLZbBo+fLgWLlyorVu3qru7O6IaAQAAMPCcGQ6VXZsvZ4Yj1qXEjZAPZX71q1+purpat9xyi+644w6NGDEi5BdZt27dadu4XK6gXu22tjZ99tlnuvDCC0N6DZvNRjgHAABA3Au5B/21117T0qVL9fHHH2v69Om65557tG3bNnV2dg5IITNmzNDrr7+uhoYG+Xw+1dTUaPTo0f2OP6+vr9eRI0ckSQcOHFB1dbVKSkqUkpIyIPUAAAAgmMfrV+22Rnm8/liXktBCDug2m00lJSV69tlntX37do0fP15Lly7VVVddpZqaGn355ZdnVMioUaP01FNPqaqqShMnTtR7772nFStW9Py8rq5O06dP7/n/G2+8oVtuuUXjxo3TXXfdpYKCAj322GNnVAMAAAD61+4L6MXtTWr3BWJdSkJL6Y5gXMgXX3yh3/72t3rppZfkcDj0ve99T//7v/+rqqoqlZaWRqPOqPj2sBoAAAD0r+Xrdt2zZLuer5qm3LMyY11O3Ag3c4Y1nba+vl4vvviiXn/9dU2aNEn/9E//pB/+8IdKSUnRH//4Ry1YsCCuAjoAAABgmpAD+tSpU9XW1qZbbrlFP/vZzzR8+PCgn0+ePFmZmRxJAQAAAGci5IA+Z84c3XjjjUpPT++3zWuvvTYgRQEAAADJKuSAfuutt0azDgAAAAAy6JtEAQAAYDZ/oCvoHtFBQAcAAMBp+QOdqlrTIEmqWtMgf2BgvgsHvRHQAQAAcFqHjrap5YRXktRywqtDR9tiXFHiIqADAADgtPKGZCk3J0OSlJuTobwhWTGuKHER0AEAAHBaDnuqlswuliQtmV0shz01xhUlLgI6AAAAQuKw24LuER28u0CIPF6/arc1yuP1x7oUAACQwAjoQIjafQG9uL1J7b5ArEsBAAAJjIAOAAAAGISADgAAABiEgA4AAJCEIplblZlu153TXMpMt0exMhDQkZSY8AkASHaRzK1yZjhUdm2+nBmOKFYGAjqSEhM+AQCAqQjoSAhW9Ij7A11B9wAAANFAQEdCiHaPuD/Qqao1DZKkqjUN8gc6o/I6AAAABHQYx8Tx4YeOtqnlhFeS1HLCq0NH22JcUTAT3zMAABAZAjqMY+L48LwhWcrNyZAk5eZkKG9IVowrCmbiewYAACJDQEdSCnc8ucOeqiWziyVJS2YXy2FPjVptAABYgblV5iKgI+lEOp7cYbcF3QMAEK+YW2U2kgaSjpXjyRNtbHiirQ8AJCvT51YlOwI6QmZyOAvnNJ2V48kTbWx4oq0PACQr0+dWJTsCOkJmVTgLd0xcuKfpGE8OAEh2/C00GwEdRolkTFwkp+kSbTw5E30AAOFKtL+FiYTfCIwSSdi26jRdZrpdd05zKTPdHpXnjxQTfQAASCwEdBglkrBt1Wk6Z4ZDZdfmy5nhiMrzR4qJPgAAJBYCOowSadg29TSdFUNPIj2DEMmkX4bSAAAQfWalGRgtknAWSQg0NWyHy6qhJ5Ee1IQ76TfS9TH56j8AAJgovhMQLBNpOEvmy/JFOvTE1IOaSNcnmbcBADCZqXOrYFBAb25uVkVFhYqKiuRyudTWdvo//rW1tbriiitUWFioOXPm6KuvvrKg0uSUaOOcrfhQinToiamBlmvmAkBiMXVuFQwK6Ha7Xdddd52WLVsWUvtdu3ZpxYoVWrVqlXbu3CmHw6GqqqooV5m8Ei2cWfGhlGjXmE209QEAwFTGBPRRo0bptttu05gxY0Jqv3HjRt1888266KKLlJ2drfnz5+vVV1/V8ePHo1xpcjI9nJl6mi5RxtOflGjrAwCAieL2r2xTU5Py8/N7/j9ixAilpaVp3759fbavqamRy+UKuiE8JoczTtOFjyuyAABgJvOSVog8Ho8GDRoUtGzQoEH9jl2vrKxUU1NT0A1mMrU33GThvmdWfrmRFQcCXCkGAJBILElA5eXl2rNnT78/jyQsO51Oud3uoGVut1tZWfE9NjrRRBLOTvaGJysr3rO+Jv0OPy8nvEJD8O0DgV8vnBqV4VEnJ9ZeO2k4Z1EAAHHPkoC+bt26AX9Ol8ulxsbGnv9/+umn8vl8uuCCCwb8tRAZq8JZIrHqPTs56fdwiyeqk36tOhAAACCRGDPEpbu7Wz6fTx0dHZKkjo4O+Xw+dXd399m+tLRUmzZt0vvvv6+2tjYtX75cV199tQYPHmxl2TiFRLs0YyTCHXpi1XsW6aTfcNcn0a7+AwCmYqhfYjEmoB88eFBjx47V9ddfL0maNGmSxo4dq4MHD0qS6urqNH369J72l112mebNm6fZs2dr8uTJ8vl8WrJkSUxqTxaEs/CFO3nVyvcskkm/4a6P6Vf/AYBEYep3aCAyxszCGzp06CnHos+YMUMzZswIWlZWVqaysrJol4b/L9xxzifD2Y+f/APhLESJ+J6FeyDg8fr1u/p9uvnKCxhPDgBISsb0oCMxmXxpRlMl+3sWSS8Ql4wEACSS5EwAABKGlZeMBADACgR0AHGNycgAEg0TPkFABxDXmIwMINEw1A8EdCBJWfWNrdF+Ha4UAyDZMdQv8RDQEVVWhcBEYtV7Fu4lE616nUh6gZJ9Yi2A5MZQv8TDXzNElVUhMJEk83tGLxAAhI+hfomHgA7AGPQCAUD4GOqXeAjoAIxBLxAAMNQPBHQABqEXCECyY6gfJAI6AMPQCwQgmTHUDxIBHUAC4GpBABIFQ/0gEdABJIBkvvKN6fhGRCA8DPWDREAHAERRJN+ICCQ7hvqB3zwAAECcY6hfYiGgJ4BITiFz2hmmsuqPDPsAgETCUL/EQkBPAJGcQua0M0xl1R8Z9gEAgKkI6AAAAIBBCOgAgKiJ5BsRASDZEdABAFHBNyICkWHCJwjoAICo4BsRgcgw4RME9CTFaWckO/aB6OMbEQEgMgT0BBBu0OC0M5Id+4A1+EZEAIgMAT3ORRI0OO2MZMc+YB2+EREAwscnZpyLJGhw2hnJjn0AAGAyAnqciyRocNoZyY59AABgMgJ6nIs0aHDaGcmOfQAAYCr+MiUAggYAAEDiINEBAKKGL1wBgPDxiQkAiJqTX7gCAAgdPegAAACAQYwJ6M3NzaqoqFBRUZFcLpfa2k59ucCNGzeqoKBAhYWFPbf169dbVG3847Qzkp3J+4DH61fttkZ5vP5YlxITyb7+SCxsz4iEMQHdbrfruuuu07Jly0J+TEFBgfbu3dtzu+2226JYobkiCRonTzs7MxxRrAwwl8n7QLsvoBe3N6ndF4h1KTGR7OuPxML2jEgY03U0atQojRo1SgcOHIh1KXGHMZ4AAACJw5ge9Ejs27dPkyZNUklJiZYtWyaPx9Nv25qaGrlcrqCbiTgVBiQW9mkAQLjiNqBPnDhRmzdvVkNDg5577jm98847euKJJ/ptX1lZqaampqCbiTgVBpgrkrDNPg0ACJclQ1zKy8u1Z8+efn8eSVgeNmxYz7+HDx+uhQsXqqKiQkuXLlVKSkpEdQLAqZwM29dOGm7k2HUAQGKwJKCvW7cu6q9hs9nU3d0d9dcBgGjzB7qC7pNNsq8/EgvbMyJhzBCX7u5u+Xw+dXR0SJI6Ojrk8/n6Dd319fU6cuSIJOnAgQOqrq5WSUkJvecA4po/0KmqNQ2SpKo1DfIHOmNckbWSff2RWNieESljAvrBgwc1duxYXX/99ZKkSZMmaezYsTp48KAkqa6uTtOnT+9p/8Ybb+iWW27RuHHjdNddd6mgoECPPfZYTGoHgIFy6GibWk54JUktJ7w6dPTU3wmRaJJ9/ZFY2J4RKWMuszh06NBTjkWfMWOGZsyY0fP/Rx55RI888ogVpVmKU2FAYgl3n84bkqXcnAwdbvEoNydDeUOyolmecZJ9/ZFY2J4RKWN60MGpMMB04YbtSPZphz1VS2YXS5KWzC6Ww54aYbXxKdnXH4mF7RmRIqAbhFNhgLkiCduR7tMOuy3oPtkk+/ojsbA9IxJsLQY5eSpMEqfCAMNEErbZpwEAkSCgG4RTYYC5Ignb7NMAgEgQ0A3DqTDATJGGbfZpAEC4+IsBACEibAMArMBfGQBA3PN4/ard1iiP1x/rUoAgmel23TnNpcx0Y65sjThAQAcAwyT7H/RI1r/dF9CL25vU7gtEsTIg/INBZ4Yo3plcAAAP/UlEQVRDZdfmy5nhiHJlSCQEdAAwTLL/QU/29Yd1IjnzwsEgrEBAN0yy95wBiYZ92lwMiwFhG6YioBuGniMgsbBPm4twBsBUBHQACBG94QAAK/BXBgBCdLI3HObxB7qC7gEgntGDDgCIa/5Ap6rWNEiSqtY0yB/ojHFFSGQcDMIKBPQoYgISAETfoaNtajnhlSS1nPDq0NG2GFeEeBFu2OZgEFYhoEcRE5AAIPryhmQpNydDkpSbk6G8IVkhPY6e0OQWSdjmYBBWIaADAOKaw56qJbOLJUlLZhfLYU897WPoCUUkYTvSg0EgXAR0AEDcc9htQfenQ08oIgnbkRwMApEgoANAkkrmeTL0hCLSsB3uwSAQCbYuAEhSyTxPhp5Qs1l18EjYhqnYIqOICUgAYC6Tw1kyn92QkvvgEZAI6FHDBCQAiSbZQ6OVCKhAciOgRwkTkAAkGpNDY2a6XXdOcykznS/IBhD/COhRwgQkALCOM8Ohsmvz5cxwxLoUxIhVZ3g4GIQVCOhRwgQkAFaKJJwwTwZWsCo4W3WGh4NBWIGAHkUmT0ACkFjCDSfMk6En1OTgbNXBY7JvAzAXyREAkhDzZMzuCQ03oEYStiMJzlaEeisPHk3eBpDcCOgAkIQimSfDkBhrRBJQrRreYcXrcPAIENABICmFO0+GITHWSfaAykUWAAI6ACStcObJJHtotFKyB9RIL7LAGR4kEgJ6FDH5BECiSPbQaKVEuwpYJME53IsscIYHicaYgL5p0ybdeuutuuSSSzRlyhQ9+uijam1tPeVjamtrdcUVV6iwsFBz5szRV199ZVG1oWHyCQCrRLv3MNFCo5UimViZKFcBsyo4c4YHicaYPb+9vV0PP/ywGhoa9PLLL+uLL77Q448/3m/7Xbt2acWKFVq1apV27twph8OhqqoqCysGADNYFYISJTRazYqJlZEcoFkxJMSq4MwZHiQaYz5ly8rKVFRUpPT0dA0ePFh33HGH3n777X7bb9y4UTfffLMuuugiZWdna/78+Xr11Vd1/PhxC6sGgNij9zC5RXKAFulBXbih3qrgzBkeJBpjAvq3vfnmmxozZky/P29qalJ+fn7P/0eMGKG0tDTt27evz/Y1NTVyuVxBNwBIBPQeWseqL/cJRyQHaJE8JpJQb2Vw5gwPEomRW3F9fb3Wr1+v+fPn99vG4/Fo0KBBQcsGDRqktra+P2QqKyvV1NQUdAOARBBpCGIie/isut54OCI5QIvkMZGeqSE4A+GzZG8pLy/v1XvdX0/2rl27tHDhQq1cufKUvdxOp1NutztomdvtVlYWPUcAkk8kIYiJ7IkhkgO0SB5j5ZkaDh6R7CzZ8tetWxdSu127dmnevHl6+umnddlll52yrcvlUmNjY8//P/30U/l8Pl1wwQVnVCsAAAMpksmY4QbUSA7Qwn3MyVD/4yf/EPXhKicPHoFkZcz5pt27d2vu3Lmqrq7W5Zdfftr2paWl2rRpk95//321tbVp+fLluvrqqzV48GALqgWA5EOvZvginYxp6tkNhqsA1jBmD1u5cqXcbrfmz5+vwsLCnttJdXV1mj59es//L7vsMs2bN0+zZ8/W5MmT5fP5tGTJkliUDgBJwdTQaDKusGMdDiCRSIzZik83DGbGjBmaMWNG0LKysjKVlZVFsywAAHpEepnBwy0errATZQyLQSIxpgcdABA5eg+jz/TLDJqKbRMIHwEdABIAw0+iz+TLDEYSgq0KzmybQPgI6AAAhMDkL4SKJARH8hh6wwFrENABAAgBw1XoDQesQkAHACBEXGYQgBX4hAmDx+tX7bZGebz+WJcCAACABEVAD0O7L6AXtzep3ReIdSkAgDjBuG0A4eLTAgCAKOL63ADCRQ86AAAAYBACOgAAIWK4CgAr8AkDAECIGK4CwAr0oIfBH+gKugcAAAAGGgE9RP5Ap6rWNEiSqtY0yB/ojHFFAAAASEQE9BAdOtqmlhNeSVLLCa8OHW2LcUUAAABIRAT0EOUNyVJuToYkKTcnQ3lDsmJcEQAAABIRAT1EDnuqlswuliQtmV0shz01xhUBAAAgERHQw+Cw24LuAQAAgIFG0gQAAAAMQkAHAAAADEJABwAAAAxCQAcAAAAMQkAHAAAADEJAD0Nmul13TnMpM90e61IAAACQoEiaYXBmOFR2bX6sywAAAEACowcdAAAAMAgBHQAAADAIAR0AAAAwCAEdAAAAMAgBHQAAADAIAR0AAAAwCAEdAAAAMIgxAX3Tpk269dZbdckll2jKlCl69NFH1dra2m/7jRs3qqCgQIWFhT239evXW1gxAAAAMPCM+aKi9vZ2Pfzwwxo/fnzPvx9//HFVV1f3+5iCggJt3LjRwioBAACA6DKmB72srExFRUVKT0/X4MGDdccdd+jtt9+OdVkAAACApYzpQf+2N998U2PGjDllm3379mnSpEnKzs5WSUmJ5s6dK6fT2WfbmpoarVy5MhqlAgAAAAMmpbu7uzvWRXxbfX29/u7v/k61tbVyuVx9ttm/f7+6u7s1dOhQ7d+/X4sWLdLIkSP15JNPhvw6LpdLTU1NA1U2AAAA0Eu4mdOSgF5eXq49e/b0+/NvFrxr1y49+OCDWr58uS677LKQX2Pv3r2qqKjQ22+/rZSUlJAeQ0AHAABAtIWbOS0Z4rJu3bqQ2u3atUvz5s3T008/HVY4lySbzaZIjjX666EHAAAAYsGYMei7d+/W3Llz9c///M+6/PLLT9u+vr5eBQUFOuecc3TgwAFVV1erpKQk5N5zSfSeR4CzDmAbSG78/sE2ALaB6DMmoK9cuVJut1vz588PWr53715JUl1dndasWaMtW7ZIkt544w39/d//vdxut84++2yVlJTowQcftLxuAAAAYCAZOUkU5uKoGWwDyY3fP9gGwDYQfcZcBx0AAACAlLp48eLFsS4C8aWoqCjWJSDG2AaSG79/sA2AbSC6GOICAAAAGIQhLgAAAIBBCOgAAACAQQjoAAAAgEEI6OhXc3OzKioqVFRUJJfLpba2ttM+pra2VldccYUKCws1Z84cffXVVxZUimjasWOHrrnmGo0bN07l5eXav39/v203btyogoICFRYW9tzWr19vYbU4U36/X4sXL9bEiRNVVFSk6urqfr+l+eR3VxQWFmrKlClau3atxdUiGsLZBsrLy3XxxRcH7fMdHR0WV4yB9MILL6i0tFQXX3yx5s6de8q2fAZEDwEd/bLb7bruuuu0bNmykNrv2rVLK1as0KpVq7Rz5045HA5VVVVFuUpE08cff6yFCxfqscce0+7du1VQUKB58+ad8jEFBQXau3dvz+22226zqFoMhFWrVundd9/V1q1btWnTJr366qt64YUX+mz7+OOPy+v1aufOnXruuef0L//yL/rP//xPiyvGQAtnG5CkRYsWBe3zaWlpFlaLgXbOOedozpw5uv3220/bls+A6CGgo1+jRo3SbbfdpjFjxoTUfuPGjbr55pt10UUXKTs7W/Pnz9err76q48ePR7lSREtdXZ0mT56sKVOmKCMjQ3PnztWHH36oxsbGWJeGKNmwYYMeeOAB5ebmKi8vTxUVFdqwYUOvdu3t7dqyZYvmzZun7OxsuVwu3X777X22RXwJdRtAYpo2bZpKSkp09tlnn7IdnwHRRUDHgGlqalJ+fn7P/0eMGKG0tDTt27cvhlXhTHz7d5qdna3zzz9fzc3N/T5m3759mjRpkkpKSrRs2TJ5PB4rSsUA+Prrr/X5558H/c7z8/P10Ucf9Rri8Mknn6irq0sXXnhhUNsPP/zQsnox8MLZBk6qqalRUVGRSktLtX37dqtKRYzxGRBd9lgXgMTh8Xg0aNCgoGWDBg0Kaew6zOTxeJSdnR207FS/04kTJ2rz5s0aOnSo9u/fr0WLFumJJ57Qk08+aUW5OEMnD6a+uR/n5OTI7/ero6ND6enpQW2dTqdsNltQW/b3+BbONiBJCxYs0OjRo5Wenq6dO3dqwYIFGjx4sC699FJL64b1+AyILgJ6kiovL9eePXv6/XlTU1PYz+l0OuV2u4OWud1uZWVlhf1ciL5QtoFwf6fDhg3r+ffw4cO1cOFCVVRUaOnSpUpJSRmYwhE1TqdT0v/9jnNyciRJra2tcjgcvcYVO51OeTwedXd39/xuW1tb2d/jXDjbgCSNHz++599Tp07VjTfeqK1btxLQkwCfAdFFQE9S69atG/DndLlcQWOTP/30U/l8Pl1wwQUD/lo4c6FsAy6XK+hgra2tTZ999lnQKc1Tsdls/Z4Wh3nOOussnXvuuWpsbFReXp4kqbGxUaNHj+51gDVy5EjZbDY1NzfL5XJJkj744IOQ56zATOFsA31JSUlhn08SfAZEF2PQ0a/u7m75fL6eS2Z1dHTI5/P1++FbWlqqTZs26f3331dbW5uWL1+uq6++WoMHD7aybAygGTNm6PXXX1dDQ4N8Pp9qamo0evTooPGp31RfX68jR45Ikg4cOKDq6mqVlJTQex5HSktLtXr1ah07dkyHDx/W2rVrNXPmzF7tMjMzdcMNN2jFihVyu91qbm7WSy+91GdbxJdQt4ETJ06ovr5eXq9XnZ2dqq+vV11dna655poYVI2BEggE5PP5FAgE1NXVFZQDvonPgOhK6eZQF/04cOCArr766l7LX331VQ0dOlR1dXVas2aNtmzZ0vOz2tparVq1Sq2trSouLtbSpUtPOxMcZtu+fbuqq6t15MgRjRs3Tk8++WTPUJZvbwNPPfWU6urq5Ha7dfbZZ6ukpEQPPvhgr3HsMJff79cTTzyhLVu2yGazaebMmVq4cKFSUlJ03333acKECbr//vsl/d8wiEcffVT19fVyOp2qqKjQvffeG+M1wJkKdRs4duyYfvKTn+jjjz9WSkqKhg0bph//+MeaPn16rFcBZ6CmpkYrV64MWnbppZdq3bp1fAZYiIAOAAAAGIQhLgAAAIBBCOgAAACAQQjoAAAAgEEI6AAAAIBBCOgAAACAQQjoAAAAgEEI6AAAAIBBCOgAAACAQQjoAAAAgEEI6ACAUzp27JiuvPJKPffccz3LamtrNXnyZH3xxRcxrAwAElNKd3d3d6yLAACY7Z133tHf/u3f6tlnn5XD4dCsWbP07LPP6tJLL411aQCQcAjoAICQ1NbW6te//rVsNpsqKip0zz33xLokAEhIBHQAQEg8Ho+mTp2q1NRUvfbaa0pLS4t1SQCQkBiDDgAIyaOPPqrRo0fru9/9rp588slYlwMACcse6wIAAOZ7/vnntWfPHm3atEk+n08zZ87U+PHjdfPNN8e6NABIOAR0AMApvfXWW/rlL3+p5557TkOGDJEk/eIXv9DcuXPlcrlUUFAQ4woBILEwBh0AAAAwCGPQAQAAAIMQ0AEAAACDENABAAAAgxDQAQAAAIMQ0AEAAACDENABAAAAgxDQAQAAAIMQ0AEAAACD/D8ZWPJhDj9dQgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig2, ax2 = plt.subplots(figsize=(12, 6))\n", "ax2.errorbar(x, y, xerr=sx, yerr=sy, fmt='.')\n", "ax2.set(title=\"Fit of a graph\", \n", " xlabel=\"x\", \n", " ylabel=\"y\",\n", " xlim=(-1.3, 1.3));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now try to fit the function $f(x)=p_0 + p_1 x + p_2 x \\sin x + p_3 x^3$ to the data. First we define the function:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "def func_simple(x, p0, p1, p2, p3):\n", " return p0 + p1*x + p2*x*np.sin(x) + p3*x*x*x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case want to do a chi square ($\\chi^2$) fit to the data. We initialize a probfit object with the `Chi2Regression` function:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "chi2_object_simple = Chi2Regression(func_simple, x, y, sy)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now tell Minuit that we want to minimize `chi2_object_simple` and provide initial guesses for the parameters:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FCN = 104.10301698279432TOTAL NCALL = 89NCALLS = 89
EDM = 3.542757710653819e-20GOAL EDM = 1e-05\n", " UP = 1.0
\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", "
ValidValid ParamAccurate CovarPosDefMade PosDef
TrueTrueTrueTrueFalse
Hesse FailHasCovAbove EDMReach calllim
FalseTrueFalseFalse
" ] }, "metadata": {}, "output_type": "display_data" }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
+NameValueHesse ErrorMinos Error-Minos Error+Limit-Limit+Fixed?
0p0-1.766640.0219323No
1p1-1.440730.0476293No
2p21.030010.0368052No
3p31.712520.0448068No
\n", "
\n",
       "\n",
       "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "minuit_simple = Minuit(chi2_object_simple, pedantic=False,\n", " p0=0., p1=2.0, p2=0.0, p3=2.0)\n", "minuit_simple.migrad(); # fit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As last time wee see a lot of green indicating that the fit converged - yay! We see the the minimum value, $\\chi^2$ in this case, is 73.9, and we see the values of the fit parameters along with their uncertainties. We can also print these parameters as we like it:" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Simple fit\n", "Fit value: p0 = -1.76664 +/- 0.02193\n", "Fit value: p1 = -1.44073 +/- 0.04763\n", "Fit value: p2 = 1.03001 +/- 0.03681\n", "Fit value: p3 = 1.71252 +/- 0.04481\n" ] } ], "source": [ "p0, p1, p2, p3 = minuit_simple.args\n", "print(\"Simple fit\")\n", "for name in minuit_simple.parameters:\n", " print(\"Fit value: {0} = {1:.5f} +/- {2:.5f}\".format(name, minuit_simple.values[name], minuit_simple.errors[name]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And plot the fit on the same plot as the data (`ax2`):" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "lines_to_next_cell": 2 }, "outputs": [ { "data": { "image/png": "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4rmFFhERBR5nw4nIHziDfoOmQ3+AKuouaCc8cNPnXF3imYiIiIjIUwzoP2C5+DVMXx9GxMNP33Rh6I1LPNsdnYEokYiIiIgGOAb07wnOTjQeeA/6SY/0emGop0s8ExERERG5gwH9e8YvSuAwNiNsxqJePy/mJZ6JiIiIaOBgQAfg7GhHU+kHCJu5GLIgba9juMQzEREREfkDAzqA5v/9CLLgEOjvm93vOC7xTERERES+NuiTpr3pMlor/oiIjGWQSDkrTkRERESBNegDemPJH6AZPRGa0RMDXQoREREREQO6+dwJhGcsDXQZREREREQAGNARMukRKCNGBLoMIiIiIiIADOgITXvS5bFBKjl+PMeAIJXchxURERER0WA26JNmX7dV7I1GrcCSh8f5sBoiIiIiGuwG/Qw6EREREZGYMKATEREREYkIAzoRERERkYgwoBMRERERiQgDOhERERGRiDCgExERERGJCAM6EREREZGIiCag7927F0888QRSUlKQlpaGdevWwWg09jl+z549SExMRHJycvfb7t27/VgxEREREZH3iWahIovFgpdeeglJSUndH69fvx55eXl9PicxMRF79uzxY5VERERERL4lmhn0JUuWIDU1FSqVCqGhoVi8eDFOnDgR6LKIiIiIiPxKNDPoNzp27BgSEhL6HVNTU4P7778fWq0WGRkZyM7Ohkaj6XVsfn4+CgoKfFEqEREREZHXSARBEAJdxI1KS0vxwgsvoLCwEAaDodcxtbW1EAQBMTExqK2txdq1azFq1Cjk5ua6/DoGgwFVVVXeKpuIiIiI6CbuZk6/BPTMzExUVFT0+fkfFlxeXo5Vq1Zh06ZNmDp1qsuvUVlZiaysLJw4cQISicSl5zCgExEREZGvuZs5/dLismvXLpfGlZeXIycnB2+99ZZb4RwApFIpRHgygIiIiIjILaK5SPTo0aPIzs5GXl4eZsyYccvxpaWlqK+vBwDU1dUhLy8PGRkZLs+eExERERGJkWh60DMzM3H8+HGo1eoej1dWVgIAioqKsHXrVhQXFwMA3njjDRQVFcFkMiEsLAwZGRlYtWoVtFqty6/ZV387EREREZE3ia4HnQYO9u0Tt4HBjT9/4jZA3AZ8TzQtLkRERERExIBORERERCQqDOhERERERCIie+WVV14JdBF0Z0lNTQ10CRRg3AYGN/78idsA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\n", "text/plain": [ "
" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_fit = np.linspace(-1.3, 1.3, 1000)\n", "y_fit_simple = func_simple(x_fit, p0, p1, p2, p3)\n", "ax2.plot(x_fit, y_fit_simple, '-', label='Simple fit')\n", "fig2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, we also know that the data was generated with a discontinuity at $x=0$. To fit that, we first define a function that depends on the value of x (piecewise function 'gaffelfunktion'):" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "# Defining external function (which can include \"if\" statements and everything else!):\n", "def func_advanced(x, p0, p1, p2, p3, p4) :\n", " if x > 0:\n", " return p0 + p1*x + p2*x*np.sin(x) + p3*x**3 + p4\n", " else:\n", " return p0 + p1*x + p2*x*np.sin(x) + p3*x**3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function above accepts only single values for x, ie. not lists/arrays. This is the format that Minuit expects, so this is the function that we are going to use in the fit. \n", "However, when plotting the data, or simply doing anything other than fitting it with Minuit, we can use Numpy to vectorize the function. Numpy has the function `np.vectorize` which transforms a non-vectorized function to vectorized, such that the output allows x to be a numpy array instead of just a scalar:" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "func_advanced_vec = np.vectorize(func_advanced)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will not need `func_advanced_vec` for the fit though, so we continue defining the chi2-fit object using `func_advanced`: " ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "chi2_object_advanced = Chi2Regression(func_advanced, x, y, sy)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And minimize it:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "lines_to_next_cell": 2 }, "outputs": [ { "data": { "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FCN = 41.58272292312255TOTAL NCALL = 125NCALLS = 125
EDM = 1.136583419515686e-15GOAL EDM = 1e-05\n", " UP = 1.0
\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", "
ValidValid ParamAccurate CovarPosDefMade PosDef
TrueTrueTrueTrueFalse
Hesse FailHasCovAbove EDMReach calllim
FalseTrueFalseFalse
" ] }, "metadata": {}, "output_type": "display_data" }, { "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", " \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", "
+NameValueHesse ErrorMinos Error-Minos Error+Limit-Limit+Fixed?
0p0-2.048090.0418099No
1p1-2.093160.0952723No
2p21.011640.0368784No
3p32.025060.0597496No
4p40.5913520.0747887No
\n", "
\n",
       "\n",
       "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "minuit_advanced = Minuit(chi2_object_advanced, pedantic=False, p0=0., p1=2.0, p2=0.0, p3=2.0, p4=0.5)\n", "minuit_advanced.migrad(); # fit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Printing the fitted paramaters and their uncertainties:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Advanced fit\n", "Fit value: p0 = -2.04809 +/- 0.04181\n", "Fit value: p1 = -2.09316 +/- 0.09527\n", "Fit value: p2 = 1.01164 +/- 0.03688\n", "Fit value: p3 = 2.02506 +/- 0.05975\n", "Fit value: p4 = 0.59135 +/- 0.07479\n" ] } ], "source": [ "p0, p1, p2, p3, p4 = minuit_advanced.args\n", "print(\"Advanced fit\")\n", "for name in minuit_advanced.parameters:\n", " print(\"Fit value: {0} = {1:.5f} +/- {2:.5f}\".format(name, minuit_advanced.values[name], minuit_advanced.errors[name]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And plotting it on the data:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "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goiIiIjUA2lpaZVuW68DOlTtzRIRERERqaqqDgpriouIiIiIiA9RQBcRERER8SEK6CIiIiIiPkQBXURERETEh9T7m0RFRK6FzWYjOzsbt9vt7VKkBhiNRqKjo7Fard4uRUTqEQV0EZGrZLPZOH36NE2bNsVsNnu7HKkBDoeDEydO0KhRI4V0Eak1muIiInKVsrOzFc6vc2azmaZNm5Kdne3tUkSkHlFAFxG5Sm63W+G8HjCbzZrCJCK1SgFdRERERMSHKKCLiIiIiPgQBXQRkXps1KhRrFu3rkb6XrBgAWPHjr3q4//zn//Qr18/EhMTOXToUI3WKiLiS7SKi4jIdezw4cO89NJLpKam4nA4aNiwIWPHjuWhhx4CYOnSpV6u8OIcDgczZ85k7ty5JCYmAhVrXbBgAfPmzWPBggXeKlFEpMYooIuIXMcefvhhbrnlFl599VXMZjOHDx/m4MGD3i7rinJycigtLaVt27beLkVE5JoU221VPsbnprjMmzePsWPH0qlTJx577LHLtp0wYQKdOnUiMTGx/GW322upUhER35abm8uxY8e48847CQgIwM/PjzZt2jBy5MjyNkOGDGHNmjXAD1NS/va3v5GcnEy/fv34/PPP2bZtG6NGjaJHjx787ne/w+PxALBlyxaSk5OZO3cuffv2pV+/frz77ruXrCc7O5snnniClJQUBgwYwCuvvILT6bygXVpaGiNGjACgX79+jBo1qkKtaWlpzJgxg71795b/7M/Jyam2901EpDot+O7zKh/jcyPoDRs2ZPLkyWzatIkzZ85csf20adMYP358LVQmInJlrtJiPI6yGj2HweyPX0DQFds1aNCAli1b8pvf/IZx48bRtWtXYmNjL3tMWloat912Gxs3bmTBggU8++yzpKSk8MEHH1BWVsZtt93G4MGDGTp0KACFhYUcPnyY1atXc+TIEe677z5atWpVvv97brebRx55hN69e/PFF19QVFTEpEmTiIiI4L777qvQNiEhgSVLljB06FA2bNhAUFDQBfv/8Ic/aIqLiPg8l9vF+qNbq3yczwX04cOHA7B3795KBXQREV/hcbs49sYkPGVV/3VmVRj8rbT41VwMRr/LtzMY+Ne//sU///lP3nzzTQ4fPkx8fDzPPPMMffv2vegxUVFRTJgwAYDRo0fz7LPPctdddxEeHg5Az549+e67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\n", "text/plain": [ "
" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_fit_advanced = func_advanced_vec(x_fit, p0, p1, p2, p3, p4 )\n", "ax2.plot(x_fit, y_fit_advanced, '-', label='Advanced fit')\n", "\n", "ax2.legend(loc='upper center')\n", "\n", "fig2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "#### Advanced hint:\n", "\n", "If you have many parameters and don't want to write out all the names (like `p0`, `p1`, ..., and so on), you can write it the following way (which is called argument unpacking):\n", "``` \n", "p = minuit.args # save all the fitted parameters as the tuple p \n", "y_fit_advanced = func_advanced_vec(x_fit, *p) unpack all of the values in p to the function.\n", "``` \n", "***\n", "\n", "We also want to calculate the $\\chi^2$ value of the fit:" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "chi2_val = 0\n", "for x_i, y_i, sy_i in zip(x, y, sy):\n", " f = func_advanced( x_i, p0, p1, p2, p3, p4)\n", " chi2_val += (y_i-f)**2 / sy_i**2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And below in a optimized Numpy way:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "41.58272292312254\n", "41.58272292312254\n", "True\n" ] } ], "source": [ "f = func_advanced_vec(x, p0, p1, p2, p3, p4 )\n", "chi2_val_np = np.sum((y-f)**2 / sy**2)\n", "\n", "print(chi2_val)\n", "print(chi2_val_np)\n", "print(np.allclose(chi2_val, chi2_val_np))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Do you recognize the number 41.58 from somewhere else? It is exactly the same number as `FCN` we got when we ran `minuit_advanced.migrad()` above. Therefore, in this case we could also just have gotten the number by: " ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "41.58272292312255\n" ] } ], "source": [ "chi2_val_fit = minuit_advanced.fval\n", "print(chi2_val_fit)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We calculate the number of degrees of freedom:" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "46" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "N_DOF = Ndata - len(minuit_advanced.args)\n", "N_DOF" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Along with the $\\chi^2$ probability:" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6576334206434578" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chi2_prob = stats.chi2.sf(chi2_val, N_DOF)\n", "chi2_prob" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and add the fit results to the plot:" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "d = {'Entries': Ndata,\n", " 'Chi2': chi2_val,\n", " 'ndf': N_DOF,\n", " 'Prob': chi2_prob,\n", " }\n", "\n", "for name in minuit_advanced.parameters:\n", " d[name] = [minuit_advanced.values[name], minuit_advanced.errors[name]]" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "lines_to_next_cell": 2 }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "text = nice_string_output(d, extra_spacing=2, decimals=3)\n", "add_text_to_ax(0.02, 0.95, text, ax2, fontsize=12)\n", "fig2.tight_layout()\n", "\n", "\n", "fig2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and finally save the plot (if save_plots if True):" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "if save_plots:\n", " fig2.savefig('Graph.pdf', dpi=600)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*** \n", "\n", "In case you want to export the notebook to a normal python file (.py), you can uncomment the command below (but keep the \"`!`\") and run the cell. This exports the notebook to a Python file." ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook IntroToPlottingAndFitting.ipynb to script\n", "[NbConvertApp] Writing 25896 bytes to IntroToPlottingAndFitting.py\n" ] } ], "source": [ "!jupyter nbconvert --to script IntroToPlottingAndFitting.ipynb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(In the case that you want to convert back from .py to Notebook.ipynb file, run the following command:\n", "`jupyter nbconvert --to notebook IntroToPlottingAndFitting.py` in a terminal. In case you want to do it automatically in the Python script, add the line `os.system(\"jupyter nbconvert --to notebook IntroToPlottingAndFitting.py\")`" ] } ], "metadata": { "executable": "/usr/bin/env python", "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.7" }, "main_language": "python" }, "nbformat": 4, "nbformat_minor": 2 }