안녕하세요. 이번 포스팅에서는 Box-Muller Transformation을 통한 난수 생성을 해보려고 합니다.
서로 독립인 균일분포를 이용하여 정규분포를 따르는 난수를 생성하는 방법으로 이론적인 배경은 아래와 같습니다.
즉, 서로 독립인 $X_1 \sim U(0, 1)$과 $X_2 \sim U(0, 1)$에 $Z_1 = \sqrt{-2lnX_1}cos(2\pi X_2)$, $Z_2 = \sqrt{-2lnX_1}sin(2\pi X_2)$로 변환을 해주면 서로 독립인 정규분포를 따르는 확률변수를 생성할 수 있습니다.
아래 시각화에서 확인할 수 있듯 균일분포의 산점도는 직사각형 형태로 균일하게 찍혀있으며 z1과 z2의 산점도는 원형으로 균일하게 생성되어 있는 것을 확인할 수 있습니다.
library(ggforce)
library(tidyverse)
tibble(
n = 1000,
u1 = runif(n, min = 0, max = 1),
u2 = runif(n, min = 0, max = 1),
z1 = sqrt(-2*log(u1))*cos(2*pi*u2),
z2 = sqrt(-2*log(u1))*sin(2*pi*u2)) %>%
ggplot(mapping=aes(x=.panel_x, y=.panel_y)) +
geom_point() + facet_matrix(vars(u1, u2, z1, z2))
또한 개별적으로 shapiro.test를 사용한 정규성 검정을 진행한 결과 z1과 z2는 정규성을 가지고 있으며 u1과 u2는 정규성을 만족하지 않는다고 나오네요.
'Statistics > Mathmetical Statistics' 카테고리의 다른 글
[확률과 통계적 추론] 5-4. 적률생성함수 기법 (2) | 2024.01.11 |
---|---|
[확률과 통계적 추론] 5-3. 확률표본(Random Sample) (1) | 2024.01.10 |
[확률과 통계적 추론] 5-2.2 베타분포와 F분포 (0) | 2024.01.09 |
[확률과 통계적 추론] 5-2.1 이변량 변수의 변환 (1) | 2024.01.09 |
[확률과 통계적 추론] 5-1.3 분포를 이용한 난수 생성 (0) | 2024.01.07 |