本文簡要介紹 python 語言中 scipy.stats.rv_continuous
的用法。
用法:
class scipy.stats.rv_continuous(momtype=1, a=None, b=None, xtol=1e-14, badvalue=None, name=None, longname=None, shapes=None, seed=None)#
用於子類化的通用連續隨機變量類。
rv_continuous
是為連續隨機變量構造特定分布類和實例的基類。它不能直接用作發行版。- momtype: 整數,可選
要使用的通用矩計算類型:0 表示 pdf,1(默認)表示 ppf。
- a: 浮點數,可選
分布支持的下限,默認為負無窮大。
- b: 浮點數,可選
分布支持的上限,默認為正無窮大。
- xtol: 浮點數,可選
通用 ppf 的定點計算容差。
- badvalue: 浮點數,可選
結果數組中的值指示違反了某些參數限製的值,默認為 np.nan。
- name: str,可選
實例的名稱。此字符串用於構造分布的默認示例。
- longname: str,可選
當子類沒有自己的文檔字符串時,此字符串用作返回的文檔字符串的第一行的一部分。注意:longname 的存在是為了向後兼容,不要用於新的子類。
- shapes: str,可選
分布的形狀。例如
"m, n"
用於將兩個整數作為其所有方法的兩個形狀參數的分布。如果未提供,形狀參數將從實例的私有方法_pdf
和_cdf
的簽名中推斷出來。- seed: {無,int,
numpy.random.Generator
,numpy.random.RandomState
},可選 如果種子是無(或np.random), 這
numpy.random.RandomState
使用單例。如果種子是一個 int,一個新的RandomState
使用實例,播種種子.如果種子已經是一個Generator
或者RandomState
實例然後使用該實例。
參數 ::
注意:
分發類實例的公共方法(例如,
pdf
、cdf
)檢查它們的參數並將有效參數傳遞給私有計算方法(_pdf
、_cdf
)。對於pdf(x)
,如果x
在發行版的支持範圍內,則它是有效的。形狀參數是否有效由_argcheck
方法決定(默認檢查其參數是否為嚴格正數。)子類化
新的隨機變量可以通過子類化
rv_continuous
類並至少重新定義_pdf
或_cdf
方法(標準化為位置 0 和比例 1)來定義。如果您的 RV 的正參數檢查不正確,那麽您還需要重新定義
_argcheck
方法。對於大多數 scipy.stats 分布,支持區間不依賴於形狀參數。
x
處於支持區間相當於self.a <= x <= self.b
。如果支撐的任一端點確實依賴於形狀參數,則 i) 分布必須實現_get_support
方法; ii) 必須從分發對rv_continuous
初始化程序的調用中省略這些依賴端點。其餘方法存在正確但可能較慢的默認值,但為了速度和/或準確性,您可以覆蓋:
_logpdf, _cdf, _logcdf, _ppf, _rvs, _isf, _sf, _logsf
默認方法
_rvs
依賴於應用到統一隨機變量的 cdf 的倒數_ppf
。為了有效地生成隨機變量,或者需要覆蓋默認的_ppf
(例如,如果逆 cdf 可以以顯式形式表示),或者需要在自定義_rvs
方法中實現采樣方法。如果可能,您應該覆蓋
_isf
、_sf
或_logsf
。主要原因是為了提高數值精度:例如,生存函數_sf
被計算為1 - _cdf
,如果_cdf(x)
接近一,這可能會導致精度損失。可以被子類覆蓋的方法
_rvs _pdf _cdf _sf _ppf _isf _stats _munp _entropy _argcheck _get_support
還有其他(內部和私有)通用方法可用於cross-checking 和調試,但在直接調用時可能適用於所有情況。
關於
shapes
: 子類不需要明確指定它們。在這種情況下,形狀將自動從重寫方法的簽名中推斷出來(pdf
,cdf
等等)。如果出於某種原因,您希望避免依賴自省,則可以指定shapes
顯式地作為實例構造函數的參數。凍結分布
通常,您必須為分布方法的每次調用提供形狀參數(以及可選的位置和比例參數)。
或者,可以調用對象(作為函數)來修複形狀、位置和比例參數,返回 “frozen” 連續 RV 對象:
rv_frozen 對象具有相同的方法,但保持給定的形狀、位置和比例是固定的
rv = generic(<shape(s)>, loc=0, scale=1):
統計數據
默認情況下使用數值積分計算統計數據。為了速度,您可以使用
_stats
重新定義它:take shape parameters and return mu, mu2, g1, g2
If you can’t compute one of these, return it as None
Can also be defined with a keyword argument
moments
, which is a string composed of “m”, “v”, “s”, and/or “k”. Only the components appearing in string should be computed and returned in the order “m”, “v”, “s”, or “k” with missing values returned as None.
或者,您可以覆蓋
_munp
,它采用n
和形狀參數並返回分布的 n-th 非中心矩。深複製/酸洗
如果對分布或凍結分布進行深度複製(pickled/unpickled 等),則任何底層隨機數生成器都會隨之進行深度複製。這意味著,如果一個發行版在複製之前依賴於單例 RandomState,那麽它將在複製後依賴於該隨機狀態的副本,並且
np.random.seed
將不再控製該狀態。例子:
要創建新的高斯分布,我們將執行以下操作:
>>> from scipy.stats import rv_continuous >>> class gaussian_gen(rv_continuous): ... "Gaussian distribution" ... def _pdf(self, x): ... return np.exp(-x**2 / 2.) / np.sqrt(2.0 * np.pi) >>> gaussian = gaussian_gen(name='gaussian')
scipy.stats
分布是實例, 所以這裏我們子類化rv_continuous
並創建一個實例。有了這個,我們現在有了一個函數齊全的分布,所有相關的方法都由框架自動生成。請注意,上麵我們定義了一個標準正態分布,均值和單位方差為零。可以通過使用
loc
和scale
參數來完成分布的移動和縮放:gaussian.pdf(x, loc, scale)
本質上是計算y = (x - loc) / scale
和gaussian._pdf(y) / scale
。random_state
獲取或設置生成隨機變量的生成器對象。
屬性 ::
相關用法
- Python SciPy stats.rv_histogram用法及代碼示例
- Python SciPy stats.rv_discrete用法及代碼示例
- Python SciPy stats.rvs_ratio_uniforms用法及代碼示例
- Python SciPy stats.rayleigh用法及代碼示例
- Python SciPy stats.rankdata用法及代碼示例
- Python SciPy stats.random_table用法及代碼示例
- Python SciPy stats.recipinvgauss用法及代碼示例
- Python SciPy stats.rel_breitwigner用法及代碼示例
- Python SciPy stats.rice用法及代碼示例
- Python SciPy stats.random_correlation用法及代碼示例
- Python SciPy stats.ranksums用法及代碼示例
- Python SciPy stats.relfreq用法及代碼示例
- Python SciPy stats.randint用法及代碼示例
- Python SciPy stats.rdist用法及代碼示例
- Python SciPy stats.anderson用法及代碼示例
- Python SciPy stats.iqr用法及代碼示例
- Python SciPy stats.genpareto用法及代碼示例
- Python SciPy stats.skewnorm用法及代碼示例
- Python SciPy stats.cosine用法及代碼示例
- Python SciPy stats.norminvgauss用法及代碼示例
- Python SciPy stats.directional_stats用法及代碼示例
- Python SciPy stats.invwishart用法及代碼示例
- Python SciPy stats.bartlett用法及代碼示例
- Python SciPy stats.levy_stable用法及代碼示例
- Python SciPy stats.page_trend_test用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.rv_continuous。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。