Quantcast
Channel: School of Universe » Excel
Viewing all articles
Browse latest Browse all 2

Regresi Linier dengan Excel

$
0
0

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:

[cc lang = "vb"] =MMULT(MINVERSE(MMULT(TRANSPOSE(Xt),Xt)),MMULT(TRANSPOSE(Xt),Yt)) [/cc]

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.

[cc lang="vb] 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[/cc]

Padahal, kalau di Matlab cukup dengan perintah ini saja:

[cc lang="matlab"] beta = regress(Xt, Yt) [/cc]

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.


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images