Mendapatkan pola periodik dari data deret waktu (time series)
Memanfaatkan Fast Fourier Transform (FFT) untuk memperoleh insight faktor pembentuk cuaca
Mendapatkan pola periodik dari data deret waktu (time series)
Memanfaatkan Fast Fourier Transform (FFT) untuk memperoleh insight faktor pembentuk cuaca
Dalam konsep ilmu kebumian, cuaca yang terjadi saat ini merupakan hasil dari proses interaksi berbagai kondisi atmosfer yang terjadi pada waktu sebelumnya. Sebagai contoh cuaca hari ini (t+0), merupakan hasil proses interaksi berbagai faktor cuaca pada hari kemarin (t-1). Demikian juga dengan kondisi cuaca pada hari kemarin, adalah hasil percampuran dari interaksi berbagai kondisi cuaca yang terjadi pada hari kemarin lusa (t-2), demikian seterusnya kebelakang. Dalam data deret waktu, semua data kondisi cuaca tersebut tersusun berderet sesuai urutan waktu kejadian (t-3, t-4, t-5, …, ~).
Belum menjadi anggota Medium? Anda dapat lanjut membaca versi gratis tulisan ini melalui tautan berikut.
Itu tadi adalah ilustrasi dalam skala harian (satuan terkecilnya hari). Analogi yang sama, juga berlaku untuk data bulanan, tahunan atau skala waktu lainnya, baik yang lebih panjang maupun lebih pendek. Sebenarnya data deret waktu seperti ini tidak hanya terkait dengan cuaca atau iklim, namun juga berlaku umum untuk semua bidang ilmu.
Dalam bidang cuaca, tidak hanya soal waktu, faktor ruang-pun juga turut membentuk cuaca dan iklim. Cuaca di Jakarta merupakan hasil interaksi kondisi atmosfer di wilayah Jakarta dan sekitarnya. Bahkan kondisi atmosfer dan lautan di samudera Pasifik nun jauh di timur Indonesia pun, turut memberikan kontribusi terhadap kondisi iklim di Indonesia secara umum dan Jakarta secara khusus.
Fast Fourier Transform (FFT)
Dalam mengolah data deret waktu, seringkali kita menampilkan data dalam bentuk gelombang. Hal ini dikarenakan data deret waktu biasanya menyimpan insight, berupa pola periodik yang berulang dan tren, dimana akan dengan mudah kita pahami jika disajikan dalam bentuk ilustrasi gelombang.
Secara teori, sebuah sinyal gelombang dapat terbentuk dari superposisi (penjumlahan) berbagai gelombang penyusun yang mempunyai periode berbeda. Gelombang penyusun itu dapat kita peroleh dengan cara diurai (dekomposisi) dari gelombang awalnya.
Terdapat metode yang dapat digunakan untuk mendekomposisi frekuensi-frekuensi periodik dari sebuah data deret waktu, salah satu yang populer adalah transformasi Fourier. Dalam bidang terapan, terdapat teknik yang dapat menghitung transformasi Fourier diskrit dengan cepat dan efisisien, yang dikenal dengan nama Fast Fourier Transform (FFT).

