Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Jumat, 21 Maret 2025

Mengulik Statistik Transportasi - Prediksi Lebih Akurat Dengan FB Prophet

 




Dalam dunia ilmu statistika, peramalan selalu menjadi landasan pengambilan keputusan. Mulai dari memprediksi harga saham hingga memperkirakan permintaan energi, bisnis dan organisasi bergantung pada peramalan yang akurat untuk merencanakan masa depan. Namun, metode peramalan deret waktu tradisional—seperti ARIMA atau pemulusan eksponensial—sering kali disertai kurva pembelajaran yang curam dan memerlukan praproses data yang ekstensif. Di sinilah Facebook Prophet hadir, menawarkan solusi yang lebih sederhana dan lebih mudah diakses untuk analisis deret waktu.

Prophet dikembangkan oleh tim Ilmu Data Inti Facebook dan dirilis sebagai pustaka sumber terbuka pada tahun 2017. Pembuatannya bermula dari kebutuhan praktis: Facebook sendiri menghadapi tantangan dalam meramalkan berbagai metrik, seperti beban server, keterlibatan pengguna, dan kinerja iklan. Metrik ini sering kali menunjukkan pola yang rumit, termasuk musim, peristiwa yang tidak teratur (seperti hari libur), dan perubahan tren yang tiba-tiba. Alat yang ada terlalu kaku atau memerlukan keahlian yang signifikan untuk menangani kerumitan tersebut secara efektif.

Menyadari kesenjangan di pasar, tim di Facebook merancang Prophet dengan mempertimbangkan tiga prinsip utama:

  • Kemudahan Penggunaan: Prophet dibuat agar intuitif, bahkan bagi pengguna yang tidak memiliki keahlian mendalam dalam analisis deret waktu. Hanya dengan beberapa baris kode, siapa pun dapat membuat dan menginterpretasikan prakiraan.
  • Ketahanan: Alat ini dirancang untuk menangani data yang hilang, outlier, dan gangguan tak terduga dengan baik, sehingga cocok untuk kumpulan data dunia nyata yang sering kali berantakan dan tidak lengkap.
  • Fleksibilitas: Prophet memungkinkan pengguna untuk menggabungkan acara khusus (seperti hari libur), menyesuaikan musim, dan memodelkan tren pertumbuhan yang jenuh, sehingga memberikan tingkat adaptasi yang tinggi untuk berbagai kasus penggunaan.

Sejak dirilis, Prophet telah memperoleh adopsi yang luas di berbagai industri—dari ritel dan keuangan hingga perawatan kesehatan dan transportasi. Kemampuannya untuk menyeimbangkan kesederhanaan dengan kekuatan telah menjadikannya pilihan utama bagi para analis, ilmuwan data, dan teknisi yang membutuhkan prakiraan yang andal tanpa kerepotan penyetelan manual atau konfigurasi yang rumit.

Saat ini, baik Anda memprediksi lalu lintas situs web, angka penjualan, atau jumlah penumpang kereta api, Prophet menjadi bukti bagaimana penyelesaian tantangan internal dapat menghasilkan alat yang bermanfaat bagi masyarakat luas. Dalam posting blog ini, kita akan membahas bagaimana Prophet dapat diterapkan untuk memperkirakan permintaan penumpang kereta api, menunjukkan fleksibilitas dan kemudahan penggunaannya dalam praktik.


Mari kita ingat kembali data penumpang kereta jabodetabek yang telah kita bahas menggunakan regresi linear vs arima (baca disini)  , grafik data historicalnya seperti ini :



Seiring dengan pertumbuhan populasi perkotaan, sistem transportasi umum yang efisien menjadi penting bagi pembangunan berkelanjutan. Layanan kereta api Jabodetabek, yang menghubungkan Jakarta dan sekitarnya, melayani jutaan penumpang setiap tahunnya. Perkiraan permintaan penumpang yang akurat sangat penting untuk perencanaan infrastruktur, alokasi sumber daya, dan memastikan kelancaran operasi. Dalam tulisan kali ini  ini, kita akan membahas bagaimana Prophet milik Facebook—alat perkiraan yang tangguh dan mudah digunakan—dapat digunakan untuk memperkirakan jumlah penumpang di masa mendatang untuk layanan Jabodetabek dari tahun 2025 hingga 2029.

Kumpulan data yang diperoleh dari API BPS mencakup hampir dua dekade, yang mencatat jumlah penumpang bulanan untuk layanan Jabodetabek. Selama periode ini, data mengungkap pola musiman yang jelas, tren pertumbuhan jangka panjang, dan gangguan signifikan yang disebabkan oleh faktor eksternal seperti pandemi COVID-19. Memahami dinamika ini sangat penting untuk membangun model perkiraan yang akurat.

Prophet milik Facebook menonjol karena kesederhanaan dan fleksibilitasnya. Tidak seperti model tradisional yang memerlukan praproses ekstensif, Prophet dapat menangani data yang hilang, perubahan tren yang tiba-tiba, dan kejadian tidak teratur dengan upaya minimal. Untuk analisis kami, kami akan memanfaatkan kemampuan Prophet untuk memperhitungkan musim tahunan dan menggabungkan dampak pandemi COVID-19 sebagai kejadian khusus.


Persiapan Data:

  • Data layanan Jabodetabek diekstraksi dan dibentuk ulang menjadi format panjang dengan ds (tanggal) dan y (jumlah penumpang).
  • Baris tahunan (misalnya, "2020-Tahunan") dikecualikan, dan hanya data bulanan yang valid yang disimpan.

Pelatihan Model:

  • Model Prophet diinisialisasi dengan yearly_seasonality=True karena data bulanan sering kali menunjukkan pola tahunan.
  • Musiman mingguan dan harian dinonaktifkan karena data diagregasi pada tingkat bulanan.

Peramalan:

  • Kerangka data masa depan dibuat selama 60 bulan (5 tahun) mulai dari Februari 2025.
  • Model memprediksi jumlah penumpang (yhat) beserta interval kepercayaan (yhat_lower, yhat_upper).

Visualisasi:

  • Plot prakiraan menunjukkan data historis dan nilai prediksi.
  • Plot komponen memecah prakiraan menjadi tren dan musiman.



Output yang Diharapkan

Plot Prakiraan:

  • Grafik yang menunjukkan data historis (2006–2025) dan nilai yang diramalkan (2025–2029).
  • Interval keyakinan (wilayah yang diarsir) menunjukkan ketidakpastian dalam prediksi.

Plot Komponen:

  • Tren: Pertumbuhan atau penurunan jangka panjang dalam jumlah penumpang.
  • Musiman: Fluktuasi tahunan dalam permintaan penumpang.

Tabel Prakiraan:

Tabel yang menampilkan nilai yang diprediksi (yhat) dan interval keyakinan untuk setiap bulan dari Februari 2025 hingga Desember 2029.


Koding:


import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt

# Step 1: Load and Prepare the Data
# Read the CSV file
df = pd.read_csv('railway_passenger_time_series.csv')

# Extract Jabodetabek service data
jabodetabek_data = df[df['Service'] == 'Jabodetabek'].drop(columns=['Service']).T.reset_index()

# Rename columns
jabodetabek_data.columns = ['ds', 'y']

# Convert 'ds' to datetime and filter out annual rows (e.g., "2020-Annual")
jabodetabek_data['ds'] = pd.to_datetime(jabodetabek_data['ds'], errors='coerce')
jabodetabek_data = jabodetabek_data.dropna(subset=['ds'])

# Ensure 'y' is numeric
jabodetabek_data['y'] = pd.to_numeric(jabodetabek_data['y'], errors='coerce')

# Filter data up to January 2025
jabodetabek_data = jabodetabek_data[jabodetabek_data['ds'] <= '2025-01-01']

# Step 2: Train the Prophet Model
model = Prophet(
    yearly_seasonality=True,  # Include yearly seasonality
    weekly_seasonality=False,  # No weekly seasonality for monthly data
    daily_seasonality=False   # No daily seasonality for monthly data
)

# Fit the model
model.fit(jabodetabek_data)

# Step 3: Create Future Dataframe and Forecast
future = model.make_future_dataframe(periods=60, freq='ME')  # Forecast for 5 years (60 months)
forecast = model.predict(future)

# Step 4: Visualize the Results
fig1 = model.plot(forecast)
plt.title('Jabodetabek Passenger Forecast (2006-2029)')
plt.xlabel('Year')
plt.ylabel('Passenger Numbers')
plt.show()

# Plot components (trend, seasonality)
fig2 = model.plot_components(forecast)
plt.show()

# Display the forecasted values for 2025-2029
forecast_2025_2029 = forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(60)
print(forecast_2025_2029)


Hasil :






Hasil tail :

ds yhat yhat_lower yhat_upper 229 2025-01-31 22451.631031 15440.144109 29361.157546 230 2025-02-28 23999.078741 16845.089824 31089.854145 231 2025-03-31 23225.021768 16544.920033 30066.264181 232 2025-04-30 23870.905060 16805.316271 30905.879794 233 2025-05-31 23402.956246 16474.699365 30187.172821 234 2025-06-30 24120.125777 17157.001159 30418.358445 235 2025-07-31 23888.080556 16934.558451 31017.041799 236 2025-08-31 23904.987681 16805.391752 31059.229315 237 2025-09-30 24854.486510 17555.845108 31810.723753 238 2025-10-31 24479.124459 17603.378603 31406.030541 239 2025-11-30 25006.244566 18504.362793 32312.319654 240 2025-12-31 24472.070291 17982.850274 31406.036502 241 2026-01-31 22982.607599 16491.758553 29772.497698 242 2026-02-28 24464.093765 18142.833021 31424.461212 243 2026-03-31 23750.375704 17160.980347 30586.077784 244 2026-04-30 24392.938939 17264.905034 31087.762740 245 2026-05-31 23897.556147 17077.722856 30573.514143 246 2026-06-30 24626.808146 17513.521228 31315.970905 247 2026-07-31 24384.127135 17311.167621 31412.730950 248 2026-08-31 24418.093992 18014.912413 31497.151318 249 2026-09-30 25360.545525 18335.154109 32481.120252 250 2026-10-31 24983.318146 18138.620150 31970.364856 251 2026-11-30 25517.125917 18572.185589 32722.039987 252 2026-12-31 24978.100201 18273.668282 32320.002865 253 2027-01-31 23513.794370 16636.276423 30686.349968 254 2027-02-28 24928.811443 18659.272096 31367.108419 255 2027-03-31 24276.603019 17364.186683 31292.700111 256 2027-04-30 24914.469292 18254.638446 31836.144357 257 2027-05-31 24392.061269 17726.749857 31136.037728 258 2027-06-30 25133.291256 18369.215986 32338.509696 259 2027-07-31 24880.374239 17699.576369 31723.839446 260 2027-08-31 24931.548210 17807.706023 31768.386807 261 2027-09-30 25866.290552 18688.785644 32765.030938 262 2027-10-31 25487.662778 18547.268736 32200.049039 263 2027-11-30 26027.800164 18939.150978 32740.716477 264 2027-12-31 25484.138501 18764.552470 32142.298620 265 2028-01-31 24045.172653 17584.921872 31246.249890 266 2028-02-29 25563.456007 18649.284587 32250.598585 267 2028-03-31 24730.278448 17872.570565 31010.281189 268 2028-04-30 25378.111045 18655.969502 32175.982478 269 2028-05-31 24937.976760 17705.194867 32197.267059 270 2028-06-30 25642.963466 18512.035161 32474.564235 271 2028-07-31 25421.945237 18536.590710 32599.949187 272 2028-08-31 25421.962434 18257.523239 31924.556628 273 2028-09-30 26377.840860 19914.092614 33949.161482 274 2028-10-31 26004.804122 19020.287200 32757.327997 275 2028-11-30 26524.882533 19983.856260 33419.886342 276 2028-12-31 25995.765573 18993.449527 32793.307560 277 2029-01-31 24481.354858 18099.854825 31596.312735 278 2029-02-28 26028.802567 19448.611419 33140.922160 279 2029-03-31 25254.745595 18242.526338 32384.898037 280 2029-04-30 25900.628886 19368.684759 32823.970784 281 2029-05-31 25432.680073 18489.739028 32647.522948 282 2029-06-30 26149.849604 19299.210147 33351.096326 283 2029-07-31 25917.804382 19027.711353 32984.599558 284 2029-08-31 25934.711508 19106.381838 32731.517489 285 2029-09-30 26884.210336 20822.804731 34047.535226 286 2029-10-31 26508.848286 19558.999655 33291.315736 287 2029-11-30 27035.968392 19849.067232 34015.745508 288 2029-12-31 26501.794117 19895.672021 33173.750342


Saat menggunakan Facebook Prophet untuk meramalkan data deret waktu, library bawaan python menghasilkan beberapa keluaran (default) yang membantu dalam memahami hasil. Ini termasuk plot ramalan, komponen tren, dan komponen musiman (misalnya, musiman tahunan). Mari kita uraikan masing-masing elemen ini dan jelaskan signifikansinya dalam konteks ramalan penumpang kereta api Anda untuk layanan Jabodetabek.


1. Plot Ramalan

Plot ramalan adalah visualisasi utama yang dihasilkan oleh Prophet. Ini menunjukkan:


  • Data Historis: Jumlah penumpang aktual dari tahun 2006 hingga Januari 2025.
  • Nilai Ramalan: Jumlah penumpang yang diprediksi dari Februari 2025 hingga Desember 2029.
  • Interval Keyakinan: Daerah yang diarsir di sekitar nilai ramalan, yang menunjukkan rentang di mana model mengharapkan nilai aktual turun (misalnya, interval keyakinan 80% atau 95%).


Wawasan Utama dari Plot Ramalan:

  • Kontinuitas: Ramalan harus selaras dengan tren historis. Jika terdapat penyimpangan tajam antara data historis dan prakiraan, hal tersebut dapat mengindikasikan adanya masalah pada model atau asumsi.
  • Ketidakpastian: Interval keyakinan yang lebih lebar menunjukkan ketidakpastian yang lebih tinggi dalam prediksi, terutama saat kita bergerak lebih jauh ke masa depan.
  • Pola Pertumbuhan: Jika prakiraan menunjukkan pertumbuhan, penurunan, atau stabilisasi yang stabil, hal tersebut mencerminkan tren yang mendasari dalam data.


Contoh Interpretasi:


  • Jika prakiraan memprediksi peningkatan yang stabil dalam jumlah penumpang Jabodetabek, hal ini dapat mengindikasikan permintaan yang meningkat karena urbanisasi, peningkatan infrastruktur, atau peningkatan ketergantungan pada transportasi umum.
  • Jika interval keyakinan melebar secara signifikan setelah tahun 2027, hal tersebut menunjukkan bahwa prediksi jangka panjang kurang dapat diandalkan karena potensi faktor eksternal (misalnya, perubahan ekonomi, pergeseran kebijakan).


2. Komponen Tren

Komponen tren menunjukkan pergerakan jangka panjang dalam data, tidak termasuk fluktuasi musiman. Prophet secara otomatis menguraikan deret waktu menjadi tren dan musiman.

Fitur Utama Tren:

Pola Pertumbuhan:

  • Pertumbuhan Linier: Tren garis lurus menunjukkan pertumbuhan atau penurunan yang konsisten dari waktu ke waktu.
  • Pertumbuhan Logistik: Tren yang jenuh (misalnya, mendatar) menunjukkan bahwa jumlah penumpang mungkin mendekati kapasitas maksimum.
  • Titik Perubahan: Pergeseran tiba-tiba pada garis tren menunjukkan peristiwa penting (misalnya, perubahan kebijakan, pandemi, atau peningkatan infrastruktur).

