Kemunculan regresi dengan NARX sangat menarik karena regresi dengan metode ini tidak hanya sekedar meramal berdasarkan data time series yang ada melainkan dengan menambahkan pula variabel lain yang dikenal dengan istilah exogenous. Variabel ini berfungsi untuk membantu mengarahkan peramalan agar sesuai dengan kondisi yang ada. Beberapa peneliti menyarankan untuk membatasi jumlah variabel eksogen tersebut karena jika terlalu dominan maka fungsi peramalan jadi berkurang. Berkurang di sini maksudnya bukan domain peramalan (forcasting) lagi melainkan prediksi seperti biasa. Buka GUI untuk proyeksi dengan mengetik ntstool di command window (jika tidak ada maka Matlab harus diupgrade ke yang lebih baru). Perhatikan penggunaan kurung kurawal, di sini digunakan format data cell.
-
>> X={100 90 80 70 60 50 40 30 20 10};
-
>> T={1 2 3 4 5 6 7 8 9 10};
Perhatikan dua data tersebut, yang atas data yang berkurang terus mengikuti waktu, sementara data yang bawah akan dijadikan data eksogen yang berkembang terus. Pilih problem yang paling atas di jendela ntstool yaitu NARX.
Perhatikan gambar di atas dimana di sini hasil keluaran yang ingin dicapai adalah y(t), sekaligus sebagai umpan balik untuk masukan. Sementara variabel exogenous adalah x(t). Jadi x(t) dan y(t) pada contoh kasus ini adalah berturut-turut X dan T. Masukan data input dan target tersebut ke jendela ntstool dan lanjutkan hingga proses pelatihan (train). Jangan lupa simpan hasil network-nya dengan menekan tombol Save Result. Untuk mengetahui kinerja hasil training, tekan tombol Test Network setelah memasukan X dan T. Kinerjanya dapat dilihat dengan menekan tombol Plot Response.
Karena d diisi dengan 2 maka dua data pertama dijadikan sebagai patokan untuk meramalkan data ke-3 sampai ke-10. Akibatnya pada grafik di atas data yang ditampilkan adalah delapan, karena yang dua pertama dijadikan sebagai patokan training.
Untuk memprediksi, seperti pada postingan yang terdahulu tentang narnet yang tanpa variabel eksogen, gunakan fungsi removedelay. Ys pada instruksi di bawah ini memunculkan data ke-11 hasil peramalannya.
-
>> nets = removedelay(net);
-
>> view(net)
-
>> [Xs,Xis,Ais,Ts] = preparets(nets,X,{},T);
-
>> Ys = nets(Xs,Xis,Ais);
Dari perhitungan di komputer saya menunjukan 10.993. Jika ingin mem-plot hasilnya jangan lupa dikonversi kembali data dengan format cell menjadi numerik dengan instruksi cell2mat.
-
Ys =
-
Columns 1 through 7
-
[3.0007] [4.0004] [5.0001] [6.0000] [7.0000] [7.9999] [8.9999]
-
Columns 8 through 9
-
[9.9906] [10.9330]
Bagaimana untuk data ke-12? Gunakan saja teknik yang sama untuk memperoleh data ke-11. Latih data ke-1 hingga ke-11 (data baru), untuk memprediksi data ke-12.