Basic Ensemble Forecast: Motivasi Awal dan Simulasi Sederhananya


Sebelum lanjut lebih jauh, kita akan mencoba mendefinisikan dengan jelas apa yang dimaksud dengan ensemble forecast disini. Jadi, pada konteks ini ensemble forecast yang kita bahas disini ditekankan untuk ensemble forecast cuaca. Ensemble...kalau kita cari di google dengan hanya kata itu saja, kita akan mendapati bahwa definisi kata ini adalah 'memainkan music secara bersama-sama dan harmonis'. Sedangkan untuk forecasting tentu kita sudah sangat familiar khususnya bagi para meteorologist, artinya prakiraan. Jadi ensemble forecast disini mempunyai arti 'prakiraan yang dilakukan secara bersama-sama'. Dari hasil forecast yang bersama-sama ini tentu hasil prakiraannya beragam. Dari keberagaman inilah yang membuat output akhir dari ensemble forecasting ini menjadi unik. Alih-alih menyatakan suatu state sebagai prakiraan kedepannya, pada ensemble forecasting kita menyatakan beberapa state sebagai prakiraan kedepannya dengan masing-masing state dinyatakan berapa persen probabilitas state itu terjadi. Dari keunikan inilah, forecast jenis ini sering disebut juga sebagai probability forecast.

'Prakiraan yang dilakukan secara bersama-sama' ini terdiri dari 2, yaitu:
- Ensemble forecast dengan initial condition yang (sedikit) berbeda
- Ensemble forecast dengan pemodelan yang berbeda

Sebenarnya ada istilahnya singkatnya, tapi saya lupa :p .

Sebelum kita lebih jauh membahas ensemble forecasting ini, ada baiknya kita membahas salah satu background dari penggunaan probabilistic forecasting. Butterfly effect jawabannya, yang mempunyai quote terkenal yaitu 'kepakan sayap kupu-kupu di hutan belantara Brazil secara teori dapat menghasilkan tornado di Texas beberapa bulan kemudian'. Wew, yang bisa kita tangkap dari quote tersebut adalah usaha yang kecil bisa menyebabkan outcome yang besar secara teori. Perbedaan initial condition yang kecil bisa menghasilkan output yang beda jauh. Ini diakibatkan oleh proses dinamis di atmosfer yang non linear (chaos, tidak selamanya suhu yang dingin terjadi hujan, bisa saja cuaca lagi panas malah hujan dan ini sering). Selain itu kita juga tahu bahwa salah satu masalah terbesar dari modelling cuaca adalah initial condition. Inilah yang menjadi motivasi awal dari penggunaan ensemble forecast jenis pertama.

Proses yang non linear ini bisa kita modelkan dengan persamaan yang non linear untuk bisa memahami esensi dari butterfly effect ini. Anggaplah persamaan yang sederhana ini merupakan salah satu governing equation dalam modelling cuaca.


Kita masukan nilai awal (initial condition) kedalam persamaan di atas lalu hasil dari perhitungan tersebut kita masukan lagi ke persamaan tersebut dan proses ini diulangi terus menerus. Kita akan membandingkan 2 nilai awal yang nilainya hampir sama, yaitu:
init1 = 0.5
init2 = 0.5001
Kemudian berikut grafik dari perulangan yang kita lakukan


Lihat bagaimana pada awal-awal perulangan tren dan nilainya masih sangat berdekatan kemudian pada perulangan antara 10 sampai 20 tren dan nilainya menjadi sangat berbeda. Semakin banyak perulangannya semakin beda pola tren dan nilainya. Padahal 2 nilai awal yang kita simulasikan itu nilainya sangat berdekatan.

Ini masih persamaan yang sangat sederhana, bayangkan bagaiman kalau governing equation yang asli. Inilah mengapa forecast cuaca itu sangat sangat sulit apalagi di Indonesia yang relief permukaan buminya yang rumit (pulau yang sangat banyak dan lautan yang luas berkontribusi dalam pola cuaca) dan juga merupakan daerah yang mendapatkan sinar matahari yang full (u know, ketidakstabilan atmosfer a.k.a proses chaos atmosfer disebabkan oleh pemanasan ini).

Dari teori ini, kita dapatkan bahwa forecast yang deterministik (hanya menyatakan 1 state kedepannya) kurang baik karena kita juga masih terkendala dengan initial condition. Untuk mengakali initial condition tersebut, kita buat probabilitas atas state-state yang mungkin terjadi kedepannya. Sehingga menggunakan probability forecasting adalah option yang lebih baik. Ngomong-ngomong kalau ada yang bingung itu buatnya gimana, source codenya ada dibawah ini

 #!/usr/bin/python  
 from mpl_toolkits.basemap import Basemap  
 from matplotlib import colors  
 from scipy import misc  
 import glob  
 import numpy as np  
 import csv  
 import matplotlib.pyplot as plt  
 import time  
 #setting  
 iterasi = 50  
 initcond1 = 0.5  
 initcond2 = 0.5001  
 def chaoscal(inp):  
      return inp**2.0 - 2  
 val1 = np.zeros(iterasi)  
 val2 = np.zeros(iterasi)  
 val1[0] = initcond1  
 val2[0] = initcond2  
 for i in xrange(iterasi-1):  
      val1[i+1] = chaoscal(val1[i])  
      val2[i+1] = chaoscal(val2[i])  
 #print 'initial condition pertama', initcond1  
 #print 'initial condition kedua', initcond2  
 plt.plot(val1, label='init1')  
 plt.plot(val2, label='init2')  
 plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=2, mode="expand", borderaxespad=0.)  
 plt.show()  

