Proyeksi beberapa Time-series Secara Bersamaan

Postingan terdahulu membahas proyeksi data time-series yang berjumlah hanya satu. Jika data time-series tersebut banyak, apakah satu narxnet mampu menangani data yang lebih dari satu? Berikut ini akan kita coba. Buka Matlab dan tambahkan dua data serial yang mudah saja (minimal sepuluh buah). Data eksogennya adalah variable X, dari 11 sampai 20.

  • T=[1:10];
  • t=T*3; %contoh time-series kedua (kelipatan 3 dari T)
  • T=[T;t];
  • T=con2seq(T);
  • X=[11:20]; %variabel eksogen
  • X=con2seq(X); %variabel eksogen

Ada dua time-series satu hingga 10 sedangkan yang kedua kelipatan tiganya. Kita coba buat JST untuk dua data tersebut. T adalah gabungan dua time-series. Gunakan script berikut untuk merakit narxnet.

  • net = narxnet(1:2,1:2,10);
  • [x,xi,ai,t] = preparets(net,X,{},T);
  • net = train(net,x,t,xi,ai);

Tunggu sesaat hingga narxnet selesai melakukan pelatihan (training). Lanjutkan dengan kode berikut jika sudah selesai.

  • nets = removedelay(net);
  • [xs,xis,ais,ts] = preparets(nets,X,{},T);
  • ys = nets(xs,xis,ais);
  • cell2mat(ys)

ans =

  • 3.0000 4.0000 5.0977 6.0064 7.0000 8.0000 9.0000 10.0000 11.1804
  • 9.0000 12.0000 15.7688 18.9107 21.0000 24.0000 27.0000 30.0000 32.6386

Jika dilihat hasilnya yang berwarna merah, tampak mendekati seharusnya yaitu 11 dan 33. Tigapuluh tiga di sini dari perkalian 3×11. Untuk multistep beberapa data ke depan sudah dibahas pada postingan sebelumnya. Apakah dengan GUI juga bisa? Kita coba, masuk ke ntstool.

Teruskan hingga selesai, dan jangan lupa menyimpan network yang dihasilkan, misalnya net1 (karena net sudah dibuat ketika mentraining non-GUI sebelumnya. Pastikan training berjalan dengan baik dan akurat.

Masukan kode berikut, seperti kode sebelumnya hanya saja “net” diganti dengan “net1” yang baru saja dibuat dengan GUI.

  • nets = removedelay(net1);
  • [xs,xis,ais,ts] = preparets(nets,X,{},T);
  • ys = nets(xs,xis,ais);
  • cell2mat(ys)

ans =

  • 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0002 10.0000 10.9972
  • 9.0000 12.0000 15.0000 18.0002 21.0000 24.0000 27.0008 30.0000 32.9884

Hasilnya adalah yang berwarna merah dan sepertinya tidak jauh berbeda dengan sebelumnya. selamat mencoba.

If – then – Else dalam Kehidupan

Ternyata banyak hal-hal menarik dari dunia ilmu komputer yang bisa dijadikan solusi terhadap masalah dalam kehidupan kita. Salah satunya adalah konsep if-then-else. Bagi yang sudah belajar pemrograman pasti memahami fungsi logika itu yang membuat komputer berbeda dengan alat hitung lainnya seperti kalkulator, sempoa, dan sejenisnya. Sedikit banyak postingan ini bermaksud menganalogikan fungsi dalam komputer tersebut dengan kehidupan manusia.

Sehebat apapun suatu aplikasi jika tidak memiliki if-then-else akan berhenti (hang) ketika tidak sanggup menghitung atau memproses suatu kondisi di luar kriteria. Tentu saja tidak akan ada yang tertarik dengan aplikasi tersebut. Dengan if-then-else, suatu alur proses akan diarahkan ke kondisi lain jika dijumpai kondisi yang tidak sanggup atau diluar spesifikasi yang ada. Dalam kehidupan juga sering kita jumpai orang-orang hebat yang gagal menghadapi if-then-else karena memaksakan diri dan enggan mengambil jalur lain. Berapa banyak perusahaan-perusahaan yang dahulu besar, kini hanya tinggal nama karena ketidaksanggupan menghadapi kondisi kritis yang membutuhkan if-then-else.

Kita mungkin bukan orang besar, atau bekerja di perusahaan besar tetapi jika sanggup menghadapi kondisi yang membutuhkan if-then-else, maka bisa jadi kita tidak hanya sekedar survive, malah bisa meningkatkan kinerja tempat kita bekerja, atau membantu pihak-pihak lain. Karena kita semua tidak mungkin hidup tanpa kondisi yang memerlukan peralihan, keluar dari jalur, mencari alternatif, dan ide-ide kreatif lainnya. Entah profesi kita sebagai pelajar, pegawai, dokter, dosen, atau yang lainnya pasti menghadapi kondisi yang membutuhkan if-then-else ini. Mungkin dengan kadar yang tidak terlalu beresiko, atau bisa saja tetap bertahan tetapi dengan kondisi yang agak dipaksakan. Jangan-jangan memang kita diminta menjawab if-then-else: harus beralih profesi, pindah ke tempat kerja yang baru yang bisa mengembangkan dan mengaktualisasi diri kita, atau hal-hal lain yang mengharuskan kita “berbelok”.

Kita sering menghadapi kondisi yang meminta kita memilih jalur lain di luar jalur yang semestinya. Jika merasa tidak pernah menjumpai hal itu, justru malah sangat berbahaya menurut saya. Mungkin Anda bisa sukses dan berhasil dengan mulus, tetapi belum teruji untuk kondisi tertentu. Dalam dunia teknik dikenal dengan istilah robust yang artinya tangguh. Tangguh dalam artian tetap berfungsi normal ketika menghadapi kondisi extreem yang diluar kondisi normal.

Terkadang sistem yang sederhana tetapi tangguh lebih bisa diandalkan karena dilengkapi dengan if-then-else yang dengan lentur menghadapi kondisi apapun: jika tidak bisa dengan ini, lakukan itu, jika tidak bisa juga, lakukan yang lainnya (else). Lebih baik kita jadi orang sederhana yang tangguh, daripada orang hebat yang menghadapi kasus tertentu langsung jatuh. Sebenarnya orang-orang besar yang kita kenal saat ini adalah orang-orang sederhana yang tangguh dan teruji (silahkan baca kembali kitab suci masing-masing). Boleh saja setuju dengan slogan Om Mario Teguh .. Super .. tetapi super yang tangguh (robust).

Peramalan Beberapa Data ke Depan dengan Multistep NARNET

Nonlinear Autoregressive Network (NARNET) merupakan metode peramalan dengan jaringan syaraf tiruan (JST). Untuk perakitannya Matlab menyediakan GUI melalui fungsi ntstool. Data minimal yang diperbolehkan untuk memprediksi sebanyak 10 buah. Untuk gampangnnya sebagai contoh data 1 sampai 10 seperti contoh-contoh sebelumnya. Lihat postingan tentang NARNET sebelumnya. Tanya-jawab seputar narnet masih hangat berlangsung di situs resmi Matlab ini.

>> T=1:10;

>> T=con2seq(T);

Gunakan tipe data sequence dengan fungsi con2seq. Latih dengan GUI hingga diperoleh performance yang bagus dengan seminim mungkin error (MSE) yang dihasilkan training. Contoh performa training dapat dilihat berikut:

Teruskan hingga diakhiri dengan menyimpan JST yang sudah dilatih dengan nama “net“. Buka editor, dan isi kode berikut ini dengan fungsi removedelay yang sudah dibahas pada postingan yg lalu, tetapi disini menggunakan kalang for-end untuk beberapa prediksi ke depan.

  • Told=T;
  • nets = removedelay(net);
  • result=[]
  • for i=1:10
  • [xs,xis,ais,ts] = preparets(nets,{},{},T);
  • ys = nets(xs,xis,ais);
  • T(1,end+1) = ys(1,end);
  • size(T)
  • T=T(2:end)
  • result=[result;ys(1,end)]
  • end
  • result=cell2mat(result)
  • figure
  • t=cell2mat(Told)
  • plot([t transpose(result)])

Namun hasilnya tampak kurang baik untuk data yang melebihi time series ke 12:

Sepertinya hanya dua prediksi ke depan yang akurat; memang time-series untuk peramalan membutuhkan data yang besar, sepuluh sepertinya tidak bisa diandalkan, apalagi hingga meramalkan seri ke-20. Mungkin men-training network dengan tambahan satu atau dua data baru hasil peramalan sebelumnya bisa jadi pilihan. Network tersebut kemudian digunakan untuk memprediksi satu atau dua data berikutnya. Kecuali mungkin untuk tipe narxnet dengan data exogenous mampu memprediksi lebih jauh ke depan.

Display Format for Numeric Value in Matlab

I have just interpolated a time-series data to fill the missing values in Matlab. The function interp1 did that task well, but I did not like the number format which was not in ordinary form. (See how to interpolate in Matlab)

Since I wanted to copy the result to Excel worksheet, the result format was difficult to capture. But Matlab provides the format function for converting a number format into another (see Matlab official site). To see the available format, come into Matlab help by typing help format in command window. Here is the format with the result samples:

1. Format SHORT (Scaled fixed point format with 5 digits)

2. Format LONG (Scaled fixed point format with 15 digits for double and 7 digits for single)


3. Format SHORTE (Floating point format with 5 digits)


4. Format LONGE (Floating point format with 15 digits for double and 7 digits for single)


5. Format SHORTG (Best of fixed or floating point format with 5 digits)


6. Format LONGG (Best of fixed or floating point format with 15 digits for double and 7 digits for single)


7. Format SHORTENG (Engineering format that has at least 5 digits and a power that is a multiple of three)


8. Format LONGENG (Engineering format that has exactly 16 significant digits and a power that is a multiple of three)


Hmm, I prefer to use no. 6, FORMAT LONGG, because it is easy to understand. However, the other might be better, it depends on your computation problem.

Interpolasi, Curve Fitting, Proyeksi dan Prediksi

Bagi mahasiswa jurusan statistik sepertinya tidak asing dengan istilah interpolasi, Curve Fitting, dan proyeksi. Bahkan materi ini telah dipelajari ketika duduk di bangku sekolah menengah. Tetapi karena jarang atau tidak pernah dipergunakan, terkadang kita lupa apa maksudnya. Begitu juga ketika harus mengolah data, saya harus melakukan pekerjaan-pekerjaan statistik tersebut.

Keempat istilah itu memiliki perbedaan, walaupun sama-sama tidak pasti. Tidak pasti di sini maksudnya adalah angka yang dihasilkan tidak seratus persen tepat. Bisa saja angka tersebut tidak sesuai dengan kenyataan yang ada. Statistik di sini bermaksud meminimalkan error yang dihasilkan dari interpolasi, curve fitting, prediksi dan proyeksi. Berikut ini adalah data statistik populasi kota Bekasi sebagai contoh yang diambil dari situs resmi kota Bekasi.

Interpolasi

Interpolasi adalah membuat suatu fungsi dari beberapa titik yang tersedia. Fungsinya bisa garis lurus, tetapi polynomial lebih baik hasilnya. Tabel pada gambar di atas dengan interpolasi dapat dibuat persamaan berdasarkan data dari tahun 2003 sampai 2015. Dari hasil interpolasi kita akan memperolah data tahun 2006 dan 2008 yang masih kosong. Silahkan lihat postingan terdahulu untuk melakukan interpolasi di Matlab.

Curve Fitting

Berbeda dengan interpolasi yang harus mengenai titik yang menjadi patokan interpolasi, pada kurve fitting kurva yang dibuat tidak harus mengenai titik acuan. Contoh dari situs ini sepertinya cukup jelas untuk membedakan interpolasi dan curve fitting.

Proyeksi (Projection)

Proyeksi sering disebut peramalan, atau prediksi terhadap data time-series. Syarat wajibnya adalah data yang bergerak sepanjang alur waktu dan menunjukan tren tertentu. Di matlab ada fungsi con2seq yang fungsinya adalah mengkonversi data bilangan ril menjadi bilangan berurutan (sequence) untuk digunakan dalam peramalan (tersedia juga GUI untuk peramalan, ntstool). Untuk menghasilkan peramalan yang tepat, makin banyak data time-series akurasinya makin baik. Lihat postingan sebelumnya untuk proyeksi (menggunakan jaringan syaraf tiruan – NARX).

Prediksi (Prediction)

Nah, mungkin yang agak membingungkan adalah prediksi. Sebenarnya peramalan juga merupakan prediksi, tetapi khusus data yang bertipe time-series. Sementara prediksi menggunakan beberapa variabel untuk memprediksi suatu hasil tertentu. Biasanya dengan dua jenis mekanisme yaitu dengan logika fuzzy (lihat postingan fuzzy) atau dengan pelatihan (training). Training bisa dengan ANFIS atau Jaringan Syaraf Tiruan (lihat postingan ANFIS, dan JST). Sebagai contoh lihat data berikut:

Data berwarna kuning disebut dengan data training dan di sebelah kanannya adalah target (untuk ANFIS di Matlab dijadikan satu antara data training dan target). Data berwarna abu-abu adalah data yang akan diuji untuk memprediksi hasilnya (kolom tanda tanya).

Semoga sedikit ada gambaran perbedaannya.

Konversi Format Desimal Titik ke Koma di Excel

Mudah-mudahan pembaca postingan ini memahami maksud dari judul di atas dan sesuai dengan kata kunci yang disearching di google hingga mampir ke blog ini. Maksud dari judul di atas adalah bagaimana mengkonversi format bilangan bertitik standar Indonesia menjadi koma agar bisa dimanipulasi di Excel. Masalah ini kadang menjengkelkan ketika mengkopi-paste data dari internet atau sumber lain, ketika dipindahkan ke Excel tidak bisa dimanipulasi (kali, bagi, tambah, dll) karena dianggap bukan bilangan. Gambar dibawah mengilustrasikan bagaimana angka hasil copas tidak bisa dimanipulasi (hasilnya dalam excel #VALUE!). Hal ini karena Indonesia memisahkan jutaan, ribuan, dan ratusan dengan titik, sementara desimal dengan koma. Agar bisa di manipulasi di Excel saya, jutaan, ribuan dan ratusa harus dipisah dengan koma, dan desimal dipisah dengan titik.

Cara penyelesaiannya mirip ketika kita memindahkan suatu tabel dari internet (agar terpisah menjadi kolom-kolom) yaitu dengan fungsi Text to Column yang berada di menu Data. Sorot terlebih dahulu cell yang akan dimanipulasi (2.127.902), lalu tekan

Pilih Fixed Width (jarang saya menggunakan ini, biasanya Delimited) dilanjutkan dengan menekan Next. Kemudian pada step 2 of 3 tekan Next sekali lagi.

Tekan Advanced.. pada step 3 of 3 untuk mengeset standar bilangan menjadi standar internasional.

Indonesia memecah antara jutaan, ribuan dan ratusan dengan titik sementara standar internasional dengan koma. Untuk mengikuti Excel yang sebelumnya berstandar internasional tukar titik dan koma.

Tekan OK lalu Finish dan jika dilihat pada worksheet, cell sudah bisa dimanipuasi (saya coba kalikan dua), tanda “#VALUE!” Sudah menjadi angka lagi. Sedikit banyak semoga bermanfaat.

Kata-kata Penghubung Penting Bahasa Inggris – “Signal Word”

Berbeda dengan bahasa Indonesia yang sederhana, bahasa Inggris memiliki kata penghubung yang spesifik dalam penerapannya. Dari situs yang bergerak dalam bidang penulisan ini, dicatat ada sekitar 40 frasa yang disebut “paling top (top-notch)”. Tetapi karena saya hanya menggunakan bahasa Inggris untuk tulisan-tulisan ilmiah yang singkat dan sederhana, saya hanya memerlukan frasa-frasa berikut ini. Silahkan kunjungi situs asalnya untuk memperoleh frasa/kata-kata lainnya. Gunakan kata-kata ini untuk diterapkan di dalam paragraf, lihat panduan komposisi kalimat pada postingan terdahulu.

Penjelasan Umum (general explaining). Untuk penjelasan umum saya lebih tertarik dengan kata “in order to” dan “In other words”. Yang pertama dalam bahasa kita berarti “untuk …” sementara yang kedua berarti “dengan kata lain”. Keduanya berbeda penggunaan, biasanya tulisan ilmiah banyak menggunakan “in order to” sementara “in other words” cenderung jarang karena seolah-olah menjelaskan dua kali. Tapi untuk speaking sering digunakan untuk memperjelas ide.

  • Example: “In order to understand X, we need first to understand Y.”

Menambah informasi tambahan. Frasa ini sangat penting karena untuk menghindari kalimat kompleks yang tidak disukai pembaca. Suatu informasi dipecah menjadi informasi utama dan tambahannya pada kalimat berikutnya. Yang sering dan mudah saya gunakan adalah “Moreover” dan “Furthermore”. Jika “moreover” berfungsi mendukung point penting, “furthermore” hanya memberi tambahan informasi. Semuanya diletakan di awal kalimat.

  • Example: “Moreover, the results of a recent piece of research provide compelling evidence in support of…”
  • Example: “Furthermore, there is evidence to suggest that…”

Mengekspresikan Ide yang Berlawanan. Untuk frasa ini idola saya hanya tiga yaitu “however”, “in the other hand”, dan “yet”. Untuk ketidaksetujuan terhadap statement yang baru saja diutarakan, “however” digunakan sementara “in the other hand” untuk interpretasi yang berlawanan terhadap suatu hal yang sama.

  • Example: “Scholar A thinks this. However, Scholar B reached a different conclusion.”
  • Example: “The historical evidence appears to suggest a clear-cut situation. On the other hand, the archaeological evidence presents a somewhat less straightforward picture of what happened that day.”

Memberi contoh/ilustrasi. Di sini hanya satu yang saya sering gunakan yaitu “for instance”. Tetapi kenapa “for example” tidak dicantumkan ya? Sementara “to give an ilustration” menurut saya untuk speaking oke lah, tetapi untuk tulisan kayaknya kepanjangan deh.

  • Example: “Some birds migrate to avoid harsher winter climates. Swallows, for instance, leave the UK in early winter and fly south…”

Menunjukan suatu hal yang penting. Kata yang terkenal adalah “significantly”, “notably”, dan “importantly”. Yang sering saya jumpai sepertinya “notably” dalam tulisan ilmiah. Ketiganya memiliki makna yang sama.

  • Example: “Actual figures are notably absent from Scholar A’s analysis.”

Menyimpulkan. Kata yang terkenal tentu saja “in conclusion” yang langsung memberi tahu pembaca bahwa berikutnya adalah akan dibahas kesimpulan. Ada frasa lain yang tidak dicantumkan dalam situs tersebut yaitu “in summary”, bisa juga sebagai alternatif supaya tidak monoton.

  • Example: “In conclusion, the evidence points almost exclusively to Argument A.”