Re: [ROOT] Problems with fiting

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Sep 30 2002 - 21:13:01 MEST


Hi Eddy,

Thanks for adding these remarks. You are obviously right.

Concerning your question about fixing parameters: You must use
the option "b" (boundaries) in case the fitting function is a basic
function. In this case, the initial values for the parameters
are automatically computed. By using the option "b", your force
the fit function to use your input values. This is indicated
in the doc of TGraph::Fit, but I should emphasize this point a bit more.

Rene Brun

On Mon, 30 Sep 2002, Eddy Offermann wrote:

> Hi,
> 
> Some observations:
> 
> 1) when specifying errors in x, your fit becomes non-linear in the parameters !!
>    Specifying 'W' option makes it a linear fit
> 2) Your data weights are very "challenging: do you really think
>     specifying y[6] is important when neighboring data points
>     y[4] and y[5] have each
>     a weight in the fit that is 2500 times larger ?
> 3) Your fit returns with the message that the matrix was not
>    positive-definite (probably related to 2) ), so results can
>    not be trusted.
>    
> Rene, I tried to play around with the scripts by fixing some parameters:
> 
>   TF1 f1("f1","pol2");
>   f1.FixParameter(0,-3.22);
>   f1.FixParameter(1,0.349);
>   f1.SetParameter(2,-6.93469e-08);
>   graph->Fit("f1","LEM");
>   
> The parameters are indeed fixed but not at the expected values ??
> 
> Eddy
> 
> > X-Authentication-Warning: pcroot.cern.ch: majordomo set sender to 
> owner-roottalk@root.cern.ch using -f
> > Date: Mon, 30 Sep 2002 12:06:03 +0200 (MET DST)
> > From: Alexander Dietz <adietz@mickey.mpi-hd.mpg.de>
> > To: root list <roottalk@pcroot.cern.ch>
> > Subject: [ROOT] Problems with fiting
> > MIME-Version: 1.0
> > 
> > Hello Rooters,
> > 
> > I have a problem with doing a fit with a TGraphErrors. In the program
> > source (at the end of this mail) I want to perform a quadratic fit with
> > 'TGraphErrors", using the errors as specified.
> > When I use the fitting option 'W' (all errors set to 1) then the fit works
> > very good, giving a sensefull result.
> > But without the option 'W' the result of the fit is very, very bad and
> > wrong.
> > The correct result is, that parameter 1 is about 0.35.
> > But with the option 'W' this parameter is around 10^7 !!!
> > 
> > So what can I do to get a correct fit which is using the errors I have
> > specified?
> > 
> > 
> > Regards
> > 
> > 	Alexander Dietz
> > 
> > 
> > void prog(void)
> > {
> >   float x[10];
> >   float y[10];
> >   float ex[10];
> >   float ey[10];
> > 
> >   x[0]= 7508.84 ;ex[0]=0.037;
> >   x[1]= 1680.41 ;ex[1]=0.022 ;
> >   x[2]= 2093.11 ;ex[2]=0.05 ;
> >   x[3]= 2259.89 ;ex[3]=0.157;
> >   x[4]= 2474.87 ;ex[4]=0.065;
> >   x[5]= 2569.45 ;ex[5]=0.473;
> >   x[6]= 3100.43 ;ex[6]=0.272;
> >   x[7]= 4574.82 ;ex[7]=0.147;
> >   x[8]= 6041.46 ;ex[8]=0.15 ;
> > 
> >   y[0]=2614.53 ;ey[0]=0.013;
> >   y[1]=583.191 ;ey[1]=0.002;
> >   y[2]=727.33  ;ey[2]=0.009;
> >   y[3]=785.37  ;ey[3]=0.08;
> >   y[4]=860.564 ;ey[4]=0.005;
> >   y[5]=893.40  ;ey[5]=0.005;
> >   y[6]=1078.62 ;ey[6]=0.1;
> >   y[7]=1592.54 ;ey[7]=0.013;
> >   y[8]=2103.53 ;ey[8]=0.013;
> > 
> > 
> >   TCanvas* c1=new TCanvas("c1","c1",10,10, 400,300);
> >   TGraphErrors* graph=new TGraphErrors(9,x,y,ex,ey);
> > 
> >   graph->Draw("A*");
> >   graph->Fit("pol2","LEM");
> >   graph->Draw("");
> > 
> >   double p0=graph->GetFunction("pol2")->GetParameter(0);
> >   double p1=graph->GetFunction("pol2")->GetParameter(1);
> >   double p2=graph->GetFunction("pol2")->GetParameter(2);
> > }
> > 
> > 
> 
> Eddy A.J.M. Offermann
> Renaissance Technologies Corp.
> Route 25A, East Setauket NY 11733
> e-mail: eddy@rentec.com
> http://www.rentec.com
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:12 MET