Macro Minitab: Cholesky Decomposition


“Sudah beberapa bulan  tidak menengok blog ini. Sampai-sampai beberapa komentar tidak saya jawab. Saya mohon maaaf. “

Akhir-akhir ini banyak tugas kuliah yang cukup memeras otak. Salah satunya tugas untuk membuat paper tentang imputasi data missing/incomplete plus membuat macro-nya di Minitab. Alhamdulillah, untuk kasus data univariate, macro-nya bisa diselesaikan. Namun pada kasus data multivariat (normal) , salah satu bagian dari algoritma metode imputasi data augmentation adalah  dekomposisi matrik Cholesky. Sayangnya waktu googling saya tidak mendapatkan.

Mau tidak mau akhirnya harus dibuat sendiri macro Minitab untuk dekomposisi  Cholesky. Dengan mencoba beberapa algoritma, alhamdulillah akhirnya macro dapat diselesaikan. Namun hasil dari macro-nya adalah matrik segitiga atas. Di bawah ini adalah codenya, simpan dengan nama cholesky.mac

MACRO

# Macro for computing the Cholesky factorization:
# Written by                     : Achmad Syahrul Choir
# Versi                               : 1.0
# Last modified              : 1th December, 2009
# Input                   MAI  : Matrix A, positive definite
#                                        p : Constant Number of variable
#
# Output MAO : Upper Triangle Matrix /Cholesky Triangle
# SOURCE : G.H Golub and Charles F. Van Loan
# Matrix COmputation, Third Edition,1996
############################################

Cholesky MAI MAO p

MCONSTANT i j k s p n
MCOLUMN v ColA.1-ColA.p ColTA.1-ColTA.p G.1-G.p w nma ntma
MMATRIX MAI MAO TMAI MA0 TMAO MAIC

#ERROR MESSAGE
Diagonal MAI w.
let n=count(w)

if p~=n
note *** ERROR *** Number of variables input differs from number of variables in matrix
exit
endif

#ERROR MESSAGE

Transpose MAI TMAI
Copy MAI ColA.1-ColA.p
Copy TMAI ColTA.1-ColTA.p
Stack ColA.1-ColA.p nma
Stack ColTA.1-ColTA.p ntma
if nma~=ntma
note *** ERROR *** matrix must be symmetric.
exit
endif

Define 0 p p MA0
copy MA0 G.1-G.p

do j=1:p
do i=j:p
let v(i)=COLA.i(j)
let k=1
while k<j
let v(i)=v(i)-G.j(k)*G.i(k)
let k=k+1
endwhile
let G.i(j)=v(i)/(v(j))**0.5

enddo
enddo

copy G.1-G.p MAO
transpose MAO TMAO
multiply TMAO MAO MAIC
name MAO ‘G=Cholesky Triangular/Upper triangular’
name MAI ‘ A=Matrix Symmetric Positife Definite’
name MAIC ‘Multiply GT (G transpose) and G’
Note Checking……….
print MAO MAI MAIC

endmacro

Saran dikritik mohon disampaikan di sini. Terima kasih

6 Tanggapan

  1. Syahrul, kalau gmacronya gmn? Aku bingung nge run macromu… Ga bisa2..

  2. Sementara belum bisa komentar

    untuk mengerti aja masih agak susah..
    btw thanks….

  3. mohon di sampaikan kepada para penyensus jangan di tembak2. tolong di datangi tiap rumah dan langsung wawancara…
    terimakasih

  4. wew, the macro that you can use is too complex for me, but there is still interisting, fortunately

  5. pak, punya macro minitab untuk membangkitkan data time series model ARIMA(2,2,0) g??

    mohon bantuannya..

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: