Loading [MathJax]/extensions/tex2jax.js
Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
exampleFit3D.C File Reference

Detailed Description

View in nbviewer Open in SWAN example of fitting a 3D function Typical multidimensional parametric regression where the predictor depends on 3 variables

In the case of 1 or 2D one can use the TGraph classes but since no TGraph3D class exists this tutorial provide an example of fitting 3D points

****************************************
Minimizer is Minuit / Migrad
Chi2 = 993.065
NDf = 997
Edm = 1.2693e-19
NCalls = 43
p0 = 0.993546 +/- 0.00475134
p1 = 0.99397 +/- 0.00434249
p2 = 0.997895 +/- 0.000545663
Good fit : p-value = 0.529221
#include "TRandom2.h"
#include "TF3.h"
#include "TError.h"
#include "Fit/BinData.h"
#include "Fit/Fitter.h"
void exampleFit3D() {
const int n = 1000;
double x[n], y[n], z[n], v[n];
double ev = 0.1;
// generate the data
for (int i = 0; i < n; ++i) {
x[i] = r.Uniform(0,10);
y[i] = r.Uniform(0,10);
z[i] = r.Uniform(0,10);
v[i] = sin(x[i] ) + cos(y[i]) + z[i] + r.Gaus(0,ev);
}
// create a 3d binned data structure
double xx[3];
for(int i = 0; i < n; ++i) {
xx[0] = x[i];
xx[1] = y[i];
xx[2] = z[i];
// add the 3d-data coordinate, the predictor value (v[i]) and its errors
data.Add(xx, v[i], ev);
}
TF3 * f3 = new TF3("f3","[0] * sin(x) + [1] * cos(y) + [2] * z",0,10,0,10,0,10);
f3->SetParameters(2,2,2);
// wrapped the TF1 in a IParamMultiFunction interface for the Fitter class
fitter.SetFunction(wf);
//
bool ret = fitter.Fit(data);
if (ret) {
const ROOT::Fit::FitResult & res = fitter.Result();
// print result (should be around 1)
res.Print(std::cout);
// copy all fit result info (values, chi2, etc..) in TF3
f3->SetFitResult(res);
// test fit p-value (chi2 probability)
double prob = res.Prob();
if (prob < 1.E-2)
Error("exampleFit3D","Bad data fit - fit p-value is %f",prob);
else
std::cout << "Good fit : p-value = " << prob << std::endl;
}
else
Error("exampleFit3D","3D fit failed");
}
ROOT::R::TRInterface & r
Definition Object.C:4
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
Definition TError.cxx:187
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
Definition BinData.h:52
class containg the result of the fit and all the related information (fitted parameter values,...
Definition FitResult.h:47
void Print(std::ostream &os, bool covmat=false) const
print the result and optionaly covariance matrix and correlations
double Prob() const
p value of the fit (chi2 probability)
Fitter class, entry point for performing all type of fits.
Definition Fitter.h:77
const FitResult & Result() const
get fit result
Definition Fitter.h:384
bool Fit(const Data &data, const Function &func, const ROOT::EExecutionPolicy &executionPolicy=ROOT::EExecutionPolicy::kSequential)
fit a data set using any generic model function If data set is binned a least square fit is performed...
Definition Fitter.h:141
void SetFunction(const IModelFunction &func, bool useGradient=false)
Set the fitted function (model function) from a parametric function interface.
Definition Fitter.cxx:103
Class to Wrap a ROOT Function class (like TF1) in a IParamMultiFunction interface of multi-dimensions...
virtual void SetFitResult(const ROOT::Fit::FitResult &result, const Int_t *indpar=0)
Set the result from the fit parameter values, errors, chi2, etc... Optionally a pointer to a vector (...
Definition TF1.cxx:3375
virtual void SetParameters(const Double_t *params)
Definition TF1.h:644
A 3-Dim function with parameters.
Definition TF3.h:28
Random number generator class based on the maximally quidistributed combined Tausworthe generator by ...
Definition TRandom2.h:27
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
const Int_t n
Definition legend1.C:16
Author
Lorenzo Moneta

Definition in file exampleFit3D.C.