scipy.stats.Normal.

mode#

Normal.mode(*, method=None)[源代码]#

众数(最可能的值)

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

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

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

  • 'formula': 使用中位数的公式

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

并非所有分布都提供所有 method 选项。如果所选的 method 不可用,则会引发 NotImplementedError

返回:
outarray

众数

另请参阅

mean
median
pdf

说明

对于某些分布

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

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

  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