Distribusi Poisson dan Eksponensial

Model penghitungan kejadian per interval dan waktu tunggu antarkejadian.

Daftar isi

Topik ini membahas dua distribusi yang berpasangan untuk kejadian yang datang secara acak, yaitu Poisson untuk menghitung banyaknya kejadian per interval dan eksponensial untuk waktu tunggu antarkejadian. Contoh yang digunakan adalah jumlah pelanggan per jam di loket kampus beserta selang waktu antarkedatangannya. Hubungan keduanya diverifikasi melalui satu proses simulasi yang sama.

Distribusi Poisson untuk penghitungan kejadian#

Distribusi Poisson memodelkan banyaknya kejadian pada interval waktu yang panjangnya tetap, dengan satu parameter λ\lambda berupa laju rata-rata kejadian per interval. Syarat dasarnya, kejadian terjadi satu per satu, tidak saling bergantung, dan laju rata-ratanya stabil. Contoh netralnya adalah loket kampus dengan laju rata-rata λ=12\lambda = 12 pelanggan per jam.

Skrip berikut menyimulasikan seratus ribu jam operasi loket, lalu menghitung distribusi jumlah pelanggannya. Histogram hasil simulasi digambar berdampingan dengan PMF Poisson teoretis dari scipy.stats.poisson. Histogram menggunakan kepadatan agar skalanya sebanding dengan PMF.

python simulasi-poisson.py
"""Jumlah pelanggan per jam di loket kampus: histogram vs PMF Poisson."""
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

rng = np.random.default_rng(42)
pelanggan = rng.poisson(12, size=100_000)

k = np.arange(2, 24)
fig, ax = plt.subplots(figsize=(7, 4), constrained_layout=True)
ax.hist(pelanggan, bins=np.arange(1.5, 24.5, 1), density=True, alpha=0.6,
        label="Histogram simulasi")
ax.plot(k, stats.poisson.pmf(k, 12), "ro-", label="PMF Poisson teoretis")
ax.set_xlabel("Jumlah pelanggan per jam")
ax.set_ylabel("Peluang")
ax.set_title("Poisson dengan λ = 12: simulasi vs teori")
ax.legend()
fig.savefig("histogram-pmf-poisson.png", dpi=110)

Histogram jumlah pelanggan per jam menutupi titik PMF Poisson teoretis
Histogram jumlah pelanggan per jam menutupi titik PMF Poisson teoretis

Histogram menutupi titik-titik PMF teoretis dengan puncak di sekitar 12. Sebaran nilainya membentang kira-kira dari 4 sampai 20, dengan bagian pinggirnya yang makin tipis menuju kedua ekor. Model penghitungan ini dituliskan dengan rumus

P(X=k)=e−λλkk!,k=0,1,2,… P(X = k) = \frac{e^{-\lambda} \lambda^k}{k!}, \quad k = 0, 1, 2, \ldots

Rumus tersebut hanya membutuhkan λ\lambda, sehingga laju rata-rata saja sudah cukup untuk menentukan seluruh distribusinya. Ciri khas Poisson terletak pada kesamaan rata-rata dan variansinya, yaitu keduanya bernilai λ\lambda. Verifikasi numeriknya dilakukan pada skrip berikut.

python verifikasi-poisson.py
"""Rata-rata dan variansi jumlah pelanggan dibandingkan dengan lambda."""
import numpy as np

rng = np.random.default_rng(42)
pelanggan = rng.poisson(12, size=100_000)

print(f"Rata-rata simulasi : {np.mean(pelanggan):.4f}")
print(f"Variansi simulasi  : {np.var(pelanggan):.4f}")
print(f"Lambda teoretis    : {12.0:.4f}")
text Keluaran
Rata-rata simulasi : 11.9920
Variansi simulasi  : 11.9750
Lambda teoretis    : 12.0000

Rata-rata hasil simulasi 11.9920 dan variansinya 11.9750, keduanya berhimpitan dengan λ=12\lambda = 12. Kesamaan ini menjadi pembeda Poisson dari distribusi penghitungan lain. Apabila variansi data jauh lebih besar daripada rata-ratanya, model Poisson patut diragukan.

Distribusi eksponensial untuk waktu tunggu#

Distribusi eksponensial memodelkan waktu tunggu sampai kejadian berikutnya pada proses yang kejadiannya acak. Satu parameternya adalah laju λ\lambda, dan rata-rata waktunya adalah 1/λ1/\lambda. Pada loket dengan laju 12 pelanggan per jam, waktu antarkedatangan rata-rata adalah 1/121/12 jam atau 5 menit.

Skrip berikut menyimulasikan waktu antarkedatangan seratus ribu pelanggan dengan rata-rata 5 menit, lalu menggambar histogram kepadatannya berdampingan dengan PDF eksponensial teoretis. Perhatikan parameter scale yang diisi 1/λ=51/\lambda = 5, karena NumPy dan SciPy menggunakan rata-rata sebagai parameternya, bukan lajunya. Pembalikan konvensi ini merupakan sumber kekeliruan yang sering terjadi.

python simulasi-eksponensial.py
"""Waktu antarkedatangan pelanggan: histogram kepadatan vs PDF eksponensial."""
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

lam = 0.2  # kejadian per menit, setara 12 pelanggan per jam
rng = np.random.default_rng(42)
waktu = rng.exponential(scale=1.0 / lam, size=100_000)

