Моделювання креслень з рівномірного розподілу за допомогою малюнків із звичайного розподілу


15

Нещодавно я придбав ресурс для інтерв'ю з науковими даними, в якому одним із питань ймовірності було таке:

З огляду на малюнки із звичайного розподілу з відомими параметрами, як можна імітувати малюнки з рівномірного розподілу?

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

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

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

Будь-які думки щодо того, як я можу підійти до цього питання?

Відповіді:


30

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

  1. Зворотний метод Бокса-Мюллера : від кожної пари нормалей , два незалежних уніформа може бути виконаний в вигляді atan2 ( Y , X ) (на інтервалі [ - П , π ] ) і ехр ( - ( Х 2 + Y 2 ) / 2 ) (на проміжку [ 0 , 1 ] ).(X,Y)atan2(Y,X)[π,π]exp((X2+Y2)/2)[0,1]

  2. Візьміть нормалі в групах з двох і підсумувати їх квадрати , щоб отримати послідовність змінну . Вирази, отримані з пар Y 1 , Y 2 , , Y i , χ22Y1,Y2,,Yi,

    Хi=Y2iY2i-1+Y2i

    матиме розподіл , який є рівномірним.Бета-версія(1,1)

    Що для цього потрібна лише основна, проста арифметика, має бути зрозуміло.

  3. Оскільки точний розподіл коефіцієнта кореляції Пірсона чотири парної вибірки від стандартного біваріантного нормального розподілу рівномірно розподілений на , ми можемо просто взяти нормали у групи з чотирьох пар (тобто вісім значень у кожен набір) і повернути коефіцієнт кореляції цих пар. (Це включає просту арифметику плюс дві квадратні кореневі операції.)[-1,1]

  4. З давніх часів було відомо, що циліндрична проекція сфери (поверхні в трипросторі) дорівнює площі . Це означає, що в проекції рівномірного розподілу на сферу і горизонтальна координата (відповідна довготі), і вертикальна координата (відповідна широті) матимуть рівномірні розподіли. Оскільки стандартний трикваріатний нормальний розподіл сферично симетричний, його проекція на сферу рівномірна. Отримання довготи - це по суті такий же розрахунок, як і кут у методі Бокса-Мюллера ( qv ), але прогнозована широта нова. Проекція на сферу просто нормалізує трійку координат і в цій точці z - проектована широта. Таким чином, візьміть величини Normal у групи по три, X 3 i - 2 , X 3 i - 1 , X 3 i та обчисліть(x,y,z)zX3i2,X3i1,X3i

    X3iX3i22+X3i12+X3i2

    для .i=1,2,3,

  5. Оскільки більшість обчислювальних систем представляють числа у двійковій формі, генерація рівномірних чисел зазвичай починається з отримання рівномірно розподілених цілих чисел між і 2 32 - 1 (або деякою великою потужністю 2, що стосується комп’ютерної довжини слова) та зміною їх розміру за необхідності. Такі цілі числа представлені внутрішньо як рядки з 32 двійкових цифр. Ми можемо отримати незалежні випадкові біти, порівнявши змінну Normal з її медіаною. Таким чином, достатньо розбити звичайні змінні на групи розміром, рівним бажаній кількості біт, порівняти кожну з її середнім значенням і зібрати отримані послідовності істинних / хибних результатів у двійкове число. Написання к02321232kдля числа біт і для знака (тобто H ( x ) = 1, коли x > 0 і H ( x ) = 0 в іншому випадку) можна виразити отримане нормоване однорідне значення в [ 0 , 1 ) формулоюHH(x)=1x>0H(x)=0[0,1)

    j=0k1H(Xkij)2j1.

    Змінні можна отримати з будь-якого безперервного розподілу, медіана якого дорівнює 0 (наприклад, стандартний нормальний); вони обробляються групами k з кожною групою, виробляючи одне таке псевдорівномірне значення.Xn0k

  6. Вибірка відхилення - це стандартний, гнучкий, потужний спосіб отримання випадкових змінних з довільних розподілів. Припустимо, цільовий розподіл має PDF . Значення Y малюється відповідно до іншого розподілу з PDF g . На етапі відхилення рівномірне значення U, що лежить між 0 і g ( Y ) , виводиться незалежно від Y і порівнюється з f ( Y ) : якщо воно менше, YfYgU0g(Y)Yf(Y)Yзберігається, але в іншому випадку процес повторюється. Цей підхід здається круговим: як ми можемо генерувати єдину змінну з процесом, для якого потрібна рівномірна змінна?

    Відповідь полягає в тому, що насправді нам не потрібна однакова змінна для виконання кроку відхилення. Натомість (припустимо, що ) ми можемо перевернути справедливу монету, щоб отримати випадково 0 або 1 . Це буде інтерпретовано як перший біт у двійковому поданні рівномірної змінної U в інтервалі [ 0 , 1 ) . Коли результат 0 , це означає , що 0 U < 1 / 2 ; в іншому випадку, 1 / 2 U < 1 . g(Y)001U[0,1)00U<1/21/2U<1Половина часу, цього достатньо , щоб вирішити , крок: відмова , якщо , але монета 0 , Y повинен бути прийнятий; якщо F ( Y ) / г ( У ) < 1 / 2 , але монета 1 , Y повинна бути відхилена; в іншому випадку, нам потрібно перевернути монету знову, щоб отримати наступний біт U . Тому що - незалежно від того, яке значення f ( Yf(Y)/g(Y)1/20Yf(Y)/g(Y)<1/21YU є - є 1 / 2 ймовірність зупинки після кожного фліп, очікуване число перебудов тільки 1 / 2 ( 1 ) + 1 / 4 ( 2 ) + 1 / 8 ( 3 ) + + 2 - n ( n ) + = 2 .f(Y)/g(Y)1/21/2(1)+1/4(2)+1/8(3)++2n(n)+=2

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

    Звичайні та одноманітні PDF-файли

    Використання Обчислення для оптимізації площі прямокутника, ви побачите , що її кінці повинні лежати на , де його висота дорівнює ехр ( - 1 / +2 ) / ±1, що робить його площу трохи більше0,48. Використовуючи цю стандартну нормальну щільність якgта автоматично відкидаючи всі значення за межами інтервалу[-1,1], інакше застосовуючи процедуру відхилення, ми отримаємо ефективні змінні в[-1,1]ефективно:exp(1/2)/2π0.2419710.48g[1,1][1,1]

    • У частці часу змінна Normal лежить за межами [ - 1 , 1 ] і негайно відкидається. ( Φ стандартний нормальний CDF.)2Φ(1)0.317[1,1]Φ

    • У решту часу слід дотримуватися процедури бінарного відхилення, що вимагає в середньому ще двох нормальних змінних.

    • Загальна процедура вимагає в середньому кроків.1/(2exp(1/2)/2π)2.07

    Очікувана кількість нормальних змінних, необхідних для створення кожного рівномірного результату, відповідає

    2eπ(12Φ(1))2.82137.

    Хоча це досить ефективно, зауважте, що (1) обчислення Нормального PDF вимагає обчислення експоненції, і (2) значення повинно бути попередньо обчислене раз і назавжди. Це все-таки трохи менший розрахунок, ніж метод Box-Mueller ( qv ).Φ(1)

  7. В порядкові статистики рівномірного розподілу мають експоненціальні прогалини. Оскільки сума квадратів двох нормалей (нульової середньої величини) є експоненціальною, ми можемо генерувати реалізацію незалежних уніформ шляхом підсумовування квадратів пар таких нормалей, обчислюючи їх сукупну суму, розміщуючи результати на падіння інтервалу. [ 0 , 1 ] і скидання останнього (яке завжди буде рівним 1 ). Це приємний підхід, оскільки він вимагає лише квадратування, підбиття підсумків та (наприкінці) єдиного поділу.n[0,1]1

    Значення автоматично будуть у порядку зростання. Якщо таке сортування бажано, цей метод обчислювально перевершує всі інші, наскільки це дозволяє уникнути вартості сорту O ( n log ( n ) ) . Якщо потрібна послідовність незалежних уніформ, то сортування цих n значень випадково зробить свою справу. Оскільки (як видно з методу Box-Mueller, qv ) відношення кожної пари нормалей не залежать від суми квадратів кожної пари, ми вже маємо засоби для отримання цієї випадкової перестановки: впорядкуйте кумулятивні суми за відповідними співвідношеннями . (Якщо nnO(nlog(n))nnдуже великий, цей процес може бути здійснений в менших групах з невеликою втратою ефективності, оскільки кожна група потребує тільки 2 ( K + 1 ) нормалей для створення K однорідних значень. Для фіксованого k асимптотична обчислювальна вартість, таким чином, становить O ( n log ( k ) ) = O ( n ) , для отримання n рівномірних значень потрібно 2 n ( 1 + 1 / k ) .k2(k+1)kkO(nlog(k))O(n)2n(1+1/k)n

  8. До чудового наближення будь-яка нормальна величина з великим стандартним відхиленням виглядає рівномірно в діапазонах значно менших значень. Перекочуючи цей розподіл у діапазон (беручи лише дробові частини значень), ми отримуємо тим самим розподіл, який є рівномірним для всіх практичних цілей. Це надзвичайно ефективно, вимагає однієї з найпростіших арифметичних операцій з усіх: просто обведіть кожну змінну Normal вниз до найближчого цілого числа і збережіть надлишок. Простота такого підходу стає переконливою, коли ми вивчаємо практичну реалізацію:[0,1]R

    rnorm(n, sd=10) %% 1
    

    надійно виробляє nоднакові значення в діапазоні за ціною лише нормальних змінних і майже не обчислює.[0,1]n

    (Навіть коли стандартне відхилення дорівнює , PDF цього наближення відрізняється від рівномірного PDF, як показано на наступному малюнку, менш ніж на одну частину з 10 8 ! Щоб надійно його виявити, знадобиться вибірка з 10 16 значень-- це вже виходить за межі можливостей будь-якого стандартного тесту на випадковість. При більшому стандартному відхиленні нерівномірність настільки мала, що її навіть неможливо обчислити. Наприклад, при SD 10, як показано в коді, максимальне відхилення від рівномірного PDF - лише 10 - 857. )110810161010857

    Орієнтовний PDF


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

Про легкість цих конструкцій свідчить наступний Rкод, в якому для більшості з них використовується лише один або два рядки. Їх правильність свідчать в результаті ближній рівномірної гістограми на основі незалежних значень в кожному випадку (потрібно близько 12 секунд для всіх сім моделювання). Для довідки - якщо ви турбуєтесь про кількість варіацій, що з’являються на будь-якому з цих графіків - в кінці додається гістограма рівномірних значень, змодельована за допомогою рівномірного генератора випадкових чисел.100,000R

Гістограми

Усі ці симуляції були випробувані на однаковість за допомогою тесту на основі 1000 бункерів; жодне не можна вважати суттєво неоднорідним (найнижче значення p становило 3 % - для результатів, отриманих фактичним генератором рівномірного числа!).χ210003%R

set.seed(17)
n <- 1e5
y <- matrix(rnorm(floor(n/2)*2), nrow=2)
x <- c(atan2(y[2,], y[1,])/(2*pi) + 1/2, exp(-(y[1,]^2+y[2,]^2)/2))
hist(x, main="Box-Mueller")

y <- apply(array(rnorm(4*n), c(2,2,n)), c(3,2), function(z) sum(z^2))
x <- y[,2] / (y[,1]+y[,2])
hist(x, main="Beta")

x <- apply(array(rnorm(8*n), c(4,2,n)), 3, function(y) cor(y[,1], y[,2]))
hist(x, main="Correlation")

n.bits <- 32; x <-  (2^-(1:n.bits)) %*% matrix(rnorm(n*n.bits) > 0, n.bits)
hist(x, main="Binary")

y <- matrix(rnorm(n*3), 3)
x <- y[1, ] / sqrt(apply(y, 2, function(x) sum(x^2)))
hist(x, main="Equal area")

accept <- function(p) { # Using random normals, return TRUE with chance `p`
  p.bit <- x <- 0
  while(p.bit == x) {
    p.bit <- p >= 1/2
    x <- rnorm(1) >= 0
    p <- (2*p) %% 1
  }
  return(x == 0)
}
y <- rnorm(ceiling(n * sqrt(exp(1)*pi/2))) # This aims to produce `n` uniforms
y <- y[abs(y) < 1]
x <- y[sapply(y, function(x) accept(exp((x^2-1)/2)))]
hist(x, main="Rejection")

y <- matrix(rnorm(2*(n+1))^2, 2)
x <- cumsum(y)[seq(2, 2*(n+1), 2)]
x <- x[-(n+1)] / x[n+1]
x <- x[order(y[2,-(n+1)]/y[1,-(n+1)])] 
hist(x, main="Ordered")

x <- rnorm(n) %% 1 # (Use SD of 5 or greater in practice)
hist(x, main="Modular")

x <- runif(n)      # Reference distribution
hist(x, main="Uniform")

2
Z=(X1X2)/(X3X4)X

1
Більш загальним принципом є пошук основної кількості зразка з обчислювально придатним cdf. Це добре поєднується з побудовою інтервалів довіри та тестами гіпотез, з поворотом, що ми можемо прагнути оптимізувати кількість використаних елементів, а не останніх випадків, які більше зосереджуються на максимізації інформації з фіксованого розміру вибірки.
кардинал

@Cardinal Дякую за цікаві коментарі, а також дев'ятий метод (Коші). Навіть пошук основної кількості не є необхідним, коли шукається лише гарне наближення. Наприклад, (8) прекрасно працює, якщо ви резервуєте невелику кількість початкових результатів, щоб встановити приблизну шкалу.
whuber

8

XN(μ,σ2)Φμ,σ2Φμ,σ2(X)(0,1)d(0,1)

P(Φμ,σ2(X)d)=P(XΦμ,σ21(d))=d

d1d1Φμ,σ2(X)(0,1)σR


4
Це зворотна вибірка зворотного перетворення!
Роджер Фан

Не могли б ви детальніше зупинитися на другому реченні другого пункту? У мене виникають проблеми з розумінням наступного: «Цього достатньо, щоб показати, що Φμ, σ2 (X) має рівномірний розподіл на (0,1), як ми показали, що відповідні міри рівні для генератора борелівської σ-алгебри на ℝ. "
wellington

XX(P)σ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.