ML-Kurs-SS2023/notebooks/02_fit_fitGraph.ipynb

315 lines
36 KiB
Plaintext
Raw Normal View History

2023-04-03 13:08:49 +02:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Graph fit example within pyROOT"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Welcome to JupyROOT 6.20/08\n"
]
}
],
"source": [
"import numpy as np\n",
"import ROOT\n",
"from ROOT import TF1, TVirtualFitter, TGraphErrors, TCanvas, TMinuit, TFitResult, gROOT, TGraph"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Define the data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"numDat = 10 \n",
"x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype='d')\n",
"dx = np.array([0.1,0.1,0.5,0.1,0.5,0.1,0.5,0.1,0.5,0.1], dtype='d')\n",
"y = np.array([1.1 ,2.3 ,2.7 ,3.2 ,3.1 ,2.4 ,1.7 ,1.5 ,1.5 ,1.7 ], dtype='d')\n",
"dy = np.array([0.15,0.22,0.29,0.39,0.31,0.21,0.13,0.15,0.19,0.13], dtype='d')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Define fit function"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def myNFunc(x, p):\n",
" return p[0] + x[0]*p[1] + p[2]*x[0]**2 + p[3]*x[0]**3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create ROOT function and set start parameters"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"func = TF1('func',myNFunc, 0.5 ,10.5, 4)\n",
"func.SetParameters(-1.3, 2.6 , -0.24 , 0.005)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create Graph with error bars"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"Graph = TGraphErrors(numDat, x, y, dx, dy)\n",
"Graph.SetTitle( 'Fit Graph' )\n",
"Graph.SetMarkerColor( 4 )\n",
"Graph.SetMarkerStyle( 21 )\n",
"Graph.SetMaximum(4.)\n",
"Graph.SetMinimum(-1.)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Start fitter and return fit result for later processing"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" FCN=2.15982 FROM MINOS STATUS=SUCCESSFUL 90 CALLS 2039 TOTAL\n",
" EDM=4.56889e-09 STRATEGY= 1 ERROR MATRIX ACCURATE \n",
" EXT PARAMETER STEP FIRST \n",
" NO. NAME VALUE ERROR SIZE DERIVATIVE \n",
" 1 p0 -1.03327e+00 4.63548e-01 -1.99485e-03 1.64067e-03\n",
" 2 p1 2.54886e+00 3.59144e-01 2.70551e-03 -5.29683e-02\n",
" 3 p2 -4.84278e-01 7.01863e-02 -2.72411e-04 -7.70245e-01\n",
" 4 p3 2.56882e-02 3.97082e-03 3.97082e-03 -1.30073e+00\n"
]
}
],
"source": [
"result = Graph.Fit(func, \"M E S\",\"\",0.5,10.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Confidence plot"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"values = result.GetConfidenceIntervals(0.66, False)\n",
"interval = TGraphErrors(Graph.GetN())\n",
"for i in range(Graph.GetN()):\n",
" interval.SetPoint(i, Graph.GetX()[i], func.Eval(Graph.GetX()[i] ))\n",
" interval.SetPointError(i, 0, values[i] )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Canvas for plotting"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"c = TCanvas( 'c', 'A Simple Fit',700, 500)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Draw canvas and graph and 1 sigma confidence"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Graph.Draw(\"AP\")\n",
"interval.SetFillColor(21)\n",
"interval.Draw(\"3\")\n",
"c.Draw()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create graph for confidence interval\n",
"\n",
"Compute the confidence intervals at the x points of the created graph"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"GraphConf = TGraphErrors(Graph.GetN())\n",
"GraphConf.SetTitle(\"Fit Polynomial with .95 confidence;x;f(x)\")\n",
"for i in range(Graph.GetN()):\n",
" GraphConf.SetPoint(i, Graph.GetX()[i],0 )"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
" \n",
"TVirtualFitter.GetFitter().GetConfidenceIntervals(GraphConf,0.95)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now the \"GraphConf\" graph contains function values as its y-coordinates\n",
"and confidence intervals as the errors on these coordinates"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"myC = TCanvas(\"myC\", \"Confidence Intervall\",800, 800);"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"GraphConf.SetLineColor(4)\n",
"GraphConf.Draw(\"AP\")"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"Graph.SetLineColor(2)\n",
"Graph.SetMarkerStyle(21)\n",
"Graph.Draw(\"P SAME\")\n",
"func.SetLineColor(4)\n",
"func.Draw(\"SAME\")"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"myC.Draw()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.16"
}
},
"nbformat": 4,
"nbformat_minor": 4
}