Python에서 지수 분포를 사용하는 방법


지수 분포는 특정 사건이 발생할 때까지 기다려야 하는 시간을 모델링하는 데 사용되는 확률 분포입니다.

확률 변수 X가 지수 분포를 따르는 경우 X 의 누적 분포 함수는 다음과 같이 쓸 수 있습니다.

F (x; λ) = 1 – e – λx

금:

  • λ: 속도 매개변수(λ = 1/μ로 계산됨)
  • e: 대략 2.718과 같은 상수

이 튜토리얼에서는 Python에서 지수 분포를 사용하는 방법을 설명합니다.

지수 분포를 생성하는 방법

Python의 SciPy 라이브러리에서 expon.rvs(scale, size) 함수를 사용하여 특정 비율 매개변수와 샘플 크기를 사용하여 지수 분포에서 임의의 값을 생성할 수 있습니다.

 from scipy. stats import expo

#generate random values from exponential distribution with rate=40 and sample size=10
expon. rvs (scale= 40 , size= 10 )

array([116.5368323 , 67.23514699, 12.00399043, 40.74580584,
        34.60922432, 2.68266663, 22.70459831, 97.66661811,
         6.64272914, 46.15547298])

참고 : 여기에서 전체 SciPy 라이브러리 문서를 찾을 수 있습니다.

지수 분포를 사용하여 확률을 계산하는 방법

특정 간헐천의 분출 간격을 평균 40분으로 가정합니다. 폭발이 일어나기까지 50분도 채 기다려야 할 가능성은 얼마나 됩니까?

이 문제를 해결하려면 먼저 rate 매개변수를 계산해야 합니다.

  • λ = 1/μ
  • λ = 1/40
  • λ = 0.025

λ = 0.025와 x = 50을 CDF 공식에 대입할 수 있습니다.

  • P(X ≤ x) = 1 – e -λx
  • P(X ≤ 50) = 1 – e -0.025(50)
  • P(X ≤ 50) = 0.7135

다음 폭발이 50분 이내에 기다려야 할 확률은 0.7135 입니다.

SciPy의 expon.cdf() 함수를 사용하여 Python에서 이 문제를 해결할 수 있습니다.

 from scipy. stats import expo

#calculate probability that x is less than 50 when mean rate is 40
expon. cdf (x=50, scale=40)

0.7134952031398099

다음 폭발이 50분 이내에 기다려야 할 확률은 0.7135 입니다.

이는 우리가 수동으로 계산한 값과 일치합니다.

지수 분포를 그리는 방법

다음 구문을 사용하여 지정된 비율 매개변수로 지수 분포를 그릴 수 있습니다.

 from scipy. stats import expo
import matplotlib. pyplot as plt

#generate exponential distribution with sample size 10000
x = expon. rvs (scale= 40 ,size= 10000 )

#create plot of exponential distribution
plt. hist (x, density= True , edgecolor=' black ')

추가 리소스

다음 튜토리얼에서는 Python에서 다른 일반적인 배포판을 사용하는 방법을 설명합니다.

Python에서 포아송 분포를 사용하는 방법
Python에서 t 분포를 사용하는 방법
Python에서 균일 분포를 사용하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다