Как создать нецелое количество последовательных успехов Бернулли?


18

Данный:

  1. Монета с неизвестным уклоном p (голова).
  2. Строго положительная вещественная a>0 .

Проблема:

Генерация случайной переменной Бернулли со смещением pa .

Кто-нибудь знает как это сделать? Например, когда a - положительное целое число, можно a раз перевернуть монету и посмотреть, все ли результаты были Головами: если они тогда выдают «0», в противном случае выдают «1». Трудность заключается в том, что a не обязательно является целым числом. Кроме того, если бы я знал смещение p , я мог бы просто построить другую монету с желаемым смещением.


2
@gung: Я думаю, что нужен алгоритм генерации вариации Бернулли с учетом монеты.
Нил Г

1
Я думаю , что дело здесь, когда > 1 вы только держать в среднем 1 из каждых через голову , что выскакивает и при < 1 , то дублируют каждой из головок в среднем на 1 / через раз. a>1aa<11/a
Макро

3
@ Макро, не могли бы вы расширить эту идею?
Педро А. Ортега

1
Дорогой Педро, (+1) за ваш пост, и именно этот вопрос делает резюме очень бодрящим и стимулирующим, по крайней мере для меня. Могу я спросить, каков источник этого вопроса?
кардинал

@cardinal: Еще раз спасибо за ваш ответ! Эта проблема является частью сэмплера для решения стохастических задач управления, над которыми я работаю. Причина, по которой p неизвестна, состоит в том, что для этого потребуется знать нормализующую константу (которая в данном случае является неприятной функцией разбиения), но мы все равно можем сделать выборку из нее, используя выборку отклонения. Кстати, было бы неплохо назвать вас по имени, а не просто по ссылке на резюме ;-).
Педро А. Ортега

Ответы:


19

Мы можем решить это с помощью нескольких «хитростей» и небольшой математики.

Вот основной алгоритм:

  1. Генерация геометрической случайной величины с вероятностью успеха p .
  2. Исход этой случайной величины определяет фиксированное известное значение fn[0,1] .
  3. Сгенерируйте случайную переменную Ber(fn) используя честные броски монет, сгенерированные из блочно-парных бросков нашей монеты Ber(p) .
  4. Итоговый результат будет Ber(pa) для любого a(0,1) , и это все, что нам нужно.

Чтобы сделать вещи более усвояемыми, мы разобьем их на куски.

Часть 1 : Без ограничения общности предположим, что 0<a<1 .

Если a1 , то мы можем записать pa=pnpb для некоторого натурального числа n и некоторого 0b<1 . Но для любых двух независимых Бернулли мы имеем Мы можем сгенерировать Бернулли из нашей монеты очевидным образом. Следовательно, нам нужно только поработать над генерацией когда .p n B e r ( p a ) a ( 0 , 1 )

P(X1=X2=1)=p1p2.
pnBer(pa)a(0,1)

Часть 2 : Знать, как генерировать произвольный из броска монеты.Ber(q)

Существует стандартный способ сделать это. Разверните в его двоичном расширении, а затем используйте наши справедливые монет, чтобы «сопоставить» цифры . Первое совпадение определяет, объявим ли мы успех («головы») или неудачу («хвосты»). Если и наш бросок монеты равен головам, объявить головы, если и наш бросок монет равен хвостам, объявить хвосты. В противном случае, рассмотрите следующую цифру против нового броска монеты.q q n = 1 q n = 0q=0.q1q2q3qqn=1qn=0

Часть 3 : Знайте, как создать справедливый бросок монеты из нечестных с неизвестным уклоном.

Это делается, предполагая , подбрасывая монету попарно. Если мы получим , объявим головы; если мы получим , объявим хвосты и в противном случае повторим эксперимент, пока не произойдет один из двух вышеупомянутых результатов. Они одинаково вероятны, поэтому должны иметь вероятность .Н Т Т Н 1 / 2p(0,1)HTTH1/2

Часть 4 : Немного математики. (Тейлор на помощь.)

Разлагая вокруг , теорема Тейлора утверждает, что Обратите внимание, что, поскольку каждый член после первого является отрицательным, поэтому мы имеем где известны априори . Следовательно, где , иp 0 = 1 p a = 1 - a ( 1 - p ) - a ( 1 - a )h(p)=pap0=10 < a < 1