Ilustrasi sederhana bagaimana sebuah sinyal gelombang diurai menjadi beberapa gelombang berdasarkan frekuensi penyusunnya, menggunakan FFT. (Sumber gambar: Penulis).
Contoh implementasi FFT dapat kita lihat pada kode Python dibawah ini.
import numpy as np
import matplotlib.pyplot as plt
# [.] Gelombang penyusun
f1 = 100 #frequency asli 1
f2 = 200 #frequency asli 2
f3 = 300 #frequency asli 3
f4 = 400 #frequency asli 4
N = 1000
T = 1.0/1000
t = np.linspace(0,1000,1000)
y1 = np.sin(f1*2*np.pi*t)
y2 = np.cos(f2*2*np.pi*t)
y3 = np.sin(f3*2*np.pi*t)
y4 = np.cos(f4*2*np.pi*t)
# [.] Menggabungkan gelombang penyusun menjadi sebuah sinyal gelombang baru
y = 1*(np.cos(f1*2*np.pi*t)+np.cos(f2*2*np.pi*t)+np.sin(f3*2*np.pi*t)+np.sin(f4*2*np.pi*t))
# [.] FFT
n = int(N/2)
yf = np.fft.fft(y)
xf = np.linspace(0, n, n)
# [.] Ploting
# Sinyal asli dan hasil ekstrak frekuensi utama
plt.figure(figsize= (6,10))
plt.subplot(211)
plt.plot(t,y)
plt.title('GELOMBANG ASLI')
plt.xlabel('Waktu')
plt.subplot(212)
plt.plot(xf,2.0/N * np.abs(yf[:N//2]))
plt.title('FREKUENSI GELOMBANG PENYUSUN')
plt.xlabel('Frekuensi')
# Sinyak komponen penyusun
plt.figure(figsize= (10,7))
plt.subplot(221)
plt.plot(t[0:100],y1[0:100])
plt.title('Komponen 1')
plt.subplot(222)
plt.plot(t[0:100],y2[0:100])
plt.title('Komponen 2')
plt.subplot(223)
plt.plot(t[0:100],y3[0:100])
plt.title('Komponen 3')
plt.subplot(224)
plt.plot(t[0:100],y4[0:100])
plt.title('Komponen 4')
plt.show()
Pemanfaatan FFT dalam bidang cuaca & iklim
Konsep mengekstrak sinyal gelombang ini dapat juga dapat dimanfaatkan dalam bidang ilmu cuaca dan iklim untuk menggali informasi mengenai faktor utama yang mempengaruhi cuaca suatu lokasi, berdasarkan periode gelombangnya.
Seperti yang sudah disampaikan diawal, bahwa cuaca pada dasarnya adalah hasil interaksi berbagai faktor cuaca, oleh karena itu dengan melakukan dekomposisi sinyal gelombang data cuaca (data cuaca yang disusun mengikuti deret waktu), harapannya kita akan mendapatkan sinyal-sinyal gelombang periodik pembentuknya, di mana sinyal gelombang periodik tersebut nantinya dapat kita asosiasikan sebagai sinyal faktor pembentuk cuaca.
Wah, kok bisa mengasosiasikan sebuah sinyal gelombang dengan sebuah faktor cuaca atau iklim? Emang bisa dan boleh? Bagaimana caranya?
He..he.. ya bisa aja dan boleh-boleh aja.
Dengan pemahaman ilmu cuaca yang kita miliki, kita akan dapat mengenali sebuah faktor cuaca dari periode waktu terjadinya. Sebagai contoh, jika saat dekomposisi data cuaca, kita mendapati adanya sinyal gelombang penyusun dengan periode satu tahun, patut diduga sinyal gelombang tersebut adalah sinyal musim. Sebenarnya tidak hanya musim, bisa saja segala hal yang mempunyai periode satu tahun yang ada kaitannya dengan pembentukan cuaca atau iklim, dapat kita nisbatkan sebagai representatif dari sinyal tersebut, misalnya saja siklus evolusi bumi mengitari matahari. Sekali lagi, pemahaman kita akan ilmu cuaca dan iklim akan sangat membantu kita dalam mengidentifikasi sekaligus menginterpretasi makna fisis dari sebuah sinyal gelombang hasil ekstraksi.
Untuk lebih memberikan pemahaman dan pengalaman yang nyata, saya sertakan contoh implementasinya dalam kode Python dibawah. Kali ini saya mencoba memanfaatkan FFT untuk mendapatkan informasi pola utama apa saja yang turut mempengaruhi curah hujan di kota Makassar. Data yang saya gunakan adalah data curah hujan bulanan dari tahun 2011 hingga 2021.
import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# [.] Load data
DIR = os.path.expanduser('/Users/andhika/Downloads/')
PATH = os.path.join(DIR,'rr_97182_v3.xls')
dataHujan = pd.read_excel(PATH)
hujan = dataHujan.Hujan.values
# [.] FFT
N = len(hujan)
t = np.arange(0,N,1)
X1 = np.fft.fft(hujan)
n = np.arange(0,len(X1),1)
# Ploting
plt.figure(figsize= (12,4))
plt.subplot(121)
plt.stem(t,hujan, 'r', markerfmt=" ", basefmt="-r")
plt.xlabel('Waktu (deret bulan)')
plt.ylabel('Curah Hujan (mm)')
plt.subplot(122)
plt.stem(n, np.abs(X1), 'b', markerfmt=" ", basefmt="-b")
plt.xlabel('Frekuensi (1/bulan)')
plt.ylabel('FFT')
plt.xlim(0, len(X1)/2)
plt.ylim(0, 30000)
plt.show()
Hasilnya adalah seperti gambar dibawah.

Kiri adalah plot deret waktu dari data curah hujan bulanan periode tahun 2011 s/d 2021. Data tersebut diekstrak sehingga diperoleh frekuensi-frekuensi gelombang penyusun utamanya seperti disebelah kanan. Sumber: Penulis
Terlihat bahwa, nilai frekuensi terbesar berada pada satu tahunan (periode 11 bulan) dan dua tahunan (periode 22 bulan). Artinya curah hujan di wilayah Makassar sangat dipengaruhi oleh musim. Selain itu, tidak banyak informasi yang diperoleh dari hasil FFT diatas, saya menduga hal ini dikarenakan data yang saya gunakan hanya 10 tahun dengan satuan terkecil data bulanan, menjadikan kita tidak dapat menangkap pola-pola utama yang lebih dari 10 tahunan (dekade).
Kode Python dalam tulisan ini adalah versi yang paling sederhana, dengan tujuan sekedar memberi pengantar pemahaman saja, pada prakteknya nanti dapat dilanjutkan dengan cara yang lebih kompleks sesuai dengan kebutuhan serta output yang diharapkan. Contoh penggunaan FFT menggunakan modul lain juga terdapat pada blognya mas Syahril, saya juga belajar dari blog beliau.
Senang mendapati anda membaca tulisan ini hingga akhir. Dukungan dari anda akan memberi semangat dan menambah ide-ide kreatif saya dalam menulis. Silahkan beri dukungan dengan klik ikon tepukan 👏 sebanyak-banyaknya dibawah tulisan ini.
Jika anda merasa tulisan ini bermanfaat, jangan lupa silahkan follow akun saya. 😊 Terima kasih atas dukungannya.
메타데이터
- post_id
- 0adb7ba7cceb
- slug
- mendapatkan-pola-periodik-dari-data-deret-waktu-time-series-0adb7ba7cceb
- url
- https://medium.com/naraiklim/mendapatkan-pola-periodik-dari-data-deret-waktu-time-series-0adb7ba7cceb
- canonical_url
- https://medium.com/naraiklim/mendapatkan-pola-periodik-dari-data-deret-waktu-time-series-0adb7ba7cceb
- author_url
- https://medium.com/@andhikaher
- status
- ok
- fetched_at
- 2026-06-10 15:53:41