scipy.stats.qmc.

多项式QMC#

class scipy.stats.qmc.MultinomialQMC(pvals, n_trials, *, engine=None, seed=None)[源代码][源代码]#

从多项分布中进行QMC采样。

参数:
pvals类数组 (k,)

大小为 k 的概率向量,其中 k 是类别的数量。元素必须是非负的,并且总和为 1。

n_trials整数

试验次数。

引擎QMCEngine, 可选

准蒙特卡罗引擎采样器。如果为 None,则使用 Sobol

种子 : {None, int, numpy.random.Generator}, 可选{None, int,}

仅在 engine 为 None 时使用。如果 seed 是 int 或 None,则使用 np.random.default_rng(seed) 创建一个新的 numpy.random.Generator。如果 seed 已经是 Generator 实例,则使用提供的实例。

方法

random([n])

从多项分布中抽取 n 个 QMC 样本。

示例

让我们定义3个类别,对于给定的样本,每个类别的试验总和为8。每个类别的试验次数由与每个类别关联的 pvals 决定。然后,我们从这个分布中采样64次。

>>> import matplotlib.pyplot as plt
>>> from scipy.stats import qmc
>>> dist = qmc.MultinomialQMC(
...     pvals=[0.2, 0.4, 0.4], n_trials=10, engine=qmc.Halton(d=1)
... )
>>> sample = dist.random(64)

我们可以绘制样本并验证每个类别的试验次数中位数是否符合 pvals。即 pvals * n_trials = [2, 4, 4]

>>> fig, ax = plt.subplots()
>>> ax.yaxis.get_major_locator().set_params(integer=True)
>>> _ = ax.boxplot(sample)
>>> ax.set(xlabel="Categories", ylabel="Trials")
>>> plt.show()
../../_images/scipy-stats-qmc-MultinomialQMC-1.png