Sebuah restoran cepat saji ingin menganalisis waktu antar kedatangan pelanggan (dalam menit) untuk meningkatkan efisiensi pelayanan. Karena keterbatasan data lapangan, analis memutuskan untuk melakukan simulasi data dengan dugaan bahwa waktu antar kedatangan mengikuti distribusi tertentu. Analis membangkitkan 150 data pengamatan menggunakan distribusi eksponensial, namun parameter distribusi tidak diketahui oleh analis lain.
# Pembangkitan Data
set.seed(1)
data <- rexp(150, rate = 0.4)
data
## [1] 1.88795458 2.95410695 0.36426682 0.34948815 1.09017156 7.23742134
## [7] 3.07390513 1.34920710 2.39141873 0.36761498 3.47683782 1.90507464
## [13] 3.09400888 11.05983554 2.63635792 2.58810987 4.69008793 1.63686659
## [19] 0.84233369 1.47119930 5.91128813 1.60473147 0.73530097 1.41466381
## [25] 0.26518156 0.14859790 1.44678116 9.89733213 2.93328026 2.49203239
## [31] 3.58821336 0.09317132 0.81002538 3.30116982 0.50877588 2.55681469
## [37] 0.75435234 1.81303576 1.87885673 0.58756863 2.69970284 2.57061726
## [43] 3.23065412 3.13276339 1.38660349 0.75320749 3.23281164 2.48638947
## [49] 1.28543574 5.01958101 1.05560611 5.44693142 8.04447254 1.39457339
## [55] 1.48654413 2.44348951 0.52466645 0.77361964 2.76484067 1.93546941
## [61] 0.22418520 2.77044164 0.61816063 3.92996712 12.08203186 1.07783033
## [67] 6.82597328 2.84207854 2.03342061 2.09251623 4.46191351 5.78117907
## [73] 7.27471817 0.71397746 0.97196693 0.13013862 0.87967624 3.91310336
## [79] 2.03633952 6.89810947 0.96548391 2.52064114 2.04628547 0.14815301
## [85] 5.70963368 2.01042728 3.95924020 3.08447877 3.36411005 5.25094307
## [91] 2.58774287 1.11862973 2.60902129 0.65207061 1.70307277 0.65934566
## [97] 1.11651414 0.52651723 0.33142851 0.87222086 4.74960835 1.29051526
## [103] 1.12249446 0.94899922 3.12191895 6.73352890 0.49080452 5.74959293
## [109] 1.41425668 1.90795002 3.93179176 4.58910245 0.09288069 0.31391468
## [115] 3.54887299 1.79654399 1.08967638 0.17353086 0.53422990 0.74789730
## [121] 0.58913907 1.85760905 4.27481457 2.45454852 0.05062603 0.44642363
## [127] 8.14834276 3.41143053 0.22777218 2.97773660 0.65710114 3.13365729
## [133] 0.94813924 0.94706706 0.27450312 2.26389365 0.39176972 0.24711404
## [139] 5.18425092 1.96280216 1.32040008 2.57329103 5.62788174 2.96153503
## [145] 0.54956984 2.01252825 1.43770254 1.01231256 4.26628868 5.27690541
# Eksplorasi Data
summary(data)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.05063 0.81810 1.90651 2.46336 3.20641 12.08203
sd(data)
## [1] 2.224055
# Estimasi Parameter (MLE)
lambda_hat <- 1 / mean(data)
lambda_hat
## [1] 0.4059492
# Histogram
hist(data, probability = TRUE, col = "lightblue",
main = "Histogram Waktu Antar Kedatangan")
# Overlay distribusi
curve(dexp(x, rate = lambda_hat),
col = "red", lwd = 2, add = TRUE)
# Boxplot
boxplot(data, col = "orange", main = "Boxplot Data")
Kotak menumpuk di bagian bawah, menunjukkan konsentrasi data di nilai rendah. Ini adalah kondisi sibuk, pelanggan datang berturut-turut dalam waktu singkat. Pada histogram, ini adalah batang yang paling tinggi.
Terdapat beberapa titik outlier di bagian atas (mencapai nilai 12). Dalam realita, ini mewakili momen sepi di mana tidak ada pelanggan yang datang selama 12 menit. Kehadiran outlier ini normal dan memang ciri khas restoran cepat saji (pelanggan tidak selalu datang berturut-turut.
Akan ada momen-momen langka di mana kasir akan menganggur selama 12 menit karena tidak ada satu pun pelanggan yang masuk. Manajer bisa menyusun SOP agar di saat jeda panjang seperti ini, staf bisa melakukan tugas sekunder seperti membersihkan area dining atau mengisi ulang stok tisu/saus, tanpa perlu merasa khawatir meninggalkan pos kasir terlalu lama.
# Uji Kolmogorov-Smirnov
ks.test(data, "pexp", rate = lambda_hat)
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: data
## D = 0.057756, p-value = 0.6989
## alternative hypothesis: two-sided
\(H_0:\) Data berdisr=tribusi normal.
\(H_1:\) Data berdisr=tribusi tidak normal.
# QQ Plot
qqplot(qexp(ppoints(length(data)), rate=lambda_hat),
data,
main="QQ Plot Eksponensial")
abline(0,1,col="blue")
Di bagian awal dan tengah (nilai 0 hingga 6), titik-titik menempel hampir sempurna pada garis biru. Ini menunjukkan kecocokan yang sangat tinggi.
Di bagian ujung kanan (nilai \(>8\)), titik-titik mulai sedikit menjauh dari garis. Ini adalah hal yang sangat wajar pada distribusi eksponensial karena variansi di area ekor (tail) memang tinggi. Hal ini tidak menggugurkan validitas model yang digunakan.
Karena model eksponensial ini terbukti sangat akurat (fit), kita bisa menggunakan rumus matematika distribusi ini untuk menghitung risiko. Contoh, Berapa probabilitas kita akan kedatangan pelanggan dalam waktu kurang dari 30 detik? atau Berapa peluang tidak ada pelanggan selama 20 menit?. Ini memungkinkan untuk membuat simulasi dengan metode Monte Carlo untuk mencoba berbagai skenario jumlah kasir tanpa harus melakukan eksperimen langsung yang berisiko mengganggu pelanggan nyata.
Data waktu antar kedatangan pelanggan sebesar 150 sampel terbukti secara signifikan mengikuti Distribusi Eksponensial.
Secara nyata, angka-angka ini memberikan gambaran tentang beban kerja di restoran: