當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy stats.rv_discrete用法及代碼示例


本文簡要介紹 python 語言中 scipy.stats.rv_discrete 的用法。

用法:

class  scipy.stats.rv_discrete(a=0, b=inf, name=None, badvalue=None, moment_tol=1e-08, values=None, inc=1, longname=None, shapes=None, seed=None)#

用於子類化的通用離散隨機變量類。

rv_discrete 是為離散隨機變量構造特定分布類和實例的基類。它還可用於構造由支持點列表和相應概率定義的任意分布。

參數

a 浮點數,可選

分布支持的下限,默認值:0

b 浮點數,可選

分布支持的上限,默認:加無窮大

moment_tol 浮點數,可選

力矩的通用計算的公差。

values 兩個 數組 的元組,可選

(xk, pk) 其中 xk 是整數,pksum(pk) = 1 0 和 1 之間的非零概率。 xkpk 必須具有相同的形狀,並且xk 必須是唯一的。

inc 整數,可選

增量支持分布。默認為 1。(其他值未測試)

badvalue 浮點數,可選

結果數組中的值指示違反了某些參數限製的值,默認為 np.nan。

name str,可選

實例的名稱。此字符串用於構造分布的默認示例。

longname str,可選

當子類沒有自己的文檔字符串時,此字符串用作返回的文檔字符串的第一行的一部分。注意:longname 的存在是為了向後兼容,不要用於新的子類。

shapes str,可選

分布的形狀。例如,“m, n”表示將兩個整數作為其所有方法的兩個形狀參數的分布 如果未提供,將從實例的私有方法_pmf_cdf .

seed {無,int, numpy.random.Generator numpy.random.RandomState },可選

如果種子是無(或np.random), 這numpy.random.RandomState使用單例。如果種子是一個 int,一個新的RandomState使用實例,播種種子.如果種子已經是一個Generator或者RandomState實例然後使用該實例。

注意

該類類似於 rv_continuous 。形狀參數是否有效由 _argcheck 方法決定(默認檢查其參數是否嚴格為正)。主要區別如下。

  • 分布的支持是一組整數。

  • 代替概率密度函數,pdf(以及相應的私有_pdf),這個類定義了概率質量函數,pmf(以及相應的私有_pmf.)

  • 沒有scale 參數。

  • 方法的默認實現(例如 _cdf )不適用於具有以下無限支持的發行版(即 a=-np.inf ),因此必須重寫它們。

要創建新的離散分布,我們將執行以下操作:

>>> from scipy.stats import rv_discrete
>>> class poisson_gen(rv_discrete):
...     "Poisson distribution"
...     def _pmf(self, k, mu):
...         return exp(-mu) * mu**k / factorial(k)

並創建一個實例:

>>> poisson = poisson_gen(name="poisson")

請注意,上麵我們以標準形式定義了泊鬆分布。可以通過向實例的方法提供loc 參數來改變分布。例如,poisson.pmf(x, mu, loc) 將工作委托給 poisson._pmf(x-loc, mu)

概率列表中的離散分布

或者,您可以通過使用 rv_discrete 構造函數的 values 關鍵字參數來構造在有限值集 xkProb{X=xk} = pk 上定義的任意離散 rv。

深複製/酸洗

如果對分布或凍結分布進行深度複製(pickled/unpickled 等),則任何底層隨機數生成器都會隨之進行深度複製。這意味著,如果一個發行版在複製之前依賴於單例 RandomState,那麽它將在複製後依賴於該隨機狀態的副本,並且 np.random.seed 將不再控製該狀態。

例子

定製離散分布:

>>> import numpy as np
>>> from scipy import stats
>>> xk = np.arange(7)
>>> pk = (0.1, 0.2, 0.3, 0.1, 0.1, 0.0, 0.2)
>>> custm = stats.rv_discrete(name='custm', values=(xk, pk))
>>>
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
>>> ax.plot(xk, custm.pmf(xk), 'ro', ms=12, mec='r')
>>> ax.vlines(xk, 0, custm.pmf(xk), colors='r', lw=4)
>>> plt.show()
scipy-stats-rv_discrete-1_00_00.png

隨機數生成:

>>> R = custm.rvs(size=100)

屬性

random_state

獲取或設置生成隨機變量的生成器對象。

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.rv_discrete。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。