что такое равномерное распределение
Равномерное распределение вероятностей
Простейшее из непрерывных распределений, с помощью которого моделируются многие реальные процессы. И самый такой распространённый пример – это график движения общественного транспорта. Предположим, что некий автобус (троллейбус / трамвай) ходит с интервалом в 10 минут, и вы в случайный момент времени подошли к остановке. Какова вероятность того, что автобус подойдёт в течение 1 минуты? Очевидно, 1/10-я. А вероятность того, что придётся ждать 4-5 минут? Тоже . А вероятность того, что автобус придётся ждать более 9 минут? Одна десятая!
Рассмотрим некоторый конечный промежуток, пусть для определённости это будет отрезок . Если случайная величина
обладает постоянной плотностью распределения вероятностей на данном отрезке и нулевой плотностью вне него, то говорят, что она распределена равномерно. При этом функция плотности будет строго определённой:
И в самом деле, если длина отрезка (см. чертёж) составляет , то значение
неизбежно равно
– дабы получилась единичная площадь прямоугольника, и было соблюдено известное свойство:
Проверим его формально: , ч.т.п. С вероятностной точки зрения это означает, что случайная величина
достоверно примет одно из значений отрезка
…, эх, становлюсь потихоньку занудным старикашкой =)
Суть равномерности состоит в том, что какой бы внутренний промежуток фиксированной длины мы ни рассмотрели (вспоминаем «автобусные» минуты) – вероятность того, что случайная величина
примет значение из этого промежутка будет одной и той же. На чертеже я заштриховал троечку таких вероятностей – ещё раз заостряю внимание, что они определяются площадями, а не значениями функции
!
Рассмотрим типовое задание:
Непрерывная случайная величина задана своей плотностью распределения:
Найти константу , вычислить
и составить функцию распределения. Построить графики
. Найти
Иными словами, всё, о чём только можно было мечтать 🙂
Решение: так как на интервале (конечном промежутке)
, то случайная величина
имеет равномерное распределение, и значение «цэ» можно отыскать по прямой формуле
. Но лучше общим способом – с помощью свойства:
…почему лучше? Чтобы не было лишних вопросов 😉
Таким образом, функция плотности:
Выполним чертёж. Значения невозможны, и поэтому жирные точки ставятся внизу:
В качестве экспресс-проверки вычислим площадь прямоугольника: , ч.т.п.
Найдём математическое ожидание, и, наверное, вы уже догадываетесь, чему оно равно. Вспоминаем «10-минутный» автобус: если случайным образом подходить к остановке много-много дней упаси, то в среднем его придётся ждать 5 минут.
Да, именно так – матожидание должно находиться ровно посерединке «событийного» промежутка: , как и предполагалось.
Дисперсию вычислим по формуле . И вот тут нужен глаз да глаз при вычислении интеграла:
Таким образом, дисперсия:
Составим функцию распределения . Здесь ничего нового:
1) если , то
и
;
2) если , то
и:
3) и, наконец, при , поэтому:
В результате:
Выполним чертёж:
На «живом» промежутке функция распределения растёт линейно, и это ещё один признак, что перед нами равномерно распределённая случайная величина. Ну, ещё бы, ведь производная линейной функции – есть константа.
Требуемую вероятность можно вычислить двумя способами, с помощью найденной функции распределения:
либо с помощью определённого интеграла от плотности:
Кому как нравится.
И здесь ещё можно записать ответ: ,
, графики
построены по ходу решения.
…«можно», потому что за его отсутствие обычно не карают. Обычно 😉
Для вычисления и
равномерной случайной величины существуют специальные формулы, которые я предлагаю вам вывести самостоятельно:
Непрерывная случайная величина задана плотностью
.
Вычислить математическое ожидание и дисперсию. Результаты максимально упростить (формулы сокращённого умножения в помощь).
Полученные формулы удобно использовать для проверки, в частности, проверьте только что прорешанную задачу, подставив в них конкретные значения «а» и «б». Краткое решение внизу страницы.
И в заключение урока мы разберём парочку «текстовых» задач:
Цена деления шкалы измерительного прибора равна 0,2. Показания прибора округляются до ближайшего целого деления. Считая, что погрешности округлений распределены равномерно, найти вероятность того, что при очередном измерении она не превзойдёт 0,04.
Для лучшего понимания решения представим, что это какой-нибудь механический прибор со стрелкой, например, весы с ценой деления 0,2 кг, и нам предстоит взвесить кота в мешке. Но не в целях выяснить его упитанность – сейчас будет важно, ГДЕ между двумя соседними делениями остановится стрелка.
Рассмотрим случайную величину – расстояние стрелки от ближайшего левого деления. Или от ближайшего правого, это не принципиально.
Составим функцию плотности распределения вероятностей:
1) Так как расстояние не может быть отрицательным, то на интервале . Логично.
2) Из условия следует, что стрелка весов с равной вероятностью может остановиться в любом месте между делениями*, включая сами деления, и поэтому на промежутке :
* Это существенное условие. Так, например, при взвешивании кусков ваты или килограммовых пачек соли равномерность будет соблюдаться на куда более узких промежутках.
3) И поскольку расстояние от БЛИЖАЙШЕГО левого деления не может быть больше, чем 0,2, то при тоже равна нулю.
Таким образом:
Следует отметить, что о функции плотности нас никто не спрашивал, и её полное построения я привёл исключительно в познавательных цепях. При чистовом оформлении задачи достаточно записать только 2-й пункт.
Теперь ответим на вопрос задачи. Когда погрешность округления до ближайшего деления не превзойдёт 0,04? Это произойдёт тогда, когда стрелка остановится не далее чем на 0,04 от левого деления справа или не далее чем на 0,04 от правого деления слева. На чертеже я заштриховал соответствующие площади:
Осталось найти эти площади с помощью интегралов. В принципе, их можно вычислить и «по-школьному» (как площади прямоугольников), но простота не всегда находит понимание 😉
По теореме сложения вероятностей несовместных событий:
– вероятность того, что ошибка округления не превзойдёт 0,04 (40 грамм для нашего примера)
Легко понять, что максимально возможная погрешность округления составляет 0,1 (100 грамм) и поэтому вероятность того, что ошибка округления не превзойдёт 0,1 равна единице. И из этого, кстати, следует другой, более лёгкий способ решения, в котором нужно рассмотреть случайную величину – погрешность округления до ближайшего деления. Но первый способ мне пришёл в голову первым 🙂
Ответ: 0,4
И ещё один момент по задаче. В условии речь может идти о погрешностях не округлений, а о случайных погрешностях самих измерений, которые, как правило (но не всегда), распределены по нормальному закону. Таким образом, всего лишь одно слово может в корне изменить решение! Будьте начеку и вникайте в смысл задач!
И коль скоро всё идёт по кругу, то ноги нас приносят на ту же остановку:
Автобусы некоторого маршрута идут строго по расписанию и интервалом 7 минут. Составить функцию плотности случайной величины – времени ожидании очередного автобуса пассажиром, который наудачу подошёл к остановке. Найти вероятность того, что он будет ждать автобус не более трёх минут. Найти функцию распределения
и пояснить её содержательный смысл.
Несмотря на то, что время не может быть отрицательным, интервал не имеет особого смысла исключать из рассмотрения, ибо противоречия тут нет – вероятность того, что случайная величина
примет невозможное значение, равна нулю.
Краткое решение и ответ в конце урока. Дополнительные задачи с равномерным распределением можно найти в тематическом решебнике.
И не успел никто опомниться, как подошёл очередной автобус, который отвезёт нас до остановки Показательное распределение и конечной под названием Нормальное распределение вероятностей.
Пример 2. Решение: вычислим математическое ожидание:
Дисперсию вычислим по формуле .
Таким образом:
Ответ:
Пример 4. Решение: случайная величина имеет равномерное распределение с плотностью:
Вычислим вероятность того, что пассажир будет ожидать автобус не более 3 минут:
Составим функцию распределения :
1) если , то
и
;
2) если , то
и
;
3) если , то
, и
.
Таким образом:
Функция описывает вероятность того, что пассажир дождётся очередной автобус за время, МЕНЬШЕЕ, чем
. При увеличении
от 0 до 7 эта вероятность линейно возрастает на
в минуту и по достижению
достоверным становится тот факт, что пассажир автобуса дождался (форс-мажор исключаем).
Автор: Емелин Александр
(Переход на главную страницу)
Zaochnik.com – профессиональная помощь студентам
cкидкa 15% на первый зaкaз, прoмoкoд: 5530-hihi5
Tutoronline.ru – онлайн репетиторы по математике и другим предметам
Генераторы непрерывно распределенных случайных величин
Генератор случайных чисел во многом подобен сексу: когда он хорош — это прекрасно, когда он плох, все равно приятно (Джордж Марсалья, 1984)
Популярность стохастических алгоритмов все растет. Многие из них базируются на генерации большого количества различных случайных величин. Далеко не всегда равномерно распределенных. Здесь я попытался собрать информацию о быстрых и точных генераторах случайных величин с известными распределениями. Задачи могут быть разными, разными могут быть и критерии. Кому-то важно время генерации, кому-то — точность, кому-то — криптоустойчивость, кому-то — скорость сходимости. Лично я исходил из предположения, что мы имеем некий базовый генератор, возвращающий псевдослучайное целое число, равномерно распределенное от 0 до некого RAND_MAX
и что этот генератор достаточно быстрый. Я имею ввиду, что дешевле сгенерировать с десяток случайных чисел, нежели чем посчитать логарифм или возвести в степень одно из них. Это могут быть стандартные генераторы: std::rand(), rand в MATLAB, Java.util.Random и т.д. Но имейте ввиду, что подобные генераторы редко подходят для серьезной работы. Зачастую они проваливают разные статистические тесты. А также, помните, что вы полностью зависите от них и лучше использовать свой собственный генератор, чтобы иметь представление о его работе.
В статье я буду рассказывать об алгоритмах, суть которых должна быть понятна каждому, кто хоть иногда сталкивался с теорией вероятностей. Совсем необязательно быть знакомым с теорией меры, как правило, достаточно примерно понимать, что из себя представляют функция распределения и функция плотности распределения:
Каждый алгоритм я буду сопровождать кодом, небольшим количеством математики и гистограммой из десятка миллионов сгенерированных случайных величин.
Равномерное распределение
Равномерное распределение может использоваться при генерации почти что любой случайной величины, благо имеется очень простой и универсальный метод инверсии (inverse transform sampling): генерируем случайную величину U, равномерно распределенную от 0 до 1, и возвращаем обратную функцию распределения (квантиль) с параметром U. Действительно:
Проблема в том, что подсчет обратной функции распределения может быть долгим, если вообще аналитически возможен.
С генератором равномерного распределения, я надеюсь, мне не нужно долго останавливаться (при большом количестве генерируемых случайных величин лучше посчитать (b — a) / RAND_MAX только один раз):
Разумеется, непрерывность — это лишь абстракция. В реальном мире и в данном случае конкретно под этим подразумевается достаточно малый шаг дискретизации. Стоит заметить важную вещь. Если вы генерируете случайное число, равномерно распределенное от 0 до 1, то 32 бит недостаточно, чтобы покрыть все значения, которые может принимать на этом диапазоне double (хотя, для float этого более чем достаточно). Для лучшего качества нужно либо генерировать 64-битные целые, либо комбинировать два 32-битных.
Нормальное распределение
Метод инверсии потребует вычисления обратной функции ошибок. Если не использовать специальные аппроксимирующие функции, сложно и невероятно долго. Для нормальной величины существует метод Бокса-Мюллера. Он довольно прост и широко распространен. Его явный недостаток — это вычисление трансцендентных функций. На Хабре уже упоминался полярный метод, помогающий избежать подсчета синуса и косинуса. Но мы все еще должны считать логарифм и корень из него. Куда быстрее работает красиво названный метод Ziggurat, придуманный Джорджем Марсалья, автором того же полярного метода.
Полярный метод — это пример выборки с отклонением (acceptance-rejection sampling). Буквально, вы генерируете величину и принимаете ее, если она подходит, иначе — отклоняете и генерируете еще раз. Основной пример: нужно сгенерировать случайную величину с плотностью f(x), однако это слишком сложно сделать простым методом инверсии. Зато, вы можете сгенерировать случайную величину с плотностью g(x), не очень сильно отличающейся от f(x). В таком случае вы берете наименьшую константу M, такую что M > 1 и почти всюду f(x) Доказательство работы алгоритма:
Воспользовавшись тем, что вероятность происхождения двух событий А и B равна
вычислим вероятность принятия случайной величины X с функцией плотности распределения g(x) и функцией распределения G(x), но уже при условии, что она меньше некого заданного параметра x:
И тогда по теореме Байеса:
Экспоненциальное распределение обладает свойством отсутствия памяти:
А это означает, что функция распределения разницы:
Общая проблема выборки с отклонением заключается в подборе такой случайной величины с плотностью распределения g(x), чтобы отклонений было как можно меньше. Для решения этой проблемы существует множество расширений. Сам же метод является основой для почти все последующих алгоритмов, включая Ziggurat. Суть последнего все та же: пытаемся покрыть функцию плотности нормального распределения похожей и более простой функцией и возвращаем величины, попавшие под кривую. Функция своеобразная и напоминает многоступенчатое сооружение, откуда, собственно, и такое название у алгоритма.
Зиккурат сооружается следующим образом. У подножья функции f(x) выбираются точки x1 и y0 = f(x1). Площадь под прямоугольником от (0,0) до (x1, y0) + площадь под хвостом функции f(x > x1) = А. Так мы построили базовый слой. Поверх него ставится еще один прямоугольник, такой, что его ширина x1, а высота y1 = A/y0 и таким образом его площадь будет равна A. Этот прямоугольник уже включает в себя точки, которые лежат выше функции f(x), например (x1, y1). Функцию f(x) второй прямоугольник пересекает в точке (x2, y1) — это будет координата нижней правой точки третьего прямоугольника, который накладывается таким же образом как и второй, чтобы его площадь была равна А. Так продолжается до тех пор, пока мы не построим Зиккурат до вершины функции. Площадь каждой ступени будет равна А. Дальнейший алгоритм (без обработки попадания в базовый слой):
Мы знаем, что случайная величина |X| > x1. Постараемся построить для нее алгоритм выборки с отклонением, используя E1+x1, где E1 — экспоненциально распределенная случайная величина с плотностью x1. Функция плотности распределения E1+x1:
Чтобы знать значение М, нам нужно найти максимум отношения функций:
Точка x, соответствующая максимуму дроби, будет доставлять максимум степени экспоненты. Приравняв производную степени к нулю, находим, соответствующий x:
Получаем границу для равномерной случайной величины:
И тогда условие принятия случайной величины будет:
Тогда полностью алгоритм будет выглядеть так:
Уже говорилось, что для экспоненциального распределения можно взять логарифм от равномерно распределенной величины и что можно сделать генерацию быстрее. Так как любая экспоненциальная величина получается из стандартной делением на плотность, генерацию можно сделать пресловутым Ziggurat. В случае попадания в хвост можно запустить алгоритм по новой и прибавить к полученной величине x1:
Нужно доказать, что при Е > x1 функция распределения E — x1 будет также распределена экспоненциально. Это возможно благодаря ранее упомянутому отсутствию памяти у экспоненциального распределения:
Еще пара фактов: если использовать таблицу с 255 прямоугольниками, то вероятность принятия с первого раза для экспоненциального распределения — 0.989, для нормального — 0.993. В MATLAB с 5 версии для нормального распределения используется Ziggurat (раньше использовался полярный метод). В R для нормальных величин, насколько мне известно, аппроксимируют полиномами обратную функцию ошибок и используют метод инверсии.
Гамма-распределение
Алгоритм GA
Если сложить две случайные величины с гамма-распределением с параметрами k1 и k2, то получится случайная величина с гамма-распределением и с параметром k1+k2. Еще одно свойство — если theta = k = 1, то легко проверить, что распределение будет экспоненциальным. Поэтому, если k целое — то можно просто просуммировать k случайных величин со стандартным экспоненциальным распределением.
Если k не целое, но 2k — целое, то можно вместо одной из экспоненциальных случайных величин в сумме использовать половину квадрата нормальной величины. Почему так возможно, станет ясно позднее.
Алгоритм GS
Теорема. Пускай U — равномерно распределенная случайная величина на [0, 1] и W — экспоненциально распределенная случайная величина с плотностью 1 / lambda. Пусть:
Если g(W) >= U, то W имеет гамма-распределение с параметром lambda:
Доказательство. Функция плотности распределения W:
Так как U имеет равномерное распределение, то
Или нет?
Помните полярный метод Джорджа Марсальи? Он позволял в преобразовании Бокса-Мюллера быстро получать синус или косинус равномерно распределенной случайной величины. Ровно таким же образом можно получить и тангенс. Генерируем две равномерно распределенные случайные координаты x и y на квадрате [-1, 1]x[-1, 1]. Если мы попали в круг с центром в (0, 0) и единичным радиусом — возвращаем x/y, иначе — генерируем x и y еще раз. Вероятность не попасть в круг, скажем, с раза третьего уже меньше чем 0.01.
Распределение Лапласа
Распределение Лапласа — это то же экспоненциальное, только со случайным знаком.
Распределение Леви
Несмотря на то, как ужасно выглядит функция плотности распределения, сама случайная величина генерируется крайне просто и быстро:
Распределение хи-квадрат
Как известно, случайная величина с распределением хи-квадрат с параметром k — это сумма квадратов k стандартных нормальных случайных величин. Менее известно, что при четном k это же и удвоенная сумма k/2 экспоненциальных случайных величин (или же распределение Эрланга). Из этого соотношения и происходит вышеупомянутый алгоритм GA2:
Этот факт легко доказать, используя характеристическую функцию — обратное преобразование Фурье функции плотности распределения:
У этой функции есть полезное свойство для суммы двух независимых случайных величин:
Пусть E — случайная величина с экспоненциальным распределением:
Тогда её характеристическая функция:
Нам нужно узнать распределение случайной величины равной удвоенной сумме стандартных экспоненциальных величин:
Если оно совпадает с распределением хи-квадрат, то его характеристическая функция:
Докажем это. Ранее было упомянуто также, что для экспоненциального распределения:
Используя это свойство, получаем:
Из этого свойства следует примечательный факт: если выбирать точку на плоскости со случайными и нормальными координатами (x, y), то расстояние от (0,0) до этой точки будет распределено экспоненциально.
Логнормальное распределение
Люди, работающие с математическими моделями на финансовых рынках, о логнормальном распределении знают не понаслышке. Для логнормального, лог-Коши, лог-логистического распределений есть один простецкий способ — взять экспоненту. К сожалению, способа быстрее я не знаю, однако, возможно, существует способ генерировать подобные величины с помощью распределения Леви и/или распределения хи-квадрат. Посмотрите, как они похожи. А пока так:
Логистическое распределение
Логистическое распределение очень похоже на нормальное, но имеет более тяжелый хвост, генерируется довольно легко через стандартное равномерное распределение:
Напоследок вкратце о не всегда быстрых, но очень простых алгоритмах для других популярных распределений: