跳转到主要内容

统计工具和实用程序

项目描述

scikit-stats: 统计工具和实用程序

Build Status Azure DevOps tests Azure DevOps coverage Binder PyPI PyPI - Python Version DOI

安装

像安装其他Python包一样安装scikit-stats

pip install scikit-stats

或类似(如果您希望,请使用--uservirtualenv等)。

入门指南

scikit-stats模块包括建模和假设检验子模块。这是每个子模块的快速用户指南。通过binder示例也是入门的好方法。

建模

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

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from skstats.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

假设检验

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

这里提供了一个简单的发现检验示例,使用zfit作为后端,在已知均值和标准差的高斯信号上,相对于指数背景。

>>> 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, 25)
>>> 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("Ns", 20., -20., N)
>>> Nbkg = zfit.Parameter("Nbkg", N, 0., N*1.1)
>>> signal = Nsig * zfit.pdf.Gauss(obs=obs, mu=1.2, sigma=0.1)
>>> background = Nbkg * zfit.pdf.Exponential(obs=obs, lambda_=lambda_)
>>> loss = ExtendedUnbinnedNLL(model=signal + background, data=data)

>>> from skstats.hypotests.calculators import AsymptoticCalculator
>>> from skstats.hypotests import Discovery
>>> from skstats.hypotests.parameters import POI

>>> calculator = AsymptoticCalculator(loss, Minuit())
>>> poinull = POI(Nsig, 0)
>>> discovery_test = Discovery(calculator, [poinull])
>>> discovery_test.result()

p_value for the Null hypothesis = 0.0007571045424956679
Significance (in units of sigma) = 3.1719464825102244

发现检验会打印出p值和需要拒绝的零假设的显著性。

项目详情


下载文件

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

源分布

scikit-stats-0.1.2.tar.gz (16.7 kB 查看哈希)

上传时间

构建分布

scikit_stats-0.1.2-py2.py3-none-any.whl (24.6 kB 查看哈希)

上传时间 Python 2 Python 3

由以下机构支持

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