Підроблені однакові випадкові числа: Більш рівномірно розподілені, ніж справжні єдині дані


43

Я шукаю спосіб генерування випадкових чисел, які здаються рівномірними розподіленими - і кожен тест покаже, що вони є рівномірними - за винятком того, що вони розподілені більш рівномірно, ніж справжні єдині дані .

Проблема, яку я маю з "справжніми" рівномірними рандами, полягає в тому, що вони періодично кластеруються. Цей ефект є сильнішим при малому розмірі вибірки. Грубо кажучи: коли я малюю два Уніфіковані рандеми в U [0; 1], шанси становлять близько 10%, що вони знаходяться в межах 0,1, і 1%, що вони знаходяться в межах 0,01.

Тому я шукаю хороший спосіб генерувати випадкові числа, які більш рівномірно розподілені, ніж рівномірні рандеми .

Скористайтеся прикладом випадку: скажіть, що я роблю комп'ютерну гру, і я хочу розмістити скарб випадково на карті (не піклуючись про будь-яку іншу річ). Я не хочу, щоб скарб знаходився в одному місці, він повинен бути по всій карті. Якщо я розміщую, скажімо, 10 об'єктів, однакові випадки, то шанси не такі низькі, що є близько 5 дійсно близьких один до одного. Це може дати перевагу одному гравцеві над іншим. Подумайте про тральщика, ймовірність (хоч і низька, якщо мін достатньо) полягає в тому, що вам справді пощастить і виграєте одним клацанням миші.

Дуже наївним підходом до моєї проблеми є поділ даних у сітку. Поки кількість достатньо велика (і має фактори), можна забезпечити додаткову рівномірність таким чином. Отже, замість того, щоб намалювати 12 випадкових змінних з U [0; 1], я можу зробити 6 з U [0; .5] і 6 з U [0.5; 1], або 4 з U [0; 1/3] + 4 від U [1/3; 2/3] + 4 від U [2/3; 1].

Чи є кращий спосіб отримати цю додаткову рівномірність у формі? Це, ймовірно, працює лише для пакетних рандомів (при малюванні одного випадкового випадку я, очевидно, повинен враховувати весь діапазон). Зокрема, я можу перетасувати записи знову після цього (тому це не перші чотири з першої третини).

Як щодо цього робити поступово? Отже, перший знаходиться на U [0; 1], потім два з кожної половини, по одній від кожної третьої, по одній від кожної четвертої? Чи це було досліджено, і наскільки це добре? Можливо, мені доведеться бути обережними для використання різних генераторів для x і y, щоб не співвідносити їх (перший xy завжди знаходився б у нижній половині, другий у лівій половині та внизу третій, третій у центрі третій та верхній третині. .. так що хоча б якась випадкова перестановка біна також потрібна. І в перспективі це буде занадто рівним, я думаю.

Як боковий вузол, чи є добре відомий тест, чи деякий розподіл занадто рівномірно розподілений, щоб бути справді рівномірним? Тож тестуючи "справжню форму" проти "хтось заплутався з даними та розподілив елементи більш рівномірно". Якщо я пригадую правильно, статистика Хопкінса може це виміряти, але чи можна її використовувати і для тестування? Також дещо зворотний KS-тест: якщо найбільше відхилення нижче визначеного очікуваного порогу, дані надто рівномірно розподіляються?


7
Ви чули про послідовності Халтона ? Для "занадто рівномірного" люди (починаючи з дослідження Фішером щодо результатів експерименту з горохом Менделя) віднесли (звичайну) статистику хі-квадрата до нижнього хвоста розподілу чи-квадрата.
whuber

Одним із способів формалізувати це було б бажати розподілу таким, що (1) маргіналізується до над , (2 ) симетричний, тобто є обмінними, і (3) є великим, коли є дисперсними. Я думаю, що існує проблема (2) і (3), оскільки нескінченно змінні послідовності в не можуть бути негативно корельованими, тому чим більше ми хочемо використовувати, тим менше відштовхування ми можемо застосувати; з іншого боку, для великих ми маємо все-таки добре поширюватися.г ( ) 1 х 1 , . . . , Х п - 1 г Х 1 , . . . , Х п г ( х 1 , . . . , Х п ) х 1 , . . . , x n R ng(x1,...,xn)g()1x1,...,xn1gX1,...,Xng(x1,...,xn)x1,...,xnRnn
хлопець

Послідовності Халтона досить близькі до підходу, про який я думав. Включаючи пропуск перших кількох записів, щоб зменшити ризик кореляції. Я також думав використовувати випадкову перестановку для кожного рівня. Дякую за цей покажчик, оскільки це дає мені хороший момент для пошуку відповідних методів!
Аноні-Мус

wrt Послідовності Халтона знову. Мені потрібно мати їх недетермінованими, принаймні за винятком початкового насіння. Я бачу тут два шляхи. Я можу зробити циклічний зсув шляхом випадкового зміщення + випадкове зміщення старту + розмір кроку. Проблема полягає в тому, що, звичайно, «скарб», який залишається прикладом гри, також не повинен знаходитись в одних і тих же позиціях відносно один одного. Або я міг би скористатися таким підходом, який я мав у своєму питанні, щоб додати деяку кількість "випадкових поворотів". Так би мовити: Halton знову здається занадто передбачуваним і регулярним для мого використання.
Аноні-Мус

3
en.wikipedia.org/wiki/Low-discrepancy_sequence або mathworld.wolfram.com/QuasirandomSequence.html . Деякі поширені випробування рівномірних РНГ (такі, як тести батарей Diehard / Dieharder тестів) чутливі до таких речей; наприклад, між точками занадто мало «малих відстаней».
Glen_b

Відповіді:


60

Так , існує багато способів скласти послідовність чисел, які розподіляються більш рівномірно, ніж випадкові уніформи. Насправді є ціле поле, присвячене цьому питанню; це кістяк квазі-Монте-Карло (QMC). Нижче короткий огляд абсолютних основ.

Вимірювання рівномірності

Існує багато способів зробити це, але найпоширеніший спосіб має сильний, інтуїтивний, геометричний смак. Припустимо, ми маємо справу з генерацією точок у для деякого додатного цілого числа . Визначте де прямокутник в такий, що іx 1 , x 2 , , x n [ 0 , 1 ] d dnx1,x2,,xn[0,1]dd

Dn:=supRR|1ni=1n1(xiR)vol(R)|,
R[a1,b1]××[ad,bd][0,1]d0aibi1R- це набір усіх таких прямокутників. Перший член всередині модуля - "спостережувана" пропорція точок всередині а другий член - об'єм , .RRvol(R)=i(biai)

Кількість часто називають невідповідність або крайнім невідповідністю безлічі точок . Інтуїтивно ми знаходимо «найгірший» прямокутник де частка точок найбільше відхиляється від того, що ми очікували б при ідеальній рівномірності.Dn(xi)R

На практиці це нелегко і важко обчислити. Здебільшого люди вважають за краще працювати з невідповідністю зірки , Єдина відмінність - множина над якою взята надбудова. Це набір закріплених прямокутників (біля початку), тобто де .

Dn=supRA|1ni=1n1(xiR)vol(R)|.
Aa1=a2==ad=0

Лемма : для всіх , . Доказ . Ліва рука пов'язана очевидна , так як . Права межа пов'язана з тим, що кожен може бути складений через об'єднання, перетини та доповнення не більше ніж прив’язаних прямокутників (тобто в ).DnDn2dDnnd
ARRR2dA

Таким чином, ми бачимо, що і рівнозначні в тому сенсі, що якщо один малий, як росте , інший теж буде. Ось (мультиплікаційна) картинка, що показує кандидатські прямокутники для кожної невідповідності.DnDnn

екстремальне та зіркове розбіжність

Приклади «хороших» послідовностей

Послідовності з достовірно низькою невідповідністю зірки часто називають послідовностями з низькою невідповідністю .Dn

ван дер Корпут . Це, мабуть, найпростіший приклад. Для послідовності van der Corput утворюються шляхом розширення цілого числа у двійковій формі, а потім "відображення цифр" навколо десяткової крапки. Більш формально це робиться за допомогою радикальної зворотної функції в базі , де і - це цифри в базовому розширенні . Ця функція є основою і для багатьох інших послідовностей. Наприклад, у двійковій - і такd=1ib

ϕb(i)=k=0akbk1,
i=k=0akbkakbi41101001a0=1 , , , , і . Отже, 41-а точка в послідовності ван дер Корпута - .a1=0a2=0a3=1a4=0a5=1x41=ϕ2(41)=0.100101(base 2)=37/64

Зауважимо, що оскільки найменший значущий біт коливається між і , точки для непарних знаходяться в , тоді як точки для парних знаходяться в .i01xii[1/2,1)xii(0,1/2)

Послідовності Халтона . Серед найпопулярніших класичних послідовностей з низькою невідповідністю - це розширення послідовності ван дер Корпут до кількох вимірів. Нехай - й найменший простір. Потім й точки в - мірної послідовності Хелтон є Для низьких вони працюють досить добре, але мають проблеми у більш високих розмірах .pjjixid

xi=(ϕp1(i),ϕp2(i),,ϕpd(i)).
d

Послідовності задовольняють . Вони також приємні, оскільки розширюються тим, що побудова точок не залежить від апріорного вибору довжини послідовності .Dn=O(n1(logn)d)n

Послідовності Хаммерслі . Це дуже проста модифікація послідовності Халтона. Замість цього ми використовуємо Можливо, дивно, перевага полягає в тому, що вони мають кращу розбіжність зірок .

xi=(i/n,ϕp1(i),ϕp2(i),,ϕpd1(i)).
Dn=O(n1(logn)d1)

Ось приклад послідовностей Халтона та Хаммерслі у двох вимірах.

Халтон і Хаммерслі

Послідовності, обурені Faure-перестановкою Халтона . Спеціальний набір перестановок (фіксований як функція ) може застосовуватися до розширення цифр для кожного при створенні послідовності Халтона. Це допомагає усунути (певною мірою) проблеми, на які йдеться у більш високих вимірах. Кожна з перестановок має цікаву властивість зберігати і як нерухомі точки.iaki0b1

Правила решітки . Нехай - цілі числа. Візьміть де позначає дробову частину . Розумний вибір значень дає хороші властивості однаковості. Поганий вибір може призвести до поганих послідовностей. Вони також не розширюються. Ось два приклади.β1,,βd1

xi=(i/n,{iβ1/n},,{iβd1/n}),
{y}yβ

Хороші та погані ґрати

(t,m,s) сітки . сітки в базі це сукупність точок таким чином, що кожен прямокутник об'ємом в містить точок. Це сильна форма рівномірності. У цьому випадку малий - твій друг. Послідовності Халтона, Соболя та Фора є прикладами мереж . Вони чудово піддаються рандомізації за допомогою скремблювання. Випадкове скремблювання (зроблене право) сітки дає ще одну сітку. Проект MinT зберігає колекцію таких послідовностей.(t,m,s)bbtm[0,1]sbtt(t,m,s)(t,m,s)(t,m,s)

Проста рандомізація: обертання Кранлі-Паттерсона . Нехай - послідовність точок. Нехай . Тоді точки рівномірно розподіляються в .xi[0,1]dUU(0,1)x^i={xi+U}[0,1]d

Ось приклад, коли сині точки є початковими точками, а червоні точки - повернутими лініями, що з'єднують їх (і показані обернутими, де це доречно).

Кренлі Паттерсон

Повністю рівномірно розподілені послідовності . Це ще сильніше поняття рівномірності, яке іноді вступає в гру. Нехай - послідовність точок у а тепер утворюють блоки, що перекриваються розміром щоб отримати послідовність . Отже, якщо , беремо то і т. Д. Якщо для кожного , , тоді, як кажуть , повністю рівномірно розподілений . Іншими словами, послідовність дає безліч точок будь-якої(ui)[0,1]d(xi)s=3x1=(u1,u2,u3)x2=(u2,u3,u4) s1Dn(x1,,xn)0(ui)розмірність, яка має бажані .Dn

Наприклад, послідовність ван дер Корпута не повністю рівномірно розподілена, оскільки для точки знаходяться у квадраті а точки знаходяться в . Отже, у квадраті немає точок, що означає, що для , для всіх .s=2x2i(0,1/2)×[1/2,1)x2i1[1/2,1)×(0,1/2)(0,1/2)×(0,1/2)s=2Dn1/4n

Стандартні посилання

Нідеррейтер (1992) монографія і Fang і Ван (1994) текст місце , щоб піти для подальшого дослідження.


4
Ця відповідь відмінна, і я просто хотів оцінити зусилля, які ви доклали до неї. Дякую!
Аноні-Мус

1
Одне невелике подальше запитання. Послідовності Халтона виглядають добре, адже вони також здаються не надто регулярними. Решітка для речей для мене набагато регулярна, а також, здається, у послідовності Хаммерслі багато об’єктів на лініях, що проходять через походження. Який хороший спосіб контролювати баланс між справжньою формою і фальшивою формою? Просто візьміть 80% внеску від Халтона + 20% рівномірного випадкового?
Аноні-Мус

1
+ 10 к і точно з рекордно низькими (87 !!!!) відповідями! О, і мені дуже подобається цей пост. Фактично я поставив закладки на це питання. Молодці, @cardinal.
Макрос

@Macro: Дякую за такий приємний коментар! Ти дуже добрий. Я думаю, що ця річ 10K може бути для мене тимчасовою. Я підозрюю, що можу впасти набагато нижче 10 К, як тільки голоси Прокрастинатора будуть відвернені. Я здивований, що цього ще не сталося. Я вважаю, що вони віддали майже 3000 голосів на цьому сайті. Дякуємо також за публікацію тут; я якось ніколи не бачив подальших запитань Аноні-Мусса!
кардинал

@ Anonymous-Mousse: Вибачення за жахливу затримку з реагуванням. Я, мабуть, не помітив цих коментарів. Я думаю, що створення балансу залежатиме від ваших цілей. Теоретично кажучи, введення будь-яких випадкових рівномірних точок повинно зруйнувати, наприклад, оптимальні властивості . З практичної точки зору, можливо, буде краще використовувати дуже невелике тремтіння точок QMC, де тремтіння вибирається виходячи із властивостей послідовності. Ви також можете ввести випадкові перетворення твердого тіла у всіх точках, наприклад, зсуви та обертання координат. DD
кардинал

3

Один із способів зробити це - генерувати рівномірні випадкові числа, а потім перевірити на «близькість» будь-яким способом, який вам подобається, а потім видалити випадкові предмети, які є занадто близькими до інших, і вибрати інший набір випадкових уніформ, щоб компенсувати їх.

Чи може такий розподіл пройти кожен тест на рівномірність? Я впевнений, що ні! Це вже не рівномірно розподілений, це зараз якийсь інший розподіл.

Один непереборний аспект вірогідності полягає в тому, що шанс незграбний. Випадкових даних більше, ніж люди думають, що буде. Я думаю, що Тверський провів деякі дослідження з цього приводу (хоча він так багато досліджував, що важко запам'ятати).


2
Однією з (багатьох) проблем такого підходу є дуже важко охарактеризувати отриманий розподіл.
whuber

ОП, здається, найбільше хвилює невеликі розміри зразків. Це дозволяє припустити, що йому не потрібно дбати про весь розподіл. Припустимо, у вас є набір координат, ви генеруєте іншу і потім обчислюєте евклідову відстань відносно всіх інших. Якщо найменша відстань нижче деякого порогового значення, викиньте це число і створіть нове. Я думаю, що рішення Петра працює добре.
Джон

@whuber Він, здається, не цікавиться цим, хоча я можу помилятися.
Пітер Флом - Відновити Моніку

2
Дозвольте висловити своє заперечення трохи чіткіше, Петро: коли ви видаляєте та / або коригуєте псевдовипадкові значення спеціальним способом, щоб наблизити якесь бажане властивість, наприклад, відсутність кластеризації, важко запевнити, що отримані послідовності мають будь-які бажані властивості. Наприклад, зі своїм методом ви могли б сказати нам, що буде першим моментом результату? (Тобто чи можете ви навіть запевнити нас, що інтенсивність рівномірна?) А як щодо другого моменту? Зазвичай вони складають мінімальну інформацію, необхідну для ефективного використання послідовностей для висновку.
whuber

2
Гаразд, але, у прикладі запитання, він хоче розмістити скарб на карті в грі. Це не стосуватиметься висновків, моментів чи нічого подібного. Я визнаю, що мій метод не був би корисним для багатьох цілей, але я думаю, що він відповідає прикладу. Звичайно, можливо, приклад насправді не є тим, чого він хоче .... Можливо, він хоче чогось більш формального, і в цьому випадку слід переглянути всі інші відповіді.
Пітер Флом - Відновити Моніку

3

Це відоме як "твердий" процес пуассонової точки - так його назвав Брайан Ріплі в 1970-х; тобто ви хочете, щоб це було випадковим чином, але ви не хочете, щоб точки були занадто близько один до одного. "Hard-core" можна уявити як буферну зону, навколо якої інші точки не можуть втручатися.

Уявіть, що ви записуєте положення деяких автомобілів у місті - але ви записуєте лише крапку в номінальному центрі автомобіля. Поки вони на вулиці, жодна пара точок не може зблизитись, оскільки точки захищають "твердий сердечник" кузова - ми ігноруємо потенційну суперпозицію на багатоповерхових автостоянках :-)

Існують процедури для генерації таких точкових процесів - один із способів - просто генерувати очки рівномірно, а потім видаляти всі, які занадто близько один до одного!

Для детальної інформації щодо таких процесів зверніться, наприклад, до цього


2

Що стосується генерації партії заздалегідь, я б створив велику кількість наборів псевдовипадкових змінних, а потім перевірив їх тестом, таким як тест Колмогорова-Смірнова. Ви хочете вибрати набір, який має найвище значення p (тобто є ідеальним). Зауважте, що це буде повільно, але в міру збільшення воно, мабуть, стає менш необхідним. p1N

Щодо інкрементального покоління, ви, по суті, шукаєте серію із помірно негативною автокореляцією. Я не впевнений, який найкращий спосіб зробити це, оскільки у мене дуже обмежений досвід роботи з часовими рядами, але я підозрюю, що для цього існують алгоритми.

Що стосується тесту на "занадто рівномірний", будь-який тест на те, чи буде зразок слідувати конкретному розподілу (наприклад, KS, зазначеному вище), ви просто хочете перевірити, чи , а не стандартний підхід. Я писав про приклад такого альтернативного підходу: чі-квадрат завжди однобічний тест . p>(1α)


1

Я формалізував би вашу проблему таким чином: Ви хочете розподілити по таким, щоб щільність була для деяких кількісно відштовхування точок.[0,1]nf(x)e(1kij|xixj|k)1kk<0

Одним із простих способів генерування таких векторів є вибір Гіббса.


Чи можете ви детальніше зупинитися на цьому? Здається, вибірка Гіббса тут не допомагає, оскільки умовний розподіл = граничний розподіл = рівномірний? Або ви пропонуєте використовувати попередні зразки для створення "дірок" у розподілі для вибірки?
Аноні-Мус

Виберіть рівномірний випадковий вектор, а потім неодноразово рівномірно вибирайте індекс та перепробовуйте . Розраховують відношення з до і після передискретизации і відхилити передискретизации з коефіцієнтом . Це набагато швидше, ніж інші відповіді, які ви отримали, коли у вас дуже довгий вектор, оскільки ви виконуєте локальні, а не глобальні відхилення. ixirf(x)r
Ніл G
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.