24 void fitLinearRobust()
29 Int_t fraction = Int_t(0.8*npoints);
30 Double_t *x =
new Double_t[npoints];
31 Double_t *y =
new Double_t[npoints];
32 Double_t *e =
new Double_t[npoints];
35 for (i=0; i<fraction; i++){
37 x[i]=r.Uniform(-2, 2);
39 y[i]=1 + 2*x[i] + 3*x[i]*x[i] + 4*x[i]*x[i]*x[i] + e[i]*r.Gaus();
41 for (i=fraction; i<npoints; i++){
43 x[i]=r.Uniform(-1, 1);
45 y[i] = 1 + 2*x[i] + 3*x[i]*x[i] + 4*x[i]*x[i]*x[i] + r.Landau(10, 5);
48 TGraphErrors *grr =
new TGraphErrors(npoints, x, y, 0, e);
51 TF1 *ffit1 =
new TF1(
"ffit1",
"pol3", -5, 5);
52 TF1 *ffit2 =
new TF1(
"ffit2",
"pol3", -5, 5);
53 ffit1->SetLineColor(kBlue);
54 ffit2->SetLineColor(kRed);
55 TCanvas *myc =
new TCanvas(
"myc",
"Linear and robust linear fitting");
59 printf(
"Ordinary least squares:\n");
64 printf(
"Resistant Least trimmed squares fit:\n");
71 grr->Fit(ffit2,
"+rob=0.75");
73 TLegend *leg =
new TLegend(0.6, 0.8, 0.89, 0.89);
74 leg->AddEntry(ffit1,
"Ordinary least squares",
"l");
75 leg->AddEntry(ffit2,
"LTS regression",
"l");