07. 감마분포

Statistics
교재 6장
Author

Kim Jae Sook

Published

January 29, 2024

[엑셀] 실습하기

  • 감마분포 (sasa메일로 로그인해야 내용을 볼 수 있습니다.)

[R기초] 실습하기

감마분포

R명령어 설명

위에 링크로 달아놓았지만, ChatGPT에게 감마분포에 관련된 r명령어를 묻고, 명령어는 알지만 더 자세한 사용법을 알고 싶을때는 프로그램에서 명령어에 커서를 두고 F1을 누르면 설명이 나옵니다.

dgamma(1, shape = 2, rate = 1)  # 형상매개변수가 2이고 비율매개변수가 1일 때, 1에서의 밀도를 계산
[1] 0.3678794
pgamma(1, shape = 2, rate = 1)  # 형상매개변수가 2이고 비율매개변수가 1일 때, 1 이하의 값이 나올 누적확률 계산
[1] 0.2642411
qgamma(0.5, shape = 2, rate = 1)  # 형상매개변수가 2이고 비율매개변수가 1일 때, 50%의 확률로 발생할 수 있는 값 계산
[1] 1.678347
rgamma(5, shape = 2, rate = 1)  # 형상매개변수가 2이고 비율매개변수가 1인 감마분포에서 5개의 무작위 값 생성
[1] 2.4544590 0.1867657 1.4363106 2.7571871 1.0064694
# plot함수를 이용해서 감마분포의 확률밀도함수 그리기
shape_param <- 2  # 감마 분포의 형상(shape)과 비율(rate) 매개변수 설정
rate_param <- 1
x_values <- seq(0, 10, by = 0.1)  # 확률 밀도 함수를 계산할 값의 범위
densities <- dgamma(x_values, shape = shape_param, rate = rate_param)  # 확률밀도 계산
plot(x_values, densities, type = "l", col = "blue",  # 확률 밀도 그래프 그리기
     main = "Gamma Distribution Density", 
     xlab = "x", ylab = "Density")

# 다양한 매개변수의 감마분포의 확률밀도함수 그리기
params <- list(
  list(shape = 2, rate = 1),
  list(shape = 2, rate = 2),
  list(shape = 3, rate = 2)
)  # 서로 다른 매개변수 설정
colors <- c("red", "blue", "brown")  # 색상 설정
curve(dgamma(x, shape = params[[1]]$shape, rate = params[[1]]$rate), from = 0, to = 10, ylim = c(0, 1),
      xlab = "x", ylab = "Density",
      main = "Gamma Distributions with Different Parameters",
      col = colors[1])  # 첫 번째 분포 그리기
for (i in 2:length(params)) {
  curve(dgamma(x, shape = params[[i]]$shape, rate = params[[i]]$rate), from = 0, to = 10, add = TRUE, col = colors[i])
}  # 나머지 분포 추가
legend("topright", legend = paste("Shape =", sapply(params, function(x) x$shape), ", Rate =", sapply(params, function(x) x$rate)), col = colors, lty = 1)  # 범례 추가

# 다양한 매개변수의 감마분포의 누적분포함수 그리기
params <- list(
  list(shape = 2, rate = 1),
  list(shape = 2, rate = 2),
  list(shape = 3, rate = 2)
)  # 서로 다른 매개변수 설정
colors <- c("red", "blue", "brown")  # 색상 설정
curve(pgamma(x, shape = params[[1]]$shape, rate = params[[1]]$rate), from = 0, to = 10, ylim = c(0, 1),
      xlab = "x", ylab = "Cumulative Probability",
      main = "Gamma Distributions CDF with Different Parameters",
      col = colors[1])  # 첫 번째 분포의 누적분포함수 그리기
for (i in 2:length(params)) {  # 나머지 분포의 누적분포함수 추가
  curve(pgamma(x, shape = params[[i]]$shape, rate = params[[i]]$rate), from = 0, to = 10, add = TRUE, col = colors[i])
}
# 범례 추가
legend("bottomright", legend = paste("Shape =", sapply(params, function(x) x$shape), ", Rate =", sapply(params, function(x) x$rate)), col = colors, lty = 1)

감마분포 관련 문제

  • 소프트웨어 개발 프로젝트가 있다. 프로젝트는 여러 단계로 나뉘며, 각 단계의 완료 시간은 독립적으로 지수 분포를 따른다. 각 단계를 완료하는 데 걸리는 평균 시간은 5일이며, 프로젝트를 완료하는 데 필요한 전체 단계의 수는 4단계이다. 이 프로젝트가 15일 이내에 완료될 확률을 구하시오.
# 매개변수 설정
shape <- 4            # 단계 수
rate <- 1 / 5         # 일 당 단계 완료 비율

# 특정 시간(예: 15일) 이내에 프로젝트를 완료할 확률 계산
time <- 15            # 완료 시간
probability <- pgamma(time, shape, rate)

# 확률 출력
probability
[1] 0.3527681