Когда использовать симуляции?


40

Так что это очень простой и глупый вопрос. Однако, когда я учился в школе, я очень мало внимания уделял всей концепции симуляции в классе, и это меня немного пугало.

  1. Можете ли вы объяснить процесс моделирования в терминах мирян? (может быть для генерации данных, коэффициентов регрессии и т. д.)

  2. Каковы некоторые практические ситуации / проблемы, когда можно использовать симуляции?

Я бы предпочел, чтобы любые примеры приводились в R.


10
(2) уже имеет более тысячи ответов на этом сайте: поиск для имитации .
whuber

@Tim Единственное, с чем можно не согласиться в моем комментарии, это то, что наш сайт содержит более тысячи ответов, содержащих симуляции, но это объективный факт, правду которого вы можете проверить сами. Я не делал никаких заявлений, явных или подразумеваемых, что это представляет собой полный или представительный список чего-либо. Однако, как набор реальных примеров, он гораздо богаче и детальнее, чем любой отдельный ответ, на который можно было бы рассчитывать, и, как таковой, является ценным ресурсом для любого, кто, возможно, пожелает продолжить рассмотрение вопроса (2).
whuber

@ Хорошо, хорошо.
Тим

Ответы:


42

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

Рисунок 1: детерминированная модель

В этой схеме три числовых ввода слева объединены, чтобы произвести один числовой вывод справа. Числовые линии указывают возможные значения входов и выходов; точки показывают конкретные значения в использовании. В настоящее время цифровые компьютеры обычно выполняют вычисления, но они не являются необходимыми: модели рассчитывались с помощью карандаша и бумаги или путем создания «аналоговых» устройств в дереве, металле и электронных схемах.

В качестве примера, возможно, предыдущая модель суммирует свои три входа. Rкод для этой модели может выглядеть

inputs <- c(-1.3, 1.2, 0) # Specify inputs (three numbers)
output <- sum(inputs)     # Run the model
print(output)             # Display the output (a number)

Его вывод просто число,

-0,1

Мы не можем знать мир совершенно: даже если модель работает точно так же, как мир, наша информация несовершенна, и вещи в мире меняются. (Стохастическое) моделирование помогает нам понять, как такая неопределенность и изменение входных данных модели должно переводиться в неопределенность и изменение выходных данных. Они делают это путем случайного изменения входных данных, запуска модели для каждого варианта и суммирования совокупного выхода.

«Случайно» не означает произвольно. Разработчик должен указать (сознательно или нет, явно или неявно) предполагаемые частоты всех входов. Частоты выходов обеспечивают наиболее подробное резюме результатов.

Рисунок: случайные входы

Та же модель, показанная со случайными входами и полученным (вычисленным) случайным выходом.

На рисунке показаны частоты с гистограммами для представления распределений чисел. Эти предназначенные входные частоты приведены для входов слева, в то время как вычисленная выходная частота, полученная запуска модели много раз, как показано на рисунке справа.

Каждый набор входных данных для детерминированной модели производит предсказуемый числовой вывод. Однако когда модель используется в стохастическом моделировании, на выходе получается распределение (например, длинное серое, показанное справа). Распределение выходного распределения говорит нам, как можно ожидать, что выходные данные модели будут меняться, когда изменяются ее входные данные.

Предыдущий пример кода может быть изменен следующим образом, чтобы превратить его в симуляцию:

n <- 1e5 # Number of iterations
inputs <- rbind(rgamma(n, 3, 3) - 2,
                runif(n, -2, 2),
                rnorm(n, 0, 1/2))
output <- apply(inputs, 2, sum)
hist(output, freq=FALSE, col="Gray")

Его выходные данные были суммированы с гистограммой всех чисел, сгенерированных путем итерации модели с этими случайными входными данными:

Гистограмма

Заглядывая за кулисы, мы можем проверить некоторые из множества случайных входных данных, которые были переданы этой модели:

rownames(inputs) <- c("First", "Second", "Third")
print(inputs[, 1:5], digits=2)

100,000

        [,1]  [,2]  [,3]  [,4]  [,5]
First  -1.62 -0.72 -1.11 -1.57 -1.25
Second  0.52  0.67  0.92  1.54  0.24
Third  -0.39  1.45  0.74 -0.48  0.33

Возможно, ответ на второй вопрос заключается в том, что симуляции можно использовать везде. С практической точки зрения ожидаемая стоимость запуска симуляции должна быть меньше вероятной выгоды. Каковы преимущества понимания и количественной оценки изменчивости? Есть две основные области, где это важно:

  • В поисках истины , как в науке, так и в законе. Число само по себе полезно, но гораздо полезнее знать, насколько точным или точным является это число.

  • Принятие решений, как в бизнесе, так и в повседневной жизни. Решения балансируют риски и выгоды. Риски зависят от возможности плохих результатов. Стохастическое моделирование помогает оценить эту возможность.

Вычислительные системы стали достаточно мощными, чтобы многократно выполнять реалистичные, сложные модели. Программное обеспечение эволюционировало для быстрой и простой генерации и суммирования случайных значений (как Rпоказывает второй пример). Эти два фактора объединились за последние 20 лет (и более) до такой степени, что моделирование является рутинным. Осталось только помочь людям (1) определить соответствующее распределение входных данных и (2) понять распределение выходных данных. Это область человеческой мысли, где компьютеры до сих пор мало помогали.


1
какой отличный ответ! Мне особенно нравится "" Случайно "не значит произвольно".
Haitao Du

29

Во-первых, позвольте мне сказать, что нет единого ответа на ваш вопрос. Существует множество примеров, когда вы можете (или должны) использовать симуляцию. Я постараюсь привести несколько примеров ниже. Во-вторых, обратите внимание, что существует несколько способов определения «симуляции» , поэтому ответ, по крайней мере, частично зависит от выбранного вами определения.

Примеры:

1. Вы - байесовский статистик , поэтому симуляция - ваш метод выбора для ведения статистики. Существуют подходы к байесовской статистике, не основанные на симуляции, однако в подавляющем большинстве случаев вы используете симуляцию. Для получения дополнительной информации просмотрите книгу «Анализ байесовских данных» Гельмана (или другие возможные ресурсы).

Tθθθθθ

3. У вас нет данных или они очень ограничены. Скажем, вы хотите знать, каков будет возможный исход ядерной войны. К сожалению (надеюсь) не было ядерной войны раньше, поэтому у вас нет никаких данных. В этом случае вы можете использовать компьютерное моделирование, где вы делаете некоторые предположения о реальности, а затем позволяете компьютерам создавать параллельные виртуальные реальности, где происходит ядерная война, поэтому у вас есть несколько примеров возможных результатов.

4. Ваша статистическая модель не соответствует программному обеспечению или является сложной. Этот подход поддерживается, например, Гельманом и Хиллом в «Анализ данных с использованием регрессии и многоуровневых / иерархических моделей» , где они описывают байесовскую оценку на основе моделирования как «следующий шаг» в регрессионном моделировании.

5. Вы хотите узнать о возможных результатах сложного процесса. Представьте, что вы хотите прогнозировать будущие результаты какого-то сложного процесса, однако проблема в том, что поведение вашего процесса хаотично, и при разных входных данных вы получаете разные выходные данные, в то время как число возможных входных данных очень велико. Как правило, это имело место, потому что методы моделирования Монте-Карло были изобретены физиками и математиками, работающими над ядерной бомбой во время Второй мировой войны. При моделировании вы пробуете различные исходные данные и собираете образцы, чтобы получить общее представление о возможных результатах.

6. Ваши данные не соответствуют критериям для какого-либо статистического метода , например, они имеют неравномерное распределение, хотя они должны быть нормальными. В некоторых случаях это на самом деле не проблема , однако иногда это так, поэтому были изобретены методы, основанные на моделировании, такие как начальная загрузка.

7. Чтобы проверить теоретическую модель против реальности. У вас есть теоретическая модель, которая описывает некоторый процесс, например, распространение эпидемии через социальную сеть. Вы можете использовать модель, чтобы сгенерировать некоторые данные, чтобы вы могли сравнить, если моделируемые данные похожи на реальные данные. Лада Адамич приводит несколько примеров такого использования для анализа социальных сетей в своем классе Coursera (см. Некоторые демонстрации здесь ).

8. Сформировать данные «гипотезы 0». Вы генерируете поддельные (случайные) данные, чтобы сравнить с ними реальные данные. Если в ваших данных были какие-либо существенные эффекты или тенденции, они должны отличаться от случайных данных. Этот подход защищен Buja et al. (2009) в своей статье «Статистический вывод для анализа поисковых данных и диагностики моделей», где они предлагают, как использование графиков может облегчить анализ поисковых данных и проверку гипотез (см. Также документацию пакета nullabor R, который реализует эти идеи).


22

Я думаю, что обсуждение ответа TrynnaDoStat хорошо иллюстрирует вопрос: мы используем моделирование всякий раз, когда проблему невозможно решить аналитически (например, апостериорное распределение параметров в иерархической модели), или когда мы просто слишком раздражены, чтобы тратить время на разработка решения аналитически.

Исходя из того, что я наблюдал на этом веб-сайте, порог «достаточно раздражающий, чтобы имитировать» сильно варьируется в зависимости от статистики. Такие люди, как @whuber, могут, очевидно, взглянуть на проблему и сразу же увидеть ее решение, в то время как простым смертным, таким как я, придется внимательно рассмотреть проблему и, возможно, немного почитать, прежде чем писать рутинную симуляцию, чтобы выполнить тяжелую работу.

Имейте в виду, что моделирование не обязательно является панацеей, поскольку с большими наборами данных или сложными моделями, или с обоими, вы потратите огромное количество (компьютерного) времени на оценку и проверку моделирования. Это, безусловно, не стоит усилий, если вы могли бы достичь той же цели с часом тщательного рассмотрения.


14

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

ИксYβИксе(β)знак равноп(Yзнак равно1|Иксзнак равно1)-п(Yзнак равно1|Иксзнак равно0)ββе(β)


Я бы не назвал симуляции «быстрыми», это вычислительно исчерпывающие методы, которые часто занимают гораздо больше времени, чем при использовании подхода ML.
Тим

2
Это чертовски быстро, чем получение дистрибутива.
TrynnaDoStat

3
Как часто вы запускаете алгоритм ML более недели без перерыва?
Тим

Касательное re: «распределение коэффициента β для X является нормальным» - я не особо задумывался об этом, но после некоторого моделирования я обнаружил, что это часто не так с подвыборками менее чем около 500 и / или с коэффициентами, среднее значение которых превышает определенная сила, скажем, +/- 3. Звучит правильно?
rolando2

Теория MLE говорит нам, что при определенных условиях регулярности MLE асимптотически нормален. Я добавлю это к моему ответу.
TrynnaDoStat

11

Моделирование - это отличный способ проверить, можете ли вы получить полезные оценки из модели.

Вы сделали бы это путем генерации / симуляции поддельных данных, которые соответствуют распределению, подразумеваемому вашей моделью. Затем продолжайте и подгоните вашу модель к этим данным. Это идеальный случай: ваша модель на самом деле верна. Таким образом, если подгонка является шумной или неточной, то вы знаете, что есть проблема либо с процедурой оценки, либо с самой моделью.

Точно так же вы можете симулировать данные, используя «неправильный» процесс создания данных, и использовать эти фальшивые данные, чтобы оценить влияние ваших оценок на нарушение допущений модели. Это часто называют анализом чувствительности .

Эти пункты аналогичны пунктам 2 и 8 в ответе Тима, а также несколько более специальной версии процедуры в ответе whuber.


Имитация также используется для выполнения прогностической проверки моделей, за что выступают Эндрю Гельман и другие. Это равносильно подключению ваших предикторных данных обратно в модель и последующему моделированию ложных данных отклика из подразумеваемого распределения, чтобы увидеть, достаточно ли близки ваши симулированные данные (по какому-либо критерию, который вы используете) к реальной вещи.

Обратите внимание, что это не то же самое, что просто вычисление подогнанных значений. Например, в регрессионной модели подобранные значения являются условными средними; чтобы выполнить прогностическую проверку регрессионной модели, вам нужно будет провести один раз из гауссовского распределения с центром в каждом подобранном значении.


6

Самый простой случай для симуляции. Допустим, у вас есть модель прогнозирования количества дефолтов по кредитам, а также модель потерь по дефолтным кредитам. Теперь вам нужно спрогнозировать общий убыток, который является продуктом дефолтов и убытков с учетом дефолта. Вы не можете просто умножить значения по умолчанию и потери на значения по умолчанию, чтобы получить доверительные интервалы общей потери.

ИксяИкс1Икс2

Эта статья содержит описание уровня использования MBA этого варианта использования для оценки операционного риска, где у вас есть распределения частоты потерь и сумм, и объедините их, чтобы получить распределение общих потерь.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.