Maximum likelihood method

In [1]:
TCanvas *c1=new TCanvas;
float tau=1.0;
In [2]:
TRandom3 *r=new TRandom3();
TH1F *h1=new TH1F("h1","h1",10000,0,10);//unbinned
TH1F *h2=new TH1F("h2","h2",20,0,10);//binnded 
float tsum=0;
int ntot=50;
In [3]:
for(int i=0;i<ntot;i++) {
    float t1=r->Exp(tau);
    tsum +=t1;
    h1->Fill(t1);
    h2->Fill(t1);
}

unbinned likelihood

In [4]:
h1->Draw();
h1->SetMaximum(2);
c1->Draw();

LogL($\tau$)~$\tau$ curve

In [5]:
TGraph *gLogML=new TGraph();
for(int i=0;i<120;i++)
{
    float tau=0.7+0.01*i;
    float LogML=ntot*log(1./tau)-tsum/tau;
    gLogML->SetPoint(i,tau,LogML);
}
c1->Clear();
gLogML->Draw();
c1->Draw();
In [6]:
float tau_exp=tsum/ntot;
cout<<"Expected tau for Maximum likelihood estimation is "<<tau_exp<<endl;
cout<<"Sigma is "<<tau_exp*tau_exp/ntot<<endl;
Expected tau for Maximum likelihood estimation is 1.06445
Sigma is 0.022661

Binned Maximum likelihood

In [7]:
TF1 *f1=new TF1("f1","[0]*TMath::Exp(-x/[1])",0,8);
f1->SetParNames("const","lambda");
f1->SetParameter(1,1);
In [8]:
gPad->SetLogy();
h2->Draw();
h2->Fit(f1,"LRI");//L-binned Maximum likelihood , I- integration 
c1->Draw();
 FCN=4.9453 FROM MIGRAD    STATUS=CONVERGED     278 CALLS         279 TOTAL
                     EDM=3.33494e-08    STRATEGY= 1      ERROR MATRIX ACCURATE 
  EXT PARAMETER                                   STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  const        2.32615e+01   4.70297e+00   5.29446e-03   5.83166e-06
   2  lambda       1.07537e+00   1.56059e-01   1.76155e-04  -1.03812e-03
                               ERR DEF= 0.5

Least square method

  • problem with histogram bins which are empty
In [9]:
h2->Draw();
h2->Fit(f1,"RI");//LS is defalut fitting method in ROOT
c1->Draw();
 FCN=4.15077 FROM MIGRAD    STATUS=CONVERGED      38 CALLS          39 TOTAL
                     EDM=3.97489e-09    STRATEGY= 1      ERROR MATRIX ACCURATE 
  EXT PARAMETER                                   STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  const        2.10996e+01   4.60529e+00   3.45463e-03   6.81992e-06
   2  lambda       1.13927e+00   2.15137e-01   1.61224e-04  -2.95001e-04

ML vs LS with high statistics

In [10]:
TH1F *h3=new TH1F("h3","h3",20,0,10);//binnded 
for(int i=0;i<10000;i++) {
    float t1=r->Exp(tau);
    h3->Fill(t1);
}
In [11]:
h3->Fit(f1,"LRI");//ML
c1->Draw();
 FCN=4.47272 FROM MIGRAD    STATUS=CONVERGED     178 CALLS         179 TOTAL
                     EDM=5.88787e-07    STRATEGY= 1      ERROR MATRIX ACCURATE 
  EXT PARAMETER                                   STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  const        5.02413e+03   7.17359e+01   7.74100e-02   7.25679e-06
   2  lambda       9.95223e-01   1.01678e-02   1.09642e-05   1.02939e-01
                               ERR DEF= 0.5
In [12]:
h3->Fit(f1,"RI");//LS
c1->Draw();
 FCN=8.78984 FROM MIGRAD    STATUS=CONVERGED      30 CALLS          31 TOTAL
                     EDM=7.00348e-07    STRATEGY= 1      ERROR MATRIX ACCURATE 
  EXT PARAMETER                                   STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  const        5.03695e+03   7.17679e+01   7.68501e-02  -2.34812e-05
   2  lambda       9.91799e-01   1.00857e-02   1.08262e-05  -1.20229e-01