//%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!} $$
假设$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算法直接忽略该点!!
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);
c.Clear();
f->Fit("pol0","");
c.Draw();
默认是$\chi^2$拟合,空bin直接忽略. 仅三个bin参与拟合。mean=(2+2+2)/3=2
c.Clear();
f->Fit("pol0","L");
c.Draw();
加入"L"选项为likelihood拟合,10个bin均参与拟合, p0=(2+2+2)/10=0.6
!jupyter nbconvert fitting_LS_LH.ipynb --to html