scipy.stats.

正态分布#

class scipy.stats.Normal(mu=None, sigma=None, **kwargs)[源代码]#

具有指定均值和标准差的正态分布。

正态分布的概率密度函数为

\[f(x) = \frac{1}{\sigma \sqrt{2 \pi}} \exp { \left( -\frac{1}{2}\left( \frac{x - \mu}{\sigma} \right)^2 \right)}\]

对于 \(x\) 在 (-∞, ∞) 中。此类接受一个参数化:mu 表示 \(\mu \in (-\infty, \infty)\)sigma 表示 \(\sigma \in (0, \infty)\)

参数:
tol正浮点数,可选

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

validation_policy{None, “skip_all”}

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

cache_policy{None, “no_cache”}

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

另请参阅

随机变量转换指南

教程

注释

整个文档中使用以下缩写。

  • PDF:概率密度函数

  • CDF:累积分布函数

  • CCDF:互补累积分布函数

  • 熵:微分熵

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

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

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

示例

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

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy import stats
>>> from scipy.stats import Normal
>>> X = Normal(mu=-0.81, sigma=0.69)

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

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

可以使用 support 方法获得基础分布的支持。

>>> X.support()
(-inf, inf)

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

>>> X.mu, X.sigma
(-0.81, 0.69)

要评估基础分布在参数 x=-1.13 处的概率密度函数

>>> x = -1.13
>>> X.pdf(x)
0.5192263911374636

累积分布函数、其补数以及这些函数的对数以类似的方式进行评估。

>>> 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 = -0.56
>>> np.allclose(X.ccdf(x, y), 1 - (X.cdf(y) - X.cdf(x)))
True

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

>>> X.mean(), X.median(), X.mode()
(-0.81, -0.81, -0.81)
>>> X.variance(), X.standard_deviation()
(0.4760999999999999, 0.69)
>>> X.skewness(), X.kurtosis()
(0.0, 3.0)
>>> 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([ 0.16207254, -1.20075226, -0.88259226, -1.68711988])  # may vary
属性:
所有参数都作为属性可用。

方法

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

微分熵的对数