Least Square 和 Likelihood fitting

In [1]:
//%jsroot on
TCanvas c;

观测值:$({x_i,y_i})$, $i$=0,1,... N

拟合值: 在参数$\alpha$下,$f(x_i|\alpha)$,

最大似然法拟合

  • 寻找NLL最小时的$\alpha$值

  • 假设${y_i}$服从Poisson 分布,即平均值为$f(x_i|\alpha)$时观测值取$y_i$的概率为Poisson分布: $$ Poisson(y_i,f(x_i|\alpha))=\frac{e^{f(x_i|\alpha)} f(x_i|\alpha)^{y_i}}{y_i!} $$

  • Likelihood:
$$ L(\alpha)=\prod_i{Poisson(y_i,f(x_i|\alpha))} $$
  • Negative log-likelihood $$ NLL=-Log(L(\alpha)) $$

最小二乘法拟合

  • 假设$y_i$ 服从Gauss分布, 寻找$\chi^2$最小时的参数$\alpha$ $$ \chi^2=\sum_i{(\frac{y_i-f(x_i|\alpha)}{\sqrt{ y_i}})^2} $$

  • 当数据有空bin,即在$y_i=0$处,$1/ \sqrt{y_i} \to \infty$。 ROOT的Fit算法直接忽略该点!!

ROOT- Fit函数的参数

  • L: Uses a log likelihood method (default is chi-square method). To be used when the histogram represents counts.
  • QV 用来设置拟合输出的选项,Q表示不输出,V表示输出。
  • R 将TF1函数的区间作为拟合区间

关于$\chi^2$拟合和最大似然法拟合的适用范围

In [2]:
TH1F *f=new TH1F("f","f",10,0,10);
f->Fill(2);
f->Fill(4);
f->Fill(7);
f->Fill(2);
f->Fill(4);
f->Fill(7);

使用默认$\chi^2$拟合

In [3]:
c.Clear();
f->Fit("pol0","");
c.Draw();
****************************************
Minimizer is Linear
Chi2                      =  2.95823e-31
NDf                       =            2
p0                        =            2   +/-   0.816497    

默认是$\chi^2$拟合,空bin直接忽略. 仅三个bin参与拟合。mean=(2+2+2)/3=2

使用最大似然法拟合

In [4]:
c.Clear();
f->Fit("pol0","L");
c.Draw();
 FCN=7.22384 FROM MIGRAD    STATUS=CONVERGED      51 CALLS          52 TOTAL
                     EDM=1.39129e-08    STRATEGY= 1      ERROR MATRIX ACCURATE 
  EXT PARAMETER                                   STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  p0           5.99971e-01   2.44937e-01   4.78758e-04  -4.81564e-04
                               ERR DEF= 0.5

加入"L"选项为likelihood拟合,10个bin均参与拟合, p0=(2+2+2)/10=0.6

当拟合数据有空bin时Fit函数应该使用L选项!!!

In [8]:
!jupyter nbconvert fitting_LS_LH.ipynb --to html
[NbConvertApp] Converting notebook fitting_LS_LH.ipynb to html


[NbConvertApp] Writing 304125 bytes to fitting_LS_LH.html


In [ ]: