scipy.stats.Uniform.

众数#

Uniform.mode(*, method=None)[source]#

众数(最可能的值)

非正式地说,众数是随机变量具有最高概率(密度)的值。也就是说,众数是支持集 \(\chi\) 的元素,该元素最大化了概率密度(或质量,对于离散随机变量)函数 \(f(x)\)

\[\text{mode} = \arg\max_{x \in \chi} f(x)\]
参数:
method{None, ‘formula’, ‘optimization’}

用于评估众数的策略。默认情况下 (None),基础设施在以下选项之间进行选择,按优先级顺序列出。

  • 'formula': 使用公式计算中位数

  • 'optimization': 数值上最大化 PDF/PMF

并非所有 method 选项都适用于所有分布。如果选择的 method 不可用,则将引发 NotImplementedError

返回值:
outarray

众数

注释

对于某些分布

  1. 众数不是唯一的(例如,均匀分布);

  2. PDF 有一个或多个奇点,并且奇点是否被认为在域中并称为众数是有争议的(例如,形状参数小于 1 的 gamma 分布);和/或

  3. 概率密度函数可能具有一个或多个不是全局最大值的局部最大值(例如,混合分布)。

在这些情况下,mode

  1. 返回单个值,

  2. 考虑在奇点处出现众数,和/或

  3. 返回局部最大值,该值可能是也可能不是全局最大值。

如果未针对所选分布专门实现众数公式,SciPy 将尝试以数值方式计算众数,这可能不符合用户首选的众数定义。在这种情况下,鼓励用户对分布进行子类化并覆盖 mode

参考文献

[1]

众数(统计),维基百科https://en.wikipedia.org/wiki/Mode_(statistics)

示例

使用所需的参数实例化分布

>>> from scipy import stats
>>> X = stats.Normal(mu=1., sigma=2.)

评估众数

>>> X.mode()
1.0

如果众数不是唯一确定的,mode 仍然返回一个值。

>>> X = stats.Uniform(a=0., b=1.)
>>> X.mode()
0.5

如果此选择不满足您的要求,请对分布进行子类化并覆盖 mode

>>> class BetterUniform(stats.Uniform):
...     def mode(self):
...         return self.b
>>> X = BetterUniform(a=0., b=1.)
>>> X.mode()
1.0