Коли використовувати моделювання?


40

Тож це дуже просте і дурне питання. Однак, коли я навчався в школі, я приділяв дуже мало уваги цілій концепції моделювання на уроці, і це мене трохи злякало цього процесу.

  1. Чи можете ви пояснити процес симуляції мирянами? (може бути для отримання даних, коефіцієнтів регресії тощо)

  2. Які існують практичні ситуації / проблеми, коли можна використовувати моделювання?

Я б хотів, щоб будь-які приклади були в Р.


10
(2) на цьому сайті вже є понад тисяча відповідей: пошук імітації .
whuber

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

@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
яка чудова відповідь !. Мені особливо подобається, що "" Випадково "не означає довільно".
Хайтао Дю

29

По-перше, дозвольте сказати, що на ваше запитання не існує однозначної відповіді. Існує кілька прикладів того, коли можна (або доведеться) використовувати моделювання. Я спробую навести вам кілька прикладів нижче. По-друге, зауважте, що існує декілька способів визначення "моделювання" , тому відповідь хоча б частково залежить від обраного вами визначення.

Приклади:

1. Ви баєсовський статистик , тому моделювання - це ваш метод вибору для статистики. Існують способи, що не базуються на моделюванні підходів до байєсівської статистики, однак у переважній більшості випадків ви використовуєте моделювання. Щоб дізнатися більше, перегляньте книгу Гельмана «Байєсівський аналіз даних» (або інші можливі ресурси).

Tθθθθθ

3. У вас немає даних або вони дуже обмежені. Скажіть, ви хочете знати, яким був би можливий результат ядерної війни. На жаль (сподіваємось) раніше ядерної війни не було, тож у вас немає даних. У цьому випадку ви можете використовувати комп’ютерне моделювання, де ви робите певні припущення щодо реальності, а потім дозволяєте комп'ютерам створювати паралельні віртуальні реалії там, де відбувається ядерна війна, тому у вас є кілька зразків можливих результатів.

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

5. Ви хочете дізнатися про можливі результати складного процесу. Уявіть, що ви хочете прогнозувати майбутній результат якогось складного процесу, проте проблема полягає в тому, що поведінка вашого процесу є хаотичною, і, враховуючи різні входи, ви отримуєте різні результати, тоді як кількість можливих входів дуже велика. Як правило, це було так, оскільки методи моделювання Монте-Карло були винайдені фізиками та математиками, які працювали над ядерною бомбою під час Другої світової війни. За допомогою моделювання ви спробуєте різні матеріали та збираєте зразки, щоб отримати загальне уявлення про можливі результати.

6. Ваші дані не відповідають критеріям певного статистичного методу , наприклад, він має перекошений розподіл, хоча повинен бути нормальним. У деяких випадках це насправді не є проблемою , проте іноді це є, тому були винайдені методи, засновані на моделюванні, такі як завантажувальна програма .

7. Перевірити теоретичну модель на реальність. Ви маєте теоретичну модель, ніж описує якийсь процес, наприклад поширення епідемії через соціальну мережу. Ви можете використовувати модель для отримання деяких даних, щоб можна було порівняти, чи змодельовано подібне до реальних даних. Лада Адаміч наводить кілька прикладів такого використання для аналізу соціальних мереж на своєму класі Coursera (див. Деякі демонстрації тут ).

8. Генерувати дані "гіпотези 0". Ви генеруєте підроблені (випадкові) дані, щоб порівняти реальні дані з ними. Якщо у ваших даних були якісь значні наслідки або тенденції, вони повинні відрізнятися від даних, що генеруються випадковим чином. Такий підхід обстоюють Buja та ін. (2009) у своїй роботі "Статистичні умовиводи для аналізу дослідницьких даних та діагностики моделі", де вони пропонують, як використання сюжетів може полегшити дослідницький аналіз даних та тестування гіпотез (див. Також документацію про пакет Nullabor R, який реалізує ці ідеї).


