На Хабре много статей посвящено алгоритмам Монте-Карло, например, вот эта, вчерашняя. Как основная идея, так и реализация методов весьма несложная, но небольшим препятствием может служить отсутствие под рукой подходящих инструментов для моделирования. Тем из читателей, для кого проблема актуальна, советую использовать бесплатный математический редактор Mathcad Express, про который я и пишу в моем блоге.
Mathcad Express — это «легкая» версия известного пакета PTC Mathcad Prime, в которой большая часть функционала выключена. Тем не менее, датчики псевдослучайных чисел остаются доступными, что позволяет реализовать (довольно быстро и наглядно) различные статистические модели на основе алгоритмов Монте-Карло. Сразу оговорюсь, что некоторые решения будут не самыми лучшими, с точки зрения пользователей коммерческой версии Mathcad Prime, однако, они гарантированно не выведут нас за пределы функционала бесплатного Mathcad Express.
Напомню, что алгоритмы Монте-Карло — это общее название группы численных методов, основанных на программном создании определенной последовательности псевдослучайных чисел, моделирующей тот или иной эффект, например, последовательность отказов техники. Получив большое число реализаций случайного процесса, можно надеяться, что его вероятностные характеристики совпадут с аналогичными величинами решаемой задачи «реального мира». Файл с дальнейшими расчетами в форматах Mathcad и XPS лежит здесь.
В Mathcad Express доступен ряд генераторов псевдослучайных чисел, создающих выборки псевдослучайных данных с различными законами распределения. Для создания вектора из N псевдослучайных чисел нужна всего лишь одна строка Mathcad-документа. Например сгенерировать N=5 псевдослучайных чисел с нормальным распределением (нулевым средним и единичной дисперсией) можно так:
Векторы случайных чисел удобно визуализировать на графиках так: одна выборка (т.е. компоненты одного из случайных векторов T1) по оси абсцисс, а другая выборка (другой случайный вектор T2) – по оси ординат. На следующем рисунке приведены графики пар псевдослучайных чисел для экспоненциального (слева) и нормального (справа) распределения. Параметры распределений задаются в формулах над графиками.
На следующем рисунке показаны аналогичные пары псевдослучайных чисел G1 и G3 с нормальным распределением и разной дисперсией (график слева) и прием генерации коррелированных псевдослучайных чисел G1 и G4 (график справа).
Вообще говоря, в Mathcad Express доступно довольно много датчиков псевдослучайных чисел:
По простейшим формулам статистики можно посчитать выборочные оценки средних значений, дисперсий и среднеквадратичных отклонений:
Аналогично можно оценить выборочный коэффициент корреляции:
Пример моделирования конверсии посетителей сайта при помощи коррелированных псевдослучайных чисел я приводил в статье о корреляции и регрессии.
Приведем простой рецепт для построения графика-гистограммы. В коммерческой версии Mathcad Prime подготовка данных для гистограммы сводится к применению одной встроенной функции:
(К слову, для перечисленных типов распределений также предусмотрены встроенные функции, как для плотности вероятности, так и функции распределения, как это показано на примере гауссовой псевдослучайной выборки). Чтобы построить график-гистограмму в Mathcad Express, необходимо «вручную» разделить интервал (a,b), в который попадают данные, на M интервалов и выполнить несложные математические операции, доступные в Mathcad Express (которые, если читатель заинтересуется, он найдет в документе с расчетами).
В качестве примера используем псевдослучайные данные с экспоненциальным распределением (одно из практических применений которого описано в прошлой статье).
В заключение, отметим, что для гистограммы следует выбрать соответствующий тип графика:
Подведем итог: используя бесплатный математический пакет РТС Mathcad Express, можно довольно просто, в привычной математической нотации и не прибегая к программированию, реализовывать модели Монте-Карло. Также надеюсь, что о других применениях Mathcad в анализе данных у меня получится рассказать в следующих статьях.
Mathcad Express — это «легкая» версия известного пакета PTC Mathcad Prime, в которой большая часть функционала выключена. Тем не менее, датчики псевдослучайных чисел остаются доступными, что позволяет реализовать (довольно быстро и наглядно) различные статистические модели на основе алгоритмов Монте-Карло. Сразу оговорюсь, что некоторые решения будут не самыми лучшими, с точки зрения пользователей коммерческой версии Mathcad Prime, однако, они гарантированно не выведут нас за пределы функционала бесплатного Mathcad Express.
Напомню, что алгоритмы Монте-Карло — это общее название группы численных методов, основанных на программном создании определенной последовательности псевдослучайных чисел, моделирующей тот или иной эффект, например, последовательность отказов техники. Получив большое число реализаций случайного процесса, можно надеяться, что его вероятностные характеристики совпадут с аналогичными величинами решаемой задачи «реального мира». Файл с дальнейшими расчетами в форматах Mathcad и XPS лежит здесь.
Часть 1. Как сгенерировать выборку псевдослучайных чисел
В Mathcad Express доступен ряд генераторов псевдослучайных чисел, создающих выборки псевдослучайных данных с различными законами распределения. Для создания вектора из N псевдослучайных чисел нужна всего лишь одна строка Mathcad-документа. Например сгенерировать N=5 псевдослучайных чисел с нормальным распределением (нулевым средним и единичной дисперсией) можно так:
Векторы случайных чисел удобно визуализировать на графиках так: одна выборка (т.е. компоненты одного из случайных векторов T1) по оси абсцисс, а другая выборка (другой случайный вектор T2) – по оси ординат. На следующем рисунке приведены графики пар псевдослучайных чисел для экспоненциального (слева) и нормального (справа) распределения. Параметры распределений задаются в формулах над графиками.
На следующем рисунке показаны аналогичные пары псевдослучайных чисел G1 и G3 с нормальным распределением и разной дисперсией (график слева) и прием генерации коррелированных псевдослучайных чисел G1 и G4 (график справа).
Вообще говоря, в Mathcad Express доступно довольно много датчиков псевдослучайных чисел:
- rnd(x) — равномерное распределение на интервале (0,x).
- rbeta(x,s1,s2) — бета-распределение (s1,s2>0 — параметры, 0<x<1).
- rbinom(k,n,p) — биномиальное распределение (n — целый параметр, 0<k<n и 0<p<1 — параметр, равный вероятности успеха единичного испытания).
- rcauchy(x,l,s) — распределение Коши (l — параметр разложения, s>0 — параметр масштаба).
- rexp(x,r) — экспоненциальное распределение (r>0 — показатель экспоненты).
- rF(x,d1,d2) — распределение Фишера (d1,d2>0 — числа степеней свободы).
- rgamma(x,s) — гамма-распределение (s>0 — параметр формы).
- rgeom(k,p) — геометрическое распределение (0<p<1 — параметр, равный вероятности успеха единичного испытания).
- rhypergeom(k,a,b,n) — гипергеометрическое распределение (a,b,n — целые параметры).
- rlnorm(x,m,s) — логарифмически нормальное распределение (m — натуральный логарифм математического ожидания, s>0 — натуральный логарифм средне-квадратичного отклонения).
- rlogis(x,l,s) — логистическое распределение (l — математическое ожидание, s>0 — параметр масштаба).
- rnbinom(k,n,p) — отрицательное биномиальное распределение (n>0 — целый параметр, 0<p<1).
- rnorm(x,m,s) — нормальное распределение (m — среднее значение, s>0 —среднеквадратичное отклонение).
- rpois(k,p) — распределение Пуассона (p>0 — параметр).
- rt(x,d) — распределение Стьюдента (d>0 — число степеней свободы).
- runif(x,a,b) — равномерное распределение (a<b — границы интервала).
- rweibull(x,s) — распределение Вейбулла (s>0 — параметр).
Часть 2. Как выполнить статистические расчеты
По простейшим формулам статистики можно посчитать выборочные оценки средних значений, дисперсий и среднеквадратичных отклонений:
Аналогично можно оценить выборочный коэффициент корреляции:
Пример моделирования конверсии посетителей сайта при помощи коррелированных псевдослучайных чисел я приводил в статье о корреляции и регрессии.
Часть 3. Как построить гистограмму
Приведем простой рецепт для построения графика-гистограммы. В коммерческой версии Mathcad Prime подготовка данных для гистограммы сводится к применению одной встроенной функции:
(К слову, для перечисленных типов распределений также предусмотрены встроенные функции, как для плотности вероятности, так и функции распределения, как это показано на примере гауссовой псевдослучайной выборки). Чтобы построить график-гистограмму в Mathcad Express, необходимо «вручную» разделить интервал (a,b), в который попадают данные, на M интервалов и выполнить несложные математические операции, доступные в Mathcad Express (которые, если читатель заинтересуется, он найдет в документе с расчетами).
В качестве примера используем псевдослучайные данные с экспоненциальным распределением (одно из практических применений которого описано в прошлой статье).
В заключение, отметим, что для гистограммы следует выбрать соответствующий тип графика:
Подведем итог: используя бесплатный математический пакет РТС Mathcad Express, можно довольно просто, в привычной математической нотации и не прибегая к программированию, реализовывать модели Монте-Карло. Также надеюсь, что о других применениях Mathcad в анализе данных у меня получится рассказать в следующих статьях.