Machine Learning Kurs im Rahmen der Studierendentage im SS 2023
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

314 lines
36 KiB

2 years ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "Graph fit example within pyROOT"
  8. ]
  9. },
  10. {
  11. "cell_type": "code",
  12. "execution_count": 1,
  13. "metadata": {},
  14. "outputs": [
  15. {
  16. "name": "stdout",
  17. "output_type": "stream",
  18. "text": [
  19. "Welcome to JupyROOT 6.20/08\n"
  20. ]
  21. }
  22. ],
  23. "source": [
  24. "import numpy as np\n",
  25. "import ROOT\n",
  26. "from ROOT import TF1, TVirtualFitter, TGraphErrors, TCanvas, TMinuit, TFitResult, gROOT, TGraph"
  27. ]
  28. },
  29. {
  30. "cell_type": "markdown",
  31. "metadata": {},
  32. "source": [
  33. "Define the data"
  34. ]
  35. },
  36. {
  37. "cell_type": "code",
  38. "execution_count": 2,
  39. "metadata": {},
  40. "outputs": [],
  41. "source": [
  42. "numDat = 10 \n",
  43. "x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype='d')\n",
  44. "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",
  45. "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",
  46. "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')"
  47. ]
  48. },
  49. {
  50. "cell_type": "markdown",
  51. "metadata": {},
  52. "source": [
  53. "Define fit function"
  54. ]
  55. },
  56. {
  57. "cell_type": "code",
  58. "execution_count": 3,
  59. "metadata": {},
  60. "outputs": [],
  61. "source": [
  62. "def myNFunc(x, p):\n",
  63. " return p[0] + x[0]*p[1] + p[2]*x[0]**2 + p[3]*x[0]**3"
  64. ]
  65. },
  66. {
  67. "cell_type": "markdown",
  68. "metadata": {},
  69. "source": [
  70. "Create ROOT function and set start parameters"
  71. ]
  72. },
  73. {
  74. "cell_type": "code",
  75. "execution_count": 4,
  76. "metadata": {},
  77. "outputs": [],
  78. "source": [
  79. "func = TF1('func',myNFunc, 0.5 ,10.5, 4)\n",
  80. "func.SetParameters(-1.3, 2.6 , -0.24 , 0.005)"
  81. ]
  82. },
  83. {
  84. "cell_type": "markdown",
  85. "metadata": {},
  86. "source": [
  87. "Create Graph with error bars"
  88. ]
  89. },
  90. {
  91. "cell_type": "code",
  92. "execution_count": 5,
  93. "metadata": {},
  94. "outputs": [],
  95. "source": [
  96. "Graph = TGraphErrors(numDat, x, y, dx, dy)\n",
  97. "Graph.SetTitle( 'Fit Graph' )\n",
  98. "Graph.SetMarkerColor( 4 )\n",
  99. "Graph.SetMarkerStyle( 21 )\n",
  100. "Graph.SetMaximum(4.)\n",
  101. "Graph.SetMinimum(-1.)"
  102. ]
  103. },
  104. {
  105. "cell_type": "markdown",
  106. "metadata": {},
  107. "source": [
  108. "Start fitter and return fit result for later processing"
  109. ]
  110. },
  111. {
  112. "cell_type": "code",
  113. "execution_count": 6,
  114. "metadata": {},
  115. "outputs": [
  116. {
  117. "name": "stdout",
  118. "output_type": "stream",
  119. "text": [
  120. " FCN=2.15982 FROM MINOS STATUS=SUCCESSFUL 90 CALLS 2039 TOTAL\n",
  121. " EDM=4.56889e-09 STRATEGY= 1 ERROR MATRIX ACCURATE \n",
  122. " EXT PARAMETER STEP FIRST \n",
  123. " NO. NAME VALUE ERROR SIZE DERIVATIVE \n",
  124. " 1 p0 -1.03327e+00 4.63548e-01 -1.99485e-03 1.64067e-03\n",
  125. " 2 p1 2.54886e+00 3.59144e-01 2.70551e-03 -5.29683e-02\n",
  126. " 3 p2 -4.84278e-01 7.01863e-02 -2.72411e-04 -7.70245e-01\n",
  127. " 4 p3 2.56882e-02 3.97082e-03 3.97082e-03 -1.30073e+00\n"
  128. ]
  129. }
  130. ],
  131. "source": [
  132. "result = Graph.Fit(func, \"M E S\",\"\",0.5,10.5)"
  133. ]
  134. },
  135. {
  136. "cell_type": "markdown",
  137. "metadata": {},
  138. "source": [
  139. "Confidence plot"
  140. ]
  141. },
  142. {
  143. "cell_type": "code",
  144. "execution_count": 7,
  145. "metadata": {},
  146. "outputs": [],
  147. "source": [
  148. "values = result.GetConfidenceIntervals(0.66, False)\n",
  149. "interval = TGraphErrors(Graph.GetN())\n",
  150. "for i in range(Graph.GetN()):\n",
  151. " interval.SetPoint(i, Graph.GetX()[i], func.Eval(Graph.GetX()[i] ))\n",
  152. " interval.SetPointError(i, 0, values[i] )"
  153. ]
  154. },
  155. {
  156. "cell_type": "markdown",
  157. "metadata": {},
  158. "source": [
  159. "Canvas for plotting"
  160. ]
  161. },
  162. {
  163. "cell_type": "code",
  164. "execution_count": 8,
  165. "metadata": {},
  166. "outputs": [],
  167. "source": [
  168. "c = TCanvas( 'c', 'A Simple Fit',700, 500)\n"
  169. ]
  170. },
  171. {
  172. "cell_type": "markdown",
  173. "metadata": {},
  174. "source": [
  175. "Draw canvas and graph and 1 sigma confidence"
  176. ]
  177. },
  178. {
  179. "cell_type": "code",
  180. "execution_count": 9,
  181. "metadata": {},
  182. "outputs": [
  183. {
  184. "data": {
  185. "image/png": "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
  186. "text/plain": [
  187. "<IPython.core.display.Image object>"
  188. ]
  189. },
  190. "metadata": {},
  191. "output_type": "display_data"
  192. }
  193. ],
  194. "source": [
  195. "Graph.Draw(\"AP\")\n",
  196. "interval.SetFillColor(21)\n",
  197. "interval.Draw(\"3\")\n",
  198. "c.Draw()"
  199. ]
  200. },
  201. {
  202. "cell_type": "markdown",
  203. "metadata": {},
  204. "source": [
  205. "Create graph for confidence interval\n",
  206. "\n",
  207. "Compute the confidence intervals at the x points of the created graph"
  208. ]
  209. },
  210. {
  211. "cell_type": "code",
  212. "execution_count": 10,
  213. "metadata": {},
  214. "outputs": [],
  215. "source": [
  216. "GraphConf = TGraphErrors(Graph.GetN())\n",
  217. "GraphConf.SetTitle(\"Fit Polynomial with .95 confidence;x;f(x)\")\n",
  218. "for i in range(Graph.GetN()):\n",
  219. " GraphConf.SetPoint(i, Graph.GetX()[i],0 )"
  220. ]
  221. },
  222. {
  223. "cell_type": "code",
  224. "execution_count": 11,
  225. "metadata": {},
  226. "outputs": [],
  227. "source": [
  228. " \n",
  229. "TVirtualFitter.GetFitter().GetConfidenceIntervals(GraphConf,0.95)"
  230. ]
  231. },
  232. {
  233. "cell_type": "markdown",
  234. "metadata": {},
  235. "source": [
  236. "Now the \"GraphConf\" graph contains function values as its y-coordinates\n",
  237. "and confidence intervals as the errors on these coordinates"
  238. ]
  239. },
  240. {
  241. "cell_type": "code",
  242. "execution_count": 12,
  243. "metadata": {},
  244. "outputs": [],
  245. "source": [
  246. "myC = TCanvas(\"myC\", \"Confidence Intervall\",800, 800);"
  247. ]
  248. },
  249. {
  250. "cell_type": "code",
  251. "execution_count": 13,
  252. "metadata": {},
  253. "outputs": [],
  254. "source": [
  255. "GraphConf.SetLineColor(4)\n",
  256. "GraphConf.Draw(\"AP\")"
  257. ]
  258. },
  259. {
  260. "cell_type": "code",
  261. "execution_count": 14,
  262. "metadata": {},
  263. "outputs": [],
  264. "source": [
  265. "Graph.SetLineColor(2)\n",
  266. "Graph.SetMarkerStyle(21)\n",
  267. "Graph.Draw(\"P SAME\")\n",
  268. "func.SetLineColor(4)\n",
  269. "func.Draw(\"SAME\")"
  270. ]
  271. },
  272. {
  273. "cell_type": "code",
  274. "execution_count": 15,
  275. "metadata": {},
  276. "outputs": [
  277. {
  278. "data": {
  279. "image/png": "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
  280. "text/plain": [
  281. "<IPython.core.display.Image object>"
  282. ]
  283. },
  284. "metadata": {},
  285. "output_type": "display_data"
  286. }
  287. ],
  288. "source": [
  289. "myC.Draw()"
  290. ]
  291. }
  292. ],
  293. "metadata": {
  294. "kernelspec": {
  295. "display_name": "Python 3 (ipykernel)",
  296. "language": "python",
  297. "name": "python3"
  298. },
  299. "language_info": {
  300. "codemirror_mode": {
  301. "name": "ipython",
  302. "version": 3
  303. },
  304. "file_extension": ".py",
  305. "mimetype": "text/x-python",
  306. "name": "python",
  307. "nbconvert_exporter": "python",
  308. "pygments_lexer": "ipython3",
  309. "version": "3.8.16"
  310. }
  311. },
  312. "nbformat": 4,
  313. "nbformat_minor": 4
  314. }