scipy.stats.

rv_histogram#

class scipy.stats.rv_histogram(histogram, *args, density=None, **kwargs)[源代码]#

生成由直方图给出的分布。非常适合从已分仓的数据样本中生成模板分布。

作为 rv_continuous 类的子类,rv_histogram 从该类继承了一组泛型方法(有关完整列表,请参见 rv_continuous),并根据提供的数据样本的属性来执行这些方法。

参数:
histogramarray_like 的元组

包含两个 array_like 对象的元组。第一个包含 n 个 bin 的内容,第二个包含 (n+1) 个 bin 边界。特别是,numpy.histogram 的返回值被接受。

密度布尔值,可选

如果为 False,则假定直方图与每个直方块的计数成正比;否则,假定它与概率密度成正比。对于固定直方块宽度,这两者是等效的,但是在直方块宽度发生变化时,这个区别是很重要的(参见注解)。如果为 None(默认值),则将 密度=True 设置为向后兼容,但是如果直方块宽度可变时会发出警告。显式将 密度 设置为静默警告。

在版本 1.10.0 中添加。

注解

当直方图具有不等的直方块宽度时,与每个直方块的计数成正比的直方图和与直方块上的概率密度成正比的直方图之间存在区别。如果使用其默认值 density=False 调用 numpy.histogram,则所得直方图每个直方块的计数,因此,应将 density=False 传递给 rv_histogram。如果使用 density=True 调用 numpy.histogram,则所得直方图针对概率密度,因此,应将 density=True 传递给 rv_histogram。为避免出现警告,请始终在输入直方图具有不等直方块宽度时显式传递 density

除了 loc 和 scale 以外,没有其他形状参数。pdf 被定义为从给定直方图的一个逐步函数。cdf 是 pdf 的线性插值。

在版本 0.19.0 中添加。

示例

从 Numpy 直方图创建 scipy.stats 分布

>>> import scipy.stats
>>> import numpy as np
>>> data = scipy.stats.norm.rvs(size=100000, loc=0, scale=1.5,
...                             random_state=123)
>>> hist = np.histogram(data, bins=100)
>>> hist_dist = scipy.stats.rv_histogram(hist, density=False)

行为如同一个普通的 scipy rv_continuous 分布

>>> hist_dist.pdf(1.0)
0.20538577847618705
>>> hist_dist.cdf(2.0)
0.90818568543056499

pdf 在直方图最高(最低)直方块的上面(下面)为零,由原始数据集的最大值(最小值)定义的

>>> hist_dist.pdf(np.max(data))
0.0
>>> hist_dist.cdf(np.max(data))
1.0
>>> hist_dist.pdf(np.min(data))
7.7591907244498314e-05
>>> hist_dist.cdf(np.min(data))
0.0

pdf 和 cdf 遵循直方图

>>> import matplotlib.pyplot as plt
>>> X = np.linspace(-5.0, 5.0, 100)
>>> fig, ax = plt.subplots()
>>> ax.set_title("PDF from Template")
>>> ax.hist(data, density=True, bins=100)
>>> ax.plot(X, hist_dist.pdf(X), label='PDF')
>>> ax.plot(X, hist_dist.cdf(X), label='CDF')
>>> ax.legend()
>>> fig.show()
../../_images/scipy-stats-rv_histogram-1.png
属性:
random_state

获取或设置用于生成随机变量的生成器对象。

方法

__call__(*args, **kwds)

冻结具有指定参数的分布。

cdf(x, *args, **kwds)

给定随机变量的累积分布函数。

entropy(*args, **kwds)

随机变量的微分熵。

expect([func, args, loc, scale, lb, ub, ...])

通过数值积分计算相对于分布的函数期望值。

fit(data, *args, **kwds)

从数据返回形状(如果适用)、位置和缩放参数的估计值。

fit_loc_scale(data, *args)

使用第 1 阶和第 2 阶矩从数据中估计 loc 和 scale 参数。

freeze(*args, **kwds)

冻结具有指定参数的分布。

interval(confidence, *args, **kwds)

中位数周围具有相等面积的置信区间。

isf(q, *args, **kwds)

给定随机变量在 q 处的逆生存函数(sf 的逆)。

logcdf(x, *args, **kwds)

给定随机变量在 x 处的累积分布函数的对数。

logpdf(x, *args, **kwds)

给定随机变量在 x 处的概率密度函数的对数。

logsf(x, *args, **kwds)

给定 RV 生存函数的对数。

mean(*args, **kwds)

分布的均值。

median(*args, **kwds)

分布的中位数。

moment(order, *args, **kwds)

指定阶数分布的非中心距。

nnlf(theta, x)

负对数似然函数。

pdf(x, *args, **kwds)

给定 RV 在 x 处的概率密度函数。

ppf(q, *args, **kwds)

cdf) 给定 RV 在 q 处的百分位数函数(逆函数)。

rvs(*args, **kwds)

给定类型的随机变量。

sf(x, *args, **kwds)

给定 RV 在 x 处的生存函数(1 - cdf)。

stats(*args, **kwds)

给定 RV 的一些统计数据。

std(*args, **kwds)

分布的标准差。

support(*args, **kwargs)

分布的支持。

var(*args, **kwds)

分布的方差。