scipy.stats.

Uniform#

class scipy.stats.Uniform(*, a=None, b=None, **kwargs)[source]#

均匀分布。

均匀分布的概率密度函数为

\[f(x; a, b) = \frac{1} {b - a}\]

对于 \(x \in [a, b]\)。 此类接受一个参数化:a 对于 \(a \in (-\infty, \infty)\), b 对于 \(b \in (a, \infty)\)

参数:
tol正浮点数,可选

计算所需的相对容差。如果未指定,计算可能会更快;如果提供,计算可能更可能满足所需的精度。

validation_policy{None, “skip_all”}

指定要执行的输入验证级别。 如果未指定,则执行输入验证以确保边缘情况下(例如,参数超出域,参数超出分布支持等)的适当行为,并提高输出 dtype、shape 等的一致性。传递 'skip_all' 以避免在粗略边缘可接受时这些检查的计算开销。

cache_policy{None, “no_cache”}

指定中间结果的缓存程度。 如果未指定,则缓存某些计算(例如,分布支持、矩等)的中间结果,以提高未来计算的性能。 传递 'no_cache' 以减少类实例保留的内存。

属性:
所有参数均可用作属性。

方法

support()

随机变量的支持

plot([x, y, t, ax])

绘制分布的函数。

sample([shape, method, rng])

从分布中抽取随机样本。

moment([order, kind, method])

正整数阶的原始矩、中心矩或标准矩。

mean(*[, method])

均值(关于原点的原始一阶矩)

median(*[, method])

中位数(第50个百分位数)

mode(*[, method])

众数(最可能的值)

variance(*[, method])

方差(中心二阶矩)

standard_deviation(*[, method])

标准差(中心二阶矩的平方根)

skewness(*[, method])

偏度(标准化三阶矩)

kurtosis(*[, method, convention])

峰度(标准化四阶矩)

pdf(x, /, *[, method])

概率密度函数

logpdf(x, /, *[, method])

概率密度函数的对数

cdf(x[, y, method])

累积分布函数

icdf(p, /, *[, method])

累积分布函数的逆函数。

ccdf(x[, y, method])

互补累积分布函数

iccdf(p, /, *[, method])

互补累积分布函数的逆函数。

logcdf(x[, y, method])

累积分布函数的对数

ilogcdf(logp, /, *[, method])

累积分布函数对数的逆函数。

logccdf(x[, y, method])

互补累积分布函数的对数

ilogccdf(logp, /, *[, method])

互补累积分布函数对数的逆函数。

entropy(*[, method])

微分熵

logentropy(*[, method])

微分熵的对数

注释

以下缩写贯穿整个文档。

  • PDF:概率密度函数

  • CDF:累积分布函数

  • CCDF:互补 CDF

  • entropy:微分熵

  • log-FF 的对数(例如,log-CDF)

  • inverse FF 的逆函数(例如,逆 CDF)

API 文档旨在描述 API,而不是作为统计参考。 努力在使用的功能所需的级别上是正确的,而不是在数学上是严格的。 例如,可以隐式假定连续性和可微性。 对于精确的数学定义,请查阅您喜欢的数学文本。

示例

要使用分布类,必须使用与接受的参数化之一对应的关键字参数实例化它。

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy import stats
>>> from scipy.stats import Uniform
>>> X = Uniform(a=0.09, b=188.73)

为方便起见,可以使用 plot 方法来可视化分布的密度和其他函数。

>>> X.plot()
>>> plt.show()
../../_images/scipy-stats-Uniform-1_00_00.png

可以使用 support 方法获得底层分布的支持。

>>> X.support()
(np.float64(0.09), np.float64(188.73))

与所有参数化关联的参数的数值可用作属性。

>>> X.a, X.b, X.ab
(np.float64(0.09), np.float64(188.73), np.float64(188.64))

要评估参数 x=60.45 处底层分布的概率密度/质量函数

>>> x = 60.45
>>> X.pdf(x), X.pmf(x)
(np.float64(0.005301102629346905), np.float64(0.0))

累积分布函数、其补函数以及这些函数的对数的计算方式类似。

>>> np.allclose(np.exp(X.logccdf(x)), 1 - X.cdf(x))
True

这些函数关于参数 x 的逆函数也可用。

>>> logp = np.log(1 - X.ccdf(x))
>>> np.allclose(X.ilogcdf(logp), x)
True

请注意,分布函数及其对数也有两个参数的版本,用于处理两个参数之间的概率质量。 结果往往比朴素实现更准确,因为它避免了减法抵消。

>>> y = 120.82
>>> np.allclose(X.ccdf(x, y), 1 - (X.cdf(y) - X.cdf(x)))
True

有用于计算集中趋势、离散度、更高矩和熵的方法。

>>> X.mean(), X.median(), X.mode()
(np.float64(94.41), np.float64(94.41), np.float64(94.41))
>>> X.variance(), X.standard_deviation()
(np.float64(2965.4208), np.float64(54.4556773899655))
>>> X.skewness(), X.kurtosis()
(np.float64(1.4418186690070737e-15), np.float64(1.7999999999999878))
>>> np.allclose(X.moment(order=6, kind='standardized'),
...             X.moment(order=6, kind='central') / X.variance()**3)
True
>>> np.allclose(np.exp(X.logentropy()), X.entropy())
True

可以使用 sample 从底层分布中抽取伪随机样本。

>>> X.sample(shape=(4,))
array([ 89.87004513, 144.51218312,  66.75007567, 108.50801127])  # may vary