22

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

Виходячи з того, що я спостерігав на цьому веб-сайті, поріг "достатньо дратівливий для імітації" різниться між статистиками. Такі люди, як @whuber, можуть, мабуть, поглянути на проблему і негайно побачити рішення, тоді як простим смертним людям, як я, доведеться уважно розглянути проблему і, можливо, почитати, перш ніж написати процедуру моделювання, щоб зробити важку роботу.

Майте на увазі, що моделювання - це не обов'язково панацея, оскільки з великими наборами даних або складними моделями, або обидва ви витратите величезну кількість (комп’ютерного) часу на оцінку та перевірку моделювання. Напевно, не варто докладати зусиль, якщо ви могли б досягти тієї ж мети за годину ретельного розгляду.


14

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

XYβXf(β)=P(Y=1|X=1)P(Y=1|X=0)ββf(β)


Я б не назвав симуляції "швидкими", це обчислювально вичерпні методи, які часто займають набагато більше часу, ніж це зроблено з використанням підходу до МЛ.
Тім

2
Це пекло набагато швидше, ніж отримання розподілу.
TrynnaDoStat

3
Як часто ви запускаєте алгоритм ML більше тижня без зупинки ..?
Тім

Тангенс відносно: "розподіл коефіцієнта β для X є нормальним" - я не багато про це думав, але після деякого моделювання я вважаю, що це часто не відповідає дійсності підпроборам менше ніж 500 та / або коефіцієнтам, середнє значення яких перевищує певна сила, скажімо, +/- 3. Звучить правильно?
rolando2

Теорія MLE говорить нам, що при певних умовах регулярності MLE є асимптотично нормальним. Я додам це до своєї відповіді.
TrynnaDoStat

11

Симулятори - прекрасний спосіб перевірити, чи можна отримати корисні оцінки від моделі.

Ви зробите це, генеруючи / моделюючи підроблені дані, що слідкують за розподілом, який передбачає ваша модель. Тоді продовжуйте і підходите до вашої моделі до цих даних. Це ідеальний випадок: ваша модель насправді справжня. Тож якщо примір шумно чи неточний, то ви знаєте, що існує проблема або з процедурою оцінки, або з самою моделлю.

Аналогічно, ви можете імітувати дані за допомогою "неправильного" процесу генерації даних і використовувати ці підроблені дані, щоб оцінити, як на ваші оцінки впливають порушення припущень моделі. Це часто називають аналізом чутливості .

Ці пункти схожі на пункти 2 та 8 у відповіді Тіма, а також дещо більш спеціальну версію процедури у відповіді Ваубера.


Симуляції також використовуються для здійснення прогнозної перевірки моделі , яку пропагують Ендрю Гельман та інші. Це означає, що підключіть ваші дані передбачувача до моделі, а потім змоделюєте підроблені дані відповіді з неявного розподілу, щоб побачити, чи ваші імітовані дані достатньо близькі (за будь-яким критерієм, який ви використовуєте) до реального.

Зауважте, що це не те саме, що просто обчислення встановлених значень. Наприклад, у регресійній моделі встановлені значення є умовними середніми значеннями; щоб здійснити передбачувальну перевірку регресійної моделі, вам доведеться один раз вивести з розподілу Гаусса, зосередженого на кожному встановленому значенні.


6

Найпростіший випадок моделювання. Скажімо, у вас є модель прогнозування кількості кредитних заборгованостей, у вас також є модель збитків за кредитами, що не сплачуються. Тепер вам потрібно прогнозувати загальний збиток, який продуктом за замовчуванням та втратами за умовчанням. Ви не можете просто помножити значення за замовчуванням і втрати за замовчуванням, щоб отримати довірчі інтервали загальної втрати.

xix1x2

У цьому документі є опис цього випадку використання на рівні MBA для оцінки ризику експлуатації, де ви розподіляєте частоту та суми збитків та комбінуєте їх для отримання загального розподілу збитків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.