• Tidak ada hasil yang ditemukan

Fungsi dan Perintah Matriks

Dalam dokumen Aplikasi Keseimbangan Umum.pdf (Halaman 36-55)

BAHASA MATRIKS DENGAN SAS/IML

3.17. Fungsi dan Perintah Matriks

Sampai sejauh ini, secara umum kita telah memahami cara kerja SAS/IML dalam menghasilkan matriks, cara kerja operator, mencetak, dan mengevaluasi matriks. Bagian ini akan dijelaskan prosedur IML khususnya yang berhubungan dengan beberapa Function dan Command yang dianggap releven dan penting untuk diketahui dalam menyelesaikan model Input-Output, Social Accounting Matrix dan metode RAS. Tabel 3.4 berikut ini merupakan ringkasan dari function dan command matriks.

Tabel 3.4. Ringkasan Beberapa Function dan Command Matriks

Fungsi/Command Aksi

PROC IML Prosedur Iterasi Bahasa Matriks

DET Menentukan determinan dari suatu matriks bujur sangkar DIAG Membuat matriks diagonal

I Membuat matriks identitas

J Membuat matriks ukuran i x j berisikan nilia tertentu

BLOCK Menggabungkan matriks dengan membentuk matriks diagonal INV Melakukan matriks kebalikan

SOLVE Menghasilkan solusi untuk persamaan linier AX=B → X = solve(A,B) X = inv(A) * B

SUM Menjumlahkan seluruh elemen yang menghasilkan skalar TRANSPOSE Melakukan transpose matriks

XMULT Melakukan perkalian matriks lebih akurat RESET Menentukan pilihan saat melakukan proses PRINT Mencetak nilai matriks

USE Menggunakan file data SAS eksternal READ Membaca file data SAS

CREATE Menciptakan matriks ke dalam data SAS APPEND Menambah pengamatan ke dalam data SAS DATA Menciptakan sebuah nama dataset instrem SET Menentukan dataset yang digunakan

Fungsi DET,

Berfungsi untuk menghitung determinan dari sebuah matriks bujur sangkar yang menghasilkan skalar.

Syntax:

DET(square-matrix) dimana :

square-matrix adalah matriks numerik atau literal. Contoh:

a = {1 1 1, 1 2 4, 1 3 9};

b =det(a) print b;

menghasilkan skalar B yang merupakan determinan matriks A, yaitu

B

Fungsi DIAG, berfungsi untuk menciptakan diagonal matriks Syntax

DIAG(argumen)

dimana argumen adalah matriks bujur sangkar atau vektor. Sebagai contoh:

proc iml;

reset print;

a = {1 1 1,1 2 4,1 3 9};

b = {1,2,3};

c =diag(a);

d =diag(b);

print c d;

akan menghasilkan matriks berikut ini:

C 3 rows 3 cols (numeric) 1 0 0

0 2 0 0 0 9

D 3 rows 3 cols (numeric) 1 0 0

0 2 0 0 0 3

Fungsi I, berfungsi untuk menciptakan sebuah matriks identitas Syntax:

I(dimension)

dimana: dimension adalah jumlah ukuran tertentu dari matriks identitas.

Sebagai contoh:

IDEN=I(3);

akan menghasilkan matriks identitas sebagai berikut:

IDEN 3 rows 3 cols (numeric) 1 0 0

0 1 0 0 0 1

Fungsi INV, menghitung dan akan menghasilkan matriks kebalikan yang harus matriks bujur sangkar dan tidak singular (nonsingular).

Syntax:

INV(matrix)

dimana: matrix adalah matriks bujur sangkar nonsingular. Suatu matriks bujur sangkar disebut nonsingular apabila determinan matriks tersebut tidak sama dengan nol. Sedangkan matriks singular adalah determinannya sama dengan nol dimana matriks singular tidak mempunyai matriks kebalikan (inverse).

Misalkan G = INV(A), inverse memiliki porperties GA = AG = identity

Untuk mendiskusikan properties dari matriks, anda dapat mengacu pada texbook Alpha Ciang, Fundamental Method of Mathematical Economics.

Third Edition, Tahun 1984. Solusi untuk sebuah permsaan linier AX=B untuk X, kita dapat menggunakan berikut ini:

X = INV(A) * B;

Penggunaan fungsi SOLVE lebih akurat dan efisien untuk melakukan tugas tersebut. Lihat fungsi SOLVE. Berikut adalah contoh untuk menentukan matriks kebalikan A, yaitu:

proc iml;

reset print;

a = {1 1 1,1 2 4,1 3 9};

z =inv(a);

print z;

akan menghasilkan matriks sebagia berikut ini:

Z 3 rows 3 cols (numeric) 3 -3 1

-2.5 4 -1.5 0.5 -1 0.5

Fungsi J, menciptakan sebuah matriks dengan mengisi nilai tertentu yang identik untuk semua elemen.

Syntax:

J(nrow, ncol, value) dimana:

nrow adalah memberikan jumlah baris matriks atau literal numerik ncol adalah memberikan jumlah kolom matriks atau literal numerik

value adalah nilai yang diisikan ke dalam baris dan kolom matriks atau literal numerik atau karakter.

Contoh:

a = J(5,3,1);

b = J(2,4,'yes');

akan menghasilkan matriks

A 5 rows 3 cols (numeric) 1 1 1

1 1 1 1 1 1 1 1 1 1 1 1

B 2 rows 4 cols (character, size 3) yes yes yes yes

Fungsi BLOCK, berfungsi untuk membentuk blok-diagonal matriks.

Syntax

BLOCK(matrix_1, matrix_2,..,matrix_15)

dimana: matrix adalah matriks numerik atau literal. Fungsi BLOCK menciptakan matriks blok-diagonal baru dari seluruh matriks yang ditentukan di dalam argumen matrix. Jumlah matriks dapat ditentukan sampai 15 matriks.

Matriks dikombinasikan secara diagonal untuk membentuk sebuah matriks baru. Sebagai contoh:

block(a,b,c);

menghasilkan sebuah matriks berbentuk diagonal sebagai berikut:





C B A

0 0

0 0

0 0

proc iml;

reset print;

a ={1 1, 2 2};

b ={3 3 3, 3 3 3, 3 3 3};

c =block(a,b);

akan sebuah matriks baru C sebagai berikut:

C 5 rows 5 cols (numeric) 1 1 0 0 0 2 2 0 0 0 0 0 3 3 3 0 0 3 3 3 0 0 3 3 3

Fungsi SOLVE, solusi untuk persamaan linier Syntax:

SOLVE(A,B) dimana:

A adalah matriks nonsingular berukuran n x n B adalah matriks berukuran n x p

Fungsi SOLVE memecahkan solusi persamaan linier misalnya AX=B maka untuk X=A-1B. Matiks A harus bujur sangkar (square) dan nonsingular.

Dengan bantuan fungsi SOLVE yang terdapat pada SAS/IML kita dapat menuliskan:

X=SOLVE(A,B)

diatas sama dengan menuliskan berikut ini:

X = INV(A)*B

Meskipun demikian fungsi SOLVE lebih direkomendasikan daripada fungsi INV karena fungsi SOLVE lebih efisien dan lebih akurat.

Fungsi T, berfungsi untuk melakukan transpose matrix Syntax:

T(matrix)

dimana matrix adalah sebuah matriks atau literal baik numerik atau karakter.

Fungsi T akan melakukan perubahan terhadap baris dan kolom yaitu baris menjadi kolom atau kolom manjadi baris.

proc iml;

reset print;

a = {1 2, 3 4};

b = {1 2 3};

x =t(a); y =t(b);

print x y ;

Pernyatan ini akan menghasilkan matriks

X 2 rows 2 cols (numeric) 1 3

2 4

Y 3 rows 1 col (numeric) 1

2 3

Fungsi SUM, berfungsi untuk menjumlahkan seluruh elemen matriks, nilai yang dihasilkan adalah bentuk skalar

Syntax:

SUM(matrix1 <,matrix2,…,matrix15>);

dimana: matrix adalah sebuah matriks atau literal numerik. Jumlah matriks yang dijumlahkan mencapai 15 matriks argumen. Fungsi SUM dapat memeriksa nilai mising karena nilai yang mising tidak termasuk didalamnya.

Nilai yang dikembalikan bernilai 0 jika mising. Contoh:

proc iml;

a={5 3 4, 3 4 5, 3 5 4};

b ={1 1, 2 2, 3 3};

x =sum(a);

z =sum(a,b);

print x z;

di atas akan menghasilkan matriks skalar X dan Z sebagai berikut:

X Z

Fungsi XMULT, berfungsi untuk melakukan perkalian matriks yang lebih akurat.

Syntax:

XMULT(matrix_1, matrix_2);

