Насколько хороша функция RAND () в Excel для симуляции Монте-Карло? - PullRequest
22 голосов
/ 04 мая 2011

Я реализую симуляцию Монте-Карло в 3 переменных в Excel. Я использовал функцию RAND () для выборки из распределений Вейбулла (с длинными хвостами). Функции, применяемые к выборкам, являются нелинейными, но гладкими (exp, ln, cos и т. Д.). Результатом для каждой выборки является прохождение / неудача, а общий результат - вероятность неудачи.

Я также реализовал это с помощью численной интеграции и Монте-Карло в MathCad, получая один и тот же результат оба раза. MathCad использует (я думаю) генератор случайных чисел Мерсенна Твистера.

Моя таблица Excel получает постоянно разные результаты (т.е. всегда больше). Я проверил уравнения одинаковы.

Какой генератор случайных чисел использует Excel и насколько он хорош? Возможно ли, что это источник моей проблемы? Я предположил, что в Excel реализации exp, cos и т. Д. В порядке.

Наконец, есть ли способ реализовать метод Монте-Карло для смягчения (известных) плохих свойств конкретного генератора случайных чисел? (Я слышал о цепях Маркова, случайных прогулках и т. Д., Но мало что знаю о них)

Большое спасибо.

Ответы [ 5 ]

23 голосов
/ 18 февраля 2016

Так как это лучший результат в Google для "насколько хороша функция RAND () в Excel", стоит обновить ответы для более поздних версий Excel

В этом документе Гая Меларда " О точности статистических процедур в Microsoft Excel 2010 " проверена функция RAND () в Excel 2010 и обнаружено, что она существенно улучшена по сравнению с 2007 или 2003 годом. Microsoft перешла с неправильный генератор Вихмана и Хилла (2007/2003) для алгоритма Мерсенна Твистера, который имеет гораздо большую длину цикла.

Авторы этой статьи провели тесты на случайность "Small Crush", "Crush" и "Big Crush", и он прошел почти все тесты.

Так что, хотя это, конечно, не то же самое, что Истинные случайные числа, функцию RAND () в Excel 2010 и, возможно, более новые версии больше нельзя считать ужасной.

Следует отметить, однако, что в Excel 2010 по-прежнему используются два совершенно разных алгоритма для генератора случайных чисел VBA и ГСЧ, входящий в набор инструментов анализа данных. По словам Меларда, оба они все еще ужасны, и фактически VBA каждый раз использует один и тот же начальный номер, поэтому выдает одинаковые числа.

Мои самые большие жалобы на случайные числа в Excel:

  • Вы не можете установить начальное число, поэтому числа не воспроизводимы
  • Случайные числа обновляются каждый раз, когда вы нажимаете ввод / удаление, и даже если вы установите для параметров расчета значение Вручную, они все равно обновляются при сохранении файла Excel
18 голосов
/ 05 мая 2011

В журнале McCullough (2008) имеется журнальная статья на эту тему: О точности статистических процедур в Microsoft Excel 2007 (вычислительная статистика и анализ данных)

Цитирование оригинальной статьи:

Генератор случайных чисел всегда был неадекватным.В Excel 2003 Microsoft попыталась реализовать генератор Вихмана-Хилла и не смогла правильно его реализовать.Версия fixed появляется в Excel 2007, но это fix было сделано неправильно.Microsoft дважды не смогла правильно реализовать дюжину строк кода, которые составляют генератор Вихмана-Хилла;это то, что должен делать любой магистрант информатики.Генератор случайных чисел в Excel не удовлетворяет основным требованиям, предъявляемым к генератору случайных чисел, который должен использоваться в научных целях:

  1. неизвестно, чтобы он проходил стандартные тесты на случайность, например L'Ecuyer и Simard's (2007) Тесты CRUSH (эти тесты заменяют тесты DIEHARD Марсальи (1996) - для сравнения см. Altman et al. (2004));
  2. неизвестно, чтобы получить числа, которые приблизительно независимы в умеренном количестве измерений;
  3. имеет неизвестную длительность периода;и
  4. это не воспроизводится.

Для дальнейшего обсуждения этих пунктов см. прилагаемую статью McCullough (2008) ;производительность Excel 2007 в этой области неадекватна.

0 голосов
/ 04 мая 2011

Пол Уилмотт в своей книге «Количественные финансы» просто складывает результаты 12 вызовов RAND () и вычитает 6 для хорошего приближения к переменной Normal. Quick n Dirty

0 голосов
/ 05 мая 2011

RAND() довольно случайно, но для моделирования по методу Монте-Карло может быть слишком случайным (если только вы не тестируете первичность). Большинство симуляций Монте-Карло просто требуют псевдослучайных и детерминированных последовательностей. В составе пакета Excel Analysis ToolPak RANDBETWEEN() может быть все, что вам нужно для псевдослучайных последовательностей.

0 голосов
/ 04 мая 2011

Для этого есть коммерческие продукты.Google показывает два, прежде чем мне надоело смотреть

http://www.mathwave.com/articles/random-numbers-excel-worksheets.html

http://www.ozgrid.com/Services/excel-random-number-generator.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...