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에서 균일 분포를 사용하는 방법