실습 · 연습문제 2개
Euler–Maruyama로 OU 과정 시뮬레이션하기 euler-maruyama-ou
Ornstein–Uhlenbeck(OU) 과정은 평균 로 되돌아가는 힘과 잡음을 함께 받는 확률과정이다.
Euler–Maruyama 방법은 시간 간격 마다
로 갱신한다. 함수 simulate_ou(x0, theta, mu, sigma, dt, n_steps, n_paths, rng)를 완성해 shape (n_steps + 1, n_paths)인 배열을 반환한다. 0번째 행은 모든 경로에서 x0이고, k번째 행은 시각 의 값이다. 난수는 인자로 받은 rng만 쓴다.
테스트는 다음을 확인한다.
- shape과 초기값
- 잡음이 없으면() 결정론적 갱신
- 한 step 뒤의 분산이 (잡음의 크기가 가 아니라 에 비례한다)
- 평균이 에 가깝고, 오래 지나면 분산이 정상 분산에 가까운지
힌트: 경로 방향으로는 벡터화하고, 시간 방향으로는 반복문을 쓴다.
전이행렬의 정상분포 구하기 stationary-distribution
상태가 개인 Markov chain의 전이행렬 는 이고, 각 행의 합이 1이다. 정상분포 는 행벡터로서
을 만족한다. 함수 stationary_distribution(P)를 완성해 shape (K,)인 를 반환한다. 체인은 기약(irreducible)이라고 가정해도 된다. 즉 정상분포는 하나뿐이다.
테스트는 두 상태 체인의 공식 (여기서 , ), 각 열의 합도 1인 이중 확률행렬(정상분포가 균등), 그리고 무작위 전이행렬에서 를 확인한다.
힌트: 를 전치하면 , 즉 의 고윳값 1에 대한 고유벡터다. 의 고유벡터를 쓰면 모든 성분이 같은 벡터가 나온다(왜 그런지 생각해 본다). 고유벡터 대신 에 을 한 줄 더 붙여 최소제곱으로 풀어도 된다.