xs = np.linspace(0.0, 30.0, 400)
fig, ax = plt.subplots(figsize=(7, 4), constrained_layout=True)
ax.hist(waktu, bins=60, density=True, alpha=0.6, label="Histogram simulasi")
ax.plot(xs, stats.expon.pdf(xs, scale=1.0 / lam), "r-", linewidth=2,
        label="PDF eksponensial teoretis")
ax.set_xlabel("Waktu antarkedatangan (menit)")
ax.set_ylabel("Kepadatan")
ax.set_title("Eksponensial dengan rata-rata 5 menit: simulasi vs teori")
ax.legend()
fig.savefig("histogram-pdf-eksponensial.png", dpi=110)

Histogram waktu antarkedatangan menempel pada PDF eksponensial teoretis
Histogram waktu antarkedatangan menempel pada PDF eksponensial teoretis

Histogram kepadatan menempel pada kurva yang menurun mulai dari kepadatan tertinggi di dekat nol, sesuai sifat waktu tunggu yang sering pendek tetapi kadang panjang. Sumbu horizontalnya diperluas sampai 30 menit untuk menampung ekor kanan yang panjang. PDF-nya dituliskan dengan rumus

f(t)=λe−λt,t≥0. f(t) = \lambda e^{-\lambda t}, \quad t \ge 0.

Kurva yang menurun itu berbeda dari lonceng normal, karena eksponensial tidak simetris dan memiliki ekor kanan yang panjang. Luas totalnya tetap 1 seperti PDF pada umumnya. Peluang menunggu lebih dari 10 menit misalnya dihitung sebagai luas di kanan 10, yaitu e−2≈0.1353e^{-2} \approx 0.1353.

Hubungan Poisson dan eksponensial#

Poisson dan eksponensial adalah dua sisi dari proses acak yang sama, yaitu sisi penghitungan per interval dan sisi waktu tunggu antarkejadian. Bila jumlah kejadian per jam mengikuti Poisson dengan laju λ\lambda, maka waktu antarkejadiannya mengikuti eksponensial dengan rata-rata 1/λ1/\lambda. Pada loket kampus, 12 pelanggan per jam setara dengan selang antarkedatangan rata-rata 5 menit.

Skrip berikut membangun proses acak dari sisi eksponensialnya. Selang antarkedatangan dihasilkan selama kira-kira 8000 jam operasi, dijumlahkan, dipotong per jam penuh, lalu banyaknya kejadian tiap jam dihitung. Bila hubungan keduanya benar, rata-rata dan variansi penghitungannya harus sama-sama dekat ke λ=12\lambda = 12.

python hubungan-proses.py
"""Verifikasi hubungan eksponensial dan Poisson pada satu proses."""
import numpy as np

rng = np.random.default_rng(42)
# selang waktu antarkedatangan dalam menit, rata-rata 5 menit
selang = rng.exponential(scale=5.0, size=100_000)
waktu_kumulatif = np.cumsum(selang) / 60.0
jam = (waktu_kumulatif // 1).astype(int)
jam = jam[jam < 8000]
jumlah = np.bincount(jam, minlength=8000)

print(f"Rata-rata selang (menit)  : {np.mean(selang):.4f}")
print(f"Rata-rata jumlah per jam  : {np.mean(jumlah):.4f}")
print(f"Variansi jumlah per jam   : {np.var(jumlah):.4f}")
print(f"Lambda teoretis (per jam) : {12.0:.4f}")
text Keluaran
Rata-rata selang (menit)  : 5.0175
Rata-rata jumlah per jam  : 11.9712
Variansi jumlah per jam   : 12.1509
Lambda teoretis (per jam) : 12.0000

Penghitungan per jam dari selang eksponensial menghasilkan rata-rata 11.9712 dan variansi 12.1509, keduanya dekat ke λ=12\lambda = 12. Artinya, satu proses yang sama memunculkan dua distribusi sekaligus, eksponensial pada sumbu waktu dan Poisson pada sumbu penghitungan. Pemilihan model tinggal menyesuaikan pertanyaan yang diajukan, yaitu berapa banyak kejadian atau berapa lama waktu tunggunya.

Kesalahan umum#

  • Menukar laju dengan rata-rata waktu. Nilai λ\lambda adalah banyaknya kejadian per interval, sedangkan rata-rata eksponensial adalah 1/λ1/\lambda. Mengisi scale dengan 12 saat laju 12 per jam menghasilkan selang rata-rata 12 menit alih-alih 5 menit.
  • Menganggap waktu antarkejadian berdistribusi Poisson. Poisson mendeskripsikan bilangan bulat hasil penghitungan, sedangkan waktu tunggu bernilai kontinu dan dideskripsikan eksponensial. Perbaikannya, tanyakan dahulu apakah data berupa hitungan atau durasi.
  • Menggunakan Poisson pada data penghitungan yang variansinya jauh lebih besar daripada rata-ratanya. Kesamaan rata-rata dan variansi adalah ciri Poisson, sehingga data yang jauh lebih menyebar tidak cocok dimodelkan begitu saja. Perbaikannya, periksa perbandingan keduanya terlebih dahulu sebelum memilih model.

Ringkasan#

  • Poisson memodelkan jumlah kejadian per interval dengan satu parameter λ\lambda, dan rata-ratanya sama dengan variansinya.
  • Eksponensial memodelkan waktu antarkejadian dengan rata-rata 1/λ1/\lambda dan kurva yang menurun.
  • Satu proses acak memunculkan keduanya, dan simulasi menunjukkan rata-rata serta variansi penghitungan per jam yang dekat ke λ\lambda.
  • Kedua model hanya sah bila laju kejadian konstan sepanjang waktu.

Referensi#