低计数时间谱:Least-squares 与 Poisson likelihood
%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:
- 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$拟合和最大似然法拟合的适用范围
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$拟合
c.Clear();
f->Fit("pol0","");
c.Draw();
**************************************** Minimizer is Linear / Migrad Chi2 = 0 NDf = 2 p0 = 2 +/- 0.816497
默认是$\chi^2$拟合,空bin直接忽略. 仅三个bin参与拟合。mean=(2+2+2)/3=2
使用最大似然法拟合
c.Clear();
f->Fit("pol0","L");
c.Draw();
**************************************** Minimizer is Minuit2 / Migrad MinFCN = 7.22384 Chi2 = 14.4477 NDf = 9 Edm = 6.95644e-09 NCalls = 52 p0 = 0.599971 +/- 0.244937
使用 L 后,10 个 bin 都参与 Poisson likelihood,得到 $p_0=6/10=0.6$。零计数也是信息:若预期为 $\mu$,观测到零的概率为 $e^{-\mu}$。
对本章未扣本底、未加权的计数时间谱,使用 Poisson likelihood,尤其不要忽略低计数和空 bin。并非所有含空 bin 的图都可使用 L:本底相减后的净谱不服从 Poisson 分布。
参考:ROOT TH1::Fit。
cout << "Total counts = " << f->Integral() << ", bins = " << f->GetNbinsX() << endl;
Total counts = 6, bins = 10
