실습 · 연습문제 1개
Latin hypercube 표본 만들기 latin-hypercube
시뮬레이션 한 번이 비쌀 때는 적은 수의 실행으로 파라미터 공간을 고르게 덮어야 한다. Latin hypercube sampling(LHS)은 각 축을 개의 같은 폭 구간(stratum)으로 나누고, 모든 축에서 각 구간에 정확히 한 점이 들어가도록 개의 점을 뽑는다(McKay·Beckman·Conover, 1979).
만드는 방법은 다음과 같다. 축 마다
- 의 무작위 순열 를 만든다.
- 점 의 번째 좌표를 으로 둔다. 는 의 균등 난수다.
축마다 순열을 따로 만들기 때문에, 축 사이의 짝은 무작위로 정해진다.
함수 latin_hypercube(n, d, seed)를 완성한다. np.random.default_rng(seed)로 난수 생성기를 만들고, shape (n, d)의 배열을 반환한다. 모든 값은 에 있어야 한다.
테스트는 다음을 확인한다.
- 각 열에서
np.floor(S[:, j] * n)이 을 정확히 한 번씩 가진다. - 같은
seed는 같은 결과, 다른seed는 다른 결과를 낸다. - 점이 구간 중앙에만 놓이지 않는다(구간 안의 위치도 무작위다).
물리 단위의 범위 로 옮길 때는 를 쓴다.