몬테카를로 방법과 부트스트랩의 차이점
개요
몬테카를로 방법은 작위적인 데이터로 시뮬레이션을 반복해 새로운 기법을 확인하는 방법이고 부트스트랩은 실제 데이터에서 재표본 추출을 통해 비용을 절감하며 문제를 해결하려는 방법이다.
정의
몬테카를로 방법monte Carlo method이란 난수 추출을 통해 관심 있는 대상에 대해 점추정량을 찾는 방법이다.
부트스트랩bootstrap이란 표본에서 재표본 추출을 통해 관심 있는 대상의 분포를 파악하는 방법이다.
설명
기본적으로 둘 다 많이 뽑아서 많이 시행해본다는 점에서 헷갈릴 수 있는데, 프로세스만 비슷해보일 뿐 용도는 전혀 다르다.
우선 몬테카를로 방법은 우리가 어떤 참값을 알고 있을 때 어떤 통계량이 그것을 정확하게 추정해내는지를 볼 때 쓴다. 이 설명에서 걸리는 점은 도대체 ‘참값을 어떻게 알고 있겠냐’는 것이다. 답은 의외로 간단한데, 실험자가 직접 모수와 분포를 주고 발생시킨 데이터라면 무엇이 이론적인 참값인지 알고 있는 것이 정상이다. 이렇게 작위적인 데이터로 시뮬레이션을 반복해보면 결국 새로운 메소드나 통계량이 실제와 얼마나 비슷한지 확인 해볼 수도 있을 것이다.
반면 부트스트랩은 주어진 표본에서 다시 표본을 뽑아 표본 자체를 늘리는 것으로 시작한다. 통계학에서 표본이란 많으면 많을수록 좋기 때문에 표본이 늘어나는 것 자체는 반가운 일이다. 실험 한 번을 시행하는 게 너무 비싸고 힘들거나 아예 더 이상 데이터를 확보할 수 없는 경우엔 이러한 방법이 프로젝트에 큰 도움이 될 것이다. 문제는 그딴 걸 어떻게 믿냐는 것이다. 정상적으로 통계학을 공부한 사람이라면 딱 들어도 뭔가 꺼림칙하다고 느끼는 게 정상이다.
당연히 부트스트랩을 사용하기 위해선 적어도 주어진 표본만큼은 모집단의 특징을 잘 반영하고 있어야한다는 가정이 필요하다. 잘 반영하고 있어도 그때그때는 편향된 데이터가 나올 수 있다는 것도 감안해야한다. 그뿐만 아니라 부트스트랩을 통해 얻은 결과는 그 분포를 말해줄 뿐 정확하게 구하고 싶은 값이 무엇이라고는 말해줄 수 없다.
참값 $\alpha$ 를 찾기 위해 추정량 $\hat{ \alpha}$ 을 사용한다고 해보자. 부트스트랩은 재표본추출을 통해 $\hat{ \alpha}$ 의 추정량 $\hat{ \alpha} ^{ \ast }$ 을 반복적으로 구해낼 것이다. 여기서 찾고 싶은 값과 추정량 사이의 차이를 각각 $$ \begin{cases} d = \hat{\alpha} - \alpha \\ d^{ \ast } = \hat{\alpha}^{ \ast } - \hat{ \alpha } \end{cases} $$ 이라고 하면, 이들의 분산은 각각 $\alpha$ 와 $\hat{ \alpha}$ 이 상수취급 되어 $$ \begin{cases} \operatorname{Var} (d) = \operatorname{Var} ( \hat{\alpha} - \alpha ) = \operatorname{Var} ( \hat{\alpha}) \\ \operatorname{Var} ( d^{ \ast } ) = \operatorname{Var} ( \hat{\alpha}^{ \ast } - \hat{ \alpha } ) = \operatorname{Var} ( \hat{\alpha}^{ \ast } ) \end{cases} $$ 이 된다. 결국 $\operatorname{Var} (\hat{\alpha}^{ \ast })$ 를 알아내봤자 $\alpha$ 가 무엇인지는 알 수 없고, 다만 그 분포만 짐작할 수 있을 뿐이다.
예를 들어 회귀계수에 대해 부트스트랩을 사용했다면 그 표준오차는 상당히 근사한 값으로 구할 수 있어도 계수 자체가 정상적인 된 표본에서 제대로 구해졌는지는 알 수 없다. 구한 계수가 정확하지 않다면 t-test도 의미가 없고, 따라서 회귀계수가 유의한지도 알 수 없으므로 아무런 쓸모가 없다.
결론적으로, 몬테카를로 방법과 부트스트랩은 서로 장단점이 있다 정도도 아니고 프로세스를 뺀 모든 것이 완전히 다르다.