시뮬레이션은 언제 사용합니까?


40

이것은 매우 간단하고 멍청한 질문입니다. 그러나 학교에있을 때 수업에서 시뮬레이션의 전체 개념에 거의 관심을 기울이지 않아서 그 과정에 약간의 두려움이 생겼습니다.

  1. 평신도 용어로 시뮬레이션 프로세스를 설명 할 수 있습니까? (데이터, 회귀 계수 등을 생성 할 수 있음)

  2. 시뮬레이션을 사용할 때의 실제 상황 / 문제는 무엇입니까?

R로 주어진 예제를 선호합니다.


10
에 대한 검색 : (2) 이미이 사이트에 이상 만 답변이 시뮬레이션을 .
whuber

@Tim 내 의견에 동의하지 않는 유일한 것은 우리 사이트가 시뮬레이션을 포함하는 수천 개 이상의 답변을 가지고 있다는 것입니다. 그러나 그것은 당신이 진실을 스스로 확인할 수있는 객관적인 사실입니다. 나는 이것이 명시 적이거나 암시적인 주장을하지 않았으며, 이는 모든 것의 대표 또는 대표 목록을 나타냅니다. 그러나 실제 사례의 집합으로서, 개별 답변이 달성하기를 기대할 수있는 것보다 훨씬 풍부하고 상세하며 질문 (2)을 더 추구하고자하는 사람에게는 귀중한 자료입니다.
whuber

@ whuber 좋아, 좋은 지적.

답변:


42

정량적 모델은 또한 관심의 특성을 나타내는 수치 출력을 생산하는 확실한 방법으로 그 숫자를 조합 그들의 수치 속성 중 일부와 (b)에 의해 객체를 대표하여 세계의 일부 행동 (A)를 에뮬레이트합니다.

그림 1 : 결정 론적 모델

이 회로도에서 왼쪽에있는 3 개의 숫자 입력이 결합되어 오른쪽에 하나의 숫자 출력이 생성됩니다. 숫자 라인은 입력 및 출력의 가능한 값을 나타냅니다. 점은 사용중인 특정 값을 나타냅니다. 오늘날 디지털 컴퓨터는 일반적으로 계산을 수행하지만 필수는 아닙니다. 모델은 연필과 종이로 계산되거나 목재, 금속 및 전자 회로에 "아날로그"장치를 구축하여 계산되었습니다.

예를 들어, 아마도 이전 모델은 3 개의 입력을 합한 것입니다. 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

우리는 세상을 완벽하게 알 수 없습니다 . 모형이 세상과 똑같이 작동하더라도 정보는 불완전하며 세상의 사물은 다양합니다. (Stochastic) 시뮬레이션은 모델 입력의 이러한 불확실성과 변동이 출력의 불확실성과 변동으로 어떻게 변환되어야하는지 이해하는 데 도움이됩니다. 입력을 무작위로 변경하고 각 변형에 대한 모델을 실행하며 총계 출력을 요약하여 수행합니다.

"임의로"는 임의로 의미하는 것은 아닙니다. 모델러는 모든 입력의 의도 된 주파수를 명시 적으로 또는 암시 적으로 지정해야합니다. 출력 주파수는 결과에 대한 가장 자세한 요약을 제공합니다.

그림 : 임의의 입력

무작위 입력과 결과 (계산 된) 무작위 출력으로 표시되는 동일한 모델.

그림은 숫자 분포를 나타내는 히스토그램과 함께 주파수를 표시합니다. 의도 그동안 입력 주파수는 왼쪽의 입력에 도시 계산 모델이 여러 번 실행함으로써 얻어진 출력 주파수는, 우측에 도시된다.

결정적 모델에 대한 각 입력 세트는 예측 가능한 숫자 출력을 생성합니다. 그러나 모델이 확률 론적 시뮬레이션에 사용될 때 출력은 분포입니다 (오른쪽에 보이는 긴 회색 의 분포 ). 출력 분포의 확산은 입력이 변할 때 모델 출력이 어떻게 변할 수 있는지 알려줍니다.

위의 코드 예제는 다음과 같이 수정되어 시뮬레이션으로 바뀔 수 있습니다.

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)

결과는 반복 중 처음 5 개를 반복 당 하나의 열로 표시합니다.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. 베이지안 통계 학자 이므로 시뮬레이션은 통계를 수행하기위한 선택 방법입니다. 베이지안 통계에 대한 비 시뮬레이션 기반 방식이 있지만 대부분의 경우 시뮬레이션을 사용합니다. 자세한 내용 은 Gelman (또는 기타 가능한 자료)의 "Bayesian data analysis" 책을 확인하십시오 .

Tθθθθθ

3. 데이터가 없거나 매우 제한적입니다. 핵전쟁의 가능한 결과가 무엇인지 알고 싶다고 가정 해 봅시다. 불행히도 (희망적으로) 이전에는 핵전쟁이 없었으므로 데이터가 없습니다. 이 경우 컴퓨터 시뮬레이션을 사용하여 현실에 대한 몇 가지 가정을 한 다음 컴퓨터가 핵전쟁이 발생하는 곳에서 병렬 가상 현실을 만들 수 있으므로 가능한 결과의 샘플을 얻을 수 있습니다 .

4. 통계 모델이 소프트웨어에 적합하지 않거나 복잡합니다. 이 접근 방식은 예를 들어 Gelman과 Hill이 "회귀 및 다중 레벨 / 계층 모델을 사용한 데이터 분석" 에서 옹호되었으며 , 여기서 시뮬레이션 기반 베이지안 추정을 회귀 모델링의 "다음 단계"로 설명합니다.

5. 복잡한 프로세스의 가능한 결과에 대해 배우고 싶습니다. 복잡한 프로세스의 미래 결과를 예측한다고 가정하지만 문제는 프로세스의 동작이 혼란스럽고 다른 입력을 받으면 다른 출력을 얻는 반면 가능한 입력 수가 매우 많다는 것입니다. 일반적으로 몬테카를로 시뮬레이션 방법은 제 2 차 세계 대전 중에 핵폭탄을 연구하는 물리학 자와 수학자에 의해 발명 되었기 때문입니다. 시뮬레이션을 통해 다양한 입력을 시도하고 샘플을 수집하여 가능한 결과에 대한 일반적인 아이디어를 얻습니다.

6. 귀하의 데이터가 일부 통계적 방법에 대한 기준을 충족하지 않습니다 ( 예 : 정규적이어야하지만 분포가 치우친 경우). 어떤 경우에는 이것이 실제로 문제되지 않지만 때로는 문제 가되기 때문에 부트 스트랩과 같은 시뮬레이션 기반 방법 이 발명되었습니다.

7. 현실에 대한 이론적 모델을 테스트합니다. 소셜 네트워크를 통한 전염병 확산과 같은 일부 프로세스를 설명하는 것보다 이론적 인 모델이 있습니다. 모델을 사용하여 일부 데이터를 생성 할 수 있으므로 시뮬레이션 된 데이터가 실제 데이터와 유사한 지 비교할 수 있습니다. Lada AdamicCoursera 수업 에서 소셜 네트워크 분석에 사용되는 여러 가지 예를 제공합니다 ( 여기의 데모 참조 ).

8. "가설 0"데이터를 생성합니다. 실제 데이터와 비교하기 위해 가짜 (임의) 데이터를 생성합니다. 데이터에 중대한 영향 또는 경향이있는 경우 무작위로 생성 된 데이터와 달라야합니다. 이 접근법은 Buja et al. (2009)의 논문에서 "탐사 데이터 분석 및 모델 진단에 대한 통계적 추론" 에서 플롯을 사용하여 탐색 데이터 분석 및 가설 테스트를 용이하게하는 방법을 제안합니다 ( 이러한 아이디어를 구현하는 nullabor R 패키지 문서도 참조 ).


22

TrynnaDoStat의 답변에 대한 논의는 요점을 잘 설명한다고 생각합니다. 문제를 분석적으로 해결할 수없는 경우 (예 : 계층 적 모델에서 매개 변수의 사후 분포) 또는 단순히 시간을 들여 너무 귀찮은 경우 시뮬레이션을 사용합니다. 솔루션을 분석적으로 해결합니다.

이 웹 사이트에서 관찰 한 내용에 따라 "모의하기에 충분히 짜증나"라는 임계 값은 통계학 자마다 크게 다릅니다. @whuber와 같은 사람들은 분명히 문제를 한 눈에 볼 수 있으며 즉시 해결책을 볼 수 있지만 나 자신과 같은 필사자만이 문제를 신중하게 고려하고 열심히 노력하기 위해 시뮬레이션 루틴을 작성하기 전에 약간의 독서를해야 할 것입니다.

대규모 데이터 세트, 복잡한 모델 또는 시뮬레이션을 추정하고 확인하는 데 많은 양의 (컴퓨터) 시간을 소비하기 때문에 시뮬레이션이 반드시 만병 통치약 인 것은 아닙니다. 한 시간 동안 신중하게 고려하여 동일한 목표를 달성 할 수 있다면 노력할 가치가 없습니다.


14

시뮬레이션은 종종 (분포와 같은) 무언가에 대한 닫힌 형태를 얻지 못하거나 그 무언가를 얻는 데 딱딱하고 빠른 방법을 원할 때 수행됩니다.

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


나는 시뮬레이션을 "빠른"이라고 부르지 않을 것입니다. 그것들은 계산적으로 철저한 방법이며 종종 ML 접근법을 사용하여 수행하는 데 더 많은 시간이 걸립니다 .
Tim

2
분포를 도출하는 것보다 훨씬 빠릅니다.
TrynnaDoStat

3
일주일 이상 논스톱으로 ML 알고리즘을 얼마나 자주 실행합니까?
Tim

탄젠트 re : "X에 대한 계수 β의 분포는 정상입니다"-이것에 대해 많이 생각하지 않았지만 일부 시뮬레이션 후에는 약 500 미만의 서브 샘플 및 / 또는 평균을 초과하는 계수의 경우 종종 사실이 아님 +/- 3과 같은 특정 강도. 맞습니까?
rolando2

MLE 이론은 특정 규칙 조건 하에서 MLE이 점진적으로 정상임을 알려줍니다. 이것을 내 대답에 추가하겠습니다.
TrynnaDoStat

11

시뮬레이션은 모형에서 유용한 추정치를 얻을 수 있는지 확인하는 훌륭한 방법입니다.

모델에서 암시 된 분포를 따르는 가짜 데이터를 생성 / 시뮬레이션하여이를 수행 할 수 있습니다. 그런 다음 모델을 해당 데이터에 맞 춥니 다. 이상적인 사례입니다. 실제로 모델은 사실입니다. 따라서 적합치가 시끄 럽거나 정확하지 않은 경우 추정 절차 또는 모델 자체에 문제가 있음을 알 수 있습니다.

마찬가지로 "잘못된"데이터 생성 프로세스를 사용하여 데이터를 시뮬레이션하고이 가짜 데이터를 사용하여 모델 가정을 위반하여 추정치에 미치는 영향을 평가할 수 있습니다. 이것을 종종 민감도 분석 이라고 합니다 .

이러한 점은 Tim의 답변에있는 항목 2 및 8과 비슷하며 whuber의 답변에 약간 더 임시 버전의 절차가 있습니다.


시뮬레이션은 Andrew Gelman과 다른 사람들이 주장한 예측 모델 검사 를 수행 하는 데에도 사용됩니다 . 이는 예측 변수 데이터를 모델에 다시 연결 한 다음 내포 된 분포에서 가짜 응답 데이터를 시뮬레이션하여 시뮬레이션 된 데이터가 (사용하는 기준에 따라) 실제와 충분히 가까운 지 확인합니다.

이 것을 참고 하지 만 장착 값을 계산 같은 것. 예를 들어 회귀 모형에서 적합치는 조건부 평균입니다. 회귀 모형에 대해 예측 검사를 실행하려면 각 적합치 중심의 가우시안 분포에서 한 번 그려야합니다.


6

가장 간단한 시뮬레이션 사례. 대출 불이행 횟수에 대한 예측 모델이 있다고 가정하고, 불이행 대출의 손실에 대한 모델도 있다고 가정합니다. 이제 기본값과 손실의 곱이 기본값으로 주어진 총 손실을 예측해야합니다. 총 손실의 신뢰 구간을 얻기 위해 기본값과 기본값의 손실을 단순히 곱할 수는 없습니다.

xix1x2

이 백서 에는 운영 위험 평가를위한이 사용 사례에 대한 MBA 수준의 설명이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.