Dampak Titik Perubahan:

  • Prophet mengidentifikasi titik perubahan saat tren berubah arah. Misalnya, selama pandemi COVID-19, Anda mungkin melihat penurunan tajam dalam tren, diikuti oleh pemulihan.
  • Anda dapat menyesuaikan parameter changepoint_prior_scale untuk mengontrol seberapa sensitif model terhadap perubahan mendadak.

Contoh Interpretasi:


  • Jika tren menunjukkan kemiringan ke atas yang stabil, itu menunjukkan bahwa jumlah penumpang Jabodetabek telah tumbuh secara konsisten selama bertahun-tahun.
  • Jika ada tren yang mendatar setelah tahun 2023, itu dapat menunjukkan bahwa jumlah penumpang mulai stabil, mungkin karena jenuhnya pasar atau perluasan infrastruktur yang terbatas.


3. Musiman Tahunan / Yearly

Musiman tahunan menangkap pola berulang yang terjadi dalam satu tahun. Misalnya, jumlah penumpang mungkin melonjak selama musim liburan (misalnya, Lebaran, Natal) dan turun selama bulan-bulan lainnya.


Fitur Utama Musiman Tahunan:

Puncak dan Palung:

  • Puncak dalam plot musiman tahunan menunjukkan bulan-bulan dengan jumlah penumpang yang lebih tinggi dari rata-rata.
  • Palung mewakili bulan-bulan dengan jumlah penumpang yang lebih rendah dari rata-rata.
  • Amplitudo: Besarnya puncak dan palung mencerminkan kekuatan efek musiman. Amplitudo yang lebih besar menunjukkan musiman yang lebih jelas.
  • Konsistensi: Jika musiman tahunan tetap stabil dari waktu ke waktu, itu menunjukkan pola yang dapat diprediksi. Jika berubah, itu dapat menunjukkan perilaku yang berkembang (misalnya, perubahan kebiasaan bepergian).


Contoh Interpretasi:

Jika musiman tahunan menunjukkan puncak pada bulan Juni dan Desember, itu mungkin sesuai dengan periode perjalanan liburan seperti Lebaran (Juni) dan Natal/Tahun Baru (Desember). Jika amplitudo meningkat seiring waktu, hal ini menunjukkan bahwa efek musiman menjadi lebih jelas, mungkin karena meningkatnya pariwisata atau pola migrasi.


4. Menggabungkan Wawasan

Dengan menganalisis plot perkiraan, tren, dan musim tahunan secara bersamaan, Anda dapat mengembangkan pemahaman yang komprehensif tentang data penumpang Jabodetabek:


Contoh Skenario:

  • Plot Perkiraan: Perkiraan memprediksi pertumbuhan yang stabil dalam jumlah penumpang dari tahun 2025 hingga 2029, dengan interval keyakinan sedikit melebar setelah tahun 2027.
  • Tren: Tren menunjukkan pertumbuhan ke atas yang konsisten, dengan sedikit mendatar setelah tahun 2023, yang menunjukkan potensi stabilisasi.
  • Musiman Tahunan: Musim tahunan menunjukkan lonjakan pada bulan Juni dan Desember, kemungkinan karena perjalanan liburan. Amplitudo lonjakan ini telah meningkat seiring waktu, yang menunjukkan efek musiman yang lebih kuat.


Kesimpulan:

  • Layanan kereta api Jabodetabek diperkirakan akan terus mengalami pertumbuhan permintaan penumpang, didorong oleh urbanisasi dan ketergantungan pada transportasi umum.
  • Pola musiman tetap kuat, dengan permintaan puncak selama periode liburan. Perencanaan infrastruktur harus memperhitungkan fluktuasi musiman ini untuk memastikan kelancaran operasi.
  • Prakiraan jangka panjang setelah tahun 2027 harus ditafsirkan dengan hati-hati karena meningkatnya ketidakpastian.


Mau mencoba data untuk sumatera seperti dibawah ini ? 






Selamat Belajar !


-Powered by QWEN AI-

Share:

0 komentar:

Posting Komentar

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (28) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gis (3) gsm (1) iklan (1) infrared (2) Input Output (3) iot (78) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (9) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) statistik (5) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) unesa (8) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (9)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika