Логотип HCXL Статистическое моделирование. Метод Монте-Карло.
На этой странице вы узнаете, что такое статистическое моделирование, как построить математическую модель для моделирования и применить надстройку Моделирование Монте-Карло.

Ситуация: Далекая мишень.

Дротики из набора дартса бросаем в удаленную мишень.
Мишень - это черная квадратная рамка со стороной 2 дм, напечатанная на стандартном листе бумаги А4.
Наша задача – просто попасть в мишень. Промахи случаются гораздо чаще попаданий, ввиду значительного расстояния до мишени. Бросаем дротики до 100 попаданий в мишень.
При попадании дротика в мишень в ней остаются маленькие отверстия от иглы, так что по завершении игры отлично видно, куда попадали дротики. В силу случайности попаданий отверстия расположены хаотично.
Белая мишень для дарта с 100 бросков
Мишень для дарта с квадрантами
Разделим мишень на четыре квадранта (наведите курсор на мишень).
скрепка
  1. Сколько примерно попаданий будет в правый верхний квадрант (или любой другой квадрант на выбор), если общее количество отверстий от дротиков N равно 100? Почему?
    Можно ли записать общую формулу для вычисления числа попаданий?
  2. Будет ли реальное число попаданий в выбранный квадрант точно равно предвычисленному?
    Как сильно может отличаться от ожидаемого реальное число попаданий в выбранный квадрант?

1

Постановка задачи статистического моделирования с помощью физической модели.

Моделирование ситуации Далекая мишень

Как имитировать случайное попадание дротика в мишень? И вообще получить число случайно?

Алгоритм
построения модели Далекая мишень

Мишень
Установка границ
Два случайных числа
Результат попадания
Работающая модель
GO AND UPDATE YOUR BROWSER BEFORE YOU READ ON!
  • Число попаданиий в I квадрант:   0
  • Число попаданиий в II квадрант:   0
  • Число попаданиий в III квадрант:   0
  • Число попаданиий в IV квадрант:   0
Подготовить поле на листе Excel
Подготовим диаграмму для визуализации данных.
В поле диаграммы будем строить точки из таблицы, в которой датчиком случайных чисел генерируется два числа: X и Y - координаты точки, в которую попадает игла дартса.
Подготовленное место для моделирования на листе Excel
Функция-генератор случайных чисел СЛЧИС() ( англ. Rand() )
Случайное число получают с помощью генератора случайных чисел.
В Excel таким генератором является функция без аргументов СЛЧИС(), которая выдает случайное число в интервале от 0 до 1.
Вероятности появления любого числа из этого диапазона совершенно одинаковы, т.е. числа близкие к 0, к 0.5 или к 1 появляются с равной частотой. Функция использует специальный алгоритм для генерации длинной цепочки случайных чисел.
Если ввести функцию СЛЧИС() в любую ячейку листа Excel, то получим случайное, у всех различное число. При нажатии на клавиатуре функциональной кнопки F9 или при любом действии на листе, которое сопровождается нажатием клавиши Enter, значение случайного числа изменяется и происходит пересчет всех формул книги Excel.
    Примерный код функции СЛЧИС()
  • (iseed – начальное значение генератора – произвольное, желательно большое, целое число,
    4.6566128752458E-10 = 1/2147483647, 2147483647 = 231 - 1 )
  • a = 16807 * iseed
  • b = a - 2147483647 * Int(a * 4.6566128752458E-10)
  • iseed = b
  • СЛЧИС = b * 4.6566128752458E-10
Использование функции СЛЧИС() для определения координат точки попадания
Введем в ячейки I4 и J4 функцию СЛЧИС().
Ввод функции СЛЧИС() в таблицу моделирования игры Дарт в файле MS Excel Протянем формулы вниз, и увидим на диаграмме точки попадания дарта в мишень.
Таблица моделирования игры Дарт в файле MS Excel с попаданиями в правый верхний квадрант
Почему модельный дротик все время попадает в верхний правый квадрант?
Вспомним, что функция СЛЧИС() генерирует случайное число ξ от 0 до 1. Но наша мишень имеет размер 2х2 дм. Причем начало координат лежит в центре мишени.
    Поэтому для того, чтобы получить случайное число, изменяющееся от -1 до 1, необходимо
  • случайное число ξ, сгенерированное функцией СЛЧИС() умножить на 2:
    2 * ξ,
  • а затем из модифицированного случайного числа 2 * ξ вычесть 1:
    2 * ξ - 1.
    Тогда координаты попадания в квадратную мишень со стороной 2 дм нужно моделировать как
  • X = 2 * ξ - 1
  • Y = 2 * ξ - 1
  • Запишем формулу = 2 * СЛЧИС() - 1 в ячейки I4 и J4.
Теперь при обновлении значения генератора случайных чисел след от дротика может попасть в любое место мишени.
Как смоделировать 100 попаданий?
Для того, чтобы смоделировать сразу N=100 попаданий, протянем формулы из ячеек I4 и J4 на сто ячеек вниз до строки 103. Получим модель результата игры «Далекая мишень». Произведено 100 выстрелов
Подсчет попаданий дротика в заданный квадрант
Подсчитаем количество попаданий в верхний правый квадрант.
Условие попадания: X > 0 и Y > 0
Для того, чтобы выделить точки, попавшие в верхний правый квадрант, присвоим им маркер 1. Для этого в ячейку К3 введем формулу = ЕСЛИ(И(I4 > 0;J4 > 0);1;0), которая означает:
если значение ячейки I4 больше 0 и значение ячейки J4 больше 0, то запиши 1, иначе запиши 0.
В ячейке К2 найдем количество таких единичек, для этого запишем в нее формулу
=СУММ(К3:К103).
Скачать файл с задачей Дартс Скачать файл "21 Darts.xlsx" (примерно 776 Кб)
    Этот файл содержит:
  • рабочую модель с выстрелом из 100 игл.
  • рабочую модель с выстрелом из 400 игл.
  • рабочую модель с выстрелом из 1600 игл.
  • рабочую модель с выстрелом из 6400 игл.

2

Как оценить ожидаемое число событий и дисперсию.

Как оценить, какое количество попавших в мишень дротиков попадет именно в I квадрант?
Вспомним основные формулы из теории вероятности.
Ожидаемое число событий ‹x› = N×p
где N - число испытаний, а p - вероятность выпадения ожидаемого события
Дисперсия ‹Dx› = N×p×(1 - p)
если обозначить через q = 1 - p, то ‹Dx›= N×p×q,
где q - вероятность не выпадения ожидаемого события
Cтандартное отклонение для числа событий ‹sx›= (‹Dx›)½ = ( N×p×q)½

Какой разброс числа попаданий от ожидаемых 25-ти мы можем получить?


    Для начала ответим на вопросы.
  1. Каким вообще может быть число попаданий в заданный квадрант?
    Практически каждый ответит на него: от 0 до 100.
    И действительно, нет никаких причин, запрещающих игроку, специально не целящегося в определенное место мишени, 100 раз подряд попасть в заданный квадрант. Так же как нет причин для него все 100 раз промахнуться!
    Однако на практике мы этого НИКОГДА НЕ НАБЛЮДАЕМ!
  2. С какой вероятностью дротик не попадет в заданный квадрант?
      Не трудно посчитать.
    • Вероятность не попасть в заданный квадрант - 3/4 или 0,75
    • Вероятность не попасть в заданный квадрант за два броска - 3/4×3/4 или (3/4)2, а это 9/16 или ≈0,56
    • Вероятность не попасть в заданный квадрант за три броска - 3/4×3/4×3/4 или (3/4)3, а это 27/64 или ≈0,42
    • Вероятность не попасть в заданный квадрант за сто бросков - (3/4)100, а это ≈3,2×10-13 или 0,00000000000032 , т.е. почти 0.
  3. С какой вероятностью дротик попадет в заданный квадрант?
    • Вероятность попасть в заданный квадрант - 1/4 или 0,25
    • Вероятность попасть в заданный квадрант два раза подряд - 1/4×1/4 или (1/4)2, а это 1/16 или ≈0,06
    • Вероятность попасть в заданный квадрант три раза подряд - 1/4×1/4×1/4 или (1/4)3, а это 1/64 или ≈0,015
    • Вероятность попасть в заданный квадрант все сто раз - (1/4)100, а это ≈6,2×10-61, т.е. 0.
А теперь вернитесь немного назад к работающей модели и сделайте ряд одиночных бросков. Эти опыты прекрасно иллюстрируют наши вычисления!

    Итак,
  • вероятность выпадения определенного события не меняется (в нашем случае вероятность для дротика попасть в заданный квадрант все время 1/4);
  • вероятность многократного повторения ОДНОГО И ТОГО ЖЕ определенного события с увеличением количества испытаний уменьшается.
  • Поэтому вероятность при 100 бросках все время попадать в заданное место (1/4)100, т.е. 0 .
И снова вернемся к нашему вопросу:
Cколько дротиков может попасть в заданный квадрант при проведении нескольких серий испытаний?
Для ответа на этот вопрос обратимся к частотной диаграмме.
    Для построения частотной диаграммы возьмем две оси:
  • на одной оси отложим возможные результаты нашего эксперимента ось ‹n›
    как мы предпалагаем, это цифры от 0 до 100
  • на другой оси k - количество результатов, выпавших при проведении испытания
  • Выпавший результ изобразим в виде маленького красного прямоугольника. Если выпадает один и тот же результат в разных опытах, то на диаграмме один красный прямоугольник встанет на другой.
    Чем выше пирамида из прямоугольников, тем чаще выпадает этот результат при проведении испытаний.

Частотная диаграмма числа попаданий в I квадрант.


Число испытаний:
GO AND UPDATE YOUR BROWSER BEFORE YOU READ ON!
Распределение числа игл, попавших в первый квадрант на частотной диаграмме.

Задайте число испытаний: 100, 1000, 10000.
При 100000 моделирование будет длиться несколько минут в зависимости от мощности вашего комрьютера. Поэтому слишком большие числа задавать не рекомендуется.
Введите число испытаний, которое хотите провести.


GO AND UPDATE YOUR BROWSER BEFORE YOU READ ON!

Чем больше число испытаний, тем ближе функция распределения нашей случайной величины (число попаданий в заданный квадрант) к нормальной функции распределения.

Таким образом, уже при 10 тыс. испытаний мы наблюдаем иллюстрацию Центральной предельной теоремы теории вероятности.

Центральная предельная теорема
Сумма большого числа примерно одинаковых случайных величин с произвольными функциями распределения всегда имеет приблизительно нормальную функцию распределения.

Поэтому оценку вероятности отклонения числа попаданий от предвычисленного на заданную величину нужно делать в предположении, что число попаданий дротика в заданный квадрант есть нормально распределенная случайная величина со средним значением ‹x› = N×p и стандартным отклонением ‹sx› = ( N×p×q)½.
Поэтому мы вправе сделать вывод:
1 / 3
2 / 3
3 / 3

 В 2 играх из 3 (68%) в выбранный квадрант попадет от 20 до 30 дротиков (25±4,3)
В 19 играх из 20 (95%) в выбранный квадрант попадет от 16 до 34 дротиков (25±8,7)
Только в 1 игре из 300 (100% - 99,7%) число попаданий окажется меньше 12 или больше 38 (25±13)
Провторяя испытание снова и снова, мы видим, что результаты отдельных игр стремятся к среднему значению, а не к крайним. А это значит, что результат игры не настолько непредсказуем, как могло показаться в начале.
Чтобы проверить статистические выкладки, сделанные по ситуации «Далекая мишень», нужно много раз повторить игру.
И чем больше наблюдений будет в нашем распоряжении, тем более точно мы сможем оценить величину
среднего значения числа попаданий ‹x› и стандартного отклонения ‹sx.
И это также отличная иллюстрация Закона больших чисел теории вероятности.

Закон больших чисел
Закон больших чисел утверждает, что при бесконечном увеличении числа наблюдений ошибка в расчете среднего значения ‹x› любой характеристики случайной величины стремится к нулю. Причем с ростом числа испытаний N ошибка уменьшается по закону Δ ‹x› ~ 1/ N1/2.

Если речь идет о случайных величинах, являющихся суммой множества случайных факторов, то, в соответствии с центральной предельной теоремой, эти величины будут иметь нормальное распределение. И тогда ошибку можно определить более точно:
Δ ‹x› ~ 3 * ‹sx› / N 1/2
    Итак, что мы сделали?
  1. Построили по ситуации «Далекая мишень» математическую модель с использованием ГЕНЕРАТОРА СЛУЧАЙНЫХ ВЕЛИЧИН.
  2. Многократно обсчитали эту модель:
    • находили среднее число попаданий в заданный квадрант
    • вычисляли стандартное отклонение
  3. На основе полученных многократных вычислений определили вероятностные характеристики рассматриваемого процесса.
  4. По сути мы применили метод Монте-Карло.
Для того, чтобы многократно обсчитывать модель, а затем на основе полученных данных вычислять вероятностные характеристики процесса, используют различные программные инструменты. Для моделирования процессов в MS Excel я предлагаю использовать надстройку Моделирование Монте-Карло, созданную мной.
Читайте подробнее о надстройке на странице Надстройка "Моделирование Монте-Карло".

3

Применение надстройки Монте-Карло для статистического моделирования

  1. Подключите надстройку "Моделирование Монте-Карло".
  2. Откройте файл "21 Darts.xlsx", который был описан на раскрывающейся панели Моделирование ситуации Далекая мишень в рабочей книге MS Excel или создайте свою модель в рабочей книге MS Excel.
  3. Введите в поле Целевые ячейки ячейку,в которой вычисляется число попаданий в I квадрант.
    В нашем случае, это ячейка K2. Применение надстройки Моделирование Монте-Карло
  4. Запустите надстройку, нажав кнопку Выполнить моделирование.
Надстройка проведет 10 тысяч испытаний и выдаст результат моделирования:

Результат моделирования

4

Где используют статистическое моделирование

Рассмотрим простой пример.

А если выбрать не квадрант на нашей мишени, а произвольную фигуру.
Возможно ли оценить ее площадь?

мишень с произвольной фигурой
Очевидно, что отношение площади фигуры (Sфигуры) к площади всего поля (Sполя) равно отношению числа попаданий в фигуру (N в фигуру) к общему числу бросков (Nвсего):
Формула соотношений площади фигуры и числа попаданий в фигуру
где ΔSфигуры - точность вычисления площади фигуры. Эта величина зависит от числа бросков.
Чем больше дротиков мы бросим, тем точнее определим площадь фигуры.

СОМНЕВАЕТЕСЬ?
Тогда вернемся к нашей мишени.


GO AND UPDATE YOUR BROWSER BEFORE YOU READ ON! Фактически, данные в процентах показывают отношение площади квадранта к площади всей мишени. Мы ожидаем, что эта величина равна 25%.
Как видим, чем больше игл попадает в мешень, тем точнее результат и меньше разброс в определении площади.
    Теперь используем надстройку Моделирование Монте-Карло и смоделируем 10 тысяч испытаний.
    В этой задаче мы моделируем случайную величину, которая показывает, какая доля попавших в мишень игл приходится на первый квадрант.
  1. Введем данные о процентном соотношении доли попаданий в 1 квадрант к общему числу игл.
    Обратите внимание, что эти ячейки читают данные с соответствующих листов, на которых с помощью Генератора случайных чисел (функция =СЛЧИС())) моделируются попадания
    Внесение данных в надстройку Моделирование Монте-Карло
  2. После запуска надстройки получим файл, на первом листе которого выведены результаты моделирования:
    • среднее значение моделируемой случайной величины
      - как мы и ожидали, это число близкое к 25%, которое определяется все точнее с увеличением статистики;
    • стандартное отклонение - это характерный разброс случайной величины, который показывает, на сколько результат единичного опыта отличается от среднего значения;
    • доверительный интервал оценки среднего значения - этот параметр показывает ошибку оценки среднего с учетом множества испытаний;
      Другими словами, это число показывает, с какой погрешностью определено среднее значение случайной величины.
    • строка Максимум показывает, какое максимальное значение при 10 тысячах испытаниях достигала случайная величина
    • строка Минимум выводит самое маленькое значение, которое случайная величина достигала при 10 тысячах испытаниях;
    • сторока Медиана показывает значение случайной величины в середине интервала.
    • Результаты моделирования надстройки Моделирование Монте-Карло
    • Если в надстройке была отмечена опция Гистограммы, то на втором листе файла мы увидим построеные гистограммы, на которых показано, сколько раз средняя случайная величина, которую мы моделировали, принимала то или иное значение:
    • Гистограмма определения среднего значения случайной величины при 100 попаданиях в мишень Гистограмма определения среднего значения случайной величины при 400 попаданиях в мишень Гистограмма определения среднего значения случайной величины при 1600 попаданиях в мишень Гистограмма определения среднего значения случайной величины при 6400 попаданиях в мишень
Как видите, точнее всего случайная величина - число, попавших дротиков в I квадрант, определяется, когда мы бросали 6400 дротиков в мишень.
Обратите внимание, метод Монте-Карло ничего "не знает" ни о мишени, ни о площади квадранта, а работает со случайными числами. Использование этого метода позволяет нам довольно точно определить некое число, которое, как знаем только мы, является площадью квадранта.
И этот факт открывает перед нами большие возможности, так как дает возможность моделировать совершенно разные величины: выручку, спрос, финансовые потоки и т.д.
О том, как оценить с помощью этого метода число π, читайте на странице Оценка числа ПИ .