يُعد توزيع بواسون أداة قيّمة لنمذجة بيانات العد، حيث يمثل احتمالية عدد محدد من الأحداث ضمن إطار زمني أو مكان ثابت، بافتراض معدل متوسط ثابت واستقلالية الأحداث. ومع ذلك، غالباً ما تنحرف مجموعات البيانات الواقعية عن هذه الشروط المثالية. تستعرض هذه المقالة ملاءمة توزيعات بواسون لمجموعات بيانات متنوعة في بايثون، مع معالجة التحديات مثل فرط التشتت.
محتويات الجدول
- ملاءمة توزيع بواسون الأساسية في بايثون
- طريقة المربعات الصغرى المُقسمة
- معالجة فرط التشتت باستخدام التوزيع ذي الحدين السالب
- الخلاصة
ملاءمة توزيع بواسون الأساسية في بايثون
لنبدأ بالعملية الأساسية لملاءمة توزيع بواسون باستخدام مكتبة scipy.stats
. الوظيفة الأساسية هي poisson.fit()
، والتي تقدر λ (لامدا)، الذي يمثل معدل الحدث المتوسط.
import numpy as np
from scipy.stats import poisson
import matplotlib.pyplot as plt
# بيانات العينة: عدد السيارات التي تمر بنقطة معينة في الدقيقة (100 دقيقة)
data = np.random.poisson(lam=5, size=100)
# ملاءمة توزيع بواسون
lambda_fit, = poisson.fit(data)
# عرض لامدا المُلائمة
print(f"لامدا المُلائمة: {lambda_fit}")
# التحضير للرسم
x = np.arange(0, max(data) + 1)
# رسم تخطيط تكراري والتوزيع المُلائم
plt.hist(data, bins=range(max(data) + 2), density=True, alpha=0.6, label='Data')
plt.plot(x, poisson.pmf(x, lambda_fit), 'r-', label=f'توزيع بواسون المُلائم (λ={lambda_fit:.2f})')
plt.xlabel('عدد السيارات')
plt.ylabel('الاحتمال')
plt.legend()
plt.title('ملاءمة توزيع بواسون')
plt.show()
يعمل هذا النهج البسيط بشكل جيد عندما تتبع البيانات توزيع بواسون بشكل وثيق. ومع ذلك، غالباً ما تنحرف البيانات الواقعية.
طريقة المربعات الصغرى المُقسمة
بينما تُعد poisson.fit()
ملائمة، إلا أن طريقة المربعات الصغرى المُقسمة تُقدم بديلاً أكثر قوة، خاصةً مع البيانات المحدودة أو الانحرافات الكبيرة عن افتراضات بواسون. تتضمن هذه الطريقة تقسيم البيانات إلى مجموعات وتقليل الفروق المربعة بين الترددات المُلاحظة والمتوقعة. يتطلب التنفيذ تحسيناً تكراريًا (مثل استخدام scipy.optimize.minimize
) وهو خارج نطاق هذا المثال الموجز، ولكنه موجود بسهولة في الحزم الإحصائية المخصصة.
معالجة فرط التشتت باستخدام التوزيع ذي الحدين السالب
ينشأ فرط التشتت عندما يتجاوز تباين البيانات متوسطها، مما ينتهك افتراضاً رئيسياً لبواسون (التباين يساوي المتوسط). يوفر التوزيع ذي الحدين السالب، الذي يتسع لفرط التشتت، ملاءمة أفضل في مثل هذه الحالات.
from scipy.stats import nbinom
# مثال على بيانات ذات فرط تشتت
overdispersed_data = np.random.negative_binomial(n=2, p=0.5, size=100)
# ملاءمة التوزيع ذي الحدين السالب
n_fit, p_fit = nbinom.fit(overdispersed_data)
# عرض المعلمات المُلائمة
print(f"n المُلائمة: {n_fit}")
print(f"p المُلائمة: {p_fit}")
# التحضير للرسم
x = np.arange(0, max(overdispersed_data) + 1)
# رسم تخطيط تكراري والتوزيع المُلائم
plt.hist(overdispersed_data, bins=range(max(overdispersed_data) + 2), density=True, alpha=0.6, label='Data')
plt.plot(x, nbinom.pmf(x, n_fit, p_fit), 'r-', label=f'التوزيع ذي الحدين السالب المُلائم (n={n_fit:.2f}, p={p_fit:.2f})')
plt.xlabel('عدد الأحداث')
plt.ylabel('الاحتمال')
plt.legend()
plt.title('ملاءمة التوزيع ذي الحدين السالب لبيانات فرط التشتت')
plt.show()
يوضح هذا كيف يلتقط التوزيع ذي الحدين السالب خصائص البيانات ذات فرط التشتت بفعالية، مما يوفر نموذجاً أكثر دقة من فرض ملاءمة بواسون.
الخلاصة
تتطلب ملاءمة توزيع بواسون الفعالة تحليلاً دقيقاً للبيانات. بينما توفر poisson.fit()
نقطة بداية بسيطة، إلا أن إدراك ومعالجة فرط التشتت باستخدام التوزيع ذي الحدين السالب أمر بالغ الأهمية لنمذجة بيانات العد بدقة. يعتمد اختيار التوزيع على خصائص مجموعة البيانات المحددة. يضمن الفحص البصري للملاءمة باستخدام الرسوم البيانية أن التوزيع المُختار يمثل البيانات بدقة.