[python/파이썬] 지수분포
변수는 랜덤 하게 발생하거나, 일정한 확률을 가지고 발생합니다.
일정한 확률을 바탕으로 발생하는 변수를 확률변수(Random Variable)라고 합니다.
확률변수들이 모여 확률분포를 이루게 됩니다.
데이터의 확률분포를 알고 있다면,
일어날 수 있는 사건의 확률을 알 수 있고, 확률에 근거한 판단을 내릴 수 있습니다.
확률분포는 주사위처럼 결괏값이 떨어져 있는 이산형 확률분포와
키와 몸무게와 같이 연속적으로 변하는 값들로 이뤄진 연속형 확률분포가 있습니다.
이산형 확률분포에는
베르누이 시행, 이항분포, 포아송분포, 기하분포, 음이항분포, 초기하분포 등이 있습니다.
연속형 확률분포에는
균등분포, 정규분포, 표준정규분포, 지수분포, 감마분포, 카이제곱분포, F분포, t분포 등이 있습니다.
지수분포(Exponential Distribution)
지수분포는 포아송분포와 직접적인 관련이 있습니다.
포아송분포는 시간당 평균적으로 발생하는 사건의 횟수를 알고 있다면,
우리가 궁금해하는 시간대에서 사건의 발생횟수를 확률적으로 알려줍니다.
지수분포는 시간당 평균적으로 발생하는 사건의 횟수를 알고 있다면,
한 사건이 발생할 때까지 소요되는 시간을 확률적으로 알려줍니다.
지수분포도 연속형 확률분포이므로, 그래프 밑의 면적이 확률이 됩니다.
지수분포에서 확률을 알려주는 확률밀도함수는 다음과 같습니다.
지수분포의 형태를 결정짓는 요소는 람다입니다.
람다가 0.5인 지수분포는 다음과 같습니다.
람다가 1인 지수분포는 다음과 같습니다.
람다가 1.5인 지수분포는 다음과 같습니다.
즉, 람다가 올라가면 시작시간인 0에 근접하여,
사건이 발생할 확률이 올라갑니다.
시간당 2번 발생하는 사건이 지수분포를 따를 경우,
해당 지수분포는 다음과 같습니다.
해당 사건이 한 시간 이내에 발생할 확률을 구하면,
0부터 1까지의 면적이 바로 확률이 되며,
이는 적분을 통해 구할 수 있습니다.
적분계산을 위해 sympy를 가져옵니다.
파이썬은 문자인 'x'와 변수의 'x'를 구분하지 못하므로,
symbols를 통해 x가 변수라고 알려줍니다.
Integral은 적분하는 메서드이며,
첫 번째 인수는 적분할 수식을 입력하고,
두 번째 인수는 괄호 안에 변수, 적분을 시작하는 점, 적분을 끝내는 점을 입력합니다.
최종적으로 계산을 위해 evalf()를 덧붙여 주며, 결과는 동일합니다.
해당 사건이 2시간이 경과한 후에야 발생할 확률은 다음과 같습니다.
2시간 이후로 양의 무한대까지는 math.inf를 통해 입력을 하며, 결과는 1.83%입니다.
수식을 살펴보기 위해 직접 대입하여 값을 구하였으나,
scipy의 expon을 활용하여 간단히 구할 수 있습니다.
해당사건이 한시간 이내에 발생할 확률입니다.
expon은 지수분포(exponential distribution)를 뜻하며,
우리는 0부터 1까지이므로 1을 입력하고, 두 번째 인자인 scale에는 람다를 입력 후,
cdf를 활용하여 구합니다.
cdf는 누적분포함수(cumulative density function)를 뜻하며,
지수분포의 가장 왼쪽 끝에서부터 특정 시점까지의 면적, 즉 확률을 알려줍니다.
여기서 scale에 1/mu가 들어가서, 람다의 역수가 입력되었습니다.
그 이유는 여기서 람다는 한 시간당 발생 횟수가 2번이며,
사건이 1번 발생할 때 걸리는 시간은 한시간을 람다로 나눈 값이기 때문입니다.
해당 사건이 2시간이 경과한 후에야 발생할 확률도 원리는 동일합니다.
다만, 2 이후의 양의 무한대까지의 계산이므로,
전체면적 1로부터, 0에서 2까지의 면적을 빼서 계산합니다.
지수분포의 기댓값은 다음과 같습니다.
예제는 기준시간당 사건이 2번 발생하는 경우입니다.
이에 람다는 2가 됩니다.
이 지수분포에서 평균적으로 기대되는 값은 0.5이며,
기준시간이 한 시간이므로, 30분 동안 첫사건이 발생할 것으로 기대됩니다.
식을 이해하기 위해 직접 대입하였으나,
scipy의 expon.expect를 활용해도 결과는 동일합니다.
지수분포의 분산은 다음과 같습니다.
예제에 적용하면 다음과 같습니다.
수식을 이해하기 위해 직접 대입하였으나,
scipy의 expon.var를 이용해도 결과는 동일합니다.
지수분포는 한 번의 사건이 발생할 때까지 소요되는 시간을 알려주는 분포입니다.
예제와 같이 한 시간에 두 번의 사건이 발생하고,
한 번의 사건이 발생하기까지는 30분 정도 소요될 것으로 간주합니다.
만약 예상대로 30분 후 사건이 발생하였습니다.
그다음 사건이 발생하기까지는 몇 분 정도가 소요될까요?
지수분포에 따르면 30분 정도 소요될 것으로 예상됩니다.
만약 예상과 달리 2시간 후 사건이 발생하였습니다.
그다음 사건이 발생하기까지는 몇 분 정도가 소요될까요?
지수분포에 따르면 30분 정도 소요될 것으로 예상됩니다.
즉, 이전 사건이 발생한 시간과는 무관하게,
측정하는 시점에서 사건이 발생하기까지 예상소요시간은 동일합니다.
이를 지수분포의 무기억성이라고 합니다.
지수분포는 첫번째 사건이 발생하기까지 소요되는 시간을 알려줍니다.
여러 번의 사건이 발생하기까지 소요되는 시간은 알려주지 않습니다.
이 경우는 감마분포를 사용해야 합니다.
감마분포에 관한 내용은 별도의 글로 게시합니다.