dimana matrix_1 dan matrix_2 adalah matriks numerik. Fungsi XMULT menghitung matriks perkalian seperti operator matriks perkalian (*) tetapi fungsi XMULT digunakan yang diperluas untuk ketepatan dan akumulasi penjumlahan perkalian. Kita dapat menggunakan fungsi XMULT hanya ketika kita membutuhkan keakuratan dan untuk matriks yang lebih besar. Contoh:

Y=XMULT(A,B);

adalah sama dengan menulis : Y = A * B;

RESET, berfungsi untuk menentukan pilihan dalam proses pengolahan data.

Syntax:

RESET <option>;

Berikut ini adalah pilihan-pilihan yang dapat ditentukan dalam RESET, yaitu:

AUTONAME NOAUTONAME

untuk menentukan apakah hasil yang dicetak ke layar output diberi label baris dan kolom secara otomatis dengan nama ROW1, ROW2 dan ROWn dan COL1, COL2 dan COLn. Pilihan AUTONAME menyebabkan pilihan SPACE menjadi berukuran 4 (lihat pilihan SPACE). Defaultnya adalah NOAUTONAME.

CENTER NOCENTER

menentukan apakah output dari PRINT diatur dengan rata tengah.

Defaultnya adalah CENTER.

SPACE=n

menentukan jarak antar matriks yang dicetak. Defaultnya adalah 1, kecuali pilihan AUTONAME digunakan maka defaultnya adalah 4.

FW = number

menentukan lebar kolom untuk mencetak nilai numerik. Jumlah lebar ini dihitung termasuk jumlah desimal yang ada.

STORAGE=<libname.>memname;

menentukan library file tempat penyimpanan STORE dan LOAD.

Default library penyimpanan SASUSER.IMLSTOR. Argumen libname merupakan pilihan dan defaultnya SASUSER. Hal tersebut dapat ditentukan dengan atau tanpa quotes (‘ ‘)

Pernytaan PRINT, berfungsi untuk mencetak matriks ke layar output Syntax:

PRINT <matrices> <pointer-controls> <[options]>;

dimana:

matrices merupakan nama-nama matriks

pointer-controls mengontrol pointer untuk mencetak matriks. Sebagai contoh menggunakan tanda koma (,) berarti mencetak matriks satu garis satu matriks. Menggunakan slash (/) berarti matriks yang dicetak satu halaman satu matriks.

Berikut adalah pilihan yang dapat digunakan dalam PRINT, sebagai berikut COLNAME=matrix

berfungsi untuk menentukan atau membuat label nama matriks yang sesuai dengan kolom. Contoh

[COLNAME={output income employ}];

ROWNAME=matrix

berfungsi untuk menentukan atau membuat label nama matriks yang sesuai dengan baris. Contoh

[ROWNAME={Agri Minig Service}];

Kedua pernytaan diatas, dapat ditulis dengan cara yang berbeda dengan mendefisikan label matriks pertama sekali yaitu:

kolom={output income employ}

baris ={Agri Minig Service};

[COLNAME=kolom ROWNAME=baris];

FORMAT=format

menentukan format untuk mencetak matriks khususnya untuk matriks numerik. Contoh

print x[format = 5.3}];

Pernytaan USE

USE berguna untuk membuka SAS dataset yang ditentukan untuk selanjutnya akan dibaca.

Syntax:

USE SAS-dataset <VAR operand> <WHERE(expression)>

<NOBS name>;

SAS-dataset Nama data yang ditentukan. Nama dapat ditentukan dengan satu kata (contoh: IO) atau dengan dua kata (contoh:

SASUSER.IO).

operanad Memilih kumpulan varibel-variabel (lebih lengkap lihat SAS/IML Software).

Operand didalam kata VAR dapat diikuti antara lain dengan:

▪ literal yang mengandung nama variabel

▪ suatu nama matriks yang mengandung nama-nama variabel

▪ persamaan di dalam tanda { } yang menghasilkan nama- nama variabel.

Contoh VAR {name1 name3 name4};

▪ salah satu kata kunci seperti:

_ALL_ untuk seluruh variabel

_CHAR_ untuk seluruh variabel karakter _NUM_ untuk seluruh variabel numerik Contoh VAR _ALL_ atau VAR _NUM_

expression Bertujuan untuk mengevaluasi yang benar atau salah name Nama variabel yang mengandung nomor pengamatan

Semua pilihan VAR, WHERE dan OBS dapat diabaikan (tergantung kebutuhan pembaca) atau pilihan yang berada di dalam tanda < > merupakan suatu options. Tetapi pilihan data SAS-dataset harus ditentukan, contoh:

USE WORK.IO;

Hal ini menunjukkan bahwa kita telah membukan dataset IO yang terdapat pada library WORK. Library WORK dan SASUSER secara otomatis akan diciptakan oleh SAS.

READ

READ bertujuan untuk membaca file dataset yang telah dibuka sebelumnya oleh USE.

Syntax:

READ <range> <VAR operand> <WHERE expression>

<INTO name <[ROWNAME= row_name COLNAME=col_name]>>;

dimana:

range menentukan range pengamatan. Kita dapat gunakan pilihan ALL untuk memilih semua pengamatan.

operand Memilih variabel yang ditentukan.

Operand di dalam VAR dapat diikuti oleh:

▪ literal yang mengandung nama variabel

▪ suatu nama matriks yang mengandung nama-nama variabel

▪ persamaan di dalam tanda { } yang menghasilkan nama- nama variabel.

Contoh VAR {name1 name3 name4};

▪ salah satu kata kunci seperti:

_ALL_ untuk seluruh variabel

_CHAR_ untuk seluruh variabel karakter _NUM_ untuk seluruh variabel numerik Contoh VAR _ALL_ atau VAR _NUM_

expression Mengevaluasi benar dan salah (lebih lengkap lihat SAS/IML Software).

name Menentukan sebuah nama matriks sebagai target.

row_name Matriks karakter atau quota literal yang diberikan untuk menjelaskan label baris matriks.

col_name Matriks karakter atau quota literal yang diberikan untuk menjelaskan label kolom matriks.

Contoh:

use work.io;

read all var _num_ into z;

Catatan bahwa USE harus digunakan secara bersamaan dengan READ. di diatas dapat dijelaskan sebagai berikut:

• Pernytaan USE menunjukkan bahwa kita telah membuka dan menggunakan sebuah data IO yang disimpan di dalam pada library WORK (default di dalam program SAS).

• Selanjutnya READ berfungsi untuk membaca data IO tersebut. Data yang dibaca adalah seluruh range pengamatan yang ada di dalam dataset IO yang dinyatakan oleh kata ALL dan variabel yang digunakan adalah variabel yang bersifat numerik yang dinyatakan oleh VAR _NUM_ dimana data IO tersebut dimasukkan ke dalam sebuah matriks yang diberi nama Z. Data diciptakan dengan proses impor (lihat Bab 10).

CREATE

CREATE bertujuan untuk menciptakan sebuah SAS dataset dari suatu skalar, literal ataupun matriks. Gunakan CREATE dan APPEND untuk menciptakan sebuah dataset dari suatu matriks, dimana baris matriks akan menjadi pengamatan dan kolom matriks akan berubah menjadi variabel.

CREATE membuka SAS dataset untuk input dan output dan APPEND menuliskan ke input atau output dataset.

Syntax:

CREATE SAS-dataset FROM matrix

<[COLNAME=col_name ROWNAME=row_name]>;

dimana:

SAS-dataset nama dataset yang baru

matrix nama matriks yang mengandung data col_name nama-nama variabel di dalam dataset

row_name menambah suatu variabel yang mengandung judul baris ke dalam dataset

APPEND

APPEND bertujuan untuk memasukkan dan menambah data-data matriks ke dalam dataset baru.

Syntax:

APPEND <FROM from_matrix>;

dimana:

from_matrix nama matriks yang mangandung data untuk dimasukkan atau ditambahkan ke dalam dataset.

Contoh:

proc iml;

reset autoname;

Z = {10 14 38, 11 12 14, 18 19 20};

kolom={Agri Industri Jasa};

create io from z [colname=kolom];

append from z;

show contents;

Dengan menekan tombol F8, maka rangkaian di atas akan menghasilkan output berikut ini:

Output 3.1

Catat bahwa SHOW CONTENTS bertujuan untuk menampilkan isi pada data IO seperti yang tertera pada Ouput 3.1. Dimana kita telah mempunyai DATASET dengan nama WORK.IO.

The SAS System DATASET : WORK.IO.DATA

VAR NAME TYPE SIZE AGRI NUM 8 INDUSTRI NUM 8 JASA NUM 8 Number of Variables: 3 Number of Observations: 3

Dengan tampilnya data WORK.IO pada Output 3.1 menunjukkan bahwa kita telah berhasil menciptakan data IO yang memiliki tiga buah variabel yang diberikan nama AGRI, INDUSTRI dan JASA. Jumlah pengamatan juga ada tiga. Semua variabel bertipe numerik.

DATA

DATA bertujuan untuk menciptakan sebuah nama SAS dataset yang baru.

Syntax:

DATA new_dataset;

dimana:

new_dataset adalah nama data SAS yang baru.

Contoh:

data hasil;

SET, berfungi untuk memanggil data SAS yang telah diimpor.

SET SAS-dataset;

dimana

SAS-dataset adalah nama dataset yang ditentukan atau yang dipanggil untuk digunakan selanjutnya.

Contoh: set work.io;

RUN;

RUN bertujuan mengakhiri suatu atau prosedur. Tanpa adanya RUN maka pada saat melakukan running, atau prosedur yang telah dituliskan tidak akan dilaksanakan, tetapi tidak berlaku untuk prosedur PROC IML. Contoh penulisannya adalah dengan mengetikkan RUN.

Sebagai contoh agar pembaca lebih mudah memahaminya, kita akan gunakan kembali contoh matriks Z sebelumnya, dengan menuliskan kembali ketiga terakhir sebagai berikut:

options nodate nonumber;

proc iml;

reset autoname;

z = {10 14 38, 11 12 14, 18 19 20};

kolom={Agri Industri Jasa};

create io from z [colname=kolom];

append from z;

show contents;

data hasil;

set work.io;

run;

Dengan menekan tombol F8, maka rangkaian progam di atas akan menghasilkan output seperti yang terlihat pada Ouput 3.1 sebelumnya.

Perhatikan bahwa data yang ada tidak dicetak pada lembar kerja OUTPUT.

Pertanyaannya adalah:

1. Dimana nama dataset IO dan HASIL disimpan?

Jawaban: Kedua dataset tersebut disimpan pada library WORK secara otomatis (lihat pertanyaan 3).

2. Apakah data disimpan secara permanen atau tidak?

Jawaban: Kedua dataset tersebut disimpan tidak permanen 3. Bagaimana saya dapat melihat dataset IO dan HASIL?

Jawaban: Klik Globals + Klik Access + Klik Display Libraries atau lebih cepat dengan malakukan

Klik pada Toolbars

Sehingga kotak dialog libraries akan muncul seperti yang terlihat pada Gambar 3.1. berikut ini:

Gambar 3.1. Kotak Dialog Libraries

Setaleh muncul kotak dialog libraries, selanjutnya anda dapat klik WORK pada menu Libraries sehingga libraries WORK akan menampilkan dataset IO dan HASIL yang tertera pada Library Contents seperti yang terlihat pada Gambar 3.1.

Untuk menampilkan kandungan data IO dan HASIL maka klik dua kali (double klick) pada salah satu data IO atau HASIL. Misalnya dalam hal ini kita double klik pada data HASIL, sehingga program SAS akan menampilkan dataset HASIL pada VIEWTABLE seperti yang terlihat pada Gambar 3.2.

Hal yang sama dapat anda lakukan dengan dataset IO. Namun kedua dataset IO dan HASIL mempunyai nilai yang sama. Tujuan kita menggunakan CREATE di atas adalah untuk menghasilkan satu atau lebih dataset yang selanjutnya dapat diekspor kedalam bentuk program microsoft excell.

Gambar 3.2. Kotak dialog VIEWTABLE WORK.HASIL

4. Dapatkan saya ekspor data HASIL yang ada di VIEWTABLE ini kedalam bentuk bentuk lembar kerja Microsoft EXCEL.

Jawaban: Dapat (lebih jelas lihat Bab 10)

5. Kita tentu berpikir panjang, bahwa terlalu lama proses yang digunakan jika hanya untuk melihat data yang ada di dalam dataset, dapatkah kita melihat data secara cepat ?

Jawaban: Dapat ?

Caranya dengan menggunakan prosedur PROC PRINT, berikut adalah yang sesuai untuk menampilkan isi dataset HASIL ke layar OUTPUT, yaitu:

proc print data=hasil;

run;

Klik tombol di Toolbars atau tekan tombol F8 pada keyboard untuk menjalankan program. Hasil program ditampilkan pada Output 3.2. berikut

Output 3.2

The SAS System

OBS AGRI INDUSTRI JASA

1 10 14 38 2 11 12 14 3 18 19 20

Dalam dokumen Aplikasi Keseimbangan Umum.pdf (Halaman 36-55)

Dokumen terkait