Esensinya khususnya untuk ensemble forecast jenis pertama, kita ingin mencari terlebih dahulu spread nilai forecast dari nilai 'sekitar' initial value yang ingin kita masukkan, barulah setelah itu dari penyebaran nilai output kita dapatkan probabilitas semua state yang ingin kita cari. Untuk mendapatkan probabilitas, pertama kita harus tentukan range suhu berapa saja yang ingin dicari probabilitasnya, misal
20 - 21
21 - 22
22 - 23
dst
Lalu untuk setiap hasil output dari 1 initial value masuk dalam range suhu yang sudah di definisikan, ktia dapatkan 1 frekuensi. Lalu, frekuensi dari masing-masing range suhu yang sudah di definisikan dibagi total frekuensi untuk semua range suhu tadi dan di dapatkan probabilitas (1 sebagai nilai tertinggi adalah 100%).

Sebagai simulasi, anggap persamaan yang tadi kita gunakan untuk plotting sebagai governing equation untuk forecasting suhu. Karena hasil persamaan ini punya range [-1 1], for the sake of forecasting suhu, kita anggap hasil dari persamaan ini adalah nilai normalisasi suhu. Reminder, rumus normalisasi yang dimaksud di sini adalah


norm mengacu ke normal dan std mengacu ke standar deviasi. Jadi, untuk mencari nilai X (suhu) kita tinggal membalik rumus ini menjadi


Rata-rata yang kita tetapkan di simulasi ini adalah 25 dengan standar deviasi 5. Contoh source code yang kita pakai bisa di download di sini.

Hmm, kalau di plot banyak data seperti ini yang awalnya chaos ternyata punya pola juga yah? Mungkin ini yang dimaksud dengan pola dalam kekacauan? Attractor?


Dalam 100 initial value, hasilnya adalah
20 - 21 -> 33
21 - 22 -> 6
22 - 23 -> 6
23 - 24 -> 6
24 - 25 -> 6
25 - 26 -> 4
26 - 27 -> 4
27 - 28 -> 6
28 - 29 -> 10
29 - 30 -> 18
Terlihat probabiliti paling besar ada pada rentang 20 - 21 derajat celcius, akan tetapi hanya 33%. Yah, tapi esensi dari simulasi di atas adalah bagaimana kita mendapatkan nilai probabilitas. Oh iya, disini kebetulan total frekuensi ada 100, jadi untuk mencari persenannya enak :p .

Kenapa harus pakai range buat dapat probabilitas? Kenapa kita tidak bisa langsung menanyakan saja misal probabilitas suhu kedepannya 25 derajat celcius itu berapa? Karena besar probabilitas adalah besarnya luasan di bawah kurva Probability Density Function (PDF).


jika kita hanya mengambil nilai tunggal, maka berarti lebar X = hampir mendekati 0 yang berarti juga probabilitasnya hampir mendekati 0. Yup, basic dari mencari probabilitas yang baru saja kita simulasikan itu dari sini. Tapi kita tidak akan membahas itu karena terlalu mendokusai. Silahkan googling sendiri.

Yah, mungkin itu saja yang bisa kita bahas saat ini. Metode ensemble forecasting yang dipakai di real life tidak sesederhana ini. Kita juga belum membahas tipe ensemble forecast yang kedua yang modelnya berbeda karena keterbatasan alat dan lagi-lagi terlalu mendokusai. Esensinya sama hanya saja, untuk kasus itu initial valuenya sama tapi pemodelan yang dipakai berbeda lalu nlai output yang berbeda-beda tiap model itu kita 'tangkap' ke masing-masing range nilai parameter cuaca yang sudah kita desain. Ini hanya simulasi sederhana agar kita bisa mendapatkan insight tentang makhluk/benda maca apa sih ensemble forecasting itu? Sekian.

referensi:
https://www.tes.com/teaching-resource/probability-density-functions-introduction-6202213, di akses pada 21 Juli 2017
https://id.wikipedia.org/wiki/Efek_kupu-kupu, di akses pada 22 Juli 2017
https://www.ecmwf.int/en/introduction-chaos-predictability-and-ensemble-forecasts-0, di akses pada 23 Juli 2017
https://onlinecourses.science.psu.edu/stat414/node/97, di akses pada 24 Juli 2017

Komentar