scipy.stats.Uniform.

眾數#

Uniform.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

眾數

另請參閱

平均數
中位數
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