وقتی که جمعهشبها در ایستگاه تاکسی بینشهری با اندوه منتظر پر شدن ظرفیت سهنفرهٔ تاکسی مینشینم؛ ایدهای ندارم که چقدر طول میکشد که تاکسی پر شده و رهسپار خانه میشوم. جمعهٔ گذشته صبرم تمام شد و گفتم باید دست به قلم بشوم.
پیشتر در نوشتهٔ دروغ، توطئه و احتمال درز کردن اطلاعات محرمانه از آمار پواسون گفتم. این مسئله هم از جنس همان است؛ یعنی از توزیع پواسون پیروی میکند. با مفروضاتی میتوان احتمال رسیدن یک یا دو مسافر بعدی ظرف مدت زمان مثلاً یک ساعت را محاسبه کرد.
چه چیزهایی باید بدانیم؟ با فرض کاتورهای و یکنواخت بودن ورود مسافران به ایستگاه شروع میکنیم. باید با احتیاط و بدون این که طرف فکر کند دیوانه یا وراجیم از راننده یا مسئول دفتر بپرسیم که: «ماشین قبلی کی اومد؟ کی رفت؟ مسافرا چقدر حیرون شدن؟» میپرسیم تا بتوانیم پارامتر \(\lambda\) را تخمین بزنیم. این پارامتر همان نرخ ورود مسافران است. همچنین باید از قبل یا با جستجو به رابطهٔ توزیع پواسون برسیم:
$$P(X) = \frac{e^{-\lambda} \lambda^X}{X!}$$
فرض کنیم دریافتیم که مسافران قبلی با توالی ۱۵، ۲۰، ۶۰، ۸۰ و ۱۰۰ دقیقه پیش به ایستگاه رسیدند. \(\lambda\) یا نرخ ورود مسافران به ایستگاه میشود
$$\frac{۵}{۱۰۰-۱۵}$$
یا اگر Talk is cheap, show me the code
arivals = [15, 20, 60, 80, 100] #minutes
lmbd = len(arivals)/(max(arivals)-min(arivals))
حال هدف ما برای ۳۰ دقیقهٔ آتی است. آیا تاکسی لعنتی ظرف نیم ساعت پر میشود که برویم؟ تابع PMF فوق احتمال را برای یک دقیقهٔ آینده میدهد؛ پس برای \(\tau = ۳۰\) باید کمی رابطهٔ بالا را تغییر دهیم.
$$P(X) = \frac{e^{-\lambda \tau} \left(\lambda\tau\right)^X}{X!}$$
با \(\lambda \approx ۰٫۰۵۹\) و تعداد مسافر مورد نیاز یک نفر داریم
$$\lambda \tau \approx ۰٫۰۵۹ \times ۳۰ \approx ۱٫۷۷$$
$$P(X = ۱) = \frac{e^{۱٫۷۷} \times ۱٫۷۷}{۱!} \approx ۰٫۳۰$$
یعنی به احتمال ۳۰٪ مسافر بعدی میآید.
from scipy.stats import poisson
probability = poisson.pmf(1, mu=lmbd*30)
این دقیق نیست. با بالاترین دقت قابل حصول میخواهیم. میخواهیم فاصلهٔ دو شهر را با دقت نانومتر بسنجیم. میخواهیم با فانتوم به جنگ موش برویم!
میدانیم که تعداد مسافران در ساعت ۱۴:۰۰ بسیار بیشتر از ۲۲:۰۰ است و استفاده از یک پارامتر برای همهٔ این ساعات دقیق نیست. به این منظور باید از فرایند پواسون ناهمگن1In-homogeneous Poisson Process استفاده کنیم. این برای زمانی است که نرخ رویداد ما مقدار ثابتی ندارد و تابعی از زمان (\(\lambda\left(t\right)\)) است.
راه حل بهتر این است که \(\lambda\) را برای مثلاً یک ساعت قبل تا اکنون تخمین بزنیم. احتمالاً اگر اشتباهی نکرده باشم کار میکند و خارش ذهنم برطرف میشود. اگر اشتباه کردم، لطفاً بگویید.