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`

rngnumpy.random.Generatorscipy.stats.QMCEngine,選用

偽隨機或準隨機數字產生器狀態。當 rng 為 None 時,會使用作業系統的熵建立新的 numpy.random.Generator。除了 numpy.random.Generatorscipy.stats.QMCEngine 之外的類型會傳遞給 numpy.random.default_rng 以實例化 Generator

如果 rngscipy.stats.QMCEngine 的實例,並配置為使用擾亂,且 shape 不為空,則結果沿著第零軸的每個切片都是「準獨立」的低差異序列;也就是說,它們是可以被視為在統計上獨立的不同序列,以用於大多數實際目的。對 sample 的個別呼叫會產生新的準獨立低差異序列。

參考文獻

[1]

取樣 (統計學),Wikipediahttps://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)