modul matlab dan sas_ini

Upload: rindang08

Post on 19-Oct-2015

845 views

Category:

Documents


16 download

TRANSCRIPT

  • BAB I Pengantar Software Matlab 1.1 Apa itu Matlab ?

    Matlab atau Matrix Laboratory adalah perangkat lunak (software) produksi The MathWorks,Inc, yang memadukan kemampuan perhitungan, pencitraan, dan pemograman dalam satu paket. Matlab dapat digunakan untuk analisis dan komputasi numerik. Hal ini dikarenakan bahasa pemrograman dibentuk dengan dasar pemikiran menggunkan sifat dan bentuk matriks (berbasis pada matriks) . Pada awalnya, program ini merupakan interface untuk koleksi rutin-rutin numerik dari proyek LINPACK dan EISPACK, dan dikembangkan menggunkan bahasa FORTRAN. Namun The MathWorks,Inc kemudian mengembangankannya dengan menggunakan bahasa C++ dan assembler (utamanya untuk fungsi-fungsi dasar Matlab).

    Matlab telah berkembang menjadi sebuah environment pemrograman yang canggih yang berisi fungsi-fungsi built-in untuk melakukan tugas pengolahan sinyal, aljabar linier, dan kalkulasi matematis lainnya. Matlab juga berisi toolbox yang berisi fungsi-fungsi tambahan untuk aplikasi khusus. Matlab bersifat extensible, artinya seorang user atau pengguna dapat menulis fungsi baru untuk ditambahkan pada library ketika fungsi-fungsi built-in yang tersedia tidak dapat melakukan tugas tertentu. Matlab sering digunakan untuk teknik komputasi numerik, yang digunakan untuk menyelesaikan masalah-masalah yang melibatkan operasi matematika elemen, matrik, optimasi, aproksimasi dll. Sehingga Matlab banyak digunakan pada :

    Matematika dan Komputansi Pengembangan dan Algoritma Pemrograman modeling, simulasi, dan pembuatan Analisa Data , eksplorasi dan prototipe visualisasi Analisis numerik dan statistik Pengembangan aplikasi teknik

    1.2 Lingkungan Kerja Matlab

    Secara garis besar lingkungan kerja Matlab terdiri atas beberapa unsur seperti pada Gambar 1. Adapun penjelasannya sebagai berikut.

    1. Command window Command window atau dapat disebut layar kendali, merupakan window yang

    dibuka pertama kali setiap kali Matlab dijalankan. Pada command window dapat dilakukan akses-akses ke command-command Matlab dengan cara mengetikkan barisan-barisan ekpresi Matlab, seperti mengakses help window dan lain-lainnya. Selain itu, command windows juga digunakan untuk memanggil toolMatlab seperti editor, debugger atau fungsi. Ciri dari window ini adalah adanya prompt (>>) yang menyatakan matlab siap menerima perintah. Perintah dapat berupa fungsi-fungsi pengaturan file (seperti perintah DOS/UNIX) maupun fungsi-fungsi bawaan/toolbox MATLAB sendiri. Berikut ini beberapa fungsi pengaturan file dalam MATLAB : dir / ls : untuk melihat isi dari sebuah direktori aktif. cd : untuk melakukan perpindahan dari direktori aktif. pwd : untuk melihat direktori yang sedang aktif

  • mkdir : untuk membuat sebuah direktori what : untuk melihat nama file m dalam direktori aktif who : untuk melihat variabel yang sedang aktif whos : untuk menampilkan nama setiap variabel delete : untuk menghapus file clear : untuk menghapus variabel clc : untuk membersihkan layar doc : untuk melihat dokumentasi The MathWorks, Inc. dalam forma html secara online. demo : untuk mencoba beberapa tampilan demo yang disediakan oleh Matlab

    2. Workspace Workspace biasa disebut rak data yang berfungsi sebagai tempat untuk menyimpan

    secara otomatis harga dari variabel yang telah didefinisikan pada command window.

    Gambar 1 Ruang Lingkup Matlab

    3. Command history Command history dapat disebut sebagai layar pengingat. Fungsin command history

    sebagai tempat untuk menyimpan secara otomatis perintah-perintah yang telah didefinisikan/diketikkan pada command window.

    4. M-file atau MATLAB Editor/Debugger (Editor Pencarian Kesalahan) Window ini merupakan tool yang disediakan oleh Matlab (minimal seri 5 keatas).

    M-file berfungsi sebagai editor script Matlab. Walaupun sebenarnya script ini untuk pemrograman Matlab, namun M-file juga dapat diganti menggunakan editor yang lain seperi notepad, wordpad atau microsoft word. M-file akan dibahas lebih lanjut pada subbab selanjutnya.

    1.2 Memulai Matlab

    Command Window Jendela utama Matlab, untuk mengetikkan perintah dan menampilkan hasilnya.

    Workspace Tempat yang menyimpan otomatis harga variabel

    Command History Tempat yang menyimpan otomatis yang sudah diketikkan di command window

    Menu Icon

  • Memulai Matlab dapat dilakukan dengan mengklik shortcut pada dekstop Windows komputer. Gambar 1 merupakan tampilan awal pada Matlab yang baru saja di buka. Gambar 1 merupakan tampilan Matlab yang dipakai pada operating system Windows. Beberapa hal yang perlu diperhatikan sebelum memulai menggunakan Matlab. Hal-hal tersebut antara lain : >> Tanda ini adalah default Matlab prompt. Semua perintah yang akan dieksekusi

    Pada command windows ditulis sesudah tanda prompt ini. Tanda titik tiga yang terletak pada akhir baris suatu perintah menunjukkan bahwa

    perintah selanjutnya akan dilanjutkan pada baris berikutnya. ; Tanda semicolon (titik koma) diakhir baris perintah digunakan untuk tidak menampilkan hasil perintah pada command window % Apabila teks ditulis setelah tanda ini, maka teks tersebut tidak akan dieksekusi (semua teks hanya dianggap sebagai komentar saja). Hal ini juga dibutuhkan,

    khusunya dalam hal pemrograman, karena komentar dapat berfungsi untuk memberitahu apa maksud dari suatu command (sebagai keterangan untuk program yang sudah ditulis). Apabila berganti baris, untuk memberi komentar tambahan

    harus diawali dengan tanda ini terlebih dahulu. ^C Biasanya disebut dengan Control C dan berfungsi untuk menghentikan eksekusi Matlab dan akan kembali lagi pada prompt >>. Selain empat tanda penting di atas, terdapat pula hal-hal yang perlu diketahui, yakni : a. Matlab merupakan software yang sensitif (case sensitive). Hal sensitif tersebut terletak

    pada pemberian nama pada variabel atau fungsi. Penggunakan huruf kapital (besar) dan huruf kecil harus diperhatikan karena huruf kecil a dengan huruf kapital A akan didefinisikan berbeda.

    b. Matlab tidak membutuhkan pernyataan dimensi untuk menuliskan suatu variabel. c. Nama pada variabel harus dimulai dengan huruf, tidak lebih dari 31 karakter, termasuk

    didalamnya huruf, angka, dan tanda underscore ( _ ). d. Matlab sudah memiliki beberapa nama variabel dan fungsi yang sudah terdefinisi (built-

    in variable and function). Oleh karena itu, hindari menggunakan nama yang sama. e. Notasi angka scientific (penulisan 10n) diekspresikan dengan huruf e, sebagai contoh

    10e-03 (merupakan penulisan untuk 10-3).

    1.3 Vektor dan Matrik pada Matlab Matlab adalah singkatan dari Matrix Laboratory, sehingga pemahaman terhadap konsep

    matrik harus memadai agar dapat memanfaatkan Matlab sebagai bahasa komputasi dengan maksimal. Definisi dari vektor yakni matrik yang hanya terdiri atas satu kolom atau satu baris saja. Sedangkan matrik terdiri dari beberapa kolom dan beberapa baris. Penulisan Vektor dan Matrik pada Matlab

    Gambar 4 akan dicontohkan beberapa vektor dan matrik. Pada Gambar 4 terdapat 5 matrik. A, D dan E merupakan vektor, sedangkan B dan C merupakan matrik. A dan D bisa disebut sebagai vektor baris, karena hanya terdiri dari satu baris saja. Berbeda halnya dengan vektor E yang disebut sebagai vektor kolom, karena hanya memiliki satu kolom saja. Matrik B berukuran 2 x 3 karena memiliki 2 baris dan 3 kolom. Sedangkan C berukuran 3 x 3, karena memiliki jumlah kolom dan baris yang sama, yakni tiga (3). Matrik C juga dapat disebut

  • sebagai matrik simetris, karena jumlah kolom sama dengan jumlah baris. Perhatikan Gambar 2, nampak bahwa ada tanda pisah antar elemen matrik. Tanda pisah tersebut adalah tanda koma (,), titik koma (;) dan tanda titik dua (:). Tanda koma (,) juga bisa diganti dengan spasi digunakan untuk memisahkan elemen-elemen pada satu baris. Sedangkan tanda titik koma (;) digunakan untuk memisahkan elemen-elemen pada satu kolom. Tanda titik dua (:) digunakan untuk memisahkan nilai minimum elemen matrik, nialai selisih antar elemen matrik dan nilai maksimum elemen matrik. Ambil contoh pada matrik D angaka 1 adalah nilai minimum dan angka 5 adalah nilai maksimum, sedangkan angka 2 adalah selisih antar elemen matrik. Oleh karena itu matrik D berisikan angka 1, 3 dan 5.

    Gambar 2 Penulisan Matrik dan Vektor Matrik Transisi

    Menentukan Ukuran Vektor dan Matrik

    Determinan Matrik

  • Invers Matrik

    Perlu diperhatikan, pada saat perhitungan invers matrik menggunakan Matlab

    terkadang memunculkan peringatan yang menyatakan bahwa matrik tersebut singular (tak wajar). Hal ini menandakan bahwa determinan matrik tersebut adalah nol. Apabila matrik singular, maka untuk mencari invers matrik tersebut menggunakan Singular Value Decompotition (SVD).

    Matrik Khusus Matlab menyediakan berbagai command untuk membuat dan memanipulasi matriks

    secara efisien. Di antaranya ialah command untuk membuat matriks-matriks khusus, seperti matriks Identitas (I), Matrik nol (0), Matrik satuan (1). Berikut ini adalah syntax beberapa matrik khusus pada Matlab. ones(n) membuat matriks satuan (semua elemennya berisi angka 1) berukuran nn ones(m,n) membuat matriks satuan (semua elemennya berisi angka 1) berukuran mn zeros(n) membuat matriks nol (semua elemennya berisi angka 0) berukuran nn zeros(m,n)membuat matriks nol berukuran mn eye(n) membuat matriks identitas berukuran nn (semua elemen diagonal

    bernilai 1, sementara lainnya bernilai 0). rand(n) membuat matriks nn, atau mn, berisi bilangan random terdistribusi rand(m,n) uniform pada selang 0 s.d. 1. randn(n), membuat matriks nn, atau mn, berisi bilangan random terdistribusi randn(m,n) normal dengan mean = 0 dan varians = 1. [] matriks kosong, atau dengan kata lain matriks 00; biasa digunakan untuk

    mendefinisikan variabel yang belum diketahui ukurannya. Aljabar Matrik

    Operasi aljabar matrik maupun skalar menggunakan simbol yang tidak jauh berbeda. Berikut ini hirarki operasi aljabar dalam Matlab: ^ Pangkat + Penambahan * Perkalian - Pengurangan

  • / Pembagian matrik kanan (mis: B/A = B*inv(A)) \ Pembagian matrik kiri (mis: A\B = inv(A)*B)

    Operasi penjumlahan dan pengurangan pada matrik hanya dapat dilakukan jika matrik-matrik yang akan dijumlahkan atau dikurangkan memiliki orde sama (berukuran sama). Untuk perkalian matrik syaratnya adalah jumlah kolom harus sama dengan jumlah baris. Pada perkalian matrik tidak berlaku asumsi (ABBA). Untuk pembagian ada dua perhitungan, yakni pembagian matrik kanan dan matrik kiri. Pembagian matrik kanan berlaku aturan sebagai berikut.

    xA=c x=cA-1 x=c/A

    Pembagian matrik kiri berlaku aturan sebagai berikut. Ax=c x=A-1c x=A\c

    Menyimpan perintah dan output pada Command Diary

    Apabila perintah-perintah yang sudah diketikkan dan hasil yang ditampilkan pada layar command window akan disimpan, maka dapat dilakukan dengan menggunkan command diary. Sebagai contoh apabila output dari matrik A akan disimpan di direktori c:\backup dengan nama file mydata.txt, maka pada command window diketikkan

    diary 'c:\backup\mydata.txt' dan jika ingin menutup file ini maka ketikkan perintah di bawah pada command window.

    diary off Latihan: Diberikan data variabel Y, X1 dan X2 sebagai berikut : X1 130 174 134 191 165 194 143 186 139 188 175 156 190 178 132 148

    X2 190 176 205 210 230 192 220 235 240 230 200 218 220 210 208 225

    Y 35.0 81.7 42.5 98.3 52.7 82.0 34.5 95.4 56.7 84.4 94.3 44.3 83.3 91.4 43.5 51.7

    Apabila data tersebut dimodelkan menggunakan parameter regresi, hitunglah taksiran parameter model regresi tersebut ! Langkah-langkah : a. Membuat Matrik X dan Y b. Membuat matrik XT

    c. Membuat matrik XTX dan XTY d. Membuat matrik (XTX)-1

    e. Membuat matrik (XTX)-1 XTY 1.4 Matlab help window

    Matlab menyediakan sistem help yang dapat diakses dengan perintah help. Misalnya, untuk memperoleh informasi mengenai fungsi elfun yaitu fungsi untuk trigonometri, eksponensial, complex dan lain-lain, maka hanya perlu mengetikkan perintah berikut :

    help elfun

  • dan kemudian menekan enter maka di layar akan muncul informasi dalam bentuk teks pada layar Matlab yaitu : Elementary math functions. Trigonometric. sin - Sine. sinh - Hyperbolic sine. asin - Inverse sine. asinh - Inverse hyperbolic sine. cos - Cosine. cosh - Hyperbolic cosine. acos - Inverse cosine. acosh - Inverse hyperbolic cosine. tan - Tangent. tanh - Hyperbolic tangent. atan - Inverse tangent. atan2 - Four quadrant inverse tangent. atanh - Inverse hyperbolic tangent. sec - Secant. sech - Hyperbolic secant. asec - Inverse secant. asech - Inverse hyperbolic secant. csc - Cosecant. csch - Hyperbolic cosecant. acsc - Inverse cosecant. acsch - Inverse hyperbolic cosecant. cot - Cotangent. coth - Hyperbolic cotangent. acot - Inverse cotangent. acoth - Inverse hyperbolic cotangent.

    Exponential. exp - Exponential. log - Natural logarithm. log10 - Common (base 10) logarithm. log2 - Base 2 logarithm and dissect floating point number. pow2 - Base 2 power and scale floating point number. sqrt - Square root. nextpow2 - Next higher power of 2. Complex. abs - Absolute value. angle - Phase angle. complex - Construct complex data from real and imaginary parts. conj - Complex conjugate. imag - Complex imaginary part. real - Complex real part. unwrap - Unwrap phase angle. isreal - True for real array. cplxpair - Sort numbers into complex conjugate pairs.

  • Rounding and remainder. fix - Round towards zero. floor - Round towards minus infinity. ceil - Round towards plus infinity. round - Round towards nearest integer. mod - Modulus (signed remainder after division). rem - Remainder after division. sign - Signum.

    Selain fungsi elfun terdapat pula beberapa fungsi statistik seperti mean, median, varian, dan standar deviasi. Adapun perintahnya adalah sebagai berikut. mean perintah untuk mengetahui rata-rata data median perintah untuk mengetahui nilai tengah data yang sudah diurutkan mode perintah untuk mengetahui nilai yang sering muncul pada data (modus) var perintah untuk mengetahui varians data std perintah untuk mengetahui standar deviasi data

    1.5 Membuat Grafik

    Grafik adalah bentuk visualisasi dari sebuah data. Grafik ada yang dua dimensi (visualilasi antara dua variabel) dan grafik tiga dimensi (visualilasi antara tiga variabel). Syntax untuk grafik dua dimensi (2D) adalah plot(x,y)dan untuk tiga dimensi (3D) syntaxnya adalah surf(x,y,z). Setiap grafik/gambar tersebut akan muncul pada figure window. Grafik tersebut bisa dicetak (diprint) melalui menu FilePrint (Ctrl+P), atau disimpan sebagai file FIG melalui menu FileSave (Ctrl+S), ataupun mengekspornya sebagai file JPG, EMF, BMP, dsb dengan memilih menu FileExport. Untuk menambahkan judul, label, dan grid ke dalam hasil plot dapat digunakan command sebagai berikut.

    Xlabel() memberi label pada sumbu-x ylabel() memberi label pada sumbu-y zlabel() memberi label pada sumbu-z title () memberi judul di atas area plot grid on memunculkan grid di dalam area plot grid off menghapus grid

    Ketika menggunakan command plot, gambar sebelumnya pada figure window akan terhapus. Lalu bagaimana jika kita ingin memplot beberapa fungsi dalam satu figure sekaligus? Dalam hal ini kita bisa digunkan command hold.

    hold on untuk menahan gambar sebelumnya supaya tak terhapus ketika ditimpa gambar baru

    hold off untuk menonaktifkan command hold Seperti contoh di bawah ini : >> clear >> x=linspace(0,5,500); >> y1=exp(-x); plot(x,y1); >> grid on >> hold on >> y2=exp(-0.5*x); plot(x,y2); >> y3=exp(-0.25*x); plot(x,y3);

  • >> y4=exp(-0.1*x); plot(x,y4); >> xlabel('sumbu-x'), ylabel('sumbu-y') >> title('Perbandingan fungsi eksponensial negatif')

    Gambar 3 Hasil Plot

    Anda mungkin ingin memplot beberapa fungsi dalam beberapa figure window yang terpisah, atau membagi satu window menjadi sejumlah area plot, ataupun mengatur properties dari plot yang akan digambar. Beberapa command di bawah ini bisa digunakan untuk tujuan tersebut.

    Figure menciptakan figure window baru yang kosong dan siap untuk di-plot

    figure(k) untuk menduduki figure window nomor-k subplot(m,n,k) membagi figure window menjadi m-baris n-kolom

    area plot yang terpisah, dan menduduki area ke-k clf clear figure, mengosongkan figure window yang sedang

    diduduki plot(x,y,string) menciptakan plot 2-dimensi dari vektor x versus vektor y,

    dengan property yang ditentukan oleh string, sebagai berikut:

    Warna Jenis Garis Jenis Point b biru g hijau r merah c biru muda m ungu y kuning k hitam w putih

    - utuh : titik-titik -. titik-strip -- putus-putus

    . titik o lingkaran x tanda x + tanda + * tanda * s bujur sangkar d permata v segitiga ke bawah ^ segitiga ke atas < segitiga ke kiri > segitiga ke kanan p segilima h segienam

    Sebagai contoh :

  • plot(x,y,r-) memplot x versus y dengan garis utuh warna merah plot(x,y,k*) menempatkan tanda * warna hitam untuk setiap titik x versus y. plot(x,y,g--s) memplot dengan garis putus-putus warna hijau dan menempatkan tanda bujur sangkar di setiap titik x versus y. Perlu diingat bahwa string dalam plot bersifat opsional. Apabila tidak dituliskan maka digunakan garis utuh warna biru. plot(x1,y1,string1,x2,y2,string2,x3,y3,string3, ... )

    menciptakan sejumlah plot sekaligus dalam satu area plot: x1 versus y1 dengan property string1, x2 versus y2 dengan property string2, dan seterusnya

    legend(ket1,ket2,ket3, ...) menambahkan legenda ke dalam plot yang telah dibuat; ket1 untuk plot pertama, ket2 untuk plot kedua, dan seterusnya

    Sebagi contoh perhatikan syntax berikut ini ; >> figure >> t=0:0.05:10; >> sinus=sin(2*pi*0.25*t); >> cosinus=cos(2*pi*0.25*t); >> kotak=square(2*pi*0.25*t); >> gigi=sawtooth(2*pi*0.25*t); >> subplot(2,2,1); >> plot(t,sinus), title('sinus 1/4 Hz') >> subplot(2,2,2); >> plot(t,cosinus), title('cosinus 1/4 Hz') >> subplot(2,2,3); >> plot(t,kotak), title('kotak 1/4 Hz') >> subplot(2,2,4); >> plot(t,gigi), title('gigi gergaji 1/4 Hz')

    Gambar 4 Hasil Plot dengan 4 plot yang berbeda

    1.6 Flow Control pada Matlab

  • Seperti halnya bahasa program pada umumnya, kita bisa mengendalikan arah program dengan berbagai cara, berupa percabangan arah program berdasarkan kondisi tertentu, ataupun loop (perhitungan berulang) ketika kita melakukan iterasi. Statement if elseif else end

    Merupakan statement untuk percabangan program berdasarkan satu/beberapa kondisi tertentu. Sintaks yang digunakan dalam Matlab meliputi:

    Selain itu, dimungkinkan pula membuat pernyataan if di dalam pernyataan yang lain (disebut nested-if), misalkan:

    Statement switch case

  • Merupakan alternatif dari statement if elseif else end. Sintaksnya ialah:

    Statement for end

    Statement while end

    Statement break dan return

    Ketika kita sudah berada dalam suatu loop, kita bisa keluar dengan break tanpa menunggu nilai_akhir tercapai, atau tanpa menunggu kondisi loop tidak dipenuhi lagi. Sementara, return digunakan untuk keluar dari fungsi yang sedang berjalan. Berikut ini gambarannya dalam kasus penentuan apakah suatu bilangan bersifat prima atau tidak.

    Algoritma yang akan digunakan ialah sebagai berikut: User memasukkan satu bilangan bulat positif N sebagai argumen input. Apabila N bukan bilangan bulat positif, maka perhitungan tidak dilanjutkan, dan

    digunakan return untuk keluar. N kita coba-coba bagi dengan 2, 3, 4, 5, dst. dengan loop. Apabila satu waktu

    ditemukan N habis terbagi, berarti N bukan bilangan prima. Selanjutnya kita langsung keluar loop dengan break dan menampilkan hasilnya di layar.

    Apabila N tidak pernah habis dibagi oleh 2, 3, 4, , N/2 (sampai loop selesai), maka N pasti bilangan prima. Selanjutnya kita tampilkan di layar dan program selesai.

    Untuk mengetahui apakah N habis terbagi atau tidak, kita bisa menggunakan fungsi rem(N,pembagi).

    1.7 M-file

  • Untuk mengakses window M-file ini dapat dilakukan seperti pada Gambar 5. Adapun penjelasan Gambar 5 sebagai berikut:

    1. Pilih Menu File kemudian pilih New 2. Pilih M-file, maka MATLAB akan menampilkan editor window seperti Gambar 6.

    Gambar 5 Tahapan mengakses windows M-file

    Selain dengan cara di atas, untuk menampilkan editor M-file juga dilakukan dengan menuliskan edit pada command window atau dengan cara mengklik shortcut/icon pada pojok kiri desktop Matlab.

    Gambar 3 Tampilan Windows M-File (Matlab Editor)

    Sementara itu, untuk menyimpan M-file, dapat dilakukan dengan memilih menu: FileSave atau FileSave As; ataupun dengan mengklik ikon yang ada. M-File sebagai Skrip Program

    Pada bagian ini, M-file digunakan untuk menjalankan sederetan command yang kita tuliskan sebagai skrip. Mari kita mulai dengan skrip sederhana untuk menghitung rata-rata dari lima bilangan. File ini kita namakan rata.m.

    Memulai, membuka dan menyimpan File

    Icon editing

    Print Mencari teks

    Icon de-buging

  • Bukalah M-file baru lalu ketikkan skrip berikut ini. % Program sederhana untuk menghitung % rata-rata 5 bilangan: % rata_rata.m a = 50; b = 100; c = 150; d = 200; e = 250; % Menghitung dan menampilkan rata-rata hasil = (a + b + c + d + e)/5; hasil Simpanlah file ini di dalam direktori Matlab\work dengan nama rata.m. Sekarang cobalah jalankan dari command window. Sebelumnya pastikan bahwa direktori menunjuk ke Matlab\work dengan merlihat pada Current Directory yang ada di jendela utama Matlab. Kita bisa mengubah direktori yang sedang aktif melalui drop-down menu ataupun melalui browse seperti pada Gambar 7.

    Gambar 7 Memilih directory untuk menjalankan M-file

    Pada saat menjalankan M-file pada command window jangan lupa mengetikkan perintah clear dan clc. Hal ini bertujuan untuk menghapus history variabel sebelumnya. >> clear >> clc >> rata_rata hasil =

    150

    M-File sebagai Fungsi Program Sebagai skrip program, jika kita ingin mengubah/mengatur parameter masukan

    program, maka harus kita lakukan di dalam editor. Padahal seringkali kita harus menjalankan satu program/algoritma berulang kali dengan nilai masukan yang berbeda-beda, misalkan

    Menunjukkan directory yang sedang aktif

    Drop-down menu

    browse

  • dalam proses iterasi atau optimasi. Untuk keperluan ini, kita bisa menuliskan M-file sebagai suatu fungsi spesifik sesuai kebutuhan kita.

    Dalam setiap fungsi terdapat tiga unsur yakni ; 1. Parameter masukan, dalam hal ini kita sebut sebagai argument input. Jumlah parameter

    (argumen) tersebut bisa sebarang (satu, dua, sepuluh, atau tidak ada argumen input sama sekali). Jenis argumen pun sebarang (variabel, bilangan ataupun teks).

    2. Proses di dalam program, berupa sederetan command untuk menjalankan suatu algoritma tertentu.

    3. Parameter keluaran; atau argument output yang jumlah dan jenisnya sebarang. Deklarasi fungsi di M-file harus dilakukan pada baris awal dengan sintaks:

    %Fungsi untuk menghitung segi-3 siku-siku: segitiga.m %Untuk menghitung sisi miring, luas, dan keliling function [Sisi_C,Luas,Kll] = segitiga(Sisi_A,Sisi_B) % Menghitung sisi miring Sisi_C = sqrt(Sisi_A^2 + Sisi_B^2); % Menghitung luas segitiga Luas = 1/2* Sisi_A * Sisi_B; % Menghitung keliling Kll = Sisi_A + Sisi_B + Sisi_C; Lalu simpan dengan nama segitiga.m. Sekarang Anda panggil fungsi tersebut. >> clear >> [Hyp,Area,Circum]=segitiga(12,16) Hyp = 20 Area = 96 Circum = 48 1.7 Display dan Input

    Adakalanya kita membutuhkan interaksi dengan pengguna program untuk memasukkan parameter tertentu di awal/tengah program. Dalam hal ini kita bisa pergunakan cara sederhana dengan command input. Sementara command disp digunakan untuk menampilkan teks di layar. Misalkan kita akan membuat program untuk menghitung jumlah kombinasi team basket yang mungkin dari sejumlah mahasiswa. % Program menghitung kombinasi : hit_komb.m % untuk menghitung jumlah kombinasi % dari sejumlah populasi % Menampilkan judul program clc; disp(Menghitung Kombinasi); disp(---------------------); % Meminta masukan dari user n = input(Berapa jumlah mahasiswa yang ada? : );

  • r = input(Berapa jumlah personel satu team? : ); % Menghitung kombinasi kombinasi = factorial(n)/factorial(r)/factorial(n-r); % Menampilkan keluaran disp(Jumlah kombinasi yang ada = ,kombinasi); Kita coba jalankan program tersebut: >> hit_komb Menghitung Kombinasi --------------------- Berapa jumlah mahasiswa yang ada? : 8 Berapa jumlah personel satu team? : 5 Jumlah kombinasi yang ada =

    56

  • BAB II Pengantar Software SAS

    SAS (Statistical Analysis System) adalah program komputer untuk analisis statistika yang dikembangkan oleh perusahaan SAS Institute. SAS dapat digunakan untuk melakukan analisis statistika, manipulasi data, serta membuat tabel dan grafik untuk meringkas data. Beberapa analisis statistika yang dapat dilakukan pada SAS meliputi analisis varians, regresi, analisis data kategori, analisis multivariat, analisis cluster, analisis nonparametrik, model linier umum, analisis korespondensi, dan persamaan struktural. Manipulasi data pada SAS meliputi recoding data, menghitung variabel baru dari variabel-variabel lama, menggabungkan dan mengumpulkan himpunan data, himpunan bagian (subset), dan melakukan pemrosesan dengan kondisi tertentu. 2.1. Memulai SAS

    Terdapat dua cara untuk memulai SAS, yaitu pertama klik start kemudian klik SAS atau dengan cara yang kedua yaitu double klik icon SAS pada desktop sehingga akan muncul window utama dari SAS, seperti berikut.

    Gambar 2.1. Window Utama SAS

    Window utama SAS terdiri dari lima window, yaitu: 1. Window result, untuk melihat, menyimpan atau mengapus output SAS 2. Window explorer untuk mengatur library dan file SAS 3. Window editor atau enhanced program editor, untuk menulis, meng-edit dan submit

    program SAS. 4. Window output untuk melihat output dari program SAS. Jendela ini akan aktif setelah

    program telah dijalankan dan ada hasil yang ditampilkan

  • 5. Window Log untuk melihat tempat jalannya program yang di-running, serta menampilkan pesan (message) seperti error dan warning messages

    2.2. Bahasa Pemrograman SAS Perlu diingat bahwa semua command atau perintah SAS harus diakhiri dengan semicolon

    (;) sebagai command terminator dalam SAS untuk menandai akhir suatu command. Jika tidak ada (;) maka SAS akan menggabungkan syntax baris berikutnya dengan syntax baris sebelumnya sebagai satu command. Hal ini merupakan sumber kesalahan yang sering terjadi dalam pemrograman SAS. Perintah SAS dikatagorikan menjadi empat, tergantung kegunaan dari program tersebut, yaitu: 1. Data step yaitu tahapan pengorganisasian data dengan membaca atau membuat sebuah

    gugus data dalam SAS 2. Proc step yaitu tahapan analisis yang terdiri atas satu atau lebih statement SAS 3. Perintah atau statement yang dapat digunakan pada data dan proc step. 4. Global statement yang dapat diaplikasikan di semua step, seperti title.

    Tahap data dan proc, umumnya perintah diawali dengan data dan proc serta diakhiri dengan run. Pada window editor, biasanya terdapat indikator visual untuk awal dan akhir dari step (data, proc, dan run) yaitu biru tua. Sedangkan warna biru juga digunakan pada kata kubci lainnya. Global statement dapat diletakkan dimana saja.

    2.3. Membaca dan Menyusun Data dalam SAS

    Terdapat beberapa cara untuk memanggil dan menyusun data, yaitu membaca data melalui statemen in-stream data (terdapat dalam program editor), serta membaca dan memasukkan data melalui menu SAS. Berikut ini penjelasan dari tiga cara tersebut.

    2.3.1. Memasukkan dan Membaca Data Melalui Editor

    Salah satu cara yang umum digunakan untuk memasukkan data dalam SAS adalah dengan mengetik data secara langsung dalam syntax SAS. Pendekatan ini memadai untuk data berukuran relatif kecil. Terdapat tiga cara untuk menginput, yaitu: 1. List input

    Biasanya digunakan ketika data yang akan di-input dipisahkan minimal satu, contoh 3.1.

    data scores; input Name$ Test_1 Test_2 Test_3; datalines; Bill 187 97 103 Carlos 156 76 74 Monique 99 102 129 ; RUN; title "score class 2-5"; PROC print DATA=scores; run;

    Syntax diatas menunjukkan statemen data digunakan untuk membuat data set yang diberi nama scores. Jika data set tersebut ingin disimpan pada library work, maka statemennya ialah data work.scores. Jika menambahkan library, maka data scores tersebut disimpan dalam library work. Terdapat tiga library pada SAS yaitu SASHELP, SASUSER, dan WORK. Selain itu dapat juga membuat library sendiri dengan statemen LIBNAME

  • nama_library. Statemen input mendefinisikan variabel yang akan dibaca dalam tiap baris data, pada contoh diatas, variabel yang digunakan adalah name, Test_1, Test_2, dan Test_3. Tanda dolar ($) setelah variabel name menunjukkan bahwa tipe data ialah text. Statemen datalines menunjukkan bahwa statemen tahapan data telah selesai dan baris berikutnya akan berisi data. Selain menggunakan statemen datalines, dapat digunakan juga statemen cards. Kemudian untuk memberi judul maka menggunakan statemen title, dalam contoh title-nya ialah score class 2-5. Statemen PROC print digunakan untuk menprint data scores. Untuk merunning maka klik run > submit atau klik icon pada toolbar.

    Gambar 2.2. Langkah Me-running pada SAS

    Sehingga di window output akan tampil seperti berikut.

    score class 2-5 Obs Name Test_1 Test_2 Test_3 1 Bill 187 97 103 2 Carlos 156 76 74 3 Monique 99 102 129

    2. Column input

    Pada cara ini, akan ditentukan berapa karakter yang digunakan untuk masuk kedalam setiap variabelnya. Contoh 3.2.

    data scores; input Name$ 1-7 Test_1 9-11 Test_2 13-15 Test_3 17-19; datalines; Bill 187 97 103 Carlos 156 76 74 Monique 99 102 129 ; RUN; title "score class 2-5"; PROC print DATA=scores; run;

    Pada contoh 3.2, setelah nama variabel diberikan range karakter yang digunakan. Variabel nama merupakan dari karakter ke 1 sampai ke 9, variabel test_1 merupakan data pada karakter ke 9 sampai ke 11, dan seterusnya untuk variabel test_2 dan test_3. Tampilan output contoh 3.2, akan sama dengan contoh 3.1.

  • 3. Formatted input Biasanya digunakan ketika membaca angka yang terdapat simbol seperti tanggal. Contoh 3.3.

    data total_sales; input Date mmddyy10. +2 Amount comma5.; datalines; 09/05/2000 1,382 10/19/2000 1,235 11/30/2000 2,391 ; RUN; title "total sales in April 2013"; PROC print DATA=total_sales; run;

    pada contoh 3.3, mmddyy10 merupakan format untuk tanggal dimana tidak dipedulikan tanda slash. +2 merupakan pinter control yang memerintahkan SAS untuk melihat item selanjutnya. Sedangkan untuk membaca file, SAS dapat membaca file pada empat lokasi, yaitu:

    1. Membaca data yang telah dimasukkan seperti yang dijelaskan sebelumnya. 2. Membaca file yang telah ditetapkan menggunakan statemen INFILE

    Jika telah ada data yang disimpan dalam bentuk .dat, maka tidak perlu membawa data tersebut ke dalam file stream atau menginput sesuai dengan yang telah dijelaskan sebelumnya. Gunakan statemen INFILE untuk memanggil data tersebut. Selain menggunakan INFILE, dapat menggunakan statemen FILE ataupun FILENAME. Terdapat beberapa format statemen INFILE yang tergantung oleh operating environment dari komputer atau PC yang dapat ditabelkan seperti berikut.

    Tabel 2.1. Format Statemen INFILE

    Contoh 3.4.

    data scores; infile 'your-input-file'; input Name$ 1-7 Test_1 9-11 Test_2 13-15 Test_3 17-19; run; PROC print DATA=scores; run;

    pada contoh diatas, statemen 'your-input-file' setelah statemen infile menunjukkan bahwa telah kita input sebelumnya. Sedangkan jika telah ada maka dapat langsung di panggil.

  • 3. Membaca data dari data yang telah ada pada SAS Terdapat 4 statemen yang dapat digunakan untuk memanggil data yang telah ada pada SAS, yaitu SET statemen MERGE statemen MODIFY statemen UPDATE statemen

    4. Membaca data dalam bentuk database management system (DBMS). Jika data telah diinput kedalam file dbms. Salah satu syntax yang dapat digunakan ialah proc import, berikut ini format syntax

    PROC IMPORT DATAFILE="filename" | TABLE="tablename" OUT=SAS-data-set ;

    Sedangkan data dapat disimpan dari beberapa sumber yang dapat ditabelkan seperti berikut:

    Tabel 2.2. Sumber File dan Identifier Identifier Input Data Source Extension Host Availability

    ACCESS Microsoft Access 2000 or 2002 table .mdb Microsoft Windows *

    ACCESS97 Microsoft Access 97 table .mdb Microsoft Windows * ACCESS2000 Microsoft Access 2000 table .mdb Microsoft Windows * ACCESS2002 Microsoft Access 2002 table .mdb Microsoft Windows * ACCESSCS Microsoft Access table .mdb UNIX

    CSV delimited file (comma-separated values) .csv OpenVMS Alpha, UNIX, Microsoft Windows

    DBF dBASE 5.0, IV, III+, and III files .dbf UNIX, Microsoft Windows

    DLM delimited file (default delimiter is a blank) .* OpenVMS Alpha, UNIX, Microsoft Windows

    EXCEL Excel 2000 or 2002 spreadsheet .xls Microsoft Windows * EXCEL4 Excel 4.0 spreadsheet .xls Microsoft Windows EXCEL5 Excel 5.0 or 7.0 (95) spreadsheet .xls Microsoft Windows EXCEL97 Excel 97 or 7.0 (95) spreadsheet .xls Microsoft Windows * EXCEL2000 Excel 2000 spreadsheet .xls Microsoft Windows * EXCELCS Excel spreadsheet .xls UNIX JMP JMP table .jmp UNIX, Microsoft Windows PCFS Files on PC server .* UNIX

    TAB delimited file (tab-delimited values) .txt OpenVMS Alpha, UNIX, Microsoft Windows

    WK1 Lotus 1-2-3 Release 2 spreadsheet .wk1 Microsoft Windows

    WK3 Lotus 1-2-3 Release 3 spreadsheet .wk3 Microsoft Windows

    WK4 Lotus 1-2-3 Release 4 or 5 spreadsheet .wk4 Microsoft Windows

    Berikut ini contoh 3.5 memanggil data dari excel yang tersimpan pada D:\BELAJARSAS\ dengan nama file DAFTAR_PEGAWAI_1.xls.

  • Proc import datafile="D:\BELAJARSAS\DAFTAR_PEGAWAI_1.xls" out=DaftarPegawai dbms=excel2000 replace; run;

    2.3.2. Membaca Dan Memasukkan Data Melalui Menu SAS Langkah-langkah untuk memasukkan data memalui menu SAS ialah klik menu solutions

    > analyze > Interactve data Analysis, seperti gambar beriku.

    Gambar 2.3. Langkah-langkah Memasukkan Data Melalui Menu SAS

    Kemudian akan muncul window SAS/INSIGHT: Open, seperti berikut

    Gambar 2.4. Window SAS/INSIGHT: Open

    Pada window tersebut, terdapat pilihan open atau new, jika ingin membuka file yang sudah ada maka klik open, jika ingin memasukkan data baru maka klik new sehingga muncul window WORK.A seperti pada Gambar 2.5. Kemudian memasukkan data.

    Gambar 2.5. Window WORK.A

  • Kemudian cara menyimpannya ialah klik file> save > data, seperti pada gambar berikut.

    Gambar 2.6. Langkah-langkah Menyimpan Data dari SAS

    Kemudian muncul window Save Data seperti pada Gambar 2.7. Masukkan nama file kedalam data set:, dan klik OK.

    Gambar 2.7. Window Save Data

    2.4. Menyimpan Data Dalam Format Lain Salah satu syntax yang dapat digunakan untuk menyimpan data dalam bentuk lain ialah

    proc export, dimana format statemennya seperti berikut.

    PROC EXPORT DATA=SAS-data-set OUTFILE="filename" | OUTTABLE="tablename" ;

    2.5. Menyimpan Editor, Output, dan Grafik Untuk menyimpan editor, hal pertama yang perlu diperhatikan ialah aktifkan window

    editor. Tidak semua versi SAS dapat menyimpan editor. Editor pada SAS 9.1, dapat disimpan dengan mengklik file > save sehingga muncul kotak dialog Save as seperti pada Gambar 2.8. Kemudian isilah nama file pada file name dan klik Save.

    Gambar 2.8. Kotak dialog Save As dari Editor

  • Untuk menyimpan output, pertama lakukan klik window output untuk mengaktifkan window. Kemudian klik file > save pada menu SAS. Sehingga akan muncul kotak dialog Save As seperti berikut.

    Gambar 2.9. Kotak dialog Save As dari Output

    Pada gambar diatas dapat diketahui bahwa output dapat disimpan dalam berbagai tipe yang meliputi list file, SAS file, Log Files, Data Files, dan RTF file. Disarankan untuk menyimpan dalam RTF file karena dapat dibuka menggunakan Ms.Word.

    Sedangkan untuk menyimpan gambar, dapat dilakukan klik kanan pada gambar kemudian file > save as. Kemudian isikan nama file pada kotak file name dan klik save. Atau dapat pula dengan mengaktifkan window graph dan klik file > save as image pada menu SAS. Kemudian isikan nama dan klik save.

  • BAB III ARIMA dengan SAS

    Salah satu analisis data yang sering menggunakan SAS ialah ARIMA. Hal tersebut dikarenakan SAS memiliki kelebihan dibandingkan dengan program lainnya, yaitu SAS dapat mengestimasi lag-lag tertentu pada model ARIMA atau model additif pada ARIMA yang mengandung lag reguler dan lag musiman. Secara umum, model ARIMA(p, d, q)(P, D, Q)S dapat ditulis sebagai berikut.

    () () (1 ) (1 ) = 0 + () () dengan: = orde dari autoregressive = orde dari differencing = orde dari moving average = periode musiman = orde dari autoregressive musiman = orde dari differencing musiman = orde dari moving average musiman () = 1 1 22 () = 1 1 22 () = 1 1 22 () = 1 1 22 Terdapat empat langkah untuk mendapatkan nilai peramalan menggunakan metode ARIMA yang sesuai dengan metodologi Box-Jenkins, meliputi identifikasi, estimasi parameter, uji diagnostik, dan peramalan. Langkah-langkah tersebut dapat digambarkan seperti berikut:

    Gambar 3.1. Langkah-langkah ARIMA

    Contoh model ARIMA pada lag-lag tertentu ialah ARIMA([8],0,0), dengan catatan data

    tidak memiliki pola musiman. Sedangkan pada data yang memiliki pola musiman, terdapat tiga jenis model SARIMA (Seasonal ARIMA), yaitu subset SARIMA, multiplicative

  • SARIMA, dan Additive SARIMA. Berikut ini merupakan contoh dan besarnya PACF untuk membedakan ketiga model SARIMA yang dapat ditabelkan seperti berikut:

    Tabel 3.1. Perbedaan Tiga Model SARIMA Model Contoh PACF

    Subset SARIMA ARIMA(0,0,[1,12,13]) Lag yang memiliki nilai ialah 1, 11, 12, dan 13, dengan 1 11 12 13, dan = 0, = yang lainnya

    Multiplicative SARIMA ARIMA(0,0,1)(0,0,1)

    12 Lag yang memiliki nilai ialah 1, 11, 12, dan 13, dengan 1 11 12, 11 = 13, dan = 0, = yang lainnya

    Additive SARIMA ARIMA(0,0,[1,12])

    Lag yang memiliki nilai ialah 1, 11, 12, dengan 1 11 12, dan = 0, = yang lainnya

    Procedure ARIMA pada SAS dapat melakukan identifikasi, estimasi parameter, dan

    peramalan model ARIMA (Box-Jenkins), model ARIMA dengan pola musiman, model fungsi transfer, dan model intervensi. Prosedure ARIMA pada SAS memiliki beberapa komponen yaitu:

    Model ARIMA (Box-Jenkins) yang seutuhnya dengan tidak ada batasan orde dari proses autoregressive atau moving average

    Model identifikasi meliputi: o autocorrelation function (ACF) o partial autocorrelation function (PACF) o inverse autocorrelation function (IACF) o cross-correlation function (CCF), digunakan pada transfer function o extended sample autocorrelation function o minimum information criterion for model identification o squared canonical correlations

    Uji stasionaritas ialah unit root test Deteksi outlier intervention analysis regresi dengan eror ARMA model fungsi transfer dengan fully general rational transfer functions model ARIMA musiman model ARIMA yang berdasarkan interpolasi dari missing values beberapa metode estimasi parameter, yaitu exact maximum likelihood, conditional

    least squares, dan exact nonlinear unconditional least squares peramalan kedepan dan ramalan interval untuk semua model forecasting tied to parameter estimation methods: finite memory forecasts for models

    estimated by maximum likelihood or exact nonlinear least squares methods and infinite memory forecasts for models estimated by conditional least squares

    beberapa statistika diagnosa model yang meliputi: Akaike's information criterion (AIC), Schwarz's Bayesian criterion (SBC or BIC), Box-Ljung chi-square test statistics for white noise residuals, autocorrelation function of residuals, partial

  • autocorrelation function of residuals, inverse autocorrelation function of residuals, dan automatic outlier detection

    Berikut ini merupakan pembahasan model ARIMA dari data penumpang airline pada Series G in Box and Jenkins (1976) yang meliputi identifikasi, estimasi parameter, uji diagnostik, dan peramalan. Berikut ini merupakan syntax untuk menginput data penumpang airlines.

    title1 'International Airline Passengers'; title2 '(Box and Jenkins Series-G)'; data seriesg; input x @@; xlog = log( x ); date = intnx( 'month', '31dec1948'd, _n_ ); format date monyy.; datalines; 112 118 132 129 121 135 148 148 136 119 104 118 115 126 141 135 125 149 170 170 158 133 114 140 145 150 178 163 172 178 199 199 184 162 146 166 171 180 193 181 183 218 230 242 209 191 172 194 196 196 236 235 229 243 264 272 237 211 180 201 204 188 235 227 234 264 302 293 259 229 203 229 242 233 267 269 270 315 364 347 312 274 237 278 284 277 317 313 318 374 413 405 355 306 271 306 315 301 356 348 355 422 465 467 404 347 305 336 340 318 362 348 363 435 491 505 404 359 310 337 360 342 406 396 420 472 548 559 463 407 362 405 417 391 419 461 472 535 622 606 508 461 390 432 ;

    3.1. Identifikasi Tahap identifikasi merupakan tahap untuk mengetahui apakah memerlukan transformasi,

    untuk menentukan menggunakan 0 ketika 1, dan menentukan orde , ,,, dan pada model ARIMA. Pertama yang akan dilakukan ialah melihat bagaimana plot time series. Berikut ini sytax yang digunakan.

    symbol1 i=join v=dot; proc gplot data=seriesg; plot x * date = 1 / haxis= '1jan49'd to '1jan61'd by year; run;

    kemudian di-running sehingga akan muncul gambar berikut

    Gambar 3.2. Plot Time Series dari Data Penumpang Airlines

  • Berdasarkan Gambar 3.2, dapat diketahui bahwa data penumpang airline tidak stasioner dalam mean (musiman dan reguler) serta tidak stasioner terhadap varian. Data penumpan airline tampak kenaikan setiap bulan dalam satu tahun selama 12 tahun, hal tersebut membuktikan bahwa data tidak stasioner dalam mean reguler. Sedangkan ketidakstasioneran dalam mean musiman ditunjukkan bahwa adanya kenaikan disetiap januari selama 12 tahun. Serta ketidakstasioneran dalam varian ditunjukkan dengan semakin melebarnya data.

    Secara umum, langkah pertama untuk mengatasi ketidakstasioneran ialah menggunakan transformasi Box-Cox (mengatasi ketidakstasioneran dalam varian). Ketidakstasioneran dilakukan terlebih dahulu karena uji Box-Cox tidak dapat dilakukan jika terdapat data yang negatif, mengingat differencing untuk mengatasi ketidakstasioneran dalam mean dapat menghasilkan data yang negatif. Akan tetapi transformasi Box-Cox tidak merubah pola data, sehingga seringkali tidak digunakan. Langkah kedua ialah melakukan differensing baik pada reguler maupun musiman.

    Setelah stasioner dalam mean dan varian, maka dapat diidentifkasi orde , ,, dan ( = 12) pada model ARIMA menggunakan plot ACF dan PACF. Berikut ini syntax yang digunakan untuk memunculkan ACF dan PACF.

    proc arima data=seriesg; identify var=x(1,12) nlag=36; run;

    Pada var=x(1,12) menunjukkan bahwa variabel x didefferencing 1 dan 12. nlag=36 Menunjukkan bahwa lag yang akan dikeluarkan pada ACF dan PACF sebanyak 36 lag. Terdapat output autocorrelation, inverse autocorrelation, partial autocorrelation dan Autocorrelation Check for White Noise. Akan tetapi yang perlu diperhatikan hanya ACF dan PACF. Berikut ini hasilnya.

    The ARIMA Procedure WARNING: The value of NLAG is larger than 25% of the series length. The asymptotic approximations used for correlation based statistics and confidence intervals may be poor. Name of Variable = xlog Period(s) of Differencing 1,12 Mean of Working Series 0.000291 Standard Deviation 0.045673 Number of Observations 131 Observation(s) eliminated by differencing 13 Autocorrelations Lag Covariance Correlation -1 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 1 Std Error 0 0.0020860 1.00000 | |********************| 0 1 -0.0007116 -.34112 | *******| . | 0.087370 2 0.00021913 0.10505 | . |** . | 0.097006 3 -0.0004217 -.20214 | ****| . | 0.097870 4 0.00004456 0.02136 | . | . | 0.101007 5 0.00011610 0.05565 | . |* . | 0.101042 6 0.00006426 0.03080 | . |* . | 0.101275 7 -0.0001159 -.05558 | . *| . | 0.101347 8 -1.5867E-6 -.00076 | . | . | 0.101579 9 0.00036791 0.17637 | . |**** | 0.101579 10 -0.0001593 -.07636 | . **| . | 0.103891 11 0.00013431 0.06438 | . |* . | 0.104318 12 -0.0008065 -.38661 | ********| . | 0.104621 13 0.00031624 0.15160 | . |*** . | 0.115011 14 -0.0001202 -.05761 | . *| . | 0.116526 15 0.00031200 0.14957 | . |*** . | 0.116744 16 -0.0002898 -.13894 | . ***| . | 0.118197

  • 17 0.00014703 0.07048 | . |* . | 0.119438 18 0.00003261 0.01563 | . | . | 0.119755 19 -0.0000221 -.01061 | . | . | 0.119770 20 -0.0002435 -.11673 | . **| . | 0.119777 21 0.00008042 0.03855 | . |* . | 0.120643 22 -0.0001906 -.09136 | . **| . | 0.120737 23 0.00046574 0.22327 | . |****. | 0.121263 24 -0.0000384 -.01842 | . | . | 0.124362 25 -0.0002092 -.10029 | . **| . | 0.124383 26 0.00010131 0.04857 | . |* . | 0.124998 27 -0.0000631 -.03024 | . *| . | 0.125142 28 0.00009832 0.04713 | . |* . | 0.125198 29 -0.0000376 -.01803 | . | . | 0.125333 30 -0.0001065 -.05107 | . *| . | 0.125353 31 -0.0001122 -.05377 | . *| . | 0.125512 32 0.00040829 0.19573 | . |****. | 0.125688 33 -0.0002554 -.12242 | . **| . | 0.127993 34 0.00016219 0.07775 | . |** . | 0.128884 35 -0.0003180 -.15245 | . ***| . | 0.129241 36 -0.0000208 -.01000 | . | . | 0.130607 "." marks two standard errors

    ACF menunjukkan Cut off after lag 1 dan 12, dimana lag yang keluar meliputi 1, 2 dan 12.

    The ARIMA Procedure Partial Autocorrelations Lag Correlation -1 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 1 1 -0.34112 | *******| . | 2 -0.01281 | . | . | 3 -0.19266 | ****| . | 4 -0.12503 | ***| . | 5 0.03309 | . |* . | 6 0.03468 | . |* . | 7 -0.06019 | . *| . | 8 -0.02022 | . | . | 9 0.22558 | . |***** | 10 0.04307 | . |* . | 11 0.04659 | . |* . | 12 -0.33869 | *******| . | 13 -0.10918 | .**| . | 14 -0.07684 | .**| . | 15 -0.02175 | . | . | 16 -0.13955 | ***| . | 17 0.02589 | . |* . | 18 0.11482 | . |**. | 19 -0.01316 | . | . | 20 -0.16743 | ***| . | 21 0.13240 | . |*** | 22 -0.07204 | . *| . | 23 0.14285 | . |*** | 24 -0.06733 | . *| . | 25 -0.10267 | .**| . | 26 -0.01007 | . | . | 27 0.04378 | . |* . | 28 -0.08995 | .**| . | 29 0.04690 | . |* . | 30 -0.00490 | . | . | 31 -0.09638 | .**| . | 32 -0.01528 | . | . | 33 0.01150 | . | . | 34 -0.01916 | . | . | 35 0.02303 | . | . | 36 -0.16488 | ***| . |

    PACF tersebut menunjukkan bahwa dies down untuk pola reguler dan musimannya. Berdasarkan ACF dan PACF, dapat disimpulkan bahwa kemungkinan modelnya ialah model additive ARIMA atau dapat ditulis ARIMA([1,12],1,0)(0,1,0)12. Akan tetepi pada modul ini akan dicoba ketiga model seasonal ARIMA, yaitu model subset ARIMA([1,2,12],1,0)

  • (0,1,1)12, model multiplikative ARIMA(1,1,0)(1,1,0)12, dan model additive ARIMA([1,12],1,0)(0,1,0)12. 3.2. Estimasi parameter

    Beberapa metode estimasi parameter, yaitu exact maximum likelihood (ml), conditional least squares (cls), dan exact nonlinear unconditional least squares (uls). Pada SAS, metode estimasi parameter yang menjadi default ialah cls. Berikut ini merupakan syntax yang digunakan untuk estimasi paramter model subset ARIMA([1,2,12],1,0) (0,1,1)12, model multiplikative ARIMA(1,1,0)(1,1,0)12, dan model additive ARIMA([1,12],1,0)(0,1,0)12 menggunakan exact nonlinear unconditional least squares.

    ARIMA([1,2,12],1,0) (0,1,1)12 estimate q=(1)(12) noconstant method=uls; run; ARIMA(1,1,0)(1,1,0)12 estimate q=(1,2,12) noconstant method=uls; run; ARIMA([1,12],1,0)(0,1,0)12 estimate q=(1,12) noconstant method=uls; run;

    Jika model arima ialah AR(1) maka q=(1)(12) diganti dengan p=(1). Serta data yang telah didefferencing akan disekitar nol, sehingga tidak perlu konstanta dalam model (tidak memakai sintax noconstant). Hasil tersebut dapat terdiri dari hasil estimasi dan pengujian signifikansinya, kriteria kebaikan model berdasarkan data training dan Autocorrelation Check of Residuals yang digunakan untuk uji white noise (pada uji diagnostik).

    ARIMA(1,1,0)(1,1,0)12 Standard Approx Parameter Estimate Error t Value Pr > |t| Lag MA1,1 0.39594 0.08149 4.86 |t| menunjukkan p-value, karena p-value < taraf signifikansi (5%) maka parameter model ARIMA(1,1,0)(1,1,0)12 telah signifikan. Sehingga model ARIMA tersebut ialah

    = 0.39594 1 0.61331 12 + 0.24283 13

    Hasil estimasi dan uji signifikansinya

    Kriteria kebaikan model berdasarkan data training

    Uji White Noise

  • ARIMA([1,2,12],1,0) (0,1,1)12 The ARIMA Procedure WARNING: The model defined by the new estimates is unstable. The iteration process has been terminated. WARNING: Estimates may not have converged. ARIMA Estimation Optimization Summary Estimation Method Unconditional Least Squares Parameters Estimated 3 Termination Criteria Maximum Relative Change in Estimates Iteration Stopping Value 0.001 Criteria Value 0.122917 Maximum Absolute Value of Gradient 0.008162 R-Square Change from Last Iteration 0.035455 Objective Function Sum of Squared Residuals Objective Function Value 0.186993 Marquardt's Lambda Coefficient 1E-12 Numerical Derivative Perturbation Delta 0.001 Iterations 41 Warning Message Estimates may not have converged. Unconditional Least Squares Estimation Standard Approx Parameter Estimate Error t Value Pr > |t| Lag MA1,1 0.36631 0.08317 4.40 |t| Lag MA1,1 0.26253 0.07252 3.62 0.0004 1 MA1,2 0.52208 0.07669 6.81 Lag Square DF ChiSq --------------------Autocorrelations-------------------- 6 7.32 4 0.1200 -0.110 0.022 -0.164 -0.095 0.063 0.035

  • 12 11.27 10 0.3366 -0.074 -0.035 0.108 -0.071 0.020 -0.061 18 20.22 16 0.2105 0.133 0.044 0.068 -0.185 0.031 0.013 24 31.00 22 0.0961 -0.069 -0.099 -0.026 -0.061 0.220 0.001 30 33.91 28 0.2039 0.001 0.081 -0.010 -0.050 -0.052 -0.073 36 43.29 34 0.1319 -0.065 0.153 -0.143 0.017 -0.068 -0.011 Model ARIMA([1,12],1,0)(0,1,0)12 memiliki parameter yang siginifikan. Akan tetapi model tersebut memiliki variance estimate dan standart eror estimate yang lebih besar dibandingkan dengan model ARIMA(1,1,0)(1,1,0)12.

    3.3. Uji diagnostik Uji diagnostik meliputi uji white noise dan kenormalan pada residual. Residual yang

    digunakan ialah residual dari ketiga model ARIMA. Hipotesis pada pengujian white noise ialah

    H0: 1 = 2 = = = 0 (residual white noise) H1: minimal terdapat satu 0, = 1, 2, , (residual tidak white noise)

    Lag dan p-value (Pr > ChiSq) pada pengujian white noise dari ketiga model ARIMA seperti pada hasil estimasi. P-value setiap lag lebih besar dari pada (0,05) sehingga gagal tolak H0 dengan kata lain residual white noise untuk ketiga model ARIMA. Selain itu, nilai Chi- Square diperoleh menggunakan rumus yang ditemukan oleh Ljung dan Box (1978), seperti berikut:

    = ( + 2)( )12=1

    Statistik uji tersebut mengikuti distribusi 2( ) , dimana = + , ialah banyaknya data, ialah banyak orde AR yang digunakan, dan ialah banyak orde MA yang digunakan.

    Terdapat beberapa cara untuk menguji residual apakah berdistribusi normal. Salah satu cara untuk melihatnya ialah menggunakan tes normalitas oleh Kolmogorov-Smirnov. Hipotesis pada pengujian ini yaitu

    H0 : () = 0() (residual berdistribusi normal) H1 : () 0() (residual tidak berdistribusi normal)

    dimana taraf signifikansi atau = 0,05. Wilayah kritis ialah p-value < (tolak H0). Berikut ini syntax dari proc arima sampai dengan mengimpan output forecast dan melakukan uji residual berdistribusi normal.

    proc arima data=seriesg; identify var=xlog(1,12) nlag=36; run; estimate q=(1)(12) noconstant method=uls; run; forecast lead=12 out=out2; run; proc univariate data=out2 normal; var residual; run; proc export data=out2 dbms=excel2000 outfile='D:\airline.xls'; sheet=arima11011012; run;

  • Sintax tersebut menunjukkan peramalan kedepan sebanyak 12 (lead=12) dan keluaran disimpan pada variabel out2 (out=out2). Output dari statemen forecast terdiri dari variabel xlog, forecast (data training dan peramalan 12 kedepan), standart erorr (STD), lower 95% (L95) dan upper 95% (U95), dan residual. Kemudian digunakan proc univariate untuk menguji variabel residual (var residual) dari data out2 (data=out2) berdisribusi normal (normal). Kemudian dengan menggunakan proc export untuk menyimpan data out2 (data=out2) dalam Ms.Excel 97-2000 yang tersimpan di drive d dan memiliki nama file airline (outfile='D:\airline.xls'), serta pada sheet arima11011012 (sheet=arima11011012). Berdasarkan sintax tersebut, berikut ini hasil output yang digunakan untuk uji residual berdistribusi normal. Tests for Normality Test --Statistic--- -----p Value------ Shapiro-Wilk W 0.990478 Pr < W 0.5117 Kolmogorov-Smirnov D 0.066108 Pr > D >0.1500 Cramer-von Mises W-Sq 0.076018 Pr > W-Sq 0.2364 Anderson-Darling A-Sq 0.453595 Pr > A-Sq >0.2500 Dengan bantuan paket program SAS diperoleh nilai p-value pada Kolmogorov-smirnov lebih besar dari taraf signifikansi, sehingga gagal tolak H0 atau residual tidak berdistribusi normal.

    3.4. Peramalan

    Sintax yang digunakan untuk meramalkan 12 bulan kedepan seperti sintax pada uji diagnostik. Berikut ini merupakan hasil peramalan 12 bulan kedepan untuk data xlog. The ARIMA Procedure Forecasts for variable xlog Obs Forecast Std Error 95% Confidence Limits 145 6.1099 0.0369 6.0375 6.1823 146 6.0558 0.0431 5.9712 6.1403 147 6.1781 0.0486 6.0830 6.2733 148 6.1990 0.0534 6.0943 6.3037 149 6.2312 0.0579 6.1177 6.3447 150 6.3689 0.0620 6.2473 6.4905 151 6.5047 0.0659 6.3755 6.6340 152 6.5013 0.0696 6.3649 6.6377 153 6.3258 0.0731 6.1826 6.4691 154 6.2081 0.0764 6.0583 6.3578 155 6.0644 0.0796 5.9084 6.2204 156 6.1700 0.0827 6.0079 6.3320