Gleichmäßig verteilte Gewichte generieren, die die Summe aus Einheit ergeben?


14

Es ist üblich, Gewichte in Anwendungen wie der Gemischmodellierung zu verwenden und Basisfunktionen linear zu kombinieren. Gewichte wi muss oft gehorchen wi 0 und iwi=1 . Aus einer gleichmäßigen Verteilung solcher Vektoren möchte ich zufällig einen Gewichtsvektor auswählen w=(w1,w2,).

Es kann verlockend sein, wi=ωijωj wobeiωiU (0, 1) ist, jedoch, wie in den nachstehenden Kommentaren erörtert, die Verteilung vonwnicht gleichmäßig.

Angesichts der Bedingung scheint es jedoch, dass die zugrunde liegende Dimension des Problems n - 1 ist und dass es möglich sein sollte, ein w zu wählen, indem n - 1 Parameter gemäß einer gewissen Verteilung ausgewählt werden und dann das berechnet wird entsprechend w von diesen Parametern (da, sobald n - 1 der Gewichte spezifiziert sind, das verbleibende Gewicht vollständig bestimmt ist).iwi=1n1wn1wn1

Das Problem scheint mit dem ähnlich zu sein sphere Punkt picking Problem (aber, anstatt Kommissionierung 3-Vektoren , deren norm Einheit ist, mag ich holen n -Vektoren deren l 1 Norm ist Eins).2n1

Vielen Dank!


3
Ihre Methode erzeugt auf dem Simplex keinen gleichmäßig verteilten Vektor. Um richtig zu machen, was Sie wollen, ist es am einfachsten, iid E x p ( 1 ) Zufallsvariablen zu generieren und sie dann durch ihre Summe zu normalisieren. Sie könnten versuchen, dies zu tun, indem Sie eine andere Methode finden, um nur n - 1 Variablen direkt zu zeichnen , aber ich habe meine Zweifel hinsichtlich des Effizienzkompromisses, da E x p ( 1 ) Variablen sehr effizient aus U ( 0 , 1 ) Variablen erzeugt werden können .nExp(1)n1Exp(1)U(0,1)
Kardinal

Antworten:


22

Wählen Sie gleichmäßig (mittels n - 1 gleichförmiger Realzahlen im Intervall [ 0 , 1 ] ). Sortieren Sie die Koeffizienten so, dass 0 x 1x n - 1 ist . einstellenx[0,1]n1n1[0,1]0x1xn1

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

Weil wir die sortierte erholen kann mittels der Teilsummen von der w i , die Abbildung xw ist ( n - 1 ) ! bis 1; insbesondere ist sein Bild der n - 1- Simplex in R n . Da (a) jeder Swap in einer Sortierung eine lineare Transformation ist, (b) die vorhergehende Formel linear ist und (c) lineare Transformationen die Gleichförmigkeit der Verteilungen bewahren, impliziert die Gleichförmigkeit von x die Gleichförmigkeit von w auf dem n - 1- Simplex.xiwixw(n1)!n1Rnxw n1 Note dass die Ränder von w nicht unbedingt unabhängig sind.

3D point plot

Dieses 3D-Punktdiagramm zeigt die Ergebnisse von 2000 Iterationen dieses Algorithmus für n=3 . Die Punkte beschränken sich auf den Simplex und sind ungefähr gleichmäßig über diesen verteilt.


Da die Ausführungszeit dieses Algorithmus , ist es für große n ineffizient . Aber das beantwortet die Frage! Ein besserer Weg (im Allgemeinen), gleichmäßig verteilte Werte auf dem n - 1- Implex zu erzeugen, besteht darin, n gleichförmige Reelle ( x 1 , , x n ) auf dem Intervall [ 0 , 1 ] zu berechnenO(nlog(n))O(n)nn1n(x1,,xn)[0,1]

yi=log(xi)

(was jedes mit Wahrscheinlichkeit 1 positiv macht , von wo aus ihre Summe fast sicher ungleich Null ist) und setzeyi1

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

Dies funktioniert, weil jedes eine Γ ( 1 ) -Verteilung hat, was impliziert, dass w eine Dirichlet ( 1 , 1 , 1 ) -Verteilung hat - und das ist gleichmäßig.yiΓ(1)w(1,1,1)

[3D point plot 2]


1
@Chris Wenn Sie mit "Dir (1)" die Dirichlet-Verteilung mit den Parametern = ( 1 , 1 , , 1 ) meinen , lautet die Antwort "Ja". (α1,,αn)(1,1,,1)
whuber

1
(+1) One minor comment: The intuition is excellent. Care in interpreting (a) may need to be taken, as it seems that the "linear transformation" in that part is a random one. However, this is easily worked around at the expense of additional formality by using exchangeability of the generating process and a certain invariance property.
cardinal

1
fnn!f(x1)f(xn)1(x1<x2<<xn)f=1[0,1](x), the distribution of the order statistics is uniform on a polytope. Taken from this point, the remaining transformations are deterministic and the result follows.
cardinal

1
@cardinal That's an interesting point, but I don't think it matters, although you're right that additional details could help. The swaps (actually reflections, qua linear transformations) are not random: they are predetermined. In effect, In1=[0,1]n1 is carved into (n1)! regions, of which one is distinguished from the others, and there's a predetermined affine bijection between each region and the distinguished one. Whence, the only additional fact we need is that a uniform distribution on a region is uniform on any measurable subset of it, which is a complete triviality.
whuber

2
@whuber: Interesting remarks. Thanks for sharing! I always appreciate your insightful thoughts on such things. Regarding my previous comment on "random linear transformation", my point was that, at least through x, the transformation used depends on the sample point ω. Another way to think of it is there is a fixed, predetermined function T:Rn1Rn1 such that w=T(x), but I wouldn't call that function linear, though it is linear on subsets that partition the (n1)-cube. :)
cardinal

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

The first entry is put to zero for identification; you would see that done in multinomial logistic models. Of course, in multinomial models, you would also have covariates under the exponents, rather than just the random zzs. The distribution of the zzs is the extreme value distribution; you'd need this to ensure that the resulting weights are i.i.d. I initially put rnormals there, but then had a gut feeling that this ain't gonna work.


That doesn't work. Did you try looking at a histogram?
cardinal

4
Your answer is now almost correct. If you generate n iid Exp(1) and divide each by the sum, then you will get the correct distribution. See Dirichlet distribution for more details, though it doesn't discuss this explicitly.
cardinal

1
Given the terminology you are using, you sound a little confused.
cardinal

2
Actually, the Wiki link does discuss this (fairly) explicitly. See the second paragraph under the Support heading.
cardinal

1
This characterization is both too restrictive and too general. It is too general in that the resulting distribution of w must be "uniform" on the n1 simplex in Rn. It is too restrictive in that the question is worded generally enough to allow that w be some function of an n1-variate distribution, which in turn presumably, but not necessarily, consists of n1 independent (and perhaps iid) variables.
whuber

0

The solution is obvious. The following MathLab code provides the answer for 3 weights.

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

enter image description here


1
Ihre Ränder haben nicht die richtige Verteilung. Nach dem Wikipedia-Artikel über die Dirichlet-Verteilung (Abschnitt zur Erzeugung von Zufallszahlen, der den von Ihnen codierten Algorithmus enthält) zu urteilen, sollten Sie eine Beta (1,2) -Verteilung für V (1) verwenden, keine einheitliche [0,1]. Verteilung.
Soakley

It does appear that the density increases in the corners of this tilted triangle. Nonetheless, it provides a nice geometric display of the problem.
DWin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.