Створити рівномірно розподілені ваги, які дорівнюють одиниці?


14

Загальноприйнято використовувати ваги в таких програмах, як моделювання сумішей та лінійно поєднувати основні функції. Ваги часто повинні підкорятися 0 і . Я хотів би випадковим чином вибрати вектор ваги з рівномірного розподілу таких векторів.wiwiiwi=1w=(w1,w2,)

Можливо, використовувати де U (0, 1), однак, як обговорюється в коментарях нижче, розподіл \ mathbf {w } не є рівномірним.wi=ωijωjωiw

Однак, враховуючи обмеження iwi=1 , видається, що основна розмірність задачі дорівнює n1 , і що слід вибрати можливість w , вибравши параметри n1 відповідно до деякий розподіл, а потім обчислення відповідних w з цих параметрів (оскільки як тільки вказано n1 ваг, вага, що залишилася, повністю визначається).

Проблема, схоже, на проблему вибору точок сфери (але, замість вибору 3-векторів, норма 2 - це єдність, я хочу вибрати n векторів, норма 1 - це єдність).

Спасибі!


3
Ваш метод не генерує рівномірно розподілений вектор на симплексі. Щоб зробити те, що ви хочете правильно, найпростіший спосіб - це генерувати iid випадкові величини, а потім нормалізувати їх на їх суму. Ви можете спробувати це зробити, знайшовши якийсь інший метод безпосередньо намалювати лише змінних, але у мене є сумніви щодо компромісу ефективності, оскільки змінні можуть бути дуже ефективно генеровані з змінні. E x p ( 1 ) n - 1 E x p ( 1 ) U ( 0 , 1 )nExp(1)n1Exp(1)U(0,1)
кардинал

Відповіді:


22

Виберіть рівномірно (за допомогою рівномірних виводів в інтервалі ). Сортуйте коефіцієнти так, щоб . Встановити n - 1 [ 0 , 1 ] 0 x 1x n - 1x[0,1]n1n1[0,1]0x1xn1

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

Оскільки ми можемо відновити відсортований за допомогою часткових сум , відображення єдо 1; зокрема, його зображення - симплекс у . Оскільки (a) кожен своп у сорту є лінійним перетворенням, (b) попередня формула є лінійною, і (c) лінійні перетворення зберігають рівномірність розподілів, то рівномірність передбачає рівномірність на симплекс. Зокрема, зауважте, що поля не обов'язково є незалежними.w i xw ( n - 1 ) ! n - 1 R n x w n - 1 wxiwixw(n1)!n1Rnxw n1w

3D точковий сюжет

Цей 3D-точковий графік показує результати 2000 ітерацій цього алгоритму при . Точки приурочені до симплексу і приблизно рівномірно розподілені по ньому.n=3


Оскільки час виконання цього алгоритму дорівнює , він є неефективним для великих . Але це відповідає на питання! Кращий спосіб (загалом) для отримання рівномірно розподілених значень на -простому - намалювати рівномірних цифр на інтервалі , обчислитиn n - 1 n ( x 1 , , x n ) [ 0 , 1 ]O(nlog(n))O(n)nn1n(x1,,xn)[0,1]

yi=log(xi)

(що робить кожен позитивним з ймовірністю , звідки їх сума майже напевно не нульова) і встановлюємо 1yi1

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

Це працює, тому що кожен має розподіл , що означає, що має розподіл Діріхле - і це рівномірно. Γ ( 1 ) w ( 1 , 1 , 1 )yiΓ(1)w(1,1,1)

[3D-точка 2]


1
@Chris Якщо під "Dir (1)" ви маєте на увазі розподіл Диріхле з параметрами = , то відповідь - так. ( 1 , 1 , , 1 )(α1,,αn)(1,1,,1)
whuber

1
(+1) Один незначний коментар: Інтуїція відмінна. У інтерпретації (а), можливо, потрібно бути обережним, оскільки, здається, що "лінійна трансформація" в цій частині є випадковою . Однак це легко подолати за рахунок додаткової формальності, використовуючи обмінність процесу генерації та певну властивість інваріантності.
кардинал

1
Більш виразно: для розподілів з щільністю статистикою щільності порядку порядку iid вибірки розміром є . У випадку розподіл статистики замовлень є рівномірним на політопі. Якщо взяти з цього пункту, решта перетворень детерміновані і результат випливає. fnn!f(x1)f(xn)1(x1<x2<<xn)f=1[0,1](x)
кардинал

1
@cardinal Це цікавий момент, але я не думаю, що це має значення, хоча ти маєш рацію, що додаткові деталі можуть допомогти. Свопи (фактично відображення, ква лінійні перетворення) не випадкові: вони заздалегідь визначені. Насправді вирізанийрегіони, з яких один відрізняється від інших, і заздалегідь визначений афінний біакція між кожною областю та відмінною. Отже, єдиним необхідним нам додатковим фактом є те, що рівномірний розподіл по регіону є рівномірним для будь-якого вимірюваного його підмножини, що є повною дрібницею. In1=[0,1]n1(n1)!
whuber

2
@whuber: Цікаві зауваження. Дякую, що поділились! Я завжди ціную ваші проникливі думки щодо таких речей. Що стосується мого попереднього коментаря щодо "випадкового лінійного перетворення", то моя думка полягала в тому, що, принаймні через , використовуване перетворення залежить від точки вибірки ω . Інший спосіб подумати про це - є фіксована, заздалегідь визначена функція така, що , але я б не називав цю функцію лінійною, хоча вона є лінійною на підмножини, які розділяють -куба. :)xωT:Rn1Rn1w=T(x)(n1)
кардинал

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

Перший запис ставиться до нуля для ідентифікації; ви б бачили, що зроблено у багаточленних логістичних моделях. Звичайно, у мультиноміальних моделях у вас також будуть ковариати під показниками, а не просто випадкові zzs. Розподіл zzs - це розподіл крайньої величини; вам знадобиться це для того, щоб переконатися, що отримані ваги є, я спочатку поклав rnormаль, але потім у мене було відчуття, що це не спрацює.


Це не працює. Ви спробували подивитися на гістограму?
кардинал

4
Ваша відповідь зараз майже правильна. Якщо генерувати iid E x p ( 1 ) і розділити кожну на суму, то ви отримаєте правильний розподіл. Додаткову інформацію див. У дистрибуції Диріхле, хоча це не обговорюється прямо . nExp(1)
кардинал

1
Враховуючи термінологію, яку ви використовуєте, ви звучите трохи розгублено.
кардинал

2
На насправді, посилання Wiki робить обговорення цього (справедливо) в явному вигляді. Дивіться другий параграф під заголовком підтримки .
кардинал

1
Ця характеристика є і занадто обмежувальною, і занадто загальною. Надто загальне те, що отриманий розподіл повинен бути "рівномірним" на n - 1 симплекс в R n . Занадто обмежуючим є те, що питання сформульовано досить загалом, щоб дозволити, що w буде деякою функцією n - 1- варіантного розподілу, який, в свою чергу, імовірно , але не обов'язково складається з n - 1 незалежних ( можливо, іid) змінних. 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
Ваші маргінали не мають правильного розподілу. Судячи зі статті Вікіпедії про розподіл Діріхле (розділ генерації випадкових чисел, який має закодований алгоритм), ви повинні використовувати бета (1,2) розподіл для V (1), а не рівномірний [0,1] розповсюдження.
soakley

Здається, що щільність збільшується в кутах цього нахиленого трикутника. Тим не менш, це забезпечує приємне геометричне відображення проблеми.
DWin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.