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-F:F 的对数(例如,log-CDF)
inverse F:F 的逆函数(例如,逆 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()
可以使用
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