점 추정의 한계
프로젝트 기간을 42일, 비용을 3억 원으로 예측했다고 하자. 하나의 숫자는 전달하기 쉽지만 입력값이 조금만 바뀌어도 결론이 얼마나 흔들리는지 보여주지 못한다. Monte Carlo Simulation은 불확실한 입력을 확률분포로 두고 결과를 반복 계산한다.
기본 절차
- 결과를 결정하는 입력 변수를 정의한다.
- 각 입력의 확률분포와 상관관계를 정한다.
- 분포에서 난수를 추출해 모델을 계산한다.
- 충분히 반복해 결과 분포를 얻는다.
- 평균뿐 아니라 분위수와 손실 확률을 보고 결정한다.
간단한 비용 모델
수요 , 단위당 마진 , 고정비 가 불확실하다면 이익은 다.
import numpy as np
rng = np.random.default_rng(42)
n = 100_000
demand = rng.normal(10_000, 1_500, n)
margin = rng.triangular(18, 22, 28, n)
fixed_cost = rng.normal(210_000, 15_000, n)
profit = demand * margin - fixed_cost
loss_probability = (profit < 0).mean()
분포 선택보다 중요한 것
정교한 분포를 고르는 것보다 변수 간 의존성을 놓치지 않는 것이 더 중요할 수 있다. 예를 들어 수요가 증가할수록 긴급 물류비가 커진다면 수요와 단위비용을 독립으로 추출해서는 안 된다.
결과 읽기
평균 이익만 보고 결정하지 않는다. P10, P50, P90 분위수와 손실 확률을 함께 본다. 의사결정자의 위험 선호가 다르면 같은 시뮬레이션 결과에서도 다른 선택이 합리적일 수 있다.
모델 위험
시뮬레이션은 입력 가정의 불확실성을 전파할 뿐, 잘못된 구조를 고쳐주지 않는다. 결과가 정밀해 보이는 만큼 가정과 데이터 출처를 더 명확히 기록해야 한다.