拉丁超立方采样与python

我想对多维度(2,3,4)中的函数定义的分布进行采样:

f(x, y, ...) = ...

分布可能是丑陋的,非标准的(如数据上的3D样条,高斯等的总和等).为此,我想统一采样2..4维空间,而不是使用额外的随机数接受或拒绝空间的给定点到我的样本中.

>为此目的是否准备好使用python库?
>是否有python lib用于使用拉丁超立方采样或其他统一采样方法在此2维空间中生成点?具有独立随机数的强力采样通常导致空间的密集区域越来越密集.
>如果1)和2)不存在,是否有任何人能够分享他对相同或类似问题的实施.

我将在python代码中使用它,但也承认其他解决方案的链接.

解决方法:

我想这是一个迟到的答案,但这也适用于未来的访客.我刚刚在git上放了an implementation of multi-dimensional uniform Latin Hypercube sampling.它很小,但很容易使用.如果变量是独立的,则可以使用拉丁超立方采样生成在n维中采样的均匀随机变量.下面是一个示例图,比较了蒙特卡罗和拉丁超立方采样与二维均匀性(LHS-MDU)的二维零相关性.

import lhsmdu
import matplotlib.pyplot as plt
import numpy

l = lhsmdu.sample(2,10) # Latin Hypercube Sampling of two variables, and 10 samples each.
k = lhsmdu.createRandomStandardUniformMatrix(2,10) # Monte Carlo Sampling

fig = plt.figure()
ax = fig.gca()
ax.set_xticks(numpy.arange(0,1,0.1))
ax.set_yticks(numpy.arange(0,1,0.1))
plt.scatter(k[0], k[1], color="b", label="LHS-MDU")
plt.scatter(l[0], l[1], color="r", label="MC")
plt.grid()
plt.show()

拉丁超立方采样与python

上一篇:python – 如何使用pandas对条件进行采样?


下一篇:Reservoir Sampling 蓄水池采样算法