从单纯形均匀采样


29

我正在寻找一种算法来生成N个随机数的数组,这样N个数字的总和为1,所有数字都位于0和1之内。例如,N = 3,即随机点(x,y, z)应位于三角形内:

x + y + z = 1
0 < x < 1
0 < y < 1
0 < z < 1

理想情况下,我希望该区域内的每个点都具有相等的概率。如果太难了,我可以放弃要求。谢谢。


目标分布是什么?你尝试了什么?
拉斐尔

3
请注意,总有拒绝抽样:抽样统一编号,并拒绝如果数字加起来也不到。在此,预期的迭代次数过高,因此您应该执行其他操作。n1
拉斐尔

Answers:


28

首先让我们假设您想在

x + y + z = 1
0 ≤ x ≤ 1
0 ≤ y ≤ 1
0 ≤ z ≤ 1

这并没有太大的区别,因为采样点仍然很有可能位于您请求的区域中。

现在剩下的是从单纯形采样点了。在3d示例中,您将获得在3d中实现的2d单形(三角形)。

在此博客文章中讨论了如何随机地均匀选择一个点(请参阅评论)。

对于您的问题,这意味着您从间隔获取随机数,然后添加和以获得数字的列表。您对列表进行排序,然后记录两个连续元素之间的差异。这将为您提供数字的列表,这些数字总计为。此外,该采样是均匀的。这个想法可以在The Bayesian bootstrap Ann Donald B. Rubin中找到。统计员。1981年9月,第130-134页。n1(0,1)01n+1n1

例如(),您拥有三个随机数,然后获得排序的序列,并给出了差值,通过构造这四个数字的总和为1。n=40.4 0.2 0.10 0.1 0.2 0.4 10.1 0.1 0.2 0.6

另一方法如下:首先从超多维数据集中采样(即您忘了x+y+z=1),然后对采样点进行归一化。归一化是从超立方体到单纯形的投影。直观上应该清楚,单纯形中心的点比外部的点具有更多的“前像点” 。因此,如果您从超多维数据集中进行统一采样,则不会在单纯形中进行统一采样。但是,如果您使用适当的指数分布从超立方体中采样,则此效果将被抵消。该图为您提供了两种方法如何采样的想法。但是,由于其简单的形式,我更喜欢“排序”方法。它也更容易实现。dd1

两种采样方法的示例


我猜天真的想法- 从提取数字并进行标准化-是错误的。n(0,1)
拉斐尔

我在扩展答案中解决了您的问题。
A.Schulz

1
有没有简单的证明可以显示排序是否均匀?我只有基本的背景知识,所以这篇论文不知所措。
赵超

5
@ChaoXu只是观察到单纯形中的数字与间隔分为个子间隔的分区之间存在一对一的对应关系。采样算法对应于上的“抛出”随机“间隔端点” 。您可以尝试通过归纳法和使用条件概率来证明那是统一的。n(0,1)nn1(0,1)
Sasho Nikolov

1
@Orient:请在单独的帖子中问您问题,请勿滥用评论。
A.Schulz 2014年

8

这是要添加到现有答案中。

Devroye是此类问题的绝佳参考。第7章介绍了生成统一订单统计信息所需的算法,OP对此进行了介绍。

为了生成统一的订单统计信息,可以对个样本进行排序。此方法需要时间。一种更快的方法(本书中提供)涉及从 pdf中采样 随机数。(这些是统一pdf 的间距)。然后,返回的值 它们是自动总体上以时间排序。(我在这里与A.Schulz的答案重叠-只是使计算更加明确)。n[0,1]O(nlogn)nx1,,xnExp(1)

(yi)1in=1ixj1nxj
O(n)

通过逆CDF采样,可以采用相同的方法对任何非均匀pdf进行采样。还有一个技巧,使您可以对除规范单纯形之外的单纯形进行统一采样(例如)。2 X + 3 Ŷ + ž = 5[0,1]2x+3y+z=5


如果我在这里遵循答案:stackoverflow.com/questions/2106503/…然后从指数分布中生成随机数将涉及对数的估计,这可能会有点慢。
R zu

3
X[0] = 0
for i = 1 to N-1
    X[i] = uniform(0,1)
X[n] = 1
sort X[0..N]
for i = 1 to N
    Z[i] = X[i] - X[i-1]
return Z[1..N]

在此,uniform(0,1)返回一个独立且均匀分布在0和1之间的实数。


5
这是A. Schulz在代码中的回答,没有解释,对吗?
拉斐尔

1

参见本文:N. Smith和R. Tromble,从单元单纯形统一采样


2
请以一种可读的方式设置答案的格式:您是在为人类而不是bibtex编译器写作。此外,如果该论文在线提供,则提供链接的效率会更高。
大卫·里希比
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.