scipy.stats.

Uniform#

class scipy.stats.Uniform(*, a=None, b=None, **kwargs)[source]#

均勻分佈。

均勻分佈的機率密度函數為

\[f(x; a, b) = \frac{1} {b - a}\]

對於 \(x\) 在 [a, b] 區間。 此類別接受一種參數化:a 對於 \(a \in (-\infty, \infty)\)b 對於 \(b \in (a, \infty)\)

參數:
tol正浮點數,可選

計算所需的相對容忍度。 若未指定,計算速度可能會更快;若有提供,計算結果可能更符合所需的準確度。

validation_policy{None, “skip_all”}

指定要執行的輸入驗證等級。 若未指定,則會執行輸入驗證,以確保在邊緣情況(例如,參數超出定義域、引數超出分佈支援等)下的適當行為,並提高輸出 dtype、形狀等的一致性。 傳遞 'skip_all' 以避免在可接受粗略邊緣時,進行這些檢查的計算開銷。

cache_policy{None, “no_cache”}

指定快取中間結果的程度。 若未指定,則會快取某些計算的中間結果(例如,分佈支援、動差等),以提高未來計算的效能。 傳遞 'no_cache' 以減少類別實例保留的記憶體。

另請參閱

隨機變數轉換指南

教學

筆記

以下縮寫用於整個文件。

  • PDF:機率密度函數

  • CDF:累積分布函數

  • CCDF:互補 CDF

  • entropy:微分熵

  • log-FF 的對數 (例如 log-CDF)

  • inverse FF 的反函數 (例如 inverse CDF)

API 文件旨在描述 API,而非作為統計參考。 我們努力在使用功能所需的層級上保持正確,而非在數學上嚴謹。 例如,可能會隱含地假設連續性和可微分性。 如需精確的數學定義,請查閱您偏好的數學文本。

範例

若要使用分佈類別,必須使用與接受的參數化之一相對應的關鍵字參數來實例化它。

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy import stats
>>> from scipy.stats import Uniform
>>> X = Uniform(a=0.09, b=188.73)

為了方便起見,可以使用 plot 方法來視覺化分佈的密度和其他函數。

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

基礎分佈的支援可使用 support 方法取得。

>>> X.support()
(0.09, 188.73)

與所有參數化相關聯的參數數值可作為屬性使用。

>>> X.a, X.b, X.ab
(0.09, 188.73, 188.64)

若要在引數 x=60.45 處評估基礎分佈的機率密度函數

>>> x = 60.45
>>> X.pdf(x)
0.005301102629346905

累積分布函數、其互補函數以及這些函數的對數,其評估方式類似。

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

有方法可用於計算集中趨勢、離散程度、更高階動差和熵的度量。

>>> X.mean(), X.median(), X.mode()
(94.41, 94.41, 94.41)
>>> X.variance(), X.standard_deviation()
(2965.4208, 54.4556773899655)
>>> X.skewness(), X.kurtosis()
(1.4418186690070737e-15, 1.7999999999999878)
>>> 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([156.56241121,   4.74906191, 187.80175725,  49.83554959])  # 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])

微分熵的對數