scipy.stats.Mixture.
取樣#
- Mixture.sample(shape=(), *, rng=None, method=None)[source]#
從分布中隨機取樣。
- 參數:
- shape整數元組,預設值:()
要繪製的樣本形狀。如果隨機變數底層分布的參數是形狀為
param_shape
的陣列,則輸出陣列的形狀將為shape + param_shape
。- method{None, ‘formula’, ‘inverse_transform’}
用於產生樣本的策略。預設情況下 (
None
),基礎架構會從以下選項中選擇,並依優先順序排列。'formula'
:特定於分布的實作'inverse_transform'
:產生均勻分布的樣本,並在這些引數處傳回反向 CDF。
並非所有 method 選項都適用於所有分布。如果選定的 method 不可用,將會引發 NotImplementedError`。
- rng
numpy.random.Generator
或 scipy.stats.QMCEngine,選用 偽隨機或準隨機數字產生器狀態。當 rng 為 None 時,會使用作業系統的熵建立新的
numpy.random.Generator
。除了numpy.random.Generator
和 scipy.stats.QMCEngine 之外的類型會傳遞給numpy.random.default_rng
以實例化Generator
。如果 rng 是 scipy.stats.QMCEngine 的實例,並配置為使用擾亂,且 shape 不為空,則結果沿著第零軸的每個切片都是「準獨立」的低差異序列;也就是說,它們是可以被視為在統計上獨立的不同序列,以用於大多數實際目的。對
sample
的個別呼叫會產生新的準獨立低差異序列。
參考文獻
[1]取樣 (統計學),Wikipedia,https://en.wikipedia.org/wiki/Sampling_(statistics)
範例
使用所需的參數實例化分布
>>> import numpy as np >>> from scipy import stats >>> X = stats.Uniform(a=0., b=1.)
產生偽隨機樣本
>>> x = X.sample((1000, 1)) >>> octiles = (np.arange(8) + 1) / 8 >>> np.count_nonzero(x <= octiles, axis=0) array([ 148, 263, 387, 516, 636, 751, 865, 1000]) # may vary
>>> X = stats.Uniform(a=np.zeros((3, 1)), b=np.ones(2)) >>> X.a.shape, (3, 2) >>> x = X.sample(shape=(5, 4)) >>> x.shape (5, 4, 3, 2)