NumPy - Poisson Distribution

توزیع پواسون

توزیع پواسون یک توزیع گسسته است. این توزیع تخمین می‌زند که یک رخداد چند بار می‌تواند در یک زمان معین اتفاق بیافتد. برای مثال اگر فردی دو بار در روز غذا بخورد، احتمال اینکه سه بار در یک روز غذا بخورد چقدر است؟

تابع شیء random.poisson() دارای دو پارامتر است:

  • lam - نرخ یا تعداد دفعات رخ دادن معلوم. (در مثال بالا ۲)
  • size - آرایش آرایه برگردانده شده.

در کد زیر یک توزیع تصادفی 1x10 برای رخ دادن ۲ مرتبه تولید می‌شود.


from numpy import random

x = random.poisson(lam=2, size=10)

print(x)

خروجی:

رسم نمودار توزیع پواسون


from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.displot(random.poisson(lam=2, size=1000))

plt.show()

خروجی:

تفاوت بین توزیع نرمال و توزیع پواسون

توزیع نرمال پیوسته است در حالیکه توزیع پواسون گسسته است.

اما می‌توان مشاهده کرد که مشابه با توزیع دو جمله‌ای، برای تعدادی زیادی داده، توزیع پواسون هم بسیار مشابه توزیع نرمال با یک انحراف معیار و میانگین مشخص خواهد شد.


from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.kdeplot(random.normal(loc=50, scale=7, size=1000), label='normal')
sns.kdeplot(random.poisson(lam=50, size=1000), label='poisson')

plt.legend()
plt.show()

خروجی:

تفاوت بین توزیع دو جمله‌ای و توزیع پواسون

توزیع دو جمله‌ای تنها دو خروجی ممکن دارد. در حالیکه توزیع پواسون می‌تواند خروجی‌های نامحدودی داشته باشد.

اما برای یک n بسیار بزرگ و یک مقدار نزدیک به صفر برای p توزیع دو جمله‌ای خیلی نزدیک به توزیع پواسونی خواهد شد که در آن n * p تقربا برابر lam است.


from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.kdeplot(random.binomial(n=1000, p=0.01, size=1000), label='binomial')
sns.kdeplot(random.poisson(lam=10, size=1000), label='poisson')

plt.legend()
plt.show()

خروجی: