update
This commit is contained in:
parent
71271b46c1
commit
e5d3389d98
558
slides/02_fit_intro.md
Normal file
558
slides/02_fit_intro.md
Normal file
@ -0,0 +1,558 @@
|
||||
% Introduction to Data Analysis and Machine Learning in Physics: \ 2. Data modeling and fitting
|
||||
% Day 1: 11. April 2023
|
||||
% \underline{Jörg Marks}, Klaus Reygers
|
||||
|
||||
|
||||
## Data modeling and fitting - introduction
|
||||
|
||||
Data analysis is a process of understanding and modeling measured
|
||||
data. The goal is to find patterns and to obtain inferences allowing to
|
||||
observe underlying patterns.
|
||||
|
||||
* There are 2 approaches to statistical data modeling
|
||||
* Hypothesis testing: is our data compatible with a certain model?
|
||||
* Determination of model parameter: use the data to determine the parameters
|
||||
of a (theoretical) model
|
||||
|
||||
* For the determination of model parameter
|
||||
* Analysis of data distributions $\rightarrow$ mean, variance,
|
||||
median, FWHM, .... \newline
|
||||
allows for an approximate determination of model parameter
|
||||
|
||||
* Data fitting with the least square method $\rightarrow$ an iterative
|
||||
process which minimizes the deviation of a model decribed by parameters
|
||||
from data. This determines the optimal values and uncertainties
|
||||
of the parameters.
|
||||
|
||||
* Maximum likelihood fitting $\rightarrow$ find a set of model parameters
|
||||
which most likely describe the data by maximizing the probability
|
||||
distributions.
|
||||
|
||||
The parameter determination by minimization is an integral part of machine
|
||||
learning approaches, here a system learns patterns and predicts
|
||||
related ones. This is the focus in the upcoming days.
|
||||
|
||||
## Data modeling and fitting - introduction
|
||||
|
||||
Data analysis is a process of understanding and modeling measured
|
||||
data. The goal is to find patterns and to obtain inferences allowing to
|
||||
observe underlying patterns.
|
||||
|
||||
* There are 2 approaches to statistical data modeling
|
||||
* Hypothesis testing: is our data compatible with a certain model?
|
||||
* Determination of model parameter: use the data to determine the parameters
|
||||
of a (theoretical) model
|
||||
|
||||
* For the determination of model parameter
|
||||
* Analysis of data distributions $\rightarrow$ mean, variance,
|
||||
median, FWHM, .... \newline
|
||||
allows for an approximate determination of model parameter
|
||||
|
||||
* \textcolor{blue}{Data fitting with the least square method $\rightarrow$ an iterative
|
||||
process which minimizes the deviation of a model decribed by parameters
|
||||
from data. This determines the optimal values and uncertainties
|
||||
of the parameters.}
|
||||
|
||||
* Maximum likelihood fitting $\rightarrow$ find a set of model parameters
|
||||
which most likely describe the data by maximizing the probability
|
||||
distributions.
|
||||
|
||||
The parameter determination by minimization is an integral part of machine
|
||||
learning approaches, here a system learns patterns and predicts
|
||||
related ones. This is the focus in the upcoming days.
|
||||
|
||||
|
||||
|
||||
## Least Square (LS) Method (1)
|
||||
|
||||
The method determines the \textcolor{blue}{optimal parameters of functions
|
||||
to gaussian distributed measurements}.
|
||||
|
||||
Lets consider a sample of $n$ measurements $y_{i}$ and a parametrized
|
||||
description of the measurement $\eta_{i} = f(x_{i} | \theta)$
|
||||
with a parameter set $\theta = \theta_{1}, \theta_{2} ,.... \theta_{k}$,
|
||||
dependent values $x_{i}$ and measurement errors $\sigma_{i}$.
|
||||
|
||||
The parameter set should be determined such that
|
||||
\begin{equation*}
|
||||
\color{blue}{S = \sum \limits_{i=1}^{n} \frac{(y_i-\eta_i)^2}{\sigma_i^2} = \sum \limits_{i=1}^{n} \frac{(y_i- f(x_i|\theta))^2}{\sigma_i^2} \longrightarrow \, minimal }
|
||||
\end{equation*}
|
||||
In case of correlated measurements the covariance matrix of the $y_{i}$ has to
|
||||
be taken into account. This is accomplished by defining a weight matrix from
|
||||
the covariance matrix of the input data. A decorrelation of the input data
|
||||
should be considered.
|
||||
\vspace{0.2cm}
|
||||
|
||||
$S$ follows a $\chi^{2}$-distribution with $(n-k)$ degrees of freedom.
|
||||
|
||||
## Least Square (LS) Method (2)
|
||||
|
||||
\setbeamertemplate{itemize item}{\color{red}\tiny$\blacksquare$}
|
||||
* Example LS-method
|
||||
\vspace{0.2cm}
|
||||
|
||||
Often the fit function $f(x, \theta)$ is linear in
|
||||
$\theta = \theta_{1}, \theta_{2} ,.... \theta_{k}$
|
||||
\vspace{0.2cm}
|
||||
|
||||
$f(x | \theta) = \theta_{1} f_{1}(x) + .... + \theta_{k} f_{k}(x)$
|
||||
\vspace{0.2cm}
|
||||
|
||||
If the model is a straight line and our parameters are $\theta_{1}$ and
|
||||
$\theta_{2}$ $(f_{1}(x) = 1,$ $f_{2}(x) = x)$ we have
|
||||
$f(x | \theta) = \theta_{1} + \theta_{2} x$
|
||||
\vspace{0.2cm}
|
||||
|
||||
The LS equation is
|
||||
\vspace{0.2cm}
|
||||
|
||||
$\color{blue}{S = \sum \limits_{i=1}^{n} \frac{(y_i-\eta_i)^2}{\sigma_i^2} } \color{black} {= \sum
|
||||
\limits_{i=1}^{n} \frac{(y_{i} - \theta_{1} - x_{i}
|
||||
\theta_{2})^2}{\sigma_i^2 }}$ \hspace{0.4cm} and with
|
||||
\vspace{0.2cm}
|
||||
|
||||
$\frac{\partial S}{\partial \theta_1} = \sum\limits_{i=1}^{n} \frac{-2
|
||||
(y_i - \theta_1 - x_i \theta_2)}{\sigma_i^2} = 0$ \hspace{0.4cm} and \hspace{0.4cm}
|
||||
$\frac{\partial S}{\partial \theta_2} = \sum\limits_{i=1}^{n} \frac{-2 x_i (y_i - \theta_1 - x_i \theta_2)}{\sigma_i^2} = 0$
|
||||
\vspace{0.2cm}
|
||||
|
||||
the parameters $\theta_{1}$ and $\theta_{2}$ can be determined.
|
||||
|
||||
\vspace{0.2cm}
|
||||
\textcolor{olive}{In case of linear fit functions solutions can be found by matrix inversion}
|
||||
|
||||
\vfill
|
||||
|
||||
## Least Square (LS) Method (3)
|
||||
|
||||
\setbeamertemplate{itemize item}{\color{red}\tiny$\blacksquare$}
|
||||
|
||||
* Use of a nonlinear fit function $f(x, \theta)$ like \hspace{0.4cm}
|
||||
$f(x | \theta) = \theta_{1} \cdot e^{-\theta_{2} x}$
|
||||
\vspace{0.2cm}
|
||||
|
||||
results in the LS equation
|
||||
\vspace{0.2cm}
|
||||
|
||||
$\color{blue}{S = \sum \limits_{i=1}^{n} \frac{(y_i-\eta_i)^2}{\sigma_i^2} } \color{black} {= \sum \limits_{i=1}^{n} \frac{(y_{i} - \theta_{1} \cdot e^{-\theta_{2} x_{i}})^2}{\sigma_i^2 }}$ \hspace{0.4cm}
|
||||
\vspace{0.2cm}
|
||||
|
||||
which we have to minimize
|
||||
\vspace{0.2cm}
|
||||
|
||||
$\frac{\partial S}{\partial \theta_1} = \sum\limits_{i=1}^{n} \frac{ 2 e^{-2 \theta_2 x_i} ( \theta_1 - y_i e^{\theta_2 x_i} )} {\sigma_i^2 } = 0$ \hspace{0.4cm} and \hspace{0.4cm}
|
||||
$\frac{\partial S}{\partial \theta_2} = \sum\limits_{i=1}^{n} \frac{ 2 \theta_1 x_I e^{-2 \theta_2 x_i} (y_i e^{\theta_2 x_i} - \theta_1)} {\sigma_i^2 } = 0$
|
||||
|
||||
\vspace{0.4cm}
|
||||
|
||||
In a nonlinear system, the LS Ansatz leads to derivatives which are
|
||||
functions of the independent variable and the parameters $\color{red}\rightarrow$ \textcolor{olive}{no closed solutions}
|
||||
\vspace{0.4cm}
|
||||
|
||||
In general, we have gradient equations which don't have closed solutions.
|
||||
There are a couple of methods including approximations which allow together
|
||||
with numerical methods to find a global minimum, Gauss–Newton algorithm,
|
||||
Levenberg–Marquardt algorithm, gradient descend methods and also direct
|
||||
search methods.
|
||||
|
||||
## Minuit - a programm package for minimization (1)
|
||||
|
||||
In general data fitting and also solving machine learning algorithms lead
|
||||
to a minimization problem of functions. In the
|
||||
1975-1980 F. James (CERN) developed
|
||||
a FORTRAN-based package, [\textcolor{violet}{MINUIT}](http://seal.web.cern.ch/seal/documents/minuit/mntutorial.pdf), which is a framework to handle
|
||||
multiparameter minimization and compute the best-fit parameter values and
|
||||
uncertainties, including correlations between the parameters.
|
||||
\vspace{0.2cm}
|
||||
|
||||
The user provides a minimization function
|
||||
$F(X,P)$ with the parameter space $P=(p_1,....p_k)$ and
|
||||
variable space $X$ (also multi-dimensional). There is an interface via
|
||||
functions which influences the
|
||||
minimization process. MINUIT provides
|
||||
[\textcolor{violet}{error calculations}](http://seal.web.cern.ch/seal/documents/minuit/mnerror.pdf) including correlations for the parameter space by evaluating the shape of the function in some neighbourhood of the minimum.
|
||||
\vspace{0.2cm}
|
||||
|
||||
The package
|
||||
has now a new object-oriented implementation as [\textcolor{violet}{Minuit2 library}](https://root.cern.ch/root/htmldoc/guides/minuit2/Minuit2.html) , written
|
||||
in C++.
|
||||
\vspace{0.2cm}
|
||||
|
||||
During the minimization $F(X,P)$ is evaluated for various $X$. For the
|
||||
choice of $P=(p_1,....p_k)$ different methods are used
|
||||
|
||||
## Minuit - a programm package for minimization (2)
|
||||
|
||||
\vspace{0.4cm}
|
||||
\textcolor{olive}{SEEK}: Search for the minimum with Monte Carlo methods, mostly used at the start
|
||||
of the minimization with unknown starting values. It is not a converging
|
||||
algorithm.
|
||||
\vspace{0.2cm}
|
||||
|
||||
\textcolor{olive}{SIMPLX}:
|
||||
Uses the simplex method of Nelder and Mead. Function values are compared
|
||||
in the parameter space. Via step size control the minimum is approached.
|
||||
Parameter errors are only approximate, no covariance matrix is calculated.
|
||||
\vspace{0.2cm}
|
||||
|
||||
<!---
|
||||
A simplex is the smallest n dimensional figure with n+1 corners. By reflecting
|
||||
one point in the hyperplane of the other point and adopts itself to the
|
||||
function plane.
|
||||
-->
|
||||
|
||||
\textcolor{olive}{MIGRAD}:
|
||||
Uses an algorithm of R. Fletcher, which takes the function and the gradient
|
||||
to approach the minimum with a variable metric method. An error matrix and
|
||||
correlation coefficients are available
|
||||
\vspace{0.2cm}
|
||||
|
||||
\textcolor{olive}{HESSE}:
|
||||
Calculates the hessian matrix of second derivatives and determines the
|
||||
covariance matrix.
|
||||
\vspace{0.2cm}
|
||||
|
||||
\textcolor{olive}{MINOS}:
|
||||
Calculates (asymmetric) errors using likelihood profiles.
|
||||
The algorithm for finding the positive and negative MINOS errors for parameter
|
||||
$n$ consists of varying $n$ each time minimizing $F(X,P)$ with respect to
|
||||
all the others.
|
||||
\vspace{0.2cm}
|
||||
|
||||
## Minuit - a programm package for minimization (3)
|
||||
|
||||
\vspace{0.4cm}
|
||||
|
||||
Fit process with the minuit package
|
||||
\vspace{0.2cm}
|
||||
|
||||
\setbeamertemplate{itemize item}{\color{red}\tiny$\blacksquare$}
|
||||
|
||||
* The individual steps decribed above can be called several times and in different order during the minimization process.
|
||||
|
||||
* Each of the parameters $p_i$ of $P=(p_1,....p_k)$ can be set constant and
|
||||
released during the minimization steps.
|
||||
|
||||
* Problems are expected in models with strong correlation between
|
||||
parameters $\rightarrow$ change model to uncorrelated definitions
|
||||
|
||||
* Local minima, edges/steps or undefined ranges in $F(X,P)$ are problematic
|
||||
$\rightarrow$ simplify your model
|
||||
|
||||
\vspace{3cm}
|
||||
|
||||
|
||||
## Minuit2 - The iminuit package
|
||||
|
||||
\vspace{0.4cm}
|
||||
|
||||
[\textcolor{violet}{iminuit}](https://iminuit.readthedocs.io/en/stable/) is
|
||||
a Jupyter-friendly Python interface for the Minuit2 C++ library.
|
||||
\vspace{0.2cm}
|
||||
|
||||
\setbeamertemplate{itemize item}{\color{red}\tiny$\blacksquare$}
|
||||
|
||||
* The class `iminuit.Minuit` instanciates the minuit object. The minimizer
|
||||
function is given as argument. Basic steering of the fit
|
||||
like setting start parameters, error definition and print level is also
|
||||
done here.
|
||||
|
||||
\footnotesize
|
||||
```python
|
||||
from iminuit import Minuit
|
||||
def fcn(x, y, z): # definition of the minimizer function
|
||||
return (x - 2) ** 2 + (y - x) ** 2 + (z - 4) ** 2
|
||||
fcn.errordef = Minuit.LEAST_SQUARES # for Minuit to compute errors correctly
|
||||
m = Minuit(fcn, x=0, y=0, z=0) # instanciate minuit, set start values
|
||||
```
|
||||
\normalsize
|
||||
|
||||
* Several methods determine the interaction with the fitting process, calls
|
||||
to `migrad`, `hesse` or printing of parameters and errors
|
||||
|
||||
\footnotesize
|
||||
```python
|
||||
......
|
||||
m.migrad() # run optimiser
|
||||
print(m.values , m.errors) # print results
|
||||
m.hesse() # run covariance estimator
|
||||
```
|
||||
\normalsize
|
||||
|
||||
## Minuit2 - iminuit example
|
||||
|
||||
\vspace{0.2cm}
|
||||
|
||||
\setbeamertemplate{itemize item}{\color{red}\tiny$\blacksquare$}
|
||||
|
||||
* The function `fcn` describes the model with parameters to be determined by
|
||||
data. `fcn` is minimal when the model parameters agree best with data.
|
||||
`fcn` has positional arguments, one for each fit parameter. `iminuit`
|
||||
example fit:
|
||||
|
||||
[\textcolor{violet}{02\_fit\_exp\_fit\_iMinuit.ipynb}](https://www.physi.uni-heidelberg.de/~reygers/lectures/2023/ml/examples/02_fit_exp_fit_iMinuit.ipynb)
|
||||
|
||||
\footnotesize
|
||||
```python
|
||||
......
|
||||
x = np.array([....],dtype='d') # measurements x
|
||||
y = np.array([....],dtype='d') # measurements y
|
||||
dy = np.array([....],dtype='d') # error in y
|
||||
def xp(a, b , c):
|
||||
return a * np.exp(b*x) + c
|
||||
# least-squares function = sum of data residuals squared
|
||||
def fcn(a,b,c):
|
||||
return np.sum((y - xp(a,b,c)) ** 2 / dy ** 2)
|
||||
# limit the range of b and fix parameter c
|
||||
m = Minuit(fcn,a=1,b=-0.7,c=1)
|
||||
m.migrad() # run minimizer
|
||||
m.fixed["c"] = True # fix or release parameter c
|
||||
m.migrad() # rerun minimizer
|
||||
# Might be useful to fix parameters or limit the range for some applications
|
||||
|
||||
```
|
||||
\normalsize
|
||||
|
||||
## Minuit2 - iminuit (3)
|
||||
|
||||
\vspace{0.2cm}
|
||||
|
||||
\setbeamertemplate{itemize item}{\color{red}\tiny$\blacksquare$}
|
||||
|
||||
* Results and control information of the fit can be printed and accessed
|
||||
in the the prorgamm.
|
||||
|
||||
\footnotesize
|
||||
```python
|
||||
......
|
||||
m = Minuit(fcn,....) # run the initializer
|
||||
m.migrad() # run minimizer
|
||||
a_fit = m.values['a'] # get parameter value a
|
||||
a_fit_error = m.errors['a'] # get parameter error of a
|
||||
print (m.values,m.errors) # print results
|
||||
```
|
||||
\normalsize
|
||||
|
||||
* After processing Hesse, covariance and correlation information of the
|
||||
fit is available
|
||||
|
||||
\footnotesize
|
||||
```python
|
||||
......
|
||||
m.hesse() # run covariance estimator
|
||||
m.matrix() # get covariance matrix
|
||||
m.matrix(correlation=True) # get full correlation matrix
|
||||
cov = m.np_matrix() # save matrix to numpy
|
||||
cor = m.np_matrix(correlation=True)
|
||||
print(cor[0, 1]) # print correlation between parameter 1 and 2
|
||||
```
|
||||
\normalsize
|
||||
|
||||
## Minuit2 - iminuit (4)
|
||||
|
||||
\setbeamertemplate{itemize item}{\color{red}\tiny$\blacksquare$}
|
||||
|
||||
* Minos provides asymmetric uncertainty intervals and parameter contours by
|
||||
scanning one parameter and minimizing the function with respect to all other
|
||||
parameters for each scan point. Results are displayed with `matplotlib`.
|
||||
|
||||
\footnotesize
|
||||
```python
|
||||
......
|
||||
m.minos()
|
||||
print (m.get_merrors()['a'])
|
||||
m.draw_profile('b')
|
||||
m.draw_mncontour('a', 'b', cl=[1, 2, 3, 4])
|
||||
```
|
||||
::: columns
|
||||
:::: {.column width=40%}
|
||||
![](figures/iminuit_minos_scan-1.png)
|
||||
::::
|
||||
:::: {.column width=40%}
|
||||
![](figures/iminuit_minos_scan-2.png)
|
||||
::::
|
||||
:::
|
||||
|
||||
## Exercise 3
|
||||
|
||||
Plot the following data with matplotlib as in the iminuit example:
|
||||
|
||||
\footnotesize
|
||||
```
|
||||
x: 0.2,0.4,0.6,0.8,1.,1.2,1.4,1.6,1.8,2.,2.2,2.4,2.6,2.8,3.,3.2,
|
||||
3.4,3.6, 3.8,4.
|
||||
y: 0.04,0.021,0.035,0.03,0.029,0.019,0.024,0.018,0.019,0.022,0.02,
|
||||
0.025,0.018,0.024,0.019,0.021,0.03,0.019,0.03,0.024
|
||||
dy: 1.792,1.695,1.541,1.514,1.427,1.399,1.388,1.270,1.262,1.228,1.189,
|
||||
1.182,1.121,1.129,1.124,1.089,1.092,1.084,1.058,1.057
|
||||
```
|
||||
\normalsize
|
||||
\setbeamertemplate{itemize item}{\color{red}$\square$}
|
||||
|
||||
* Exchange in the example iminuit fit `02_fit_exp_fit_iMinuit.ipynb` the
|
||||
exponential function by a 3rd order polynomial and perform the fit
|
||||
|
||||
* Compare the correlation of the parameters of the exponential and
|
||||
the polynomial fit
|
||||
|
||||
* What defines the fit quality, give an estimate
|
||||
|
||||
\small
|
||||
Solution: [\textcolor{violet}{02\_fit\_ex\_3\_sol.ipynb}](https://www.physi.uni-heidelberg.de/~reygers/lectures/2023/ml/solutions/02_fit_ex_3_sol.ipynb) \normalsize
|
||||
|
||||
## Exercise 4
|
||||
|
||||
Plot the following data with matplotlib:
|
||||
|
||||
\footnotesize
|
||||
```
|
||||
x: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
|
||||
dx: 0.1,0.1,0.5,0.1,0.5,0.1,0.5,0.1,0.5,0.1
|
||||
y: 1.1,2.3,2.7,3.2,3.1,2.4,1.7,1.5,1.5,1.7
|
||||
dy: 0.15,0.22,0.29,0.39,0.31,0.21,0.13,0.15,0.19,0.13
|
||||
```
|
||||
\normalsize
|
||||
\setbeamertemplate{itemize item}{\color{red}$\square$}
|
||||
|
||||
* Perform a fit with iminuit. Which model do you use?
|
||||
|
||||
* Plot the resulting fit function in the graph with the data
|
||||
|
||||
* Print the covariance matrix. Can we improve the errors.
|
||||
|
||||
* Can you draw a contour plot of 2 of the fit parameters.
|
||||
|
||||
\small
|
||||
Solution: [\textcolor{violet}{02\_fit\_ex\_4\_sol.ipynb}](https://www.physi.uni-heidelberg.de/~reygers/lectures/2023/ml/solutions/02_fit_ex_4_sol.ipynb) \normalsize
|
||||
|
||||
|
||||
## PyROOT
|
||||
|
||||
[\textcolor{violet}{PyROOT}](https://root.cern/manual/python/) is the python binding for the C++ data analysis toolkit [\textcolor{violet}{ROOT}](https://root.cern/) developed with and for the LHC community. You can access the full
|
||||
ROOT functionality from Python while
|
||||
benefiting from the performance of the ROOT C++ libraries. The PyROOT bindings
|
||||
are automatic and dynamic and are able to interoperate with widely-used Python
|
||||
data-science libraries as `NumPy`, `pandas`, SciPy `scikit-learn` and `tensorflow`.
|
||||
|
||||
* ROOT/PyROOT can be installed easily within anaconda3 (ROOT version 6.26.06
|
||||
or later ) or is available in the
|
||||
[\textcolor{violet}{CIP jupyter3 Hub}](https://jupyter3.kip.uni-heidelberg.de/)
|
||||
|
||||
* Tools for statistical analysis, a math library with optimized algorithms,
|
||||
multivariate analysis, visualization and simulation of data.
|
||||
|
||||
* Storing data including objects and classes with compression in files is a
|
||||
very powerfull aspect for any data analysis project
|
||||
|
||||
* Within PyROOT Minuit2 can be accessed easily either with predefined functions
|
||||
or your own function definition
|
||||
|
||||
* For advanced statistical analyses and data modeling likelihood fitting with
|
||||
the packages **rooFit** and **rooStats** is available.
|
||||
|
||||
|
||||
##
|
||||
|
||||
* Example reading the invariant mass measurements of a $D^0$ from a text file
|
||||
and determine $\mu$ and $\sigma$ \hspace{1.0cm} \small
|
||||
[\textcolor{violet}{02\_fit\_histFit.ipynb}](https://www.physi.uni-heidelberg.de/~reygers/lectures/2023/ml/examples/02_fit_histFit.ipynb)
|
||||
\hspace{0.5cm} run with: python3 -i 02_fit_histFit.py
|
||||
\normalsize
|
||||
|
||||
\footnotesize
|
||||
```python
|
||||
import numpy as np
|
||||
import math
|
||||
from ROOT import TCanvas, TFile, TH1D, TF1, TMinuit, TFitResult
|
||||
data = np.genfromtxt('D0Mass.txt', dtype='d') # read data from text file
|
||||
c = TCanvas('c','D0 Mass',200,10,700,500) # instanciate output canvas
|
||||
d0 = TH1D('d0','D0 Mass',200,1700.,2000.) # instanciate histogramm
|
||||
for x in data : # fill data into histogramm d0
|
||||
d0.Fill(x)
|
||||
def pyf_tf1_params(x, p): # define fit function
|
||||
return p[0] * math.exp (-0.5 * ((x[0] - p[1])**2 / p[2]**2))
|
||||
func = TF1("func",pyf_tf1_params,1840.,1880.,3)
|
||||
# func = TF1("func",'gaus',1840.,1880.) # use predefined function
|
||||
func.SetParameters(500.,1860.,5.5) # set start parameters
|
||||
myfit = d0.Fit(func,"S") # fit function to the histogramm data
|
||||
print ("Fit results: mean=",myfit.Parameter(0)," +/- ",myfit.ParError(0))
|
||||
c.Draw() # draw canvas
|
||||
myfile = TFile('myOutFile.root','RECREATE') # Open a ROOT file for output
|
||||
c.Write() # Write canvas
|
||||
d0.Write() # Write histogram
|
||||
myfile.Close() # close file
|
||||
```
|
||||
\normalsize
|
||||
|
||||
|
||||
##
|
||||
|
||||
* Fit Options
|
||||
\vspace{0.1cm}
|
||||
|
||||
::: columns
|
||||
:::: {.column width=2%}
|
||||
::::
|
||||
:::: {.column width=98%}
|
||||
![](figures/rootOptions.png)
|
||||
::::
|
||||
:::
|
||||
|
||||
## Exercise 5
|
||||
|
||||
Read text file [\textcolor{violet}{FitTestData.txt}](https://www.physi.uni-heidelberg.de/~reygers/lectures/2023/ml/exercises/FitTestData.txt) and draw a histogramm using PyROOT.
|
||||
\setbeamertemplate{itemize item}{\color{red}$\square$}
|
||||
|
||||
* Determine the mean and sigma of the signal distribution. Which function do
|
||||
you use for fitting?
|
||||
|
||||
* The option S fills the result object.
|
||||
|
||||
* Try to improve the errors of the fit values with minos using the option E
|
||||
and also try the option M to scan for a new minimum, option V provides more
|
||||
output.
|
||||
|
||||
* Fit the background outside the signal region use the option R+ to add the
|
||||
function to your fit
|
||||
|
||||
\small
|
||||
Solution: [\textcolor{violet}{02\_fit\_ex\_5\_sol.ipynb}](https://www.physi.uni-heidelberg.de/~reygers/lectures/2023/ml/solutions/02_fit_ex_5_sol.ipynb) \normalsize
|
||||
|
||||
|
||||
## iPython Examples for Fitting
|
||||
|
||||
The different python packages are used in
|
||||
\textcolor{blue}{example iPython notebooks}
|
||||
to demonstrate the fitting of a third order polynomial to the same data
|
||||
available as numpy arrays.
|
||||
|
||||
\setbeamertemplate{itemize item}{\color{red}\tiny$\blacksquare$}
|
||||
|
||||
* LSQ fit of a polynomial to data using Minuit2 with
|
||||
\textcolor{blue}{iminuit} and \textcolor{blue}{matplotlib} plot:
|
||||
|
||||
\small
|
||||
[\textcolor{violet}{02\_fit\_iminuitFit.ipynb}](https://www.physi.uni-heidelberg.de/~reygers/lectures/2023/ml/examples/02_fit_iminuitFit.ipynb)
|
||||
\normalsize
|
||||
|
||||
* Graph fitting with \textcolor{blue}{pyROOT} with options using a python
|
||||
function including confidence level plot:
|
||||
|
||||
\small
|
||||
[\textcolor{violet}{02\_fit\_fitGraph.ipynb}](https://www.physi.uni-heidelberg.de/~reygers/lectures/2023/ml/examples/02_fit_fitGraph.ipynb)
|
||||
\normalsize
|
||||
|
||||
* Graph fitting with \textcolor{blue}{numpy} and confidence level
|
||||
plotting with \textcolor{blue}{matplotlib}:
|
||||
|
||||
\small
|
||||
[\textcolor{violet}{02\_fit\_numpyFit.ipynb}](https://www.physi.uni-heidelberg.de/~reygers/lectures/2023/ml/examples/02_fit_numpyFit.ipynb)
|
||||
\normalsize
|
||||
|
||||
* Graph fitting with a polynomial fit of \textcolor{blue}{scikit-learn} and
|
||||
plotting with \textcolor{blue}{matplotlib}:
|
||||
|
||||
\normalsize
|
||||
\small
|
||||
[\textcolor{violet}{02\_fit\_scikitFit.ipynb}](https://www.physi.uni-heidelberg.de/~reygers/lectures/2023/ml/examples/02_fit_scikitFit.ipynb)
|
||||
\normalsize
|
@ -1,5 +1,5 @@
|
||||
% Introduction to Data Analysis and Machine Learning in Physics
|
||||
% Martino Borsato, Jörg Marks, Klaus Reygers
|
||||
% Jörg Marks, Klaus Reygers
|
||||
% 11-14 April 2023 \newline 9:00 - 12:00 and 14:00 - 17:00
|
||||
|
||||
|
||||
@ -12,10 +12,10 @@
|
||||
- Machine learning - basics
|
||||
|
||||
* **Day 3**
|
||||
- Machine learning - decision tree
|
||||
- Machine learning - decision trees
|
||||
|
||||
* **Day 4**
|
||||
- Machine learning - convolutional networks
|
||||
- Machine learning - convolutional networks graph neural networks
|
||||
|
||||
* **Organization** and **Objective**
|
||||
- \textcolor{red} {2 ETC: Compulsory attendance is required} \newline
|
||||
|
Loading…
Reference in New Issue
Block a user