统计工具和实用程序

hepstats的Python项目详细描述


Scikit-HEP项目hepstats包:统计工具和实用程序

Scikit-HEP

PyPIPyPI - Python VersionDOICIcodecovBinderCode style: black

安装

安装hepstats与任何其他Python包一样:

pip install hepstats

或者类似的(如果你愿意,可以使用virtualenv)。在

变更日志

请参阅changelog以了解显著变化的历史。在

入门

hepstats模块包括modelinghypotests和{}子模块。这是每个子模块的快速用户指南。binder示例也是开始的好方法。在

建模

建模子模块包括Bayesian Block algorithm,可用于改进直方图的分块。视觉上的改进可以是巨大的,更重要的是,该算法生成的直方图能够准确地表示底层分布,同时对统计波动具有鲁棒性。这是一个应用于拉普拉斯采样数据的算法的小例子,与此样本的直方图进行了精细的分块比较。在

^{pr2}$

bayesian blocks example

低应力

此子模块提供了进行假设检验的工具,如发现检验和计算上限或置信区间。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

upper limit example

喷溅

使用^{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的数据。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何向类添加适用于该类中所有对象的单个@XmlAttribute注释   java未处理的继续记录跟踪类org。阿帕奇。波伊。hssf。记录塔比德雷科德   Eclipse中java代码的rest连接超时,而不是浏览器的rest连接超时   数组我的Java插入排序逻辑有什么问题?   java使用Http客户端进行请求,该请求返回内容类型为“application/vnd.msexcel”的jsp页面   java连接到数据库(Derby)   url编码如何使用java发布而不使用url编码url的查询部分   正则表达式使用Java替换字符串中的模式   Java中声明数组的区别   java hibernate ReferenceColumnNames未映射到单个属性   java如何对地图集合的分层键进行排序?   java ValueAnimator在我的手机上似乎工作不正常   java如何使用Hibernate Lucene搜索访问实体中外键的排序字段名?   在同一台机器上以不同的JAVA路径运行两个Tomcat   java如何在Eclipse中记录最新的git提交哈希?   java为什么我必须将JRE、编译器和facet全部降级为Java1。8在Eclipse中创建简单Web服务时   无法将java DataBufferInt解析为类型