跳转到主要内容

统计工具和实用程序

项目描述

hepstats包: 统计工具和实用程序

Scikit-HEP

PyPI PyPI - Python Version Conda latest release DOI

CI codecov Code style: black

Binder

hepstats是一个用于统计推断的库,旨在满足高能物理的需求。它是Scikit-HEP项目的一部分。

问题:有关使用问题,请使用带有hepstats标签的StackOverflow错误和异常行为:在hepstats上打开问题

安装

像其他Python包一样安装hepstats

pip install hepstats

或类似(如果您希望,可以使用virtualenv)。

变更日志

查看显著变更的历史记录,请参阅变更日志

入门指南

hepstats模块包括modelinghypotestssplot子模块。以下是每个子模块的快速用户指南。binder示例也是入门的好方法。binder

建模

建模子模块包括可以用于改进直方图分箱的贝叶斯块算法。视觉效果可能非常明显,更重要的是,此算法生成的直方图可以准确地表示底层分布,同时对统计波动具有鲁棒性。以下是一个在拉普拉斯采样数据上应用此算法的小示例,与细分箱的此样本直方图进行比较。

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from hepstats.modeling import bayesian_blocks

>>> data = np.random.laplace(size=10000)
>>> blocks = bayesian_blocks(data)

>>> plt.hist(data, bins=1000, label='Fine Binning', density=True, alpha=0.6)
>>> plt.hist(data, bins=blocks, label='Bayesian Blocks', histtype='step', density=True, linewidth=2)
>>> plt.legend(loc=2)

bayesian blocks example

假设检验

此子模块提供了进行假设检验的工具,例如发现检验和上限或置信区间的计算。hepstats需要一个拟合后端来执行计算,例如zfit。如果API与hepstats兼容,则可以使用任何拟合库(参见API检查)。

我们在此提供了一个简单示例,计算具有已知均值和sigma的Gaussian信号的产额上限,在指数背景上。使用的拟合后端是zfit包。在binder示例中还有一个关于计数实验分析的示例。

>>> import zfit
>>> from zfit.loss import ExtendedUnbinnedNLL
>>> from zfit.minimize import Minuit

>>> 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)

>>> from hepstats.hypotests.calculators import AsymptoticCalculator
>>> from hepstats.hypotests import UpperLimit
>>> from hepstats.hypotests.parameters import POI, 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)

Observed upper limit: Nsig = 15.725784747406346
Expected upper limit: Nsig = 11.927442041887158
Expected upper limit +1 sigma: Nsig = 16.596396280677116
Expected upper limit -1 sigma: Nsig = 8.592750403611896
Expected upper limit +2 sigma: Nsig = 22.24864429383046
Expected upper limit -2 sigma: Nsig = 6.400549971360598

upper limit example

spplots

有关使用sPlot算法的完整示例,请参阅此处。使用compute_sweights函数从数据样本的不同组件中推导出sWeights,该样本使用扩展概率密度函数的总和进行建模。

>>> from hepstats.splot import compute_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,则需要拟合模型,否则会引发错误。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

hepstats-0.8.1.tar.gz (16.7 MB 查看散列值)

上传时间

构建分布

hepstats-0.8.1-py3-none-any.whl (41.9 kB 查看散列值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面