파이썬(Python)/numpy

[Python]푸아송 분포란? 파이썬으로 구현하고 그래프 그리기(Poisson distribution)

끄적끄적아무거나 2022. 1. 20. 09:05
반응형

 

목차

     

     

     

     

    푸아송 분포란(Poisson distribution)?

     

    푸아송 분포는 이산 분포와 깊게 연관되어 있습니다. 

     

    https://scribblinganything.tistory.com/457

     

    [Python]이산 확률 분포란? 파이썬으로 구현하고 그래프로 그리기(Binomial/Discrete)

    목차 이산 확률 분포란(Discrete Probability Distribution)? 이산 확률 분포는 영어로 Discrete Distribution 또는 Binomial Distribution 이라고 합니다. 이산이라는 의미가 설명하듯이 연속된 값이 아닌 별개..

    scribblinganything.tistory.com

     

    앞서 이산 분포(Discrete distribution)는 1회 당 발생 p 확률의 사건을 기준으로 n 번 시행할때 k 번 발생할 확률을 계산해 줍니다. 

     

    1회 당 발생 확률이 p이면 좋겠지만 현실은 사건의 특성에 따라서 10번에 반복되는 확률을 가질 수도있고 100번에 반복되는 확률을 가질 수도 있습니다. 

     

    그래서 나오게 된 것이 푸아송(Poisson) 확률 분포 입니다. 

     

    푸아송 분포와 이산 분포의 차이는 1회당이냐 비율이냐 입니다. 즉, λ = np를 사용해서 n번 시행하니 p의 확률이 발생했다는 비율을 사용해서 분포를 구하는 것입니다.

     

     

     

    푸아송 분포(Poisson Probability distribution) 파이썬으로 구하기

     

    앞서 푸아송에서 필요한 값이 λ(람다, Lamda)라는 점을 알았습니다. 파이썬 예제로 A라는 사람이 5일에 커피를 3번 씩 마신다고 가정할 때 500일 동안 지켜본 값을 리스트로 만들면 아래와 같습니다.

     

    예제코드>>

    from numpy import random
    
    x_list = random.poisson(lam=3, size=100)
    
    print(x_list)

    3번 라인: 5일 비율로 푸아송 확률 분포에서 값을 불러 오므로 size는 500일/5일 = 100으로 함

     

     

    결과>>

    [2 4 3 0 1 5 2 2 3 5 1 2 4 2 1 2 7 2 1 4 2 1 2 4 3 4 4 2 5 3 6 3 5 2 3 2 5
     3 3 6 2 2 4 3 4 2 2 1 1 5 1 3 1 4 3 3 1 5 1 4 2 5 4 1 4 5 3 3 1 4 5 2 1 3
     7 5 1 1 5 4 6 6 4 1 0 2 0 6 3 5 4 5 5 4 2 6 2 4 3 4]

     

     

    푸아송 분포 파이썬으로 그래프(Graph) 구현하기

     

    코드>>

    from numpy import random
    
    x_list = random.poisson(lam=3, size=10000)
    
    # print(x_list)
    
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    sns.displot(x_list, kind="hist")
    plt.show()

    3번 라인: 경향을 보기 위해 size를 10000으로 실행하였습니다.

    7~11번 라인: matplotlib의 seaborn을 사용해서 발생 그래프를 그렸습니다. "hist"는 히스토 그램입니다.

     

    결과>>

    3 주변으로 발생 빈도가 몰려 있음을 알 수 있습니다.

     

     

     

    반응형