统计工具和实用程序
hepstats的Python项目详细描述
Scikit-HEP项目hepstats
包:统计工具和实用程序
安装
安装hepstats
与任何其他Python包一样:
pip install hepstats
或者类似的(如果你愿意,可以使用virtualenv
)。在
变更日志
请参阅changelog以了解显著变化的历史。在
入门
hepstats
模块包括modeling
、hypotests
和{
建模
建模子模块包括Bayesian Block algorithm,可用于改进直方图的分块。视觉上的改进可以是巨大的,更重要的是,该算法生成的直方图能够准确地表示底层分布,同时对统计波动具有鲁棒性。这是一个应用于拉普拉斯采样数据的算法的小例子,与此样本的直方图进行了精细的分块比较。在
^{pr2}$低应力
此子模块提供了进行假设检验的工具,如发现检验和计算上限或置信区间。hepstats需要一个合适的后端来执行诸如zfit之类的计算。如果它们的API与hepstats兼容,则可以使用任何fitting库(参见api checks)。在
我们在这里给出一个简单的例子,计算在指数背景下具有已知平均值和sigma的高斯信号的产量上限。使用的后端是zfit包。在binder示例中还给出了一个^{str1}$计数实验分析的例子。在
>>>importzfit>>>fromzfit.lossimportExtendedUnbinnedNLL>>>fromzfit.minimizeimportMinuit>>>bounds=(0.1,3.0)>>>obs=zfit.Space('x',limits=bounds)>>>bkg=np.random.exponential(0.5,300)>>>peak=np.random.normal(1.2,0.1,10)>>>data=np.concatenate((bkg,peak))>>>data=data[(data>bounds[0])&(data<bounds[1])]>>>N=data.size>>>data=zfit.Data.from_numpy(obs=obs,array=data)>>>lambda_=zfit.Parameter("lambda",-2.0,-4.0,-1.0)>>>Nsig=zfit.Parameter("Nsig",1.,-20.,N)>>>Nbkg=zfit.Parameter("Nbkg",N,0.,N*1.1)>>>signal=zfit.pdf.Gauss(obs=obs,mu=1.2,sigma=0.1).create_extended(Nsig)>>>background=zfit.pdf.Exponential(obs=obs,lambda_=lambda_).create_extended(Nbkg)>>>total=zfit.pdf.SumPDF([signal,background])>>>loss=ExtendedUnbinnedNLL(model=total,data=data)>>>fromhepstats.hypotests.calculatorsimportAsymptoticCalculator>>>fromhepstats.hypotestsimportUpperLimit>>>fromhepstats.hypotests.parametersimportPOI,POIarray>>>calculator=AsymptoticCalculator(loss,Minuit(),asimov_bins=100)>>>poinull=POIarray(Nsig,np.linspace(0.0,25,20))>>>poialt=POI(Nsig,0)>>>ul=UpperLimit(calculator,poinull,poialt)>>>ul.upperlimit(alpha=0.05,CLs=True)Observedupperlimit:Nsig=15.725784747406346Expectedupperlimit:Nsig=11.927442041887158Expectedupperlimit+1sigma:Nsig=16.596396280677116Expectedupperlimit-1sigma:Nsig=8.592750403611896Expectedupperlimit+2sigma:Nsig=22.24864429383046Expectedupperlimit-2sigma:Nsig=6.400549971360598
喷溅
使用^{str1}$sPlot算法的完整示例可以在here中找到。sWeights对于数据样本中的不同组件,使用扩展的概率密度函数和建模,使用compute_sweights
函数导出:
>>>fromhepstats.splotimportcompute_sweights# using same model as above for illustration>>>sweights=compute_sweights(zfit.pdf.SumPDF([signal,background]),data)>>>bkg_sweights=sweights[Nbkg]>>>sig_sweights=sweights[Nsig]
如果没有引起错误,则需要将模型拟合到计算sWeights的数据。在
- 项目
标签: