生成总和为一的均匀分布的权重?


14

通常在混合模型之类的应用程序中使用权重并线性组合基函数。权重必须经常服从和。我想从此类向量的均匀分布中随机选择一个权重向量。wiwiiwi=1w=(w1,w2,)

使用w_i = \ frac {\ omega_i} {\ sum_ {j} \ omega_j}可能很诱人,wi=ωijωj其中ωi U(0,1),但是正如下面的注释所讨论的,\ mathbf {w的分布}w是不统一的。

但是,给定约束iwi=1,问题的基本维度似乎为n1,并且应该有可能通过根据以下方法选择n-1个参数来选择w:进行某种分布,然后根据这些参数计算相应的\ mathbf {w}(因为一旦指定了权重的n-1,就完全确定了剩余的权重)。n1wn1

这个问题似乎是类似球面点采摘的问题(但不是采摘3载体,其2标准是统一的,我想挑选n -载体,其1标准是统一)。

谢谢!


3
您的方法不会在单纯形上生成均匀分布的向量。为了正确地执行您想要的操作,最直接的方法是生成 iid随机变量,然后通过它们的总和对其进行归一化。您可以尝试通过找到其他方法直接绘制变量来尝试实现此操作,但是我对效率的权衡存在疑问,因为变量可以非常有效地从生成变量。Ë X p1 ñ - 1 Ë X p1 ü 0 1 nExp(1)n1Exp(1)U(0,1)
主教

Answers:


22

统一选择(通过间隔的均匀实数)。 对系数进行排序,以使。组 ñ - 1 [ 0 1 ] 0 X 1X ñ - 1x[0,1]n1n1[0,1]0x1xn1

w=(x1,x2x1,x3x2,,xn1xn2,1xn1).

因为我们可以通过的部分和来恢复排序的,所以的映射为至1; 特别是它的图像是的单纯形。因为(a)每种交换都是线性变换,(b)前面的公式是线性的,(c)线性变换保持分布的均匀性,所以的均匀性意味着单工。 特别要注意的是的边际不一定是独立的。w i xwn 1 n 1 R n x w n 1xiw一世Xwñ-1个ñ-1个[RñXw ñ-1个w

3D点图

此3D点图显示了该算法2000次迭代的结果。这些点仅限于单纯形,并大致均匀地分布在单纯形上。ñ=3


由于此算法的执行时间为,因此对于大效率不高。但这确实回答了这个问题! -simplex 上生成均匀分布值的更好方法(通常)是在间隔上绘制均匀实数,然后计算ñ ñ - 1 Ñ X 1... X Ñ[ 0 1 ]O(nlog(n))O(n)nn1n(x1,,xn)[0,1]

yi=log(xi)

(这使每个概率为,因此它们的和几乎肯定非零)并设置 1yi1

w=(y1,y2,,yn)/(y1+y2++yn).

之所以,是因为每个都有一个分布,这意味着具有一个Dirichlet分布-并且是均匀的。 Γ 1 瓦特1 1 1 yiΓ(1)w(1,1,1)

[3D点图2]


1
@Chris如果用“ Dir(1)”表示参数 =的Dirichlet分布,那么答案是肯定的。1 1 ... 1 (α1,,αn)(1,1,,1)
whuber

1
(+1)一个小意见:直觉非常好。解释(a)时需要格外小心,因为该部分中的“线性变换”似乎是随机的。但是,通过使用生成过程的可交换性和一定的不变性,可以轻松地解决此问题,但要以牺牲额外的形式性为代价。
主教

1
更明确地说:对于具有密度分布,大小的IID样的顺序统计的密度是。在的情况下,阶统计量的分布在多面体上是均匀的。从这一点来看,其余的变换是确定性的,其结果如下。fnn!f(x1)f(xn)1(x1<x2<<xn)f=1[0,1](x)
主教

1
@cardinal这是一个有趣的观点,但是我认为这并不重要,尽管您是正确的,其他细节可能会有所帮助。交换(实际上是反射,qua线性变换)不是随机的:它们是预先确定的。实际上,被刻成区域,其中一个区域与其他区域是不同的,并且在每个区域和所区分的区域之间存在预定的仿射双射。因此,我们唯一需要增加的事实是,区域上的均匀分布在该区域的任何可测量子集上都是均匀的,这是完全无关紧要的。In1=[0,1]n1(n1)!
ub

2
@whuber:有趣的话。感谢分享!我始终感谢您对此类事情的深刻见解。关于我之前对“随机线性变换”的评论,我的观点是,至少通过,使用的变换取决于采样点。另一种思考的方式是有一个固定的预定函数使得,但我不会将其称为线性函数,尽管它在划分 -cube的子集上是线性的。:)xωT:Rn1Rn1w=T(x)(n1)
红衣主教

1
    zz <- c(0, log(-log(runif(n-1))))
    ezz <- exp(zz)
    w <- ezz/sum(ezz)

第一项设为零以进行识别;您会看到在多项逻辑模型中做到了。当然,在多项式模型中,您还将在指数下具有协变量,而不仅仅是随机数zzs。zzs 的分布是极值分布;您需要这样做以确保最终得到的权重是正确的,我最初将rnormals 放在那儿,但是后来却感到直觉不起作用。


那不行 您是否尝试查看直方图?
主教

4
您的答案现在几乎是正确的。如果生成 iid并将其除以总和,则将获得正确的分布。有关更多详细信息,请参见Dirichlet分发,尽管它没有明确讨论。nExp(1)
主教

1
给定您使用的术语,您听起来有些困惑。
主教

2
实际上,Wiki链接确实(公平地)对此进行了讨论。请参阅“ 支持”标题下的第二段。
主教

1
这种表征既过于严格又过于笼统。太笼统的是,的最终分布在R n中n - 1个单形上必须是“均匀的” 。过于严格的限制是,问题的措词笼统地足以使w成为n - 1变量分布的函数,而n - 1变量分布又可能但不一定由n - 1个独立( iid)变量组成。wn1Rnwn1n1
whuber

0

解决方案是显而易见的。以下MathLab代码为3个权重提供了答案。

function [  ] = TESTGEN( )
SZ  = 1000;
V  = zeros (1, 3);
VS = zeros (SZ, 3);
for NIT=1:SZ   
   V(1) = rand (1,1);     % uniform generation on the range 0..1
   V(2) = rand (1,1) * (1 - V(1));
   V(3) = 1 - V(1) - V(2);  
   PERM = randperm (3);    % random permutation of values 1,2,3
   for NID=1:3
         VS (NIT, NID) = V (PERM(NID));
    end
end 
figure;
scatter3 (VS(:, 1), VS(:,2), VS (:,3));
end

在此处输入图片说明


1
您的边际人口分布不正确。从Wikipedia上关于Dirichlet分布的文章(随机数生成部分,具有您已编码的算法)判断,您应该对V(1)使用beta(1,2)分布,而不要使用uniform [0,1]分配。
soakley 2015年

似乎在这个倾斜的三角形的角上密度增加了。但是,它可以很好地显示问题的几何形状。
DWin
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.