pa=1a(1p)a(1a)2!(1p)2a(1a)(2a)3!(1p)3.
0<a<10 b n1
pa=1n=1bn(1p)n,
0bn1G G e o m ( p
1pa=n=1bn(1p)n=n=1bnP(Gn)=n=1fnP(G=n)=Ef(G),
f 0 = 0 f n = n k = 1 b kGGeom(p)f0=0fn=k=1nbkдля .n1

И мы уже знаем, как использовать нашу монету для генерации геометрической случайной величины с вероятностью успеха .p

Часть 5 : трюк Монте-Карло.

Пусть - дискретная случайная величина, принимающая значения в с . Пусть . Тогда [ 0 , 1 ] P ( X = x n ) = p n U X B e r ( X ) P ( U = 1 ) = n x n p n .X[0,1]P(X=xn)=pnUXBer(X)

P(U=1)=nxnpn.

Но, взяв и , мы теперь видим, как генерировать случайную переменную и это эквивалентно генерации один.pn=p(1p)nxn=fnBer(1pa)Ber(pa)


Как я могу процитировать вас (или ваше решение)?
Педро А. Ортега

2
@Pedro: Полагаю, вы можете нажать на ссылку «поделиться» внизу этого ответа. Это должна быть стабильная ссылка. В Math.SE есть механизм цитирования , который, по-видимому, не включен на этом сайте, но вы можете его адаптировать.
кардинал

1
Теперь это блестящий ответ!
Дзен

1
Я написал это на форуме общего обсуждения в классе Coursera по аналитической комбинаторике, так как это было хорошее использование степенных рядов, связанных с некоторыми материалами, которые там освещались. class.coursera.org/introACpartI-001/forum/thread?thread_id=108
Дуглас Заре

@Douglas: Спасибо! Существует ли общедоступная версия этой ветки или мне нужно зарегистрироваться на курсе, чтобы ее увидеть? Педро и я обсуждали (по электронной почте) возможные пути включения этого подхода в некоторые его исследования.
кардинал

6

Является ли следующий ответ глупым?

Если независимы Б е г ( р ) и У п имеет распределение Б е р ( ( Е п я = 1 X я / п ) ) , то Y п будет примерно распределены в Б е г ( p a ) , когда n .X1,,XnBer(p)YnBer((i=1nXi/n)a)YnBer(pa)n

Следовательно, если вы не знаете , но вы можете бросить эту монету много раз, можно выбрать (приблизительно) из случайной величины B e r ( p a ) .pBer(pa)

Пример Rкода:

n <- 1000000
p <- 1/3 # works for any 0 <= p <= 1
a <- 4
x <- rbinom(n, 1, p)
y <- rbinom(n, 1, mean(x)^a)
cat("p^a =", p^a, "\n")
cat("est =", mean(y))

Результаты:

p^a = 0.01234568 
est = 0.012291 

2
Мне нравится этот ответ, но я подозреваю, что он упускает суть вопроса, который я интерпретировал как запрос алгоритма, который генерирует из запрошенного распределения, не зная (или эмпирическую информацию о p ). Но, проблема действительно предполагают , что вы можете создать B е р н о у л л я ( р ) случайные величины, так что это вполне разумный ответ и не глупо вообще! +1ppBernoulli(p)
Макрос

1
+1: мне это нравится Я предполагаю, что вы имеете в виду, что распространяется ...? Yn
Нил Г

Намного лучше! Tks, @Neil G!
Дзен

1
Это мило (+1), но мы можем сделать это точно почти за конечное число сальто (и в среднем это число будет относительно небольшим).
кардинал

5

Я разместил следующую экспозицию этого вопроса и ответ кардинала на форуме общего обсуждения текущего класса Analytic Combinatorics на Coursera, "Применение степенных рядов для построения случайной величины". Я публикую здесь копию в вики сообщества, чтобы сделать ее общедоступной и более доступной.


На stat.stackexchange.com был интересный вопрос и ответ, связанный с степенными сериями: «Как генерировать нецелое количество последовательных успехов Бернулли?» Я перефразирую вопрос и ответ кардиналом.

Предположим, у нас есть, возможно, несправедливая монета, чьи головы с вероятностью , и положительное действительное число α . Как мы можем построить событие, вероятность которого равна p α ?pαpα

Если бы было положительным целым числом, мы могли бы просто перевернуть монетку α раз и позволить событию быть, что все броски были головами. Однако, если α не является целым числом, скажем , 1 / 2 , то это не имеет смысла, но мы можем использовать эту идею , чтобы снизить к случаю, когда 0 < α < 1 . Если мы хотим построить событие с вероятностью p 3,5 , мы берем пересечение независимых событий с вероятностями p 3 и p 0,5 .ααα1/20<α<1p3.5p3p0.5

Единственное, что мы можем сделать, - это построить событие с любой известной вероятностью . Чтобы сделать это, мы можем построить поток битов справедливым путем многократного листать монету в два раза, чтение H T , как 1 и Т Н в 0 , и игнорируя H H и T T . Мы сравниваем этот поток с бинарным разложением p = 0. a 1 a 2 a 3 . , , 2p[0,1]HT1TH0HHTTp=0.a1a2a3...2, Случай, когда первое разногласие имеет место, когда имеет вероятность p . Мы не знаем p α , поэтому мы не можем использовать это напрямую, но это будет полезный инструмент.ai=1ppα

Основная идея заключается в том, что мы хотели бы использовать степенной ряд для гдер=1-кв. Мы можем построить событиячьи вероятностидплистать монетпраз ивидяесли они все хвосты, и мы можем произвести событие с вероятностьюр'длпутем сравнения двоичных разрядовр'с изрядной битового потокакак указано выше и проверка, все лиnброски являются хвостами.pα=(1q)α=1αqα(1α)2q2α(1α)(2α)3!q3...p=1qqnnpqnpn

Построить геометрическую случайную величину с параметром p . Это количество хвостов перед первой головой в бесконечной последовательности бросков монет. P ( G = n ) = ( 1 - p ) n p = q n p . (Некоторые люди используют определение, которое отличается на 1. )GpP(G=n)=(1p)np=qnp1

Принимая во внимание последовательность Мы можем изготовить т G : не Флип монеты до первой главы, и если есть G хвосты перед первой головкой, возьмите элемент последовательности индекса G . Если каждое t n[ 0 , 1 ] , мы можем сравнить t G с равномерной случайной величиной в [ 0 , 1 ] (построенной, как указано выше), чтобы получить событие с вероятностью E [ tt0,t1,t2,...tGGGtn[0,1]tG[0,1] .E[tG]=ntnP(G=n)=ntnqnp

Это почти то, что нам нужно. Мы хотели бы исключить это чтобы использовать степенной ряд для p α в q .ppαq

1=p+qp+q2p+q3p+...

qn=qnp+qn+1p+qn+2p+...

nsnqn=nsn(qnp+qn+1p+qn+2p+...)=n(s0+s1+...+sn)qnp

Рассмотрим , Пустьtn- сумма коэффициентов отqдоqn. Тогда1-pα=ntnqnp. Каждоеtn[0,1],поскольку коэффициенты положительны и суммируются с1-0α=1, поэтому мы можем построить событие с вероятностью1-pα1pα=αq+α(1α)2q2+...tnqqn1pα=ntnqnptn[0,1]10α=11pαпутем сравнения справедливой битового потока с двоичного разложения . Дополнение имеет вероятность p α по мере необходимости.tGpα


Опять же, аргумент из-за кардинала.


1
(+1) Спасибо, что пошли на неприятности, чтобы опубликовать это. Различия в изложении, хотя и относительно незначительны, помогают сделать подход более четким.
кардинал

4

Очень полный ответ от кардинала и последующие материалы вдохновили следующее замечание / вариант.

Пусть PZ обозначает «Вероятность нуля» и . Если X n является последовательностью Бернулли с PZ q , то M n : = max ( X 1 ,q:=1pXnq - р- н Бернулли с PZ q n . Теперь сделав n случайным, т. Е. Заменив его целым числом rv N 1, мы получим Бернулли rv M N с P r { M N = 0 } = n = 1 P r { M N = 0Mn:=max(X1,X2,,Xn)qnnN1MN Поэтому, если 0 < a < 1 и если мы берем P r { N = n } = b n из ответакардинала, мы находим P r { M N = 0 } = 1 - p a и 1 - M N - B e r ( p a ) как хотел. Это действительно возможно, так как коэффициенты b n

Pr{MN=0}=n=1Pr{MN=0|N=n}Pr{N=n}=n=1Pr{N=n}qn.
0<a<1Pr{N=n}=bnPr{MN=0}=1pa1MNBer(pa)bnbn01

Na0<a<1

Pr{N=n}=ank=1n1(1a/k)(n1).
nbnc/nac=1/Γ(a)>0.

Though MN is the maximum of N rvs, its determination needs a number of Xk which is N since the result is known as soon as one Xk is 1. The number of computed Xk is geometrically distributed.


A related idea would be to make the rvs Xk dependent with extremal index θ (0<θ<1), meaning that Mn has PZ qnθ rather than qn. Taking nθ=a would do the job for any a>0. Given a sequence of iid rv.s Xn following a standard Frechet, there are known methods to generate a dependent sequence Xn with standard Frechet margin and the prescribed extremal index θ. However, what happens if we replace standard Frechet'' by Bernoulli''?
Yves

(+1) Very nice, @Yves. A few remarks: (1) The first part can be viewed as the complement of the approach I've taken. In fact, when I first got the series in bnqn, while I immediately saw the connection to the geometric, I first tried something more direct and didn't come up with a natural way to do it. Your answer solves that problem. (2) Your approach can also be implemented using only a Ber(p) coin. In particular, N can be generated by descending down a full binary tree based on fair coin flips, where the left nodes are leaves and the decision is made by (...)
cardinal

(...) comparing the number in (0,1) constructed from the (partial) sequence of coin flips to the partial sums fn=i=1nbi. The termination depth gives N. (3) I believe that nbncn(1+a), which will change your conclusion regarding the finiteness of the mean. (4) In both your approach and mine, it seems we cannot escape computing fn=i=1nbi, even if we allow for uniform random variates in addition to our Ber(p) coin for the purposes of sampling. Finding a way to avoid that would seem to be the most obvious way to improve efficiency.
cardinal

1
Thank you @cardinal. I agree with all your comments except perhaps (3). I actually made an error since c is 1/Γ(a) (edited), but the exponent of n seems the right one. I used the representation of Γ(z) as found e.g. on Wikipedia page on infinite product and took z:=a which gives an equivalent for the product k=1n1. I would be more confident if you could check this.
Yves

Dear @Yves, (+1) You are correct about the constant and about (3). My apologies. Somehow, when I went to transcribe things to paper, I ended up focusing on the asymptotics of bn instead of nbn. :-)
cardinal
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.