scipy.stats.Normal.
mode#
- Normal.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
众数
备注
对于某些分布
众数不是唯一的(例如,均匀分布);
PDF 有一个或多个奇点,并且奇点是否被认为在域中并被称为众数是有争议的(例如,形状参数小于 1 的伽玛分布);和/或
概率密度函数可能有一个或多个不是全局最大值的局部最大值(例如,混合分布)。
在这种情况下,
mode
将返回单个值,
考虑在奇点处发生众数,和/或
返回局部最大值,该最大值可能是也可能不是全局最大值。
如果未为所选分布专门实现众数公式,SciPy 将尝试以数值方式计算众数,这可能不符合用户首选的众数定义。在这种情况下,鼓励用户继承分布并覆盖
mode
。参考文献
[1]Mode (statistics), Wikipedia, 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