Menghitung Mean Absolute Percent Error (MAPE) dengan MATLAB

Bagi yang berkecimpung dengan dunia peramalan (forecast) pasti akan menjumpai besaran Mean Absolute Percent Error (MAPE). Besaran ini bermaksud mengukur keakuratan hasil peramalan. Sesuai dengan namanya, MAPE memiliki satuan persentase (pecahan). Kata “mean” sendiri digunakan ketika ada banyak data yang akan dibandingkan dengan data realnya. Rumusnya adalah sebagai berikut:

Dari rumus di atas, jika Actual sama dengan Forecast maka MAPE berharga nol, yang artinya sangat akurat. Perhatikan contoh berikut ini.

Ada empat bulan ramalan, dengan tiap bulan memiliki error. Totalnya dengan rumus MAPE di atas diperoleh 17,6%. Untuk memudahkan perhitungan terkadang diperlukan aplikasi, misalnya Matlab. Error sendiri dihitung dengan fungsi berikut.

  • errors = gsubtract(Actual,Forecast)
  • errors = gsubtract(112.3,124.7)
  • errors =
  • -12.4000

Sayangnya untuk MATLAB 2008b fungsi gsubtract tidak ada (gunakan versi terkini, 2013 ke atas). Jadi diperoleh percent error, misal untuk bulan pertama, sebesar:

  • absolutePercentError=abs(errors)/112.3
  • absolutePercentError =
  • 0.1104

Seperti terlihat pada tabel di atas (11.0%). Untuk menghitung MAPE dapat menggunakan fungsi mean untuk mencari rata-rata.

  • errors = gsubtract(actual,forecast)
  • errors =
  • -12.4000 4.7000 32.3000 38.9000
  • mape = mean(abs(errors./actual))
  • mape =
  • 0.1755

Untuk menggunakan metode NARXNET dalam meramal data yang akan datang silahkan buka postingan yang lalu. Sekian, semoga bermanfaat dan karena hari ini hari raya idul fitri, saya mengucapkan “MINAL AIDIN WALFAIDZIN, mohon maaf lahir batin”.

Referensi:

Link: https://www.forecastpro.com/Trends/forecasting101August2011.html

Iklan

Scopus vs Thomson – Mana yg Lebih Baik?

Ketika berbicara mengenai pengindeks internasional, tidak akan lepas dari dua nama pengindeks yaitu Scopus dan Thomson. Keduanya merupakan pengindeks terbaik di dunia. Thomson, yang dikenal dengan Web of Science (WoS) sudah lama muncul, tetapi Scopus mulai menarik minat para peniliti dunia sejak kemunculannya di tahun 2004. Postingan ini muncul karena grup WA ada yang share berita bahwa jurnal tidak harus terindeks Scopus, via media indonesia online link berikut.

Disebutkan bahwa ada alternatif pengindeks lain selain Scopus, yaitu JJ Thomson dan Copernicus. Saya sedikit tersenyum karena Thomson justru menurut saya lebih sulit dimasuki. Ibarat minta keringanan malah dikasih yang lebih berat. Mungkin Copernicus lebih mudah, tetapi banyak terindikasi jurnal-jurnal predator di dalamnya, info dari wikipedia ini. Mungkin paper berikut bisa menjelaskan perbandingan antara Scopus dengan Thomson. Unik juga ada paper yang membahas pengindeksnya, ibarat menulis tentang baik buruknya WordPress lewat postingan di WordPress. Mana yang lebih baik? Scopus atau Thomson, Yuk .. dibaca.

Menulis Artikel Ilmiah atau Menulis Buku?

Kalau kita perhatikan dunia pendidikan tinggi di lingkungan kampus kita masing-masing, akan tampak dosen yang pakar dengan bidang tertentu seperti mengelola jaringan, membuat web, atau aplikasi lainnya. Tetapi mereka minim sekali mempublikasikan artikel ilmiah (yang bukan buku). Mengapa bisa terjadi? Postingan ringan kali ini hanya analisa singkat mengenai fenomena ini.

Buku & Kepakaran

Dari taman kanak-kanak kita sudah mengenal buku. Dari yang berisi informasi hingga panduan mengerjakan sesuatu. Buku biasanya berisi ilmu-ilmu yang sudah established atau sudah fix, hampir tidak ada perdebatan besar mengenai kontennya. Pengarang dalam menulis buku mengandalkan kepakaran dan pengalamannya. Namun tentu saja tanpa sesuatu hal baru, penulis buku tidak bisa menulis suatu artikel ilmiah di jurnal atau seminar-seminar. Coba saja menulis artikel yang isinya pembahasan materi dari buku, sudah dipastikan akan ditolak oleh pengelola jurnal. Kecuali kalau memang jurnal itu kekurangan tulisan, tentu saja dengan modifikasi di sana sini.

Jurnal ilmiah

Jika buku biasanya ilmu-ilmu yang sudah baku berasal dari puluhan tahun lalu, jurnal berisi temuan-temuan baru kurang dari sepuluhan tahun. Bahkan artikel yang baru terbitpun sesungguhnya diteliti sekitar satu hingga tiga tahun, tergantung berapa lama proses revisinya. Bahkan ada naskah yang proses revisi hingga sembilan tahun.

Aktif Menulis Buku & Artikel Ilmiah

Jadi apakah penulis buku yang kebanyakan pakar berpengalaman tidak bisa menulis artikel ilmiah di jurnal dan sebaliknya penulis aktif di jurnal kesulitan menulis buku? Menurut saya baik menulis buku maupun jurnal bisa oleh penulis yang sama. Sedikit penjelasannya adalah berikut ini.

Ambilah contoh seorang pakar menggali sumur pantek di perumahan. Dia memiliki segudang pengalaman dalam membuat sumur itu. Tentu saja dia bisa membuat buku mengenai tatacara menggali dan menemukan lokasi sumurnya. Tetapi untuk menghasilkan suatu artikel ilmiah dia harus menemukan hal-hal baru ketika melakukan aktivitas menggalinya. Ditambah dia harus aktif mengikuti perkembangan terbaru masalah gali menggali. Jika dia hanya fokus ke menggali sumur, beres, menerima bayaran, dia tidak akan bisa menemukan hal-hal baru dan menulisnya dalam suatu artikel ilmiah. Begitu juga dengan seorang dosen, misalnya mengajar jaringan komputer. Jika dia hanya berfokus mengajar “crimping”, setting IP, dan sejenisnya saja, atau sekedar menjalankan tugas me-maintain jaringan di institusinya, tentu saja tidak bisa dihasilkan suatu artikel ilmiah tanpa hal-hal baru dan mengikut perkembangan jaringan komputer terkini lewat jurnal-jurnal.

Terus terang ketika studi, saya mendapati rekan-rekan yang jago di mata kuliah tertentu, tetapi ketika riset mengalami kesulitan dan terhambat lulusnya, apalagi doktoral mengharuskan adanya publikasi di jurnal internasional. Sebenarnya perlu adanya sikap ingin tahu yang lebih, disertai ketidakpuasan mengenai metode-metode yang saat ini ada, agar diperoleh “gap” antara ilmu terkini dengan masalah yang dijumpai. Research Question yang ditemukan merupakan obor yang memicu seorang untuk meneliti. Oiya, untuk yang sedang riset disertasi, jangan harap bisa menemukan jawaban langsung dari internet, buku, atau bahkan bertanya ke supervisor karena memang masalah tersebut belum terselesaikan dengan tuntas, bahkan belum ada jawabannya. Selamat menemukan hal-hal baru.

Penggunaan Bilangan Random Matlab dalam Aplikasi Permainan “Ular Tangga”

Bilangan random menggunakan fungsi rand pada Matlab. Fungsi yang membangkitkan sembarang bilangan dengan jangkauan nol hingga satu (pecahan) banyak diterapkan, salah satunya dalam optimisasi menggunakan algoritma genetika (GA).

Menghasilkan Output yang Tidak bisa Diprediksi

Kehidupan sehari-hari memang tidak bisa diprediksi, sehingga aplikasi permainan pun selayaknya mampu mensimulasikan kehidupan sehari-hari. Misalnya dalam game sepakbola, walaupun akurasi C. Ronaldo tinggi, tetapi karena adanya faktor ketidakpastian, maka belum tentu ketika pinalti selalu menghasilkan gol. Justru kalau gol terus, game tersebut tidak menyerupai aslinya. Sebagai contoh dalam postingan ini adalah permainan ular tangga sederhana.

Misal dua dadu dilempar beberapa kali dan harapannya tepat di titik finish (bernilai 10). Jika terlewat maka dihitung kekiri lebihannya. Mudah saja, kode berikut menggambarkan algoritmanya.

  • clc
  • sisa = 10;
  • step=0
  • history=[0 0 0 ];
  • while sisa ~= 0
    • random=2+floor(rand*10)
    • if sisa >= random
    • sisanew=sisa-random;
    • else
      • sisanew=abs(sisa-random);
    • end
    • sisa=sisanew
    • pause
    • clc
    • step=step+1
    • posisi=10-sisa
    • history=[history;[step random posisi]]
  • end
  • msgbox(‘FINISH’)

Fungsi di atas berisi pembangkitan bilangan random, melangkah dan mendeteksi apakah sudah mencapai FINISH. Offset “2” pada variabel random karena dua dadu minimal berharga “2”. Perulangan diterapkan dengan menggunakan instruksi while apakah sudah tepat di posisi 10. Berikut hasil runningnya:

Kolom tengah adalah bilangan random dan kolom ketiga menunjukan posisi terkini. Di akhir baris, yaitu lemparan ke-6, posisi tepat di angka 10 yang artinya FINISH.

Membuat Ular dan Tangga

Berikutnya ada dua lokasi ular, yaitu angka “4” yang akan memaksa balik ke nol, serta tangga pada angka “6” yang memaksa loncat ke “8”. Berikut tambahan kodenya:

  • clc
  • sisa = 10;
  • step=0
  • history=[0 0 0 ];
  • while sisa ~= 0
    • random=2+floor(rand*10)
    • if sisa >= random
    • sisanew=sisa-random;
    • else
      • sisanew=abs(sisa-random);
    • end
    • sisa=sisanew
    • pause
    • clc
    • step=step+1
    • posisi=10-sisa
    • if posisi==4
      • posisi=0;
      • sisa=10;
    • end
    • if posisi==6
      • posisi=8;
      • sisa=2;
    • end
    • history=[history;[step random posisi]]
  • end
  • msgbox(‘FINISH’)

Ada dua buah if-then untuk mengecek apakah tepat berada di titik ular atau tangga. Jika tepat maka diarahkan ke berturut-turut nol dan delapan. Hasil running di bawah tampak tidak ada angka 4 dan 6 karena akan diarahkan ke nol dan delapan. Sekian, semoga bermanfaat.

Empat Tahunan Studi Doktoral

“I confer upon you a degree of doctor of philosophy”. Ketika rektor mengucapkan kalimat tersebut, selesailah sudah kuliah saya di kampus tua itu. Kampus yang dibentuk ketika perang dingin USA dan Rusia berlangsung di tahun 1959. Selama lima tahun kurang 3 bulan saya lalui di kampus yang terkenal sulit dan lama lulusnya, terutama di jurusan keras Computer Science and Information Management (CSIM).

Kisruh Saat Kedatangan

Awal perkuliahan di awal Agustus menyulitkan proses administrasi dengan pemberi beasiswa (DIKTI) yang mewajibkan penerima beasiswa (karyasiswa) menghadiri pembekalan pra keberangkatan di bulan September. Sepertinya DIKTI menyamakan dengan kampus dalam negeri yang perkuliahan dimulai pada bulan September. Terpaksa harus balik lagi ke Indonesia untuk mengikuti acara tersebut.

Masalah lain yang rumit adalah pembayaran biaya kuliah. Masalah ini muncul karena seperti biasa, DIKTI agak telah beberapa bulan dalam pencairan. Walaupun Guarantee Letter (GL) DIKTI sangat ampuh, repotnya ketika berangkat GL belum jadi. Setelah bolak-balik ke bagian pendaftaran (registry), akhirnya masalah daftar ulang beres.

Course Work Problem

Setelah masalah daftar ulang beres, ternyata muncul masalah baru yaitu nilai MID perkuliahan (course work). Beda dengan Jepang yang menganut S3 dengan riset (by research), AIT menganut course work + research. Jadi perkuliahan diwajibkan sebelum riset. Repotnya karena harus balik lagi ke tanah air, nilai mid semester berantakan, dan efeknya merembet ke nilai akhir. Padahal syarat boleh riset, IPK (GPA) minimal 3.50.

Problem Kandidasi

Kandidasi adalah sidang yang harus diikuti oleh mahasiswa doktoral yang ingin melanjutkan ke tahap berikutnya setelah tahap course work yaitu, tahapan riset. Program doktoral di AIT adalah “the highest degree in AIT that shows academic and research achievement”, seperti dikatakan oleh wakil rektor ketika acara wisuda. Maka mahasiswa doktoral dituntut bagus dalam perkuliahan (akademik) dan riset.

Problem Syarat Publikasi

Walaupun tergolong pintar, beberapa mahasiswa doktoral di kampus sulit menembus jurnal internasional. Selain waktu yang tidak jelas, kriteria lolos atau tidaknya sangat ketat dan subyektif. Dosen pembimbing hanya bisa mengarahkan saja dan tidak bisa berbuat apa-apa ketika siswa bimbingannya ditolak terus oleh pengelola jurnal. Akibatnya banyak yang pulang dulu beberapa tahun menunggu naskah yang akan dipublikasi diterima salah satu editor jurnal.

Jika sudah, maka syarat terakhir adalah pengecekan disertasi oleh profesor external sebelum sidang terbuka. Syarat ini tidak begitu rumit karena waktu pembuatan yang bisa diprediksi oleh mahasiswa. Berbeda dengan jurnal yang lama prosesnya tidak jelas, dari beberapa bulan hingga kalau sial bisa beberapa tahun.

Dan yang dinanti-nanti oleh pelajar, yaitu wisuda, akhirnya bisa dilalui jika publikasi selesai. Toga ber-strip tiga pun berhak dipakai. Akhirnya tinggalah kenangan dari seorang alumni. Sekian, semoga bisa menginspirasi.

Seminar Nasional “SINERGI” Univ. Islam 45 Bekasi

Kampus homebase saya sudah mengadakan seminar nasional tiga kali tetapi baru kali ini (yang ketiga) saya mengikutinya. Kebetulan memang masih di Thailand, berkutat dengan riset. Memang agak sulit melaksanakan seminar nasional saat ini karena tuntutan “terindeks Scopus” yang harus berupa seminar internasional. Namun prinsip “yang penting jalan, ada peserta atau tidak, ga masalah” memaksa dilaksanakannya agenda tahunan fakultas teknik tersebut.

Yang menarik dari seminar nasional adalah mudah dipahami (karena bahasa Indonesia) dan interaksi antara pembicara dan peserta sangat erat. Karena giliran teknik komputer yang diminta mencari nara sumber, langsung saja meminta dedengkot asosiasi informatika dan komputer (APTIKOM), Prof. Zainal A. Hasibuan untuk menjadi keynote speaker.

Prof Zainal yang dikenal dengan nama Prof Ucok mengetengahkan tema “sains dan teknologi berbasis renewable dan sumber daya sustainable: Peluang dan tantangan”. Sedikit dijelaskan revolusi industri 1 sampai 4.0, serta karakteristik teknologi saat ini yang bersifat “disruptive”. Seperti biasa, ketika saya mengetahui satu hal, ketika ikut seminar pasti saja ada hal baru yang tidak saya ketahui sebelumnya. Itulah manfaatnya seminar, bertukar fikiran dan ide-ide. Berikut hal-hal unik:

Tiap Thesis pasti ada Anti-Thesis

Prinsip ini pasti ada. Ketika ojek pangkalan terdisrupsi, muncul gojek yang kemungkinan besar diisi oleh para ojek-ojek pangkalan. Ketika pemerintah menggalakkan publikasi ilmiah yang terindeks Scopus pun ada saja yang tidak menyetujuinya dengan alasan tertentu. Pembicara menganjurkan silahkan anti Scopus tetapi harus menciptakan temuan yang terbukti dan diakui dunia internasional.

Big Data

Disinggung juga kasus Facebook yang ternyata memang diakui bahwa digunakan untuk menggiring opini untuk pemenangan calon tertentu (presiden/walikota/dll). Ada anekdot yang diutarakan. Dulu jaman orde baru, lebih canggih dari saat ini karena 3 bulan sebelum pemilu sudah tahu siapa presidennya (tentu saja selalu Suharto). Namun saat ini dibantah, karena setahun sebelum pemilu sudah dapat ditebak siapa presiden terpilihnya, dengan menganalisa big data yang berserakan di dunia maya.

Revolusi Industri 1,2,3 dan 4.0 ada di Indonesia

Walaupun saat ini sudah masuk revolusi industri 4.0 tetapi revolusi industri sebelumnya masih ada di negara kita. Saran beliau adalah ketika menerapkan teknologi, fokuslah ke kearifan lokal, termasuk kekayaan khas masing-masing wilayah. Misalnya memudahkan distribusi pada usaha kecil dan menengah. Dengan bantuan aplikasi online, diharapkan dapat memangkas biaya-biaya yang tidak diperlukan.

Jangan Panik dengan Penamaan Jurusan

Hebohnya ketika presiden RI menganjurkan pendirian jurusan kopi atau bisnis online, sebaiknya jangan disikapi terlalu serius. Sebenarnya bidang-bidang tersebut ada semua jurusannya di Indonesia. Pengalaman beliau ketika main ke Jepang, jurusan-jurusan spesifik yang saat ini sedang “in” di tanah air dapat disisipkan pada jurusan-jurusan yang telah ada. Mengapa? Karena ilmu-ilmu dasarnya tidak jauh berbeda dengan yang dikembangkan dari dulu hingga saat ini.

Kelemahan Bangsa

Prof Ucok menyampaikan data-data yang mengkhawatirkan, yaitu daya saing bangsa kita di bawah Singapura, Thailand, Malaysia dan Vietnam. Waduh .. Ternyata bangsa kita yang suka fokus ke wacana, debat sana sini, dan melupakan bekerja sama, salah satu khas bangsa kita yang terlupakan yaitu “Gotong Royong”.

Mungkin itu saja yang bisa di-share, pembicara berikutnya di luar bidang saya yaitu Material Teknik dan Konstruksi. Namun tetap saja pelajaran berharga dapat dipetik dari kedua pembicara (Dr. I Nyoman dan Hotma Prawoto). Pembicara terakhir yang menurut saya adalah seorang motivator banyak memberi insight dalam mengajar. Sedikit banyak pengalamannya mirip dengan saya yaitu sebelum mengajar menjadi praktisi dulu (bekerja di suatu perusahaan). Dosen-dosen yang langsung mengajar setelah lulus selayaknya bertanya kepada praktisi karena insinyur berbeda dengan saintis, atau bahkan sarjana teknik, banyak aspek-aspek yang tidak pasti ketika bekerja di lapangan. Habibie pun mengatakan “pengalaman tidak bisa dipelajari, tetapi dilalui”. Sekian, semoga bermanfaat.

Konversi Kode String ke ASCII di Matlab

Iseng-iseng buka tulisan yang lalu tentang enkripsi karena materi mulai masuk ke pemrosesan teks, ternyata banyak yang lupa. Salah satunya adalah konversi dari string ke kode ASCII. Kode ini sangat diperlukan ketikan mengkonversi dari satu ASCII ke yang lainnya dalam rangka enkripsi.

Menambah dengan Nol

Dulu pernah belajar kode ASCII pada mata kuliah bahasa rakitan ketika membahas masalah interupt. Ternyata hingga saat ini tidak berubah.

Bagaimana mengetahui kode ASCII selain dengan tabel di atas jika menggunakan Matlab? Caranya mudah yaitu tambahkan saja string dengan nol, beres sudah. Misal huruf ‘A’ maka:

  • >> teks=’A’
  • teks =
  • A
  • >> ascii=teks+0
  • ascii =
  • 65

Di sini 65 merupakan kode HTML, yang berbeda dengan HEXA (41). Jika sudah, kita dengan mudah mengenkripsi suatu kata, misalnya “Rahmadya” dengan algoritma “tambahkan kode ASCII tiap huruf dengan satu”.

Mengenkripsi Kata

Fungsi yang diperlukan adalah CHAR untuk menampilkan kode ASCII ke string. Masukan ke command window instruksi berikut ini.

  • >> teks=’Rahmadya’
  • teks =
  • Rahmadya
  • >> enkripsi=teks+1
  • enkripsi =
  • 83 98 105 110 98 101 122 98
  • >> char(enkripsi)
  • ans =
  • Sbinbezb

Perhatikan Sbinbezb itu adalah kode enkripsi yang dihasilkan. Untuk mendekripsi caranya mudah, yaitu dengan mengurangkan satu kode tersebut.

  • >> dekripsi=ans-1
  • dekripsi =
  • 82 97 104 109 97 100 121 97
  • >> char(dekripsi)
  • ans =
  • Rahmadya

Perhatikan kode aneh “Sbinbezb” setelah dienkripsi adalah “Rahmadya”. Semoga hal sepele ini bermanfaat.