R Markdown

본 내용은 STAT-110 강의 24번의 일부 내용을 simulation 합니다.

1시간에 평균 5통의 이메일을 받는 포아송 프로세스를 생각해보자. Nt 를 시간 t 동안 받은 이메일의 수라고 하면

\(Nt \sim Pois(\lambda t)\) 를 따른다.

=> \(Nt \sim Pois(5)\)

각 메일간의 도착 대기 시간은 지수분포를 따른다. \(T \sim Expo(\lambda)\)

=> \(T ~ Expo(5)\)

지수분포의 평균은 1/λ 이다. 즉, 1/5 이다. 그래서 만약 7통의 메일을 수신하는데 걸리는 평균 시간은 그냥 7 * 1/5 하면 된다. 7/5 = 1.4 시간

이것을 지수분포 합에 대한 simulation 코드로 변환하면…

# Gamma 분포 그래프, 대기시간인 지수분포의 합에 대한 simulation

# 1 시간에 5통의 이메일을 받는다.
# 7통의 이메일을 받기 까지, 평균 얼마나 오래 기다려야 할까?

lambda <- 5 # 1시간에 받는 이메일의 수
a <- 7 # 7통의 이메일을 받음

# 1) 지수분포를 따르는 대기시간의 합에 대한 simulation
num_trials <- 10000 # simulation 시도 횟수 
trial_result <- sapply(1:num_trials, function(i) {sum(rexp(a, lambda))})

# 기대값을 구한다. 1.4시간 정도 걸림을 알수 있다.
mean(trial_result)
## [1] 1.399719
# 히스토그램
hist(trial_result, freq = FALSE, breaks = 100, main="sum of Expo(lambda) simulation")

# 2) 감마분포 simulation => 아래 모두 1.4 정도에서 그래프의 평균 정도가 됨을 알 수 있다.
# 감마 랜덤함수 사용
y <- rgamma(num_trials, shape = a, rate = lambda) 
mean(y)
## [1] 1.406049
# 감마분포함수의 히스토그램
hist(y, freq = FALSE, breaks = 100, main = "Gamma(a, lambda) simulation")

# 감마분포 pdf
x <- seq(0, 5, by = 0.01)
y <- dgamma(x, shape = a, rate = lambda)
plot(x, y, type='l', main = "Gamma's pdf")

qgamma(0.5, shape = a, rate = lambda)
## [1] 1.333927