Entries RSS Comments RSS

Posts Tagged ‘Excel’

Regresi Linier dengan Excel

Tuesday, August 4th, 2009

Ternyata memakai Microsoft Excel untuk regresi, pusing juga ya. Ngga segampang make Matlab. Tapi bukan berarti ngga bisa sih. Apalagi kalau regresinya masih linier yang bisa diselesaikan lewat Metode Least Square. Kalau pakai fungsi di excel nya langsung, panjang juga rumusnya. Sedangkan kalau pake VBA, kode nya jadi makin rumit.

Secara umum, Least Square Method adalah suatu metoda untuk mencari nilai koefisien yang membuat square error menjadi minimum. Kalau penurunan persamaannya, silahkan cari sendiri di Wikipedia, rasanya ada. Tapi bentuk akhirnya adalah sebagai berikut:

[math] \hat \beta  = (X^TX)^{-1} X^T Y[/math]

Kalau pakai fungsi di Excel, maka kodenya akan berbunyi seperti ini:

1
 =MMULT(MINVERSE(MMULT(TRANSPOSE(Xt),Xt)),MMULT(TRANSPOSE(Xt),Yt))

tapi kalau diterjemahkan ke VBA, kodenya jadi agak panjang. Pertama kita harus definisikan dulu Xt dan Yt. Kalau dalam Excelnya sih gampang saja, tinggal sorot matrix yang kita inginkan dan hasilnya langsung ditampilkan dalam sel-sel. Dalam VBA, mmmh, perlu sedikit kerja keras. Setidaknya setelah definisi nanti harus diingat untuk kopi paste result dalam bentuk value saja. Setelah itu, nama Xt dan Yt harus dihapus dari workbook, biar ga mengganggu perhitungan lain.

Contoh berikut ini, misalnya Xt adalah matrix 4 x 3. Yt matrix 4 x 1. Kita harus pilih dulu matrix Xt, kasih nama kemudian matrix Yt, kasih nama, lalu pilih tempat menaruh koefisien, lalu kasihkan formulanya.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 Range(Cells(1,1),Cells(4,3)).Select

Selection.Name = "Xt"

Range(Cells(1,4),Cells(4,4)).Select

Selection.Name = "Yt"

Range(Cells(1,5),Cells(3,5)).Select

Selection.FormulaArray = "=MMULT(MINVERSE(MMULT(TRANSPOSE(Xt),Xt)),MMULT(TRANSPOSE(Xt),Yt))"

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ThisWorkbook.Names("Xt").Delete

ThisWorkbook.Names("Xt").Delete

Padahal, kalau di Matlab cukup dengan perintah ini saja:

1
 beta = regress(Xt, Yt)

Huhuy dah. Tapi mau gimana lagi, harus dijalankan seperti ini ya jadinya perlu waktu lama untuk coding nya. Mudah-mudahan selesai.

Untuk metode konvensional, kayaknya udah cukup bagus. Sekarang tinggal membangun program VBA untuk Artificial Neural Network. Mudah-mudahan bisa segera selesai nih program, sudah mundur satu minggu dari jadwal.

  • Share/Bookmark

Excel Ganti Matlab

Saturday, August 1st, 2009

Untuk mahasiswa jurusan teknik tentu tidak asing dengan Matlab. Software ini adalah a must have untuk keperluan penelitian. Sebenarnya sih, ngga cuma mahasiswa teknik, yang lain pun bisa juga pakai karena ada fasilitas yang mampu menghasilkan perhitungan seperti statistik dan keperluan keuangan lainnya.

Tapi, Matlab adalah software yang mahal. Harganya untuk versi mahasiswa sekitar US$ 400, yang tentu saja untuk ukuran kantong mahasiswa Indonesia masih kemahalan. Sebenarnya ada program alternatif lainnya seperti Scilab, Octave, ataupun berpuluh software lain dari yang shareware sampai yang gratisan atau open source. Tapi, apa lagi alternatif yang menarik selain Microsoft Office?

Microsoft Office versi student sekarang harganya cukup murah. Kalau sedang promosi, bisa semurah Rp. 600 ribu rupiah saja, untuk tiga lisensi. Artinya ada tiga orang sekaligus yang bisa memiliki lisensi dengan harga itu. Lumayan kan, cuma Rp. 200 ribuan satu orangnya.

Lho, tapi apa hubungannya Microsoft Office dengan Matlab? Ada dong, pokoknya kalau dihubung-hubungkan bisa dicari hubungannya. Misalnya saja, saya sekarang dapat tugas untuk membuat software untuk forecasting konsumsi minyak bumi di beberapa negara. Awalnya saya membuat program dari Matlab, tapi ketika ingin buat program yang bisa diakses oleh banyak orang, saya terbentur beberapa masalah. Masalah utama adalah User Interface dan Lisensi.

Lisensi Matlab untuk masing-masing komponen sangat mahal. Harga yang saya sebutkan tadi di atas adalah untuk keperluan minimalis saja. Sedangkan saya perlu yang agak sophisticated. Harga untuk compiler dan penghubung Matlab dengan program lain sangat mahal. Sudah begitu pusing juga bikin user interfacenya, akhirnya coba beralih ke Microsoft Excel.

Excel memberikan user interface yang sudah lama kita akrabi. Sel-sel yang bisa diisi angka dan teks sudah saya kenal setidaknya sejak awal kuliah. Biasalah, dulu pake bajakan. Sekarang dengan harga murah, bisa dimiliki sendiri. Beberapa fungsi mirip dengan Matlab juga sudah dimiliki, tinggal modifikasi sesuai kebutuhan. Ini jadi tantangan tersendiri bagi orang teknik informatika.

Matlab punya kekuatan di operasi matrix. Excel pun punya. Saya sudah periksa hasil operasi sederhana setidaknya yang diperlukan dalam program saya baik di Excel maupun Matlab memberikan hasil yang mirip.

Contoh, untuk melakukan transpose suatu matrix dari yang berukuran 2×3 menjadi 3×2 di Matlab kita bisa menggunakan kode khusus misalnya matrix A adalah 2×3, matrix B adalah transpose A berukuran 3×2 maka kita bisa menggunakan kode

1
 B = A'

Dalam Excel prosess yang hampir sama juga bisa dilakukan dengan fungsi TRANSPOSE. Misalnya matrix A adalah sel A1 sampai C2.  Kita bisa sorot sel E1 sampai F3 dan mengetikkan fungsi berikut di bar fungsi di atas sel

1
 =TRANSPOSE(A1:C2)

Lalu tekan tombol Ctrl dan Shift sambil menekan tombol ENTER. Hasil transpose kita dapatkan.

Untuk perkalian matrix juga mudah saja. Kalau di Matlab kita bisa menggunakan kode berikut untuk perkalian matrix

1
 C = A*B

Dalam Excel kita bisa memilih sel tempat hasil operasi matrix, misalnya perkalian A dan B menghasilkan matrix 2×2, maka kita bisa pilih sel A4:B5 untuk hasil perkalian matrik, lalu dalam bar fungsi kita masukkan kode berikut:

1
 =MMULT(A1:C2, E1:F3)

Hasilnya insya Allah sama, tapi bedanya kita harus tahu dulu besar matrix sebelum melakukan operasi. Kalo free style macam Matlab bisa ga? Insya Allah bisa, tapi nanti lagi dibahasnya ya.

  • Share/Bookmark