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
0.013267993927
3.75738501549
Processing /mnt/build/workspace/root-makedoc-v612/rootspi/rdoc/src/v6-12-00-patches/tutorials/fit/exampleFit3D.C...
****************************************
Minimizer is Minuit / Migrad
Chi2 = 993.065
NDf = 997
Edm = 1.13148e-19
NCalls = 43
p0 = 0.993546 +/- 0.00475134
p1 = 0.99397 +/- 0.00434249
p2 = 0.997895 +/- 0.000545663
Good fit : p-value = 0.529221
void exampleFit3D() {
const int n = 1000;
double x[
n], y[
n], z[
n], v[
n];
double ev = 0.1;
for (
int i = 0; i <
n; ++i) {
v[i] =
sin(x[i] ) +
cos(y[i]) + z[i] + r.
Gaus(0,ev);
}
double xx[3];
for(
int i = 0; i <
n; ++i) {
xx[0] = x[i];
xx[1] = y[i];
xx[2] = z[i];
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);
bool ret = fitter.
Fit(data);
if (ret) {
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");
}
- Author
- Lorenzo Moneta
Definition in file exampleFit3D.C.