то нужно вначале в Сервис/Надстройки… выбрать пункт Пакет анализа
и нажать ОК). В диалоговом окне «Корреляция» укажите входной интервал A1:B10000, выберите группирование («радиокнопочку») по столбцам и укажите любой выходной интервал размером 3×3 ячейки (или его верхнюю левую ячейку). Нажмите ОК. В указанном вами выходном диапазоне ячеек листа появятся результаты анализа коэффициентов корреляции. Оценка корреляции между числами первого и второго столбца будет находиться в пределах 0,01 или немногим более. Пересчитайте случайные числа по ключу F9 и повторите опыт. Проделайте это несколько раз. Результат анализа всегда будет лежать в указанных пределах и иметь разные знаки. Усредняя результаты всех опытов, получаем близкий к нулю результат и приходим к выводу, что базовые случайные числа не коррелируют.
К более мощным тестам, проверяющим наличие равномерности и независимости, относятся:
–тест «гиперкубов» на равномерность заполнения N-мерных кубов точка-
ми с координатами (z1, ... , zN), (zN+1, ... , z2N), ... , описанный в [2, 22];
–тест «серий» на длину подпоследовательностей (например, на длину серий чисел zi, которые начинаются одинаковой цифрой) [2];
–тест «максимумов и минимумов» и другие.
При N = 2 смысл теста «гиперкубов» можно наглядно продемонстрировать в Ms Excel.
Пример 4 . На листе Выборка, полученном в примере 3, выделите диапазон A1:B5000 и в мастере диаграмм выберите тип диаграммы Точечная, вид диаграммы без линий (составляемой только из маркеров). Нажмите Готово. Из-за большого числа маркеров на полученной диаграмме они получаются плохо различимыми. Поэтому щёлкните правой кнопкой мыши по маркерам и выберите в контекстном меню опцию Формат рядов данных… . В диалоговом окне на вкладке Вид выберите размер
маркера 2 пт и тип маркера – в виде |
|
||
маленького кружка. Нажмите ОК. |
|
||
Диаграмма |
приобретёт приблизи- |
|
|
тельно такой вид, как на рис. 1.2. |
|
||
Каждая |
точка диаграммы |
имеет |
|
пару координат, взятую из строки |
|
||
диапазона A1:B5000. Видно, что точ- |
|
||
ки распределены в единичном квад- |
|
||
рате случайно и плотность распреде- |
|
||
ления равномерная. Видно также, что |
|
||
точки не сгущаются вдоль каких-либо |
|
||
линий, что говорит об отсутствии ви- |
|
||
димых зависимостей между |
ними. |
Рис. 1.2. Распределение случайных |
|
В общем случае тест гиперкубов, ча- |
|||
стным случаем которого является тест |
точек в единичном квадрате |
||
11
квадратов, использует для проверки свойств равномерности распределения и независимости БСВ количественные статистические критерии. Нажмите несколько раз F9 и понаблюдайте, как при случайном выпадении точек проявляются равномерность их распределения и отсутствие видимых связей между ними. Сохраните файл.
2.6. Противоречивость требований к программным датчикам БСВ
В настоящее время существуют десятки специальных методов тестирования программных датчиков БСВ. При необходимости глубже изучить этот вопрос можно воспользоваться работами [2, 16, 22]. Однако прежде чем серьёзно углубляться в тестирование датчиков, следует заметить, что проблема их тестирования имеет в целом не математическую природу, и вопрос о приемлемости любого программного датчика не имеет безупречного (с позиций «чистой математики») решения.
Так, для БСВ zi на выходе мультипликативного конгруэнтного датчика (1.3) наличие свойств равномерности и независимости не может быть доказано в принципе, поскольку этих свойств у БСВ zi просто нет. Числа zi в (1.3) не имеют равномерной п. р. в. (1.1), поскольку дискретны и, как любые дискретные с. в., не имеют ни равномерной, ни вообще какой-либо другой п. р. в. Кроме того, числа zi в (1.3) всегда зависимы: зависимость между ними дается самой
формулой (1.3), из которой следует, что |
|
zi = [(km zi −1) mod m]/ m , |
(1.8) |
т. е. что каждое следующее значение БСВ однозначно определяется предыдущим. Причём при s = T, где T – период последовательности, пара чисел zi и zi+s связана простой линейной зависимостью zi = zi+s.
Но при тестировании независимости БСВ zi мы как бы «забываем», что в действительности зависимость имеет место изначально, причём зависимость эта максимально жёсткая, полностью детерминированная. Понятно, что такое наше тестирование независимости может установить не независимость БСВ, а лишь некоторое ее подобие. Однако парадокс состоит в том, что в широких пределах применения датчиков это подобие оказывается весьма близким к тождеству: дискретная и детерминированная величина оказывается весьма близкой к нужной нам непрерывной и случайной величине. При компьютерном моделировании противоположности сходятся.
Как явная дискретность БСВ zi, так и явная их функциональная зависимость логически несовместимы с требованиями непрерывности и независимости, но на практике это имеет ограниченное значение – не большее, чем, например, значение неточности выполнения арифметических операций с плавающей точкой. В то же время сделанное здесь замечание о противоречивом характере требований к датчикам БСВ указывает на некоторые «подводные камни» статистического моделирования, на важность хорошего знания основ теории вероятностей и на необходимость применения только тех датчиков БСВ, которые разработаны и тщательно выверены компьютерными математикамипрофессионалами.
12
3. Моделирование случайных факторов
Случайными факторами будем называть случайное событие, случайную величину, случайный процесс и вообще любые объекты, случайный выбор которых определяется соответствующими вероятностями. Под реализацией случайного фактора будем понимать сам акт случайного выбора одного такого объекта из заданного множества, наделённого вероятностной мерой.
Построение модели любого случайного фактора сводится к подходящему функциональному преобразованию базовых случайных величин zi. При моделировании случайных факторов будем исходить из того, что имеющийся в нашем распоряжении датчик БСВ идеален, т. е. величины zi на его выходе – равномерно распределённые (zi ~ R[0,1]) и независимые. Это позволит нам свободно конструировать модели разнообразных случайных факторов и устанавливать их свойства, опираясь только на положения теории вероятностей и не прибегая
кгромоздким процедурам статистического тестирования.
Вто же время в целях наглядности представления результатов будем модели случайных факторов иллюстрировать примерами простой статистической обработки выборок, получаемых с помощью этих моделей.
3.1. Моделирование случайных событий и дискретных случайных величин
3.1.1. Моделирование случайных событий
Пусть задано некоторое множество элементарных исходов {A1, ... , An} c их вероятностями p1, ... , pn соответственно ( p1 +...+ pn =1).
Чтобы построить программную модель, «оживляющую» такую совокупность исходов, разобьём мысленно интервал значений БСВ (0 ≤ t ≤ 1) на n от-
резков длиной p1, p2, ... , pn. Это всегда возможно, так как |
p1 +...+ pn =1. На- |
|
пример, можно определить отрезки так: |
|
|
α1 = (0, |
p1), |
|
α2 = (p1, |
p1 + p2), |
(1.9) |
α3 = (p1 + p2, p1 + p2 + p3), |
|
|
. . . . . . . . . . . .
αn = (p1 + p2 + … + pn-1, 1).
Алгоритм моделирования случайных исходов Aj состоит в том, чтобы, обратившись к датчику БСВ, определить, в какой из интервалов α1, α2, ... , αn попало значение БСВ. Факт его попадания в конкретный интервал αj предопределяет переход алгоритма к процедуре имитации соответствующего, имеющего тот же номер, исхода Aj. Поскольку вероятность попадания БСВ в интервал αj равна его длине pj, то и вероятность исхода Aj будет равна pj.
Пример 5 . На свободном листе Ms Excel в ячейку A1 введите формулу =СЛЧИС(). В соседнюю ячейку B1 введите =ЕСЛИ(A1<0,5;0;1). Эта формула выдаёт 0, если БСВ в ячейке A1 находится между 0 и 0,5, и выдаёт 1, если БСВ
13
в ячейке A1 находится между 0,5 и 1. Таким образом, в ячейке B1 имитируется результат выбрасывания монеты. Нажмите несколько раз клавишу F9.
Скопируйте содержимое строки A1:B1 в диапазон A1:B20. Правым щелчком мыши выделите столбец A и выберите в открывшемся контекстном меню опцию Скрыть. Оставшийся видимым столбец B имитирует результат выбрасывания 20 монет. Положим, единица в столбце B означает выпадение герба. Промоделируйте несколько выбрасываний 20 монет нажатием ключа F9. Выделите диапазон B1:B20, чтобы на нижней серой индикаторной панели листа увидеть сумму этого диапазона, равную числу выпавших единиц (гербов). Повторяя нажатия F9, проверьте, часто ли происходит случайное событие, определяемое следующим высказыванием: «Число выпавших гербов меньше 7».
3.1.2. Моделирование дискретных случайных величин
Принцип моделирования дискретных с. в. не отличается от принципа моделирования случайных событий. Дискретная с. в. x задаётся конечным или счётным множеством возможных значений x1, x2, ... и их вероятностями p1, p2, ... . Она реализуется по тому же принципу, по которому моделируются случайные события. Интервал (0, 1) предварительно разбивается на отрезки, длины которых равны вероятностям p1, p2, ... элементарных исходов Aj. При этом каждый конкретный исход Aj рассматривается здесь как выбор случайной величиной соответствующего значения x = xj.
В двух частных случаях этот общий алгоритм реализации дискретной с. в. целесообразно упростить.
Первый случай – это случай целочисленной с. в. x, принимающей значения 0, 1, ... , n–1 с одинаковыми вероятностями, равными 1/n. Такую дискретную с. в. можно получить с помощью БСВ z одним оператором присваивания, реализующим формулу вычисления целой части:
x = n z . |
(1.10) |
Формулу (1.10) можно легко приспособить и к другим близким ситуациям. Например, для моделирования игральной кости с числом очков x от 1 до 6 можно результат её выбрасывания проимитировать по формуле
x = 6 z +1. |
(1.11) |
Второй случай, когда алгоритм реализации дискретной с. в. следует упрощать, это случай дискретной с. в. с бесконечным (счётным) множеством возможных значений. В такой ситуации часто можно построить компактную программу, лишь применяя рекурсивный вариант общего метода. Суть проблемы состоит в том, что перед программированием алгоритма разбить интервал (0, 1) на бесконечное число вероятностных отрезков с длинами p1, p2, ... невозможно. Поэтому в программе сначала реализуется значение БСВ z, а затем выполняется построение и одновременно – проверка вероятностных отрезков интервала (0, 1), по одному (последовательно, одного за другим), до тех пор, пока не будет построен и проверен отрезок, в котором при его проверке обнаружится реализованное значение БСВ z. После этого случайной величине x присваивается соответствующее найденному отрезку значение xj. Благодаря такому последова-
14
тельному построению и просмотру вероятностных отрезков для реализации любого значения xj приходится строить лишь конечное их число. Конкретный пример использования этого метода для реализации пуассоновской с. в. приводится в [16].
Пример 6 . Пусть требуется реализовать дискретную с. в. x, принимаю-
щую значения 2; 5; 15; –30 и 3,14 с вероятностями 0,1; 0,15; 0,45; 0,2 и 0,1 соот-
ветственно. Если отрезки с длинами, равными перечисленным вероятностям, откладывать на числовой оси вправо от нуля, то их правыми границами будут точки 0,1; 0,25; 0,7; 0,9 и 1. Запишите на чистом листе Ms Excel в диапазоне B1:F2 табличку чисел:
0,1 |
0,25 |
0,7 |
0,9 |
1 |
2 |
5 |
15 |
–30 |
3,14 |
В ячейку A3 для получения БСВ введите формулу =СЛЧИС(). Теперь для реализации датчика нужной дискретной с. в. остаётся определить, между какими границами, указанными в верхней строке таблички, попадает значение БСВ, и выбрать соответствующее значение с. в. из нижней строки таблички.
Поскольку в Excel подобные условные операции организуются не самым очевидным образом, приведём подробную инструкцию, поясняющую, как это сделать.
В ячейку B3 введите формулу =ЕСЛИ(($A3<B$1)*($A3>A$1);1;0). Эта формула выдаёт 1, если значение ячейки A3 (это БСВ) находится в первом вероятностном отрезке, указанном ячейками A1 и B1, т. е. от 0 до 0,1 (ячейка A1 должна быть пустой). Скопируйте B3 вправо на диапазон B3:F3. В нём появляется строка из нулей и одной единицы, указывающей своим положением на то значение из таблички вверху, которое должно быть выбрано в качестве реализации с. в. x. Автоматический выбор этого значения организуйте в ячейке G3. Для этого запишите в неё формулу =СУММПРОИЗВ($B$2:$F$2;B3:F3). Нажимая ключ F9, убедитесь, что в G3 теперь появляются случайные значения нашей дискретной с. в.
Теперь скопируйте строку A3:G3 вниз на 10–20 строк, выделите и скройте столбцы A-F. Оставшийся видимым столбец G содержит только выборку значений заданной дискретной с. в. По ключу F9 эти значения обновляются.
3.1.3. Встроенные генераторы случайных величин
Многие пакеты и языки моделирования имеют встроенные генераторы различных дискретных и непрерывных с. в. Их использование имеет определённые достоинства и недостатки, с которыми целесообразно ознакомиться до принятия решения о том, нужно ли разрабатывать собственный датчик.
В Ms Excel в меню Сервис/Анализ данных/Генерация случайных чисел
предоставляется возможность генерации выборок из следующего списка распределений: Равномерное, Нормальное, Бернулли, Биномиальное, Пуассона, Модельное и Дискретное. Рекомендуется поэкспериментировать с этими генераторами, так как они достаточно удобны в использовании. Их недостаток состоит лишь в том, что для обновления выборок требуется повторно проходить меню.
15