scipy.stats.qmc.discrepancy

scipy.stats.qmc.discrepancy(sample, *, iterative=False, method='CD', workers=1)[源代码]

给定样本的差异。

参数
samplearray_like(n,d)

要从中计算差异的样本。

iterative布尔值,可选

如果不使用它来更新差异,则必须为false。默认值为False。有关更多详细信息,请参阅注释。

method字符串,可选

差异类型,可以是 CDWDMDL2-star 。有关更多详细信息,请参阅注释。默认值为 CD

workers整型,可选

用于并行处理的工作进程数。如果给定-1,则使用所有CPU线程。默认值为1。

退货
discrepancy浮动

差异。

注意事项

差异是用于评估超立方体中多个样本的空间填充情况的均匀性准则。偏差量化了超立方体上的连续均匀分布与上的离散均匀分布之间的距离 \(n\) 不同的采样点。

值越小,参数空间的覆盖越好。

对于超立方体的子集的集合,差异是这些子集之一中的采样点的分数与该子集的体积之间的差。对应于不同的子集集合,存在不同的差异定义。某些版本的子集采用均方根差而不是最大值。

如果一致性度量满足以下标准,则该度量是合理的 [1]:

  1. 它在置换因子和/或运行下是不变的。

  2. 它在坐标旋转下是不变的。

  3. 它不仅可以度量样本在超立方体上的均匀性,还可以度量样本在低维超立方体的非空子集上的投影均匀性。

  4. 这其中有一些合理的几何意义。

  5. 它很容易计算。

  6. 它满足类Koksma-Hlawka不等式。

  7. 它与实验设计中的其他标准是一致的。

有四种方法可用:

  • CD :居中差异-子空间涉及超立方体的一角

  • WD :回绕差异-子空间可以回绕边界

  • MD :混合差异-CD/WD之间的混合覆盖更多标准

  • L2-star :L2-星形差异CD,但不同于旋转

看见 [2] 有关每种方法的精确定义,请参阅。

最后,使用 iterative=True ,它可以计算差异,就好像我们有 \(n+1\) 样本。如果我们想要在抽样中添加一个点并检查给出最低偏差的候选对象,这是很有用的。然后,您只需使用以下命令更新与每个候选人的差异 update_discrepancy 。这种方法比计算大量候选者的差异要快。

参考文献

1

方等人的研究成果。“计算机实验的设计与建模”。“计算机科学与数据分析系列”,2006。

2

周永东等人。拟随机点集的混合偏差。“复杂性杂志”,29(3-4),第283-301页,2013年。

3

T·T·沃诺克。“低偏差点集的计算研究”。“数论在数值分析中的应用”,学术出版社,第319-343页,1972年。

示例

使用差异计算样品的质量:

>>> from scipy.stats import qmc
>>> space = np.array([[1, 3], [2, 6], [3, 2], [4, 5], [5, 1], [6, 4]])
>>> l_bounds = [0.5, 0.5]
>>> u_bounds = [6.5, 6.5]
>>> space = qmc.scale(space, l_bounds, u_bounds, reverse=True)
>>> space
array([[0.08333333, 0.41666667],
       [0.25      , 0.91666667],
       [0.41666667, 0.25      ],
       [0.58333333, 0.75      ],
       [0.75      , 0.08333333],
       [0.91666667, 0.58333333]])
>>> qmc.discrepancy(space)
0.008142039609053464

我们也可以迭代地计算 CD 因使用而产生的不符之处 iterative=True

>>> disc_init = qmc.discrepancy(space[:-1], iterative=True)
>>> disc_init
0.04769081147119336
>>> qmc.update_discrepancy(space[-1], space[:-1], disc_init)
0.008142039609053513