{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "probfit Basic Tutorial" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[probfit](http://iminuit.github.io/probfit/) is a modeling / fitting package to be used together with [iminuit](http://iminuit.github.com/iminuit/).\n", "\n", "This tutorial is a fast-paced introduction to the probfit features:\n", "\n", "* built-in common models: polynomial, gaussian, ...\n", "* build-in common fit statistics: chi^2, binned and unbinned likelihood\n", "* tools to get your fits to converge and check the results: try_uml, draw, draw_residuals, ...\n", "* tools to help you implement your own models and fit statistics: Normalize, Extended, integrate_1d, ...\n", "\n", "Please start this notebook with the ipython --pylab=inline option to get inline plots." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# We assume you have executed this cell in all the following examples\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import iminuit\n", "import probfit" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In your own code you can explicitly import what you need to save\n", "typing in interactive sessions, e.g.\n", "\n", " from iminuit import Minuit, describe\n", " from probfit import gaussian, BinnedLH\n", "\n", "We don't do this here, we only import iminuit and probfit into our\n", "namespace so that it is clear to you which functions and classes come\n", "from which package while reading the code below." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Chi^2 straight line fit\n", "\n", "We can't really call this a fitting package without being able to fit a straight line, right?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Let's make a straight line with gaussian(mu=0, sigma=1) noise\n", "np.random.seed(0)\n", "x = np.linspace(0, 10, 20) \n", "y = 3 * x + 15 + np.random.randn(len(x))\n", "err = np.ones(len(x))\n", "plt.errorbar(x, y, err, fmt='.');" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nLafTqbvvvtvqsizV0NAgl8slSXK5XGpoaAj5mqj/H5XofzL3pKWlRTNnztSyZcs0PEGvtvH+++8r\nNTVVubm5CT0al6SzZ89q9+7d+tGPfqTdu3fr8ssvD+vP58HowIED+uUvf6na2lp98cUXamlp0W9/\n+1ury4obnW3eoUQ9yK+55hrV1dV1/VxXV6f09PRov41tnDlzRjNmzNBjjz2moqIiq8uxzI4dO1RZ\nWanMzEzNnj1bH374oR5//HGry7JEenq60tPT9Z3vfEeSNHPmTO3evdviqqyxa9cuff/739e3vvUt\nDR06VA8++KB27NhhdVmWcrlcqq+vl2S2eqempoZ8TdSDPC8vT5999plqa2vV1tam3/3udyosLIz2\n29iCYRiaP3++srKy9PTTT1tdjqVKS0tVV1enmpoarVmzRpMnT9aqVausLssSaWlpGj16tPx+vyTp\ngw8+UHZ2tsVVWeOWW27Rzp07dfr0aRmGoQ8++EBZWVlWl2WpwsJClZeXS5LKy8vDGwDGoqVmw4YN\nxk033WRcf/31RmlpaSzewha2bdtmOBwO49ZbbzVycnKMnJwcY+PGjVaXZTmfz2dMnz7d6jIstWfP\nHiMvL88YP3688cADDxjNzc1Wl2SZV155pav98PHHHzfa2tqsLmnAPPLII8ZVV11lJCUlGenp6cbb\nb79tfPnll0Z+fn6f2g9jdoUgAMDASOz2AQAYBAhyALA5ghwAbI4gBwCbI8gBwOYIcgCwuf8HRkG1\np/ZfpU4AAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "# Let's define our line.\n", "# First argument has to be the independent variable,\n", "# arguments after that are shape parameters.\n", "def line(x, m, c): # define it to be parabolic or whatever you like\n", " return m * x + c" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "iminuit.describe(line)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 4, "text": [ "['x', 'm', 'c']" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "# Define a chi^2 cost function\n", "chi2 = probfit.Chi2Regression(line, x, y, err)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "# Chi2Regression is just a callable object; nothing special about it\n", "iminuit.describe(chi2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 6, "text": [ "['m', 'c']" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "# minimize it\n", "# yes, it gives you a heads up that you didn't give it initial value\n", "# we can ignore it for now\n", "minuit = iminuit.Minuit(chi2) # see iminuit tutorial on how to give initial value/range/error\n", "minuit.migrad(); # MIGRAD is a very stable robust minimization method\n", "# you can look at your terminal to see what it is doing;" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "-c:4: InitialParamWarning: Parameter m does not have initial value. Assume 0.\n", "-c:4: InitialParamWarning: Parameter m is floating but does not have initial step size. Assume 1.\n", "-c:4: InitialParamWarning: Parameter c does not have initial value. Assume 0.\n", "-c:4: InitialParamWarning: Parameter c is floating but does not have initial step size. Assume 1.\n" ] }, { "html": [ "
" ], "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 12.0738531135 TOTAL NCALL = 36 NCALLS = 36 EDM = 1.10886029888e-21 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "output_type": "display_data" }, { "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", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 m 2.886277e+00 7.367884e-02 0.000000e+00 0.000000e+00 2 c 1.613795e+01 4.309458e-01 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "output_type": "display_data" }, { "html": [ "
" ], "output_type": "display_data" } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "# The output above is a pretty-printed summary of the fit results from\n", "# minuit.print_fmin()\n", "# which was automatically called by iminuit.Minuit.migrad() after running MIGRAD.\n", "\n", "# Let's see our results as Python dictionaries ...\n", "print(minuit.values)\n", "print(minuit.errors)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{'c': 16.137947520534624, 'm': 2.8862774144823855}\n", "{'c': 0.4309458211385722, 'm': 0.07367884284273937}\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Parabolic error\n", "is calculated using the second derivative at the minimum\n", "This is good in most cases where the uncertainty is symmetric not much correlation\n", "exists. Migrad usually got this accurately but if you want ot be sure\n", "call minuit.hesse() after calling minuit.migrad().\n", "\n", "#### Minos Error\n", "is obtained by scanning the chi^2 or likelihood profile and find the point\n", "where chi^2 is increased by minuit.errordef. Note that in the Minuit documentation\n", "and output errordef is often called up ... it's the same thing.\n", "\n", "#### What errordef should I use?\n", "\n", "As explained in the Minuit documentation you should use:\n", "\n", "* errordef = 1 for chi^2 fits\n", "* errordef = 0.5 for likelihood fits\n", "\n", "errordef=1 is the default, so you only have to set it to errordef=0.5\n", "if you are defining a likelihood cost function (if you don't your HESSE and MINOS errors will be incorrect).\n", "probfit helps you by defining a default_errordef() attribute on the\n", "cost function classes, which is automatically detected by the Minuit constructor\n", "and can be used to set Minuit.errordef correctly, so that users can't forget.\n", "Classes used in this tutorial:\n", "\n", "* probfit.Chi2Regression.get_errordef() and probfit.BinnedChi2.get_errordef() return 1.\n", "* probfit.BinnedLH.get_errordef() and probfit.UnbinnedLH.get_errordef() return 0.5." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Let's visualize our line\n", "chi2.draw(minuit)\n", "# looks good;" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD9CAYAAAChtfywAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8zuX/wPHXsHKKOW1kMocxY7Y5JCkWjRCJnBKjsb76\nqRzKKTLfikmSopPEJKfqq1QoslsIS8wpGdoYtoltmGGn6/fHZfe98+4d73vb+/l47LF9Pvfn/tzX\n/TbX/dn7c13vy0YppRBCCFFqVbB0A4QQQhSOdORCCFHKSUcuhBClnHTkQghRyklHLoQQpZx05EII\nUcpVyusAJycnatSoQcWKFbG1tSU4OJiYmBiGDh3KuXPncHJyYuPGjdjZ2ZVEe4UQQmSS5xW5jY0N\nBoOBw4cPExwcDEBAQADe3t6EhobSo0cPAgICir2hQgghsmdWaiXznKHNmzfj4+MDgI+PD999913R\nt0wIIYRZbPKa2dm0aVNq1qxJxYoVeeGFFxg3bhy1atUiNjYW0J187dq1jdvGE9vYFF+rhRCiDMv3\nhHuVh0uXLimllLp8+bJyd3dXv/32m7Kzs8twTK1atbI8z4xTlxtz5syxdBOshsTCRGJhIrEwKUjf\nmWdqpUGDBgDUq1ePp59+muDgYBwcHIiKigIgMjISe3v7/H7glCvh4eGWboLVkFiYSCxMJBaFk2tH\nnpCQwI0bNwC4efMmv/zyC25ubvTv35/AwEAAAgMDGTBgQPG3VAghRLZyHX4YHR3N008/DUBycjIj\nRoygZ8+edOjQgSFDhrBixQrj8EORs9GjR1u6CVZDYmEisTCRWBROnjc7C3xiG5v8J+yFEKKcK0jf\nKTM7S4DBYLB0E6yGxMJEYmEisSgc6ciFEKKUk9SKEEJYEUmtCCFEOSQdeQmQ/J+JxMJEYmEisSgc\n6ciFEKKUK/cd+YgRI3BxccHNzQ1fX1+Sk5OzPe7ll1+mdevWuLq68sorrxj3b9myBQ8PDzw9PXn0\n0Uc5e/as8TGDwYCnpycTJkzAy8vL7DbFxMTg7e1NixYt6NmzJ3Fxcdket23bNlxcXHB2dmbBggXG\n/cOGDcPT0xNPT0+aNGmCp6cnAMHBwcb9bdu2ZcOGDcbnJCYm4ufnR8uWLWnVqhX/+9//ADhz5gyP\nPvoonp6euLu7s3XrVrPfR3byE4eyTmJhIrEopCIsEZBBMZ66SG3ZssX48/Dhw9XHH3+c5ZigoCDV\npUsXlZqaqlJSUlTnzp3Vrl27lFJKNW7cWP39999KKaU++ugjNXr0aKWUUrGxscrV1VVFREQopZT6\n999/sz1v2vHpvfbaa2rBggVKKaUCAgLUtGnTshyTnJysmjVrpsLCwlRiYqJyd3dXf/31V5bjpkyZ\not58802llFIJCQkqJSVFKaVUZGSkqlOnjkpOTlZKKfXGG2+o2bNnG5935coVpZRSPj4+6pNPPlFK\nKfXXX38pJyenLK8hhCg6Bek7rfqKPDw8HBcXF8aMGUPLli0ZMWIEv/zyC126dKFFixb88ccfhX6N\n3r17G3/u2LEjFy5cyHKMg4MDiYmJ3Llzh1u3bpGUlISDgwOga9Fcu3YNgLi4OBo2bAjA2rVrGTRo\nEI6OjhgMBurWrWt2m8wpExwcHEzz5s1xcnLC1taWYcOG8f3332c4RinFxo0bGT58OABVqlShQgX9\nT37r1i1jVUuAlStXMmPGDONz69Spk+v7KyjJhZpILEwkFoWT5wpBlnb27Fm+/fZbXF1d6dixIxs2\nbGDv3r1s3ryZefPmsWnTpgzHh4aGMnTo0CznSVsgo0aNGtm+TlJSEmvWrOGDDz7I8lirVq3o2bMn\nDRo0QCnFSy+9RMuWLQFYunQpPXv2pGrVqtSoUYMDBw4AcPr0aZKSknjssce4dOkSs2bNYuTIkQA8\n9NBD3Llzh/j4eGJiYoypj3feeQdvb2+io6ONHxQODg5ER0dnadPFixdp1KiRcdvR0dH42ml2796N\ng4MDzZo1M+4LDg5mzJgxhIWFsW7dOgBj6mbWrFkYDAaaNWvG0qVLsbe3Z8aMGXTu3JkPP/yQmzdv\n8uuvv2YbPyGEBRX53wV3FcWpw8LClLOzs3F71KhRau3atUoppc6ePas8PDwK/Rppxo4dqyZNmpTt\nY7t27VIPP/ywunnzpoqPj1edO3dWu3fvVikpKapVq1YqODhYKaXUwoUL1dixY5VSSv3f//2f6ty5\ns0pISFBXrlxRzs7OKjQ0NMN5DQZDtqkVc8oEf/PNN8bXUkqpL7/8Uk2YMCHDMf/5z3/Ue++9l+17\nOnnypGrcuLG6du2a+vfff5WNjY369ttvlVJKvffee2rkyJFKKaV8fX2N59i3b59ydXXN9nxCiKJR\nkL7T6q/I7733XuPPFSpU4J577jH+nN2NyVOnTjFs2LBsz2UwGKhZs2aW/XPnzuXq1assX7482+ft\n37+f3r17U7VqVUCnY/bt20eLFi1ITEykY8eOAAwZMsSYqmnUqBF169alSpUqVKlSha5du3LkyBGc\nnZ0znDu7BTjSygTXr18/xzLBDRs2JCIiwrgdERGBo6OjcTs5OZlNmzZx6NChbN+Ti4sLzZo14/Tp\n07Rr146qVasycOBAAJ555hlWrFgBwO+//87cuXMB/ZfE7du3uXLlSr5SRUKI4mXVOfKCaNmyJYcP\nH872K7tO/PPPP+eXX35h7dq1OZ7TxcWFXbt2kZKSQlJSErt27cLV1ZW6deuSkJDA6dOnAdi+fTuu\nrq4APPXUU+zZs4eUlBS2bdvGgQMHjI+l6datG1988UWW1zOnTHCHDh04ffo04eHhJCYmsmHDBvr3\n7298fMeOHbRq1Yr777/fuC88PNz44Xfu3DlOnz6Ns7MzNjY29OvXj6CgIAB+/fVXWrdubXzvO3bs\nAODkyZPcvn27UJ245EJNJBYmEovCsfor8sxXrOm3i2I5ufHjx+Pk5ETnzp0BGDRoELNmzeLgwYN8\n+umnLF++nP79+xMUFIS7uztKKXr37k3fvn0B+OKLLxgyZIhxybu0jtnFxYUnnniCtm3bcuvWLSZO\nnGjsyNNy5Jml5cinT5+ebZngS5cuMW7cOH766ScqVarE0qVL6dWrFykpKfj6+tKqVSvjuTZs2GC8\nyZlmz549BAQEYGtri62tLZ999pnxnsGCBQsYOXIkEydOxN7enpUrVwKwcOFCfH19Wbx4MTY2NsYP\nGCGE9ZBaK0IIYUWk1ooQQpRD0pGXAMn/mUgsTCQWJhKLwpGOXAghSrly15G//vrrPPDAA9x3331Z\nHtu4cSOtW7emTZs2jBgxIt/PB/j222+pUKFChmF/edWRCAsLo1OnTjg7OzNs2DCSkpJyPPb69es4\nOjry0ksvGff5+vri4eFB27Ztefrpp40zMUHXiHF2dsbd3Z3Dhw8b9y9ZsgQ3NzfatGnDkiVLcm1f\nUZKaGiYSCxOJRSEV6Uj2dIrx1IVy4MABFRkZqapXr55hf2hoqPL09FRxcXFKqexro+T2fKWUun79\nunr00UdV586d1Z9//pnl8ZUrVyp/f/8s+wcPHqw2bNiglNKTeLKr95Lm5ZdfVs8++2yGyT/Xr183\n/jx58mRjbZWffvpJ9e7dWyml1P79+1WnTp2UUkodO3ZMtWnTRt26dUslJyerxx9/XJ05cybH1xRC\n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\nIF3nnwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "# Sometimes we want the error matrix (a.k.a. covariance matrix)\n", "print('error matrix:')\n", "print(minuit.matrix())\n", "# or the correlation matrix\n", "print('correlation matrix:')\n", "print(minuit.matrix(correlation=True))\n", "# or a pretty html representation\n", "# Note that print_matrix() shows the correlation matrix, not the error matrix\n", "minuit.print_matrix()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "error matrix:\n", "((0.005428571882645087, -0.027142859751431703), (-0.027142859751431703, 0.18571430075679826))\n", "correlation matrix:\n", "((1.0, -0.8548504260481388), (-0.8548504260481388, 1.0))\n" ] }, { "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", " m\n", " \n", " \n", " \n", " \n", " \n", " c\n", " \n", " \n", " m \n", " 1.00\n", " \n", " -0.85\n", " c \n", " -0.85\n", " \n", " 1.00\n", "
" ], "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 20.9368166553 TOTAL NCALL = 46 NCALLS = 46 EDM = 1.45381812456e-06 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "output_type": "display_data" }, { "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", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 mu 9.258754e-01 3.962599e-02 0.000000e+00 0.000000e+00 2 sigma 3.952381e+00 2.826741e-02 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "output_type": "display_data" }, { "html": [ "
" ], "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 20.9368166553 TOTAL NCALL = 46 NCALLS = 46 EDM = 1.45381812456e-06 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "output_type": "display_data" }, { "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", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 mu 9.258754e-01 3.962599e-02 0.000000e+00 0.000000e+00 2 sigma 3.952381e+00 2.826741e-02 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "output_type": "display_data" }, { "html": [ "
" ], "output_type": "display_data" }, { "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", " mu\n", " \n", " \n", " \n", " \n", " \n", " sigma\n", " \n", " \n", " mu \n", " 1.00\n", " \n", " -0.00\n", " sigma \n", " -0.00\n", " \n", " 1.00\n", "
" ], "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 36.5025994291 TOTAL NCALL = 247 NCALLS = 247 EDM = 3.00607928198e-08 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "output_type": "display_data" }, { "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", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 mu 9.064759e-01 4.482536e-02 0.000000e+00 0.000000e+00 2 sigma 3.959036e+00 4.112828e-02 0.000000e+00 0.000000e+00 3 N 9.969691e+03 1.033724e+02 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "output_type": "display_data" }, { "html": [ "
" ], "output_type": "display_data" }, { "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", " mu\n", " \n", " \n", " \n", " \n", " \n", " sigma\n", " \n", " \n", " \n", " \n", " \n", " N\n", " \n", " \n", " mu \n", " 1.00\n", " \n", " -0.10\n", " \n", " -0.05\n", " sigma \n", " -0.10\n", " \n", " 1.00\n", " \n", " 0.18\n", " N \n", " -0.05\n", " \n", " 0.18\n", " \n", " 1.00\n", "
" ], "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 27927.1139471 TOTAL NCALL = 69 NCALLS = 69 EDM = 5.05909350517e-09 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "output_type": "display_data" }, { "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", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 mu 9.262679e-01 3.950226e-02 0.000000e+00 0.000000e+00 2 sigma 3.950224e+00 2.793227e-02 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "output_type": "display_data" }, { "html": [ "
" ], "output_type": "display_data" }, { "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", " mu\n", " \n", " \n", " \n", " \n", " \n", " sigma\n", " \n", " \n", " mu \n", " 1.00\n", " \n", " 0.00\n", " sigma \n", " 0.00\n", " \n", " 1.00\n", "
" ], "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 27927.1139471 TOTAL NCALL = 69 NCALLS = 69 EDM = 5.07834778662e-09 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "output_type": "display_data" }, { "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", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 mean 9.262679e-01 3.950226e-02 0.000000e+00 0.000000e+00 2 sigma 3.950224e+00 2.793227e-02 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "output_type": "display_data" }, { "html": [ "
" ], "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 6154.37579109 TOTAL NCALL = 178 NCALLS = 178 EDM = 1.09346528365e-06 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "output_type": "display_data" }, { "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", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 alpha 1.012962e+00 5.321735e-02 0.000000e+00 0.000000e+00 2 n 1.812763e+00 2.177144e-01 0.000000e+00 0.000000e+00 3 mean 9.982474e-01 5.583931e-03 0.000000e+00 0.000000e+00 4 sigma 2.996611e-01 4.195338e-03 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "output_type": "display_data" }, { "html": [ "
" ], "output_type": "display_data" }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD9CAYAAACyYrxEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXlYVdX6xz+Hwdk8mooGGiogIggoikMqZjhLlmJpmibC\nvZmNv+xa3bLRrGyy8l7tampKWJk5pKQlR8t5wgkVLVBUsFTMkfn9/bFhCzKIcuAMrs/z8Jyz9157\n7fc96/Cetd+91ncZRERQKBQKhd3iYGkDFAqFQlG5qECvUCgUdo4K9AqFQmHnqECvUCgUdo4K9AqF\nQmHnqECvUCgUdk65An1ubi6BgYEMHjwYgHPnzhEaGoqXlxd9+vTh/Pnzetl33nkHT09PvL29WbNm\nTeVYrVAoFIpyU65A/8knn+Dj44PBYABg2rRphIaGkpiYSO/evZk2bRoACQkJLF68mISEBGJjY5kw\nYQJ5eXmVZ71CoVAobsgNA/2JEydYtWoV48ePp2Bu1fLlyxkzZgwAY8aM4YcffgBg2bJljBgxAmdn\nZ9zd3fHw8GDbtm2VaL5CoVAoboTTjQo8++yzvP/++1y4cEHfd/r0aVxcXABwcXHh9OnTAJw6dYrO\nnTvr5dzc3Dh58mSR+gruChQKhUJxc9yqkEGZPfqVK1fSuHFjAgMDS72AwWAoM3iXdExE7PZvypQp\nFrdB+af8u918ux38qwhl9ug3bdrE8uXLWbVqFRkZGVy4cIHRo0fj4uJCWloaTZo0ITU1lcaNGwPg\n6upKSkqKfv6JEydwdXWtkIG2RnJysqVNqFSUf7aLPfsG9u9fRSizRz916lRSUlJISkoiJiaGe++9\nl6+++oqwsDDmz58PwPz58xkyZAgAYWFhxMTEkJWVRVJSEkeOHKFTp06V74VCoVAoSuWGOfrCFKRh\nJk+ezPDhw5kzZw7u7u588803APj4+DB8+HB8fHxwcnJi5syZt11OfuzYsZY2oVJR/tku9uwb2L9/\nFcEgFU3+3OwFDYYK55sUCoXidqMisVPNjDUzJpPJ0iZUKso/28WefQP7968iqECvUCgUdo5K3SgU\nCoUNoFI3CoVCoSgVFejNjL3nCZV/tos9+wb2719FUIFeoVAo7By7C/Tu7u6cO3euwmVulZCQkCLb\n3377LW3btsXR0ZFdu3aVel5sbCze3t54enry7rvv3vD8bdu2ERgYSGBgIO3atWPx4sXltjEzM5OH\nHnoIT09POnfuzLFjx0ost3PnTvz8/PD09OTpp5/W/Zs3bx6NGjXSrz937lwAjh07RocOHQgMDKRt\n27Z88sknel2PPPII3t7e+Pn5ERERQU5ODgCLFi3C39+fdu3a0a1bN/bu3VtuPyqD69vPnrBn38D+\n/asQUsVU9iXd3d3l7NmzNyxz5syZSrWjgIMHD8rhw4clJCREdu7cWWKZnJwcadWqlSQlJUlWVpb4\n+/tLQkJCmedfuXJFcnNzRUQkNTVV7rzzTsnJySlSb1JSkoSEhBS73ueffy6PP/64iIjExMTIQw89\nVKJdHTt2lK1bt4qISP/+/WX16tUiIjJv3jx58skni5XPysqSrKwsERG5dOmS3H333ZKSkiIiIqtW\nrdLLjRgxQv7zn/+IiMimTZvk/PnzIiKyevVqCQ4OLtEWheJ2pyKx02Z79A888ABBQUH4+vryxRdf\nFDuenJyMt7c3o0aNwsfHh/DwcK5evaof//TTT+nQoQPt2rXj8OHDgNZL7tq1K+3bt6dbt24kJibe\ntF3X5wm9vb3x8vIq85xt27bh4eGBu7s7zs7OPPzwwyxbtqzM82vWrImDg9Z8V69epV69ejg6OpbL\nxsIy00OHDuWXX34pViY1NZWLFy/qEhaPPvooP/zwAyaTqVSRJWdnZ5ydnXWbnJ2dqVWrFgD9+/fX\ny3Xs2JETJ04A0KVLF+rVqwdAcHCwvt9S2HOe1559A/v3ryLYbKCfO3cuO3bsYPv27cyYMYP09PRi\nZRITE3niiSdISEjgjjvuYObMmfqxRo0asXPnTh5//HGmT58OQJs2bfj111/ZtWsXr7/+Oi+99FKx\nOi9evKinLAr/tW/fnkOHDt2SLydPnqRZs2b6dknyziWxbds22rZtS9u2bfnwww/1/Q8++CCBgYEM\nHDiQHTt26DYW6BMVvp6TkxP16tUrlso6efIkbm5u+rarq6tuk8FgYMmSJbRr147w8PAiwfnEiRO0\na9eO5s2b8+yzz9KgQYMi9WZnZ7Nw4cIigb+AOXPmMGDAgBv6rbh58vJg/35LW6GwFDeldWNNfPLJ\nJ/qCJykpKSUKqDVr1owuXboAMGrUKGbMmMH//d//AVowBGjfvj3ff/89AOfPn+fRRx/l6NGjGAwG\nsrOzi123bt267N69u1S7vL29b9qXW9UD6tSpEwcOHODQoUP069ePkJAQ6tWrp/tz7Ngxxo4dS1xc\n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\nO7p163ZTKp7nzp0jNDQULy8v+vTpoz+Mv96/2NhYvL298fT05N13373h+cnJydSsWVN/WDxhwoQi\ndXp7exd7kHz06FG6d+9OYGAg/v7+rF69uogtFy5cwM3NjSeffLLc/t2IktrPHjAY4J57QixtRqVi\nr21nFio+uvPmsMAlLcrZs2elZcuWkp6eLunp6fr76xk2bJgsWLBARETWrVsno0ePFhGRlStXSmho\nqOTm5srly5elY8eOcvHiRRERufvuu+XQoUMiIjJz5kwZO3asiIhs2rRJzp8/LyIiq1evluDg4GLX\ni4uL08sXZtKkSfLuu++KiMi0adPkX//6V7EyOTk50qpVK0lKSpKsrCzx9/eXhISEMs8va35BSEiI\n7Ny5s9j+MWPGyH//+18REUlISBB3d/cix5966ikZOXKkTJw4scR6bwf+/lukbt1r2/36iRRIT+3f\nL1KCNJKIiISFifzwQ+XbpzAfFYmdNtmjT05Oxtvbm8cee4zWrVvzyCOPsGbNGrp164aXlxfbt28H\ntBmq48aNIzg4mPbt2+sqjMnJyfTo0YMOHTrQoUMHNm/eDFybERkeHk6bNm0YNWrUTdt2fZ7wp59+\nok+fPhiNRoxGI6GhocTGxhY77+DBg7oMQUhICMuWLdP39+jRAwcHB2rVqkW7du30nm3Tpk35+++/\nAW0sfcGchS5dulCvXj0AgoODiyzyfSOWL1/OmDFjABgzZkwxbR2TycS2bdvw8PDA3d0dZ2dnHn74\nYd3eG51fGlLCQ6bS/ANN1fPPP/+kT58+5fatPNhTnnf7doj5WmDLFnj+eUzdu0NoKDzxBPecjMGQ\nnWVpE82KPbWd2THf7035MMclk5KSxMnJSfbv3y95eXnSoUMHfXbusmXLZMiQISIi8uKLL+ozddPT\n08XLy0suX74sV65ckYyMDBERSUxMlKCgIBHRern16tWTkydPSl5ennTp0qXILNgC3n///RJn3D79\n9NPF1q2cPn26vPXWW/r2m2++KdOnTy9W58iRI+WTTz4REZElS5aIwWCQc+fOyZo1a6Rbt25y5coV\n+euvv6Rly5by4Ycfioi2pmuDBg3Ezc1NfHx8iqhkFrY1MjJS3w4ODpaAgADx8PAoslbrmjVrRETE\naDTqZfPy8opsF3xG3377rYwfP17f99VXX+m96tLOT0pKktq1a0tAQID07NlTfv31V71cSEiIvv5t\n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\nw+HYOP8HnAojjskHFO8AAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 39 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## But what if I know the analytical integral formula for my distribution?\n", "\n", "probfit checks for a method called integrate with the signature integrate(bound, nint, *arg) to\n", "compute definite integrals for given bound and nint (pieces of integral this is normally ignored)\n", "and the rest will be passed as positional argument.\n", "\n", "For some probfit built-in distributions analytical formulae have been implemented." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def line(x, m, c):\n", " return m * x + c\n", "\n", "# compute integral of line from x=(0,1) using 10 intevals with m=1. and c=2.\n", "# all probfit internal use this\n", "# no integrate method available probfit use simpson3/8\n", "print(probfit.integrate1d(line, (0, 1), 10, (1., 2.)))\n", "\n", "# Let us illustrate the point by forcing it to have integral that's off by\n", "# factor of two\n", "def wrong_line_integrate(bound, nint, m, c):\n", " a, b = bound\n", " # I know this is wrong:\n", " return 2 * (m * (b ** 2 / 2. - a ** 2 / 2.) + c * (b - a))\n", "\n", "line.integrate = wrong_line_integrate\n", "# line.integrate = lambda bound, nint, m, c: blah blah # this works too\n", "print(probfit.integrate1d(line, (0, 1), 10, (1., 2.)))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2.5\n", "5.0\n" ] } ], "prompt_number": 40 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "What if things go wrong?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section we show you what happens when your distribution doesn't fit and how you can make it.\n", "\n", "We again use the Crystal Ball distribution as an example, which is notoriously sensitive to initial parameter values." ] }, { "cell_type": "code", "collapsed": false, "input": [ "unbinned_likelihood = probfit.UnbinnedLH(normalized_crystalball, data)\n", "# No initial values given -> all parameters have default initial value 0\n", "minuit = iminuit.Minuit(unbinned_likelihood)\n", "# Remember: minuit.errordef is automatically set to 0.5\n", "# as required for likelihood fits (this was explained above)\n", "minuit.migrad() # yes: amazingly fast but tons of output on the console\n", "# Remember there is a heads up;" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "-c:3: InitialParamWarning: Parameter alpha does not have initial value. Assume 0.\n", "-c:3: InitialParamWarning: Parameter alpha is floating but does not have initial step size. Assume 1.\n", "-c:3: InitialParamWarning: Parameter n does not have initial value. Assume 0.\n", "-c:3: InitialParamWarning: Parameter n is floating but does not have initial step size. Assume 1.\n", "-c:3: InitialParamWarning: Parameter mean does not have initial value. Assume 0.\n", "-c:3: InitialParamWarning: Parameter mean is floating but does not have initial step size. Assume 1.\n", "-c:3: InitialParamWarning: Parameter sigma does not have initial value. Assume 0.\n", "-c:3: InitialParamWarning: Parameter sigma is floating but does not have initial step size. Assume 1.\n" ] }, { "html": [ "
" ], "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 10986.1228867 TOTAL NCALL = 230 NCALLS = 230 EDM = 0.0 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef False True False False False Hesse Fail HasCov Above EDM Reach calllim True True False False
\n", " " ], "output_type": "display_data" }, { "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", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 alpha 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 2 n 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 3 mean 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 4 sigma 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "output_type": "display_data" }, { "html": [ "
" ], "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 88.5482069321 TOTAL NCALL = 331 NCALLS = 331 EDM = 2.50658801602e-06 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "output_type": "display_data" }, { "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", " \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", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 c_0 4.156499e+00 3.275183e+00 0.000000e+00 0.000000e+00 2 c_1 3.761296e+00 3.028133e+00 0.000000e+00 0.000000e+00 3 c_2 9.724907e-01 7.669779e-01 0.000000e+00 0.000000e+00 4 NBkg 1.960121e+04 1.745707e+02 0.000000e+00 0.000000e+00 5 mu1 1.990820e+00 5.813670e-03 0.000000e+00 0.000000e+00 6 sigma1 1.921099e-01 5.825608e-03 0.000000e+00 0.000000e+00 7 N1 2.923541e+03 9.135432e+01 0.000000e+00 0.000000e+00 8 mu2 3.994147e+00 2.123760e-03 0.000000e+00 0.000000e+00 9 sigma2 1.001096e-01 1.999429e-03 0.000000e+00 0.000000e+00 10 N2 4.969156e+03 9.797528e+01 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "output_type": "display_data" }, { "html": [ "
" ], "output_type": "display_data" }, { "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", " \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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 + \n", " \n", " \n", " c_0\n", " \n", " \n", " \n", " \n", " \n", " c_1\n", " \n", " \n", " \n", " \n", " \n", " c_2\n", " \n", " \n", " \n", " \n", " \n", " NBkg\n", " \n", " \n", " \n", " \n", " \n", " mu1\n", " \n", " \n", " \n", " \n", " \n", " sigma1\n", " \n", " \n", " \n", " \n", " \n", " N1\n", " \n", " \n", " \n", " \n", " \n", " mu2\n", " \n", " \n", " \n", " \n", " \n", " sigma2\n", " \n", " \n", " \n", " \n", " \n", " N2\n", " \n", " \n", " c_0 \n", " 1.00\n", " \n", " 0.98\n", " \n", " 1.00\n", " \n", " 0.00\n", " \n", " 0.00\n", " \n", " -0.01\n", " \n", " -0.01\n", " \n", " 0.00\n", " \n", " 0.00\n", " \n", " 0.00\n", " c_1 \n", " 0.98\n", " \n", " 1.00\n", " \n", " 0.97\n", " \n", " 0.04\n", " \n", " -0.01\n", " \n", " -0.06\n", " \n", " -0.09\n", " \n", " 0.01\n", " \n", " 0.00\n", " \n", " 0.01\n", " c_2 \n", " 1.00\n", " \n", " 0.97\n", " \n", " 1.00\n", " \n", " -0.01\n", " \n", " -0.00\n", " \n", " 0.02\n", " \n", " 0.02\n", " \n", " -0.00\n", " \n", " -0.01\n", " \n", " -0.01\n", " NBkg \n", " 0.00\n", " \n", " 0.04\n", " \n", " -0.01\n", " \n", " 1.00\n", " \n", " -0.05\n", " \n", " -0.28\n", " \n", " -0.37\n", " \n", " -0.01\n", " \n", " -0.23\n", " \n", " -0.30\n", " mu1 \n", " 0.00\n", " \n", " -0.01\n", " \n", " -0.00\n", " \n", " -0.05\n", " \n", " 1.00\n", " \n", " 0.08\n", " \n", " 0.07\n", " \n", " 0.00\n", " \n", " 0.02\n", " \n", " 0.02\n", " sigma1 \n", " -0.01\n", " \n", " -0.06\n", " \n", " 0.02\n", " \n", " -0.28\n", " \n", " 0.08\n", " \n", " 1.00\n", " \n", " 0.50\n", " \n", " -0.02\n", " \n", " 0.03\n", " \n", " 0.04\n", " N1 \n", " -0.01\n", " \n", " -0.09\n", " \n", " 0.02\n", " \n", " -0.37\n", " \n", " 0.07\n", " \n", " 0.50\n", " \n", " 1.00\n", " \n", " -0.02\n", " \n", " 0.04\n", " \n", " 0.05\n", " mu2 \n", " 0.00\n", " \n", " 0.01\n", " \n", " -0.00\n", " \n", " -0.01\n", " \n", " 0.00\n", " \n", " -0.02\n", " \n", " -0.02\n", " \n", " 1.00\n", " \n", " 0.03\n", " \n", " 0.03\n", " sigma2 \n", " 0.00\n", " \n", " 0.00\n", " \n", " -0.01\n", " \n", " -0.23\n", " \n", " 0.02\n", " \n", " 0.03\n", " \n", " 0.04\n", " \n", " 0.03\n", " \n", " 1.00\n", " \n", " 0.38\n", " N2 \n", " 0.00\n", " \n", " 0.01\n", " \n", " -0.01\n", " \n", " -0.30\n", " \n", " 0.02\n", " \n", " 0.04\n", " \n", " 0.05\n", " \n", " 0.03\n", " \n", " 0.38\n", " \n", " 1.00\n", "
\n", "\n", " \n", " " ], "output_type": "display_data" } ], "prompt_number": 50 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note the red upper left corner in the correlation matrix above?\n", "\n", "It shows that the three polynomial parameters c_0, c_1 and c_2 are highly correlated?\n", "The reason is that we put a constraint on the polynomial to be normalized over the fit range:\n", "\n", " fit_range = (0, 5)\n", " normalized_poly = probfit.Normalized(probfit.Polynomial(2), fit_range)\n", " normalized_poly = probfit.Extended(normalized_poly, extname='NBkg')\n", "\n", "To resolve this problem you could simply use a non-normalized and non-extended polynomial to model the background. We won't do this here, though ..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Custom Drawing\n", "\n", "The draw() and show() method we provide is intended to just give you a quick look at your fit.\n", "\n", "To make a custom drawing you can use the return value of draw() and show()." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# You should copy & paste the return tuple from the draw docstring ...\n", "((data_edges, datay), (errorp, errorm), (total_pdf_x, total_pdf_y), parts) = binned_likelihood.draw(minuit, parts=True);\n", "# ... now we have everything to make our own plot" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nrP/111/DwcEBfD4fw4YNQ1JSErs2YsQIGBgYsL1gZcyYMQN2dnbg8XiYPXs2JJKqVYJCoRA3btyA\ntrY2y89vrjSnzJfcklxIKiVop9cOetpSR176rMqpy/pCz0wPpcmlrB6T3y3i5HcVeDXSM7XTCLdU\nIDU1lWJiYoiIKD8/n2xsbOjevXsv3W5hYSEREZWXl5OrqytdvnxZoczSpUvps88+IyKi+/fvk7u7\nOxER3blzhxwdHam4uJgkEgkNGzaMHj16xOolJSXR8OHDydzcnLKyshTaXbNmDe3du1fhfO/evSki\nIoKIiEaOHEmnT59WKHP37l3i8/lUVlZGYrGYLC0t2a5DtdUPCwuj4uJiIpIKg/n4+LD2Lly4QCdO\nnFAQEzt16hR7PW3aNNqxYwc7lkgkNGTIEBo9evQrEWHjeDN5kPmAEASy3GrJzkX1j6KcSzly5cpz\nyym8dTj7XG6P3E4IAs0JffGdx5oa6vrOJjlST0hIgJ2dHWbOnAlbW1vMmDEDZ8+exYABA2BjY4Mb\nN24AkG6UsXnzZlbP0dERSUlJMDExgUAgACDd5LhHjx5ISUl5abtatWoFACgrK0NFRQUMDQ0VysTF\nxTFxrtTUVCQkJCA9PV2lbgwgFfz68ssv62VPamoq8vPzmf6Or6+vUnEuZTr4ERERKusLhUKWb19d\n/waoXXdm5MiR7HXv3r3l6ixYsABeXl4wMqp7k4S3nbc9pl59z9EN3/67v262EYuNVx+py/pCq50W\noAFU5FUA4DbKUEWTdOoA8PjxYyxduhT379/HgwcPEBISgitXrmDTpk1Mw6TmikplKywTEhIQExMD\nV1dXhWsHDhxQqg1TW355ZWUlBAIBjI2NMWTIEKUCXXw+nznruLg4JCYmIjk5GTwer1bdmOPHj8PM\nzIwtDpJx584dZtOuXbuwevVqdpydnY3k5GSYmZmx8qampkr17VNSUuTKyXTwa56vrX51/Rt1KC8v\nR3BwMHPyycnJuHLlCsv7f5V6QRyNj1BY5dQ9J0idurOtEYRCgCoIZall0HtHPqauoaEhDcE8k4Zg\nZJkyXPaLIk12otTCwgIODg4AAAcHBwwbNgyAdDSekJCgVhsFBQXw8vLC1q1blY4sp0+fXi/5Xk1N\nTdy6dQvPnz/H8OHDla4M/Oijj7BgwQK21Z6zszO0tLRgZ2enoBujpaWF4uJirFu3DufOnWNt0L+5\n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\n", "text": [ "" ] } ], "prompt_number": 51 }, { "cell_type": "code", "collapsed": false, "input": [ "# Now make the plot as pretty as you like, e.g. with matplotlib.\n", "plt.figure(figsize=(8, 5))\n", "plt.errorbar(probfit.mid(data_edges), datay, errorp, fmt='.', capsize=0, color='Gray', label='Data')\n", "plt.plot(total_pdf_x, total_pdf_y, color='blue', lw=2, label='Total Model')\n", "colors = ['orange', 'purple', 'DarkGreen']\n", "labels = ['Background', 'Signal 1', 'Signal 2']\n", "for color, label, part in zip(colors, labels, parts):\n", " x, y = part\n", " plt.plot(x, y, ls='--', color=color, label=label)\n", "plt.grid(True)\n", "plt.legend(loc='upper left');" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 52 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simultaneous fit to several data sets\n", "\n", "Sometimes, what we want to fit is the sum of likelihood /chi^2 of two PDFs for two different datasets that share some parameters.\n", "\n", "In this example, we will fit two Gaussian distributions where we know that the widths are the same\n", "but the peaks are at different places." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Generate some example data\n", "np.random.seed(0)\n", "data1 = np.random.randn(10000) + 3 # mean = 3, sigma = 1\n", "data2 = np.random.randn(10000) - 2 # mean = -2, sigma = 1\n", "plt.figure(figsize=(12,4))\n", "plt.subplot(121)\n", "plt.hist(data1, bins=100, range=(-7, 7), histtype='step', label='data1')\n", "plt.legend()\n", "plt.subplot(122)\n", "plt.hist(data2, bins=100, range=(-7, 7), histtype='step', label='data2')\n", "plt.legend();" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAsQAAAD9CAYAAAC7v2HPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt0VOW9//H3QIKKYOSWQBM0VsiBgBcUkNKfNRUD2GoO\nVswSqeYIaiu1FbUWtctz0FZJq60VFc/pWaixlwO0tcBx0YgWQtGK2OKtjRrUUMMtHoQgyiWG7N8f\nu0QQCUnIZE8y79dae82eGSbz2QG++eaZZz87FgRBgCRJkpSkOkUdQJIkSYqSDbEkSZKSmg2xJEmS\nkpoNsSRJkpKaDbEkSZKSmg2xJEmSktphG+KamhomTpzI4MGDyc3N5YUXXmDr1q3k5+eTk5PD2LFj\nqampafjzs2bNYuDAgQwaNIilS5fGNbwk6UDWbElqvsM2xNdffz1f+cpXeP3113n11VcZNGgQxcXF\n5OfnU1FRwZgxYyguLgagvLyc+fPnU15eTmlpKdOmTaO+vj7uByFJClmzJan5Gm2It2/fzsqVK5ky\nZQoAKSkppKWlsXjxYoqKigAoKipi4cKFACxatIhJkyaRmppKdnY2AwYMYPXq1XE+BEkSWLMlqaVS\nGnuysrKSPn36cOWVV/LKK69w5pln8rOf/Yzq6moyMjIAyMjIoLq6GoCNGzcyatSohtdnZWWxYcOG\nA75mLBZr7WOQpDaVqBf4tGZL0sGaUrMbHSGuq6tjzZo1TJs2jTVr1nDsscc2fNS2TywWa7RgftZz\nQRAk3PYf//EfkWcwl7nMldi5giAxG+F9rNnRb4maK5Gzmctc8dyaqtGGOCsri6ysLEaMGAHAxIkT\nWbNmDX379mXz5s0AbNq0ifT0dAAyMzOpqqpqeP369evJzMxschhJUstZsyWpZRptiPv27Uv//v2p\nqKgA4JlnnmHIkCFceOGFlJSUAFBSUsKECRMAKCgoYN68edTW1lJZWcnatWsZOXJknA9BSk7Ll8NN\nN4Xb7bfD3r1RJ1LUrNna5777oFevcMvMhP0WFpH0GRqdQwzwwAMPMHnyZGprazn55JN59NFH2bt3\nL4WFhcydO5fs7GwWLFgAQG5uLoWFheTm5pKSksKcOXPazfyzvLy8qCN8JnM1T0fNNXEivP12uD9u\nHBQXw4IF8N57MHp02BBPnx7+8GvLXPGSqLnaA2t2tBIlV1VVWBOmTYOhQ+HDDxMn26eZq3nMFR+x\noDkTLFrjDWOxZs3pkAR9+sD8+fDWW/A//xOODl97LZx6anjbqxdUVDS/IVbzJVsNS7bj7ShuvBGy\nsj65XbUqvJWSTVNr2GFHiCUlhlNOgZYO3vXs2ZNt27a1bqAOrkePHmzdujXqGJKSkDW7+Y60ZtsQ\nS0lg27ZtjvI1U3uZOiCp47FmN9+R1uzDXqlOkiRJ6shsiCVJkpTUnDIhtSNduoQnxwwcGK4wMXx4\n1IkkSWr/bIildmT0aPj73z9Zc/ikk6LNEy//9m//Rv/+/fnBD34QdRRJ0mF0hJrtlAmpHYnF4POf\nD0eIBw6ElCP4lbZnz/DrxWvr2fNIjrPxywvvk5eXx9y5c5v8df/2t78xbtw4+vTpQ6dOlj9J7Ucy\n1uySkhKGDx9OWloa/fv3Z8aMGeyN01Wo/IkgJalt2yAI4rcd6YpBTTnDurlnFXfp0oVLL720WQVZ\nkhJBMtbsXbt2cf/99/P+++/zwgsv8Mc//pF77723pREbZUMsKXIvvfQSZ5xxBscddxyXXnopu3fv\nBqCmpoYLLriA9PR0evbsyYUXXsiGDRsA+P73v8/KlSu57rrr6N69O9/5zncAuP766znhhBNIS0tj\n+PDhPPvssw3vk5OTw5VXXklubm7bH6QkdRBtVbO/+c1v8sUvfpGUlBQ+97nPMXnyZJ577rm4HJMN\nsaRI1dbWMmHCBIqKiti2bRuXXHIJv/vd74jFYtTX1zN16lTeffdd3n33XY455hiuu+46AO666y7O\nPvtsHnroIXbs2MHs2bMBGDlyJK+88grbtm3jsssu45JLLqG2tjbKQ5SkDiPKmr1ixQqGDh0al+Oy\nIZYUqVWrVlFXV8f1119P586dufjiixkxYgQQXq3poosu4uijj6Zbt27cdtttrFix4oDXf/pjusmT\nJ9OjRw86derEjTfeyJ49e3jzzTfb7HgkqSOLqmY/8sgjrFmzhu9+97txOS4bYkmR2rhxI5mZmQc8\nduKJJwLh/LFvfOMbZGdnk5aWxjnnnMP27dsPKKifnpN27733kpuby/HHH0+PHj3Yvn07W7Zsif+B\nSFISiKJmL1y4kNtuu40//OEP9DySs/8aYUMsKVL9+vVrmGO2zz/+8Q+CIODee++loqKC1atXs337\ndlasWEEQBA3F9dOFdeXKldxzzz385je/oaamhm3btpGWluYlUCWplbR1zS4tLeWaa67hySefZMiQ\nIXE7LhtiSZEaPXo0KSkpzJ49m48//pgnnniCF198EYAPP/yQY445hrS0NLZu3codd9xxwGszMjJ4\n++23G+7v2LGDlJQUevfuTW1tLXfeeScffPDBAa/ZvXt3w/y0PXv2sGfPnjgfoSR1HG1Zs5ctW8bk\nyZN54oknGB7nK1HZEEtJqkeP+K5p2aNH03KkpqbyxBNP8Nhjj9GrVy8WLFjAxRdfTCwWY/r06eza\ntYvevXszevRozj///ANGGK6//np++9vf0rNnT6ZPn8748eMZP348OTk5ZGdnc8wxx3DCCSc0/Pl1\n69bRtWtXhg4dSiwW45hjjmHw4MGt/a2VEt7cuXD66eH2hS/ARx9FnUiHk4w1+4c//CE7duzg/PPP\np3v37nTv3p2vfvWrrf2tBSAWtPFnibFYzI8vpWbq0wfKy8Pbz9KrF1RUhLefxf93zXeo71myfS+T\n7Xg7ihtvhKysT25XrQqbnuuuC690+dprUFgIkybBeeeF9/v1izq19vH/XfMdac320s2SJCWBdevg\njTfgRz8K7/+//xdenSw1NdJYUkKwIZYkKUn07AkFBQc//t574QhyWhocc0zb55Ki5hxiSZKS2KBB\nMG4c5ObCv/5r1GmkaDhCLCWBHj16NPsa8smuR1PPMJESxJYtcPvtUFcHzz8PU6aEj6elwUknQRDA\n2LEHv2758vB25Uq47ba2y6tDs2Y335HWbBtiKUGtXg1PPRXuH+kZ4Fu3bj3yQJIS2ltvQWlp2NSO\nHAlf+Ur4+KuvhifSAaT4U79dsGa3Pf9rSAmqpATefhtGjAhHfeJ0cR5J7dwf/wjr14cNcUYGXH31\ngc937hxukg7NhlhKIJs3h6M7e/eGyyR95zvwrW9FnUpSIrvyyvAX527d4OtfjzqN1D7ZEEsJpKIC\nnn0Wvv99OPdcGD++6a995x3Yti1cqzgtLX4ZJSWe++6D/a5nIKmZbIilBNO3LxQVNe81Z54ZLrC/\nc2d45aklS+KTTZKkjshl16QOYOnScP7g449DbW3UaSRJal9siCVJkpTUbIilDiQlJVyubcSIcFux\nIupEkiQlvsM2xNnZ2Zx66qkMGzaMkSNHAuH6ePn5+eTk5DB27Fhqamoa/vysWbMYOHAggwYNYunS\npfFLLukgZ58dLrI/Zw5kZsKbb0adSG3Nmi1JzXfYhjgWi1FWVsZLL73E6tWrASguLiY/P5+KigrG\njBlDcXExAOXl5cyfP5/y8nJKS0uZNm0a9fX18T0CSQ06dw5PsBsxAtLTo06jKFizJan5mjRlIgiC\nA+4vXryYon+eBl9UVMTChQsBWLRoEZMmTSI1NZXs7GwGDBjQUJAlSW3Dmi1JzXPYZddisRjnnXce\nnTt35hvf+AZXX3011dXVZGRkAJCRkUF1dTUAGzduZNSoUQ2vzcrKYsOGDQd9zZkzZzbs5+XlkZeX\nd4SHIUnxUVZWRllZWdQxmsyaLSmZtbRmH7Yhfu655+jXrx//93//R35+PoMGDTrg+VgsRiwWO+Tr\nP+u5/YurJCWyTzeAd9xxR3RhmsCaLSmZtbRmH3bKRL9+/QDo06cPF110EatXryYjI4PNmzcDsGnT\nJtL/OVkxMzOTqqqqhteuX7+ezMzMJh+EJOnIWLMlqfkabYh37tzJjh07APjoo49YunQpp5xyCgUF\nBZSUlABQUlLChAkTACgoKGDevHnU1tZSWVnJ2rVrG85yliTFlzVbklqm0SkT1dXVXHTRRQDU1dUx\nefJkxo4dy/DhwyksLGTu3LlkZ2ezYMECAHJzcyksLCQ3N5eUlBTmzJnT6EdzkkJ33QWVlbBpU9RJ\n1J5Zs5PHsmXw61+H+++/H20WqSOIBZ8+HTnebxiLHXQGtJTs+vaFm2+GtDTIzYXRo4/8a15zDQwf\nHt6q9SRbDUu2420vbr45/CV6/Hg46iiYPBk6HeGltlauhNtuC2+ljqKpNeywJ9VJahuTJ4eNsSQ1\nxVlnwVVXRZ1C6hhsiCVJEgA1NfDHP4b7I0dC9+7R5pHayhF+wCJJkjqCE06Afv3g7ruhqAh+8Yuo\nE0ltxxFiSZLEiSfC0qXh/re/DXv3RptHakuOEEuSJCmp2RBLkiQpqdkQS5IkKanZEEuSJCmp2RBL\nkiQpqdkQS5IkKanZEEuSJCmp2RBLkiQpqdkQS5IkKanZEEuSJCmp2RBLHdjatbByJaxZE3USSZIS\nV0rUASTFx1lnwWOPwapV8PzzsHUrHHdc1KkkSUo8NsRSBzV1argBHH881NdHm0dS+/TUU7BxY7if\nmxv+si11NDbEkiTpkC6/HM49F2pqYPduKCuLOpHU+pxDLEmSDvLee1BRAXV1MHs23HJL1Imk+HGE\nWEoSjz4KXbvCqafCF74QdRpJiWzQILj/fpg/H/r3h2OPjTqRFF82xFISuOkmeOMNqKqC3/0Oli6N\nOpGk5qqrg2XLwtt33oH09Pi917e+FW5SsnDKhNSG3ngD+vULf5Clp4fNaVu4/Xb4r/+C6dPb5v0k\ntb5XXoFLLoEHH4Rdu2D48KgTSR2HI8RSG9qyJfz48ckn4bbbYMOGqBNJai/q6yEnB5YsiTqJ1PE4\nQiy1sS5dwtHhrl2jTiJJksCGWJIkSUnOKRNShP74R6ithY8+ijqJJEnJyxFiKSITJ8LAgbB5c3iy\nW+/eUSeSJCk5OUIsReRLXwo3SZIUrSaNEO/du5dhw4Zx4YUXArB161by8/PJyclh7Nix1NTUNPzZ\nWbNmMXDgQAYNGsRSFzuVpDZnzZak5mlSQ3z//feTm5tLLBYDoLi4mPz8fCoqKhgzZgzFxcUAlJeX\nM3/+fMrLyyktLWXatGnU19fHL70k6SDWbElqnsM2xOvXr2fJkiVcddVVBEEAwOLFiykqKgKgqKiI\nhQsXArBo0SImTZpEamoq2dnZDBgwgNWrV8cxviRpf9ZsSWq+w84hvuGGG7jnnnv44IMPGh6rrq4m\nIyMDgIyMDKqrqwHYuHEjo0aNavhzWVlZbPiMKw/MnDmzYT8vL4+8vLyW5pekuCorK6OsrCzqGE1m\nzZaUzFpasxttiJ988knS09MZNmzYIb94LBZr+FjuUM9/2v7FVZIS2acbwDvuuCO6MIdhzZaU7Fpa\nsxttiP/85z+zePFilixZwu7du/nggw+4/PLLycjIYPPmzfTt25dNmzaRnp4OQGZmJlVVVQ2vX79+\nPZmZmS04HElSc1mzJallGp1DfPfdd1NVVUVlZSXz5s3j3HPP5Re/+AUFBQWUlJQAUFJSwoQJEwAo\nKChg3rx51NbWUllZydq1axk5cmT8j0KSZM2WpBZq1jrE+z5Ku+WWWygsLGTu3LlkZ2ezYMECAHJz\ncyksLCQ3N5eUlBTmzJnT6EdzkqT4sWZLUtPEgn2nIbfVG8ZitPFbSgnj2WfhllvC2ygsXQr33hve\nqmWSrYYl2/EmshdfhGnTwtsolJXBzJnhrdReNLWGeaU6Kcns2AGvvRbu/8u/QJcu0eaRJClqTbow\nh6SOISsLdu6Eyy4LLxs9b17UiSRJip4jxFISyc2FV14J96dOhY8/jjaPJEmJwBFiSZIkJTUbYkmS\nJCU1G2JJkiQlNRtiSZIkJTUbYkmSJCU1V5mQ2sC0aVBRATU10LVr1GkkSdL+bIilNrBoEfzkJ9C7\nN5x4YtRpJKllampgxYpw/8wzoVu3aPNIrcUpE1IbOftsOO88GDgw6iSS1Hwnngg9e8K//ztMmgS/\n+lXUiaTW4wixJEkJrL4+3Orqos1x0kmwbFm4P20a7N0bbR6pNTlCLElSAjvzTDjqqPBTpvT0qNNI\nHZMjxJIkJbCaGnjrrXCEVlJ8OEIsSZKkpGZDLEmSpKRmQyxJkqSkZkMsSZKkpGZDLEmSpKRmQyxJ\nkqSkZkMsSZKkpOY6xFISW70ajj0WunWDCy6IOo0kSdFwhFhKUuPHw/btsHAhTJgAH34YdSJJkqLh\nCLGUpC65JNwAuneHIIg2j6RPzJ0LxcXhflUVdOkSbR6po3OEWJKkBFNREX5ys2QJvPMOZGZGnUjq\n2BwhliQpAfXuDQMHRp3i0N58E5Yvh65d4ayzok4jHRkbYkmS1CyjRsGjj8Krr8Kzz8J770GPHlGn\nklrOhliSJDXLFVeEG4Qj2Xv3RptHOlKNziHevXs3Z511Fqeffjq5ubnceuutAGzdupX8/HxycnIY\nO3YsNTU1Da+ZNWsWAwcOZNCgQSxdujS+6SVJDazZktQyjTbERx99NMuXL+fll1/m1VdfZfny5Tz7\n7LMUFxeTn59PRUUFY8aMofifp8KWl5czf/58ysvLKS0tZdq0adTX17fJgUhSsrNmS1LLHHaVia5d\nuwJQW1vL3r176dGjB4sXL6aoqAiAoqIiFi5cCMCiRYuYNGkSqampZGdnM2DAAFavXh3H+JKk/Vmz\nJan5DjuHuL6+njPOOIO3336ba6+9liFDhlBdXU1GRgYAGRkZVFdXA7Bx40ZGjRrV8NqsrCw2bNhw\n0NecOXNmw35eXh55eXlHeBiSFB9lZWWUlZVFHaPJrNmSkllLa/ZhG+JOnTrx8ssvs337dsaNG8fy\n5csPeD4WixGLxQ75+s96bv/iKkmJ7NMN4B133BFdmCawZktKZi2t2U2+MEdaWhpf/epX+etf/0pG\nRgabN28GYNOmTaSnpwOQmZlJVVVVw2vWr19PpquJS1Kbs2ZLUtM12hBv2bKl4WzkXbt28fTTTzNs\n2DAKCgooKSkBoKSkhAkTJgBQUFDAvHnzqK2tpbKykrVr1zJy5Mg4H4IkCazZktRSjU6Z2LRpE0VF\nRdTX11NfX8/ll1/OmDFjGDZsGIWFhcydO5fs7GwWLFgAQG5uLoWFheTm5pKSksKcOXMa/WhOktR6\nrNmS1DKxIAiCNn3DWIw2fkspcpmZsHp1eJuIuneHjRvDWzUu2WpYsh1vopgxA3r2DG8TXe/e8MYb\n4a2UaJpaw7xSnRQnlZWwalW4v3NntFkkSdKh2RBLcfLAA7B8OQwaBBMmQK9eUSc6tLS0cDQqFoPL\nLoPHHos6kSRJbceGWIqTIIArroAbbog6yeH94x+wdy+UlsLDD0edRpKktmVDLInOncMtNTXqJFLy\nqq2F3/wG6urgtdfgnHOiTiQljyavQyxJkuLntdfg29+GZcugTx/40peiTiQlD0eIJUlKECedBP9c\nMlpSG3KEWJIkSUnNhliSJElJzYZYkiRJSc2GWJIkSUnNhliSJElJzVUmpFZUXw/l5eE6ou+9Byec\nEHUiSZJ0ODbEUitasyZcOzQnJ7z/9a9Hm0eSJB2eDbHUij7+GE47DZ5/PuokkiSpqZxDLEmSpKRm\nQyxJkqSkZkMsSZKkpOYcYkmSInTvvfDGG7BlS9RJWub446FvX4jFYOJE+J//iTqR1HyOEEutYNs2\n+Mc/YNOmqJMcmS5doKwMTj453JYtizqR1PH953/C5z8PF1wAP/1p1Gma7803YdcuePLJcLlJqT1y\nhFhqBSNGhD8QUlLgvPOiTtNy554brqNcXw/f+17Y5EuKv8JCGDAg6hQt07lzuKWkQBCEG4QjxlJ7\nYUMstYI9e2DVKujfP+okRyYWg5NOCvePOy7aLJLal+OPhz/9CTr987Pn+fPDRl9qD5wyIUmSjtiZ\nZ4ZX6QwCuOaacCqZ1F7YEEuSJCmp2RBLkiQpqdkQS5IkKanZEEuSJCmp2RBLkiQpqdkQS5IkKak1\n2hBXVVXx5S9/mSFDhjB06FBmz54NwNatW8nPzycnJ4exY8dSU1PT8JpZs2YxcOBABg0axNKlS+Ob\nXpLUwJotSS3TaEOcmprKfffdx9///ndWrVrFQw89xOuvv05xcTH5+flUVFQwZswYiouLASgvL2f+\n/PmUl5dTWlrKtGnTqK+vb5MDkaRkZ82WpJZptCHu27cvp59+OgDdunVj8ODBbNiwgcWLF1NUVARA\nUVERCxcuBGDRokVMmjSJ1NRUsrOzGTBgAKtXr47zIUiSwJotSS3V5Es3r1u3jpdeeomzzjqL6upq\nMjIyAMjIyKC6uhqAjRs3MmrUqIbXZGVlsWHDhoO+1syZMxv28/LyyMvLa2F8SYqvsrIyysrKoo7R\nbNZsScmopTW7SQ3xhx9+yMUXX8z9999P9+7dD3guFosRi8UO+drPem7/4ipJiezTDeAdd9wRXZgm\nsmZLSlYtrdmHXWXi448/5uKLL+byyy9nwoQJQDjCsHnzZgA2bdpEeno6AJmZmVRVVTW8dv369WRm\nZjb5ICRJR8aaLUnN12hDHAQBU6dOJTc3l+nTpzc8XlBQQElJCQAlJSUNRbegoIB58+ZRW1tLZWUl\na9euZeTIkXGML0nax5otSS3T6JSJ5557jl/+8peceuqpDBs2DAiX6LnlllsoLCxk7ty5ZGdns2DB\nAgByc3MpLCwkNzeXlJQU5syZ0+hHc5ISW319uAF0ctXyhGfNbj/eeQdWrAj3P/gg2iySIBYEQdCm\nbxiL0cZvKcVd//7w5z+Htx3Fd78LP/1puH/ssbBlCxx1VLSZEkGy1bBkO962ctttUFoKp50GXbqE\n/9eOPTbqVK3nG9+AM84Ib6UoNbWGNXmVCUkHeuEFWLw43N/vOgcdxr33hhuEP6jr6myIpdY0cWLY\nGEuKnh+CSi20YAGsWQNdu8LMmdCvX9SJJElSSzhCLB2B886Dm26KOoUkSToSjhBLkiQpqdkQS5Ik\nKanZEEuSJCmpOYdYkqQ2sG4dDB8OH38Mu3fDPfdEnSi+5s+H8vJwlZof/AA6d446kXRoNsSSmmTL\nFti1C447Llw3VVLz1NSEq9E8+2x4/7jjos0TT9de+8mFR265BW6+GXr0iDaT1BgbYkmHNXAgnHkm\n1NbC+PHhknOSmq9zZ0hLizpF/J1+erhBuCyllOicQyw1w9atcN118M1vwtNPR52m7bz8cjhC/Otf\nw86dUaeRJKl12RBLzfDWW/Dkk+HIx7RpUFgYdSJJknSknDIhNVN6ejhCLEmSOgZHiCVJkpTUbIgl\nSZKU1GyIJUmSlNScQyxJkuJq+XLo3h0+/3k4+eSo00gHsyGWJElx87WvwcMPw/vvQ58+8NRTUSeS\nDmZDLEmS4mbu3PD26afhxz+ONot0KM4hltRksRj89a/h+suFhfDaa1EnkiTpyNkQS2qyvDx44AGY\nOBE2b4aXXoo6kSRJR84pE5Ka7Nhjw2YYwiv2SZLUEThCLEmSpKRmQyxJkqSk5pQJSZLi6Pe/h7fe\ngg0bok4i6VAcIZYkKY5mzIA33oDUVLjhhqjTSPosjhBLkhRnM2ZATk7UKaJXUwPPPx/un346HHNM\n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\n", "text": [ "" ] } ], "prompt_number": 53 }, { "cell_type": "code", "collapsed": false, "input": [ "# There is nothing special about built-in cost function\n", "# except some utility function like draw and show\n", "likelihood1 = probfit.UnbinnedLH(probfit.rename(probfit.gaussian, ('x', 'mean2', 'sigma')), data1)\n", "likelihood2 = probfit.UnbinnedLH(probfit.gaussian, data2)\n", "simultaneous_likelihood = probfit.SimultaneousFit(likelihood1, likelihood2)\n", "print(probfit.describe(likelihood1))\n", "print(probfit.describe(likelihood2))\n", "# Note that the simultaneous likelihood has only 3 parameters, because the\n", "# 'sigma' parameter is tied (i.e. linked to always be the same).\n", "print(probfit.describe(simultaneous_likelihood))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['mean2', 'sigma']\n", "['mean', 'sigma']\n", "['mean2', 'sigma', 'mean']\n" ] } ], "prompt_number": 54 }, { "cell_type": "code", "collapsed": false, "input": [ "# Ah, the beauty of Minuit ... it doesn't care what your cost funtion is ...\n", "# you can use it to fit (i.e. compute optimal parameters and parameter errors) anything.\n", "minuit = iminuit.Minuit(simultaneous_likelihood, sigma=0.5, pedantic=False, print_level=0)\n", "# Well, there's one thing we have to tell Minuit so that it can compute parameter errors,\n", "# and that is the value of errordef, a.k.a. up (explained above).\n", "# This is a likelihood fit, so we need errordef = 0.5 and not the default errordef = 1:\n", "minuit.errordef = 0.5" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 55 }, { "cell_type": "code", "collapsed": false, "input": [ "# Run the fit and print the results\n", "minuit.migrad();\n", "minuit.print_fmin()\n", "minuit.print_matrix()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
" ], "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 28184.0142876 TOTAL NCALL = 97 NCALLS = 97 EDM = 2.24660525589e-09 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "output_type": "display_data" }, { "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", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 mean2 2.981566e+00 9.903099e-03 0.000000e+00 0.000000e+00 2 sigma 9.903098e-01 4.951551e-03 0.000000e+00 0.000000e+00 3 mean -1.989012e+00 9.903099e-03 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "output_type": "display_data" }, { "html": [ "
" ], "output_type": "display_data" }, { "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", " mean2\n", " \n", " \n", " \n", " \n", " \n", " sigma\n", " \n", " \n", " \n", " \n", " \n", " mean\n", " \n", " \n", " mean2 \n", " 1.00\n", " \n", " 0.00\n", " \n", " 0.00\n", " sigma \n", " 0.00\n", " \n", " 1.00\n", " \n", " 0.00\n", " mean \n", " 0.00\n", " \n", " 0.00\n", " \n", " 1.00\n", "
" ], "metadata": {}, "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 1998.19075776 TOTAL NCALL = 215 NCALLS = 215 EDM = 2.22895489152e-08 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "metadata": {}, "output_type": "display_data" }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 m0 1.972029e+00 4.773567e-02 0.000000e+00 0.000000e+00 2 s0 1.053063e+00 3.721995e-02 0.000000e+00 0.000000e+00 3 m1 -1.994212e+00 7.552495e-02 0.000000e+00 0.000000e+00 4 s1 9.767748e-01 5.688912e-02 0.000000e+00 0.000000e+00 5 f_0 6.993030e-01 1.673062e-02 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "metadata": {}, "output_type": "display_data" }, { "html": [ "
" ], "metadata": {}, "output_type": "display_data" }, { "html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 FCN = 1998.19075778 TOTAL NCALL = 213 NCALLS = 213 EDM = 3.91220377184e-08 GOAL 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", " \n", "
 Valid Valid Param Accurate Covar PosDef Made PosDef True True True True False Hesse Fail HasCov Above EDM Reach calllim False True False False
\n", " " ], "metadata": {}, "output_type": "display_data" }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 + Name Value Parab Error Minos Error- Minos Error+ Limit- Limit+ FIXED 1 m0 1.972030e+00 4.773574e-02 0.000000e+00 0.000000e+00 2 s0 1.053065e+00 3.722013e-02 0.000000e+00 0.000000e+00 3 m1 -2.022541e+00 7.552512e-02 0.000000e+00 0.000000e+00 4 s1 9.767755e-01 5.688929e-02 0.000000e+00 0.000000e+00 5 f_0 6.993031e-01 1.673063e-02 0.000000e+00 0.000000e+00
\n", " \n", " \n", " " ], "metadata": {}, "output_type": "display_data" }, { "html": [ "