scipy.stats.qmc.

MultivariateNormalQMC#

class scipy.stats.qmc.MultivariateNormalQMC(mean, cov=None, *, cov_root=None, inv_transform=True, engine=None, rng=None)[source]#

从多元正态分布 \(N(\mu, \Sigma)\) 进行 QMC 采样。

参数:
meanarray_like (d,)

均值向量。 其中 d 是维度。

covarray_like (d, d), optional

协方差矩阵。 如果省略,请使用 cov_root 代替。 如果 covcov_root 都省略,则使用单位矩阵。

cov_rootarray_like (d, d’), optional

协方差矩阵的根分解,其中如果协方差不是满秩,则 d' 可能小于 d。 如果省略,请使用 cov

inv_transformbool, optional

如果为 True,则使用逆变换而不是 Box-Muller。 默认为 True。

engineQMCEngine, optional

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

rngnumpy.random.Generator, optional

伪随机数生成器状态。 当 rng 为 None 时,将使用来自操作系统的熵创建一个新的 numpy.random.Generator。 除了 numpy.random.Generator 之外的类型将传递给 numpy.random.default_rng 以实例化 Generator

在版本 1.15.0 中更改: 作为从使用 numpy.random.RandomState 转换为 numpy.random.GeneratorSPEC-007 过渡的一部分,此关键字已从 seed 更改为 rng。 在过渡期间,这两个关键字将继续工作,但一次只能指定一个。 在过渡期之后,使用 seed 关键字的函数调用将发出警告。 在弃用期之后,seed 关键字将被删除。

方法

random([n])

从多元正态分布中抽取 n 个 QMC 样本。

示例

>>> import matplotlib.pyplot as plt
>>> from scipy.stats import qmc
>>> dist = qmc.MultivariateNormalQMC(mean=[0, 5], cov=[[1, 0], [0, 1]])
>>> sample = dist.random(512)
>>> _ = plt.scatter(sample[:, 0], sample[:, 1])
>>> plt.show()
../../_images/scipy-stats-qmc-MultivariateNormalQMC-1.png