UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 1 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
MODEL-MODEL STATISTIKA
(Handout/ E-book
Untuk Program S2 Matematika)
Prof. Drs. I. M. Tirta, Dip.Sc, M.Sc., Ph.D.
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 2 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
Daftar Isi
1 DASAR-DASAR PEMROGRAMAN R 15
1.1 Tampilan R-Console . . . 16
1.2 Beberapa Fungsi Penting dalam R . . . 20
1.2.1 Operasi Vektor dan Matriks. . . 20
1.2.2 Fungsi Dasar Statistika . . . 22
1.2.3 Fungsi Pembangkit Data Peubah Acak . . . 24
1.2.4 Fungsi untuk Menangani Grafik. . . 26
1.2.5 Perintah Penanganan Berkas R . . . 30
1.3 Memanfaatkan Pustaka . . . 45
1.3.1 Mencari Informasi Pustaka . . . 45
1.3.2 Memanggil Pustaka . . . 47
1.3.3 Aplikasi R untuk Manipulasi Grafik . . . 49
1.4 Menulis Program pada R . . . 59
1.4.1 Komponen-Komponen Program . . . 59
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 3 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1.4.3 Mendefinisikan Fungsi dalam R . . . 67
1.4.4 Mengevaluasi Nilai Fungsi. . . 72
1.4.5 Mengemas Keluaran Fungsi . . . 76
1.4.6 Menghindarkan Loop . . . 79
1.4.7 Menghitung Akar-Akar Persamaan dengan Metode Numerik . 84 1.5 Mengemas Fungsi Menjadi Paket . . . 98
1.6 Mengemas Paket . . . 100
1.6.1 Menyiapkan Fungsi-fungsi Terkait . . . 100
1.6.2 Menyiapkan Dokumen Bantuan. . . 100
1.6.3 Menyiapkan Program Pendukung . . . 103
1.6.4 Langkah Mengemas Paket . . . 104
1.6.5 Aplikasi R untuk Model Statistika/ Analisis Regresi . . . 106
1.6.6 RCommnder RGUI untuk analisis dasar . . . 109
1.7 Bacaan Lebih lanjut . . . 110
I
Prasyarat Distribusi Keluarga Eksponensial
111
2 LEBIH LANJUT TENTANG DISTRIBUSI ACAK 112 2.1 Distribusi Gamma . . . 1162.1.1 Fungsi Gamma . . . 116
2.1.2 Distribusi Gamma . . . 118
2.2 Momen dari peubah acak berdistribusi Gamma . . . 128
2.3 Beberapa Bentuk Khusus . . . 131
2.3.0.1 Distribusi χ2 . . . 131
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 4 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
2.4 Hubungan antara Beberapa Distribusi . . . 137
2.5 Unifikasi Sebaran dalam Sebaran Keluarga Eksponensial . . . 142
2.5.1 Bentuk umum . . . 142
2.5.2 Nilai-tengah dan Ragam daria(Y) . . . 143
2.5.3 Beberapa Bentuk Khusus . . . 147
2.5.3.1 Distribusi Binomial dengan Parametern, p . . . 147
2.5.3.2 Distribusi Poisson dengan Parameterθ.. . . 148
2.5.3.3 Distribusi Normal dengan Parameter θdan σ . . . . 149
2.5.3.4 Distribusi Gamma dengan parameters θdan skalaφ. 149 2.5.3.5 Distribusi lainnya . . . 150
2.6 Perluasan Distribusi dengan Tiga dan Empat Parameter . . . 154
2.7 Distribusi Bertingkat/Campuran . . . 156
2.7.1 Distribusi Poisson-Gamma . . . 159
2.7.2 Distribusi Binomial-Beta . . . 162
2.7.3 Distribusi Normal-normal . . . 163
2.8 Bacaan Lebih Lanjut . . . 165
2.9 Soal-soal Latihan . . . 166
3 Distribusi t dan F 169 3.1 Distribusi t . . . 170
3.2 Distribusi F . . . 173
4 Distribusi Statistik 179 4.1 Beberapa hasil . . . 183
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 5 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
5 DASAR-DASAR PEMODELAN STOKASTIK 187
5.1 Prinsip Pemodelan . . . 191
5.2 Langkah-langkah Penting Dalam Pemodelan . . . 198
5.2.1 Langkah penting dalam Pemodelan secara Umum . . . 198
5.2.2 Langkah penting dalam Pemodelan Stokastik . . . 199
5.3 Metode Mengestimasi Parameter . . . 205
5.3.1 Metode kuadrat terkecil . . . 205
5.3.2 Metode likelihood maksimum . . . 206
5.3.3 Mencari maksimum dengan metode numerik . . . 207
5.4 Model Linier dan Perkembangannya . . . 211
5.4.1 Model linier klasik . . . 212
5.4.2 Model linier tercampur . . . 214
5.4.3 Model linier tergeneralisasi . . . 217
5.4.4 Model linier campuran tergeneralisasi . . . 219
5.5 Pengembangan Lain Model Linier . . . 221
5.6 Outline Buku . . . 224
5.7 Latihan Soal- soal. . . 225
6 MODEL LINIER KLASIK 226 6.1 Bentuk dan Asumsi . . . 229
6.2 Estimasi Parameter . . . 231
6.2.1 Estimasi dengan Metode Kuadrat Terkecil . . . 231
6.2.2 Estimasi dengan Metode Likelihood Maksimum . . . 235
6.3 Uji Inferensial dari βˆj . . . 238
6.3.1 Distribusi βˆj . . . 238
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 6 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
6.3.3 Uji Hipotesis . . . 242
6.3.4 Koefisien DeterminasiR2 . . . 243
6.4 Penggunaan Matriks untuk Regresi Peubah Ganda . . . 251
6.4.1 Perluasan hasil untuk Regresi Peubah Ganda . . . 251
6.4.2 Pendekatan Matriks Metode Kuadrat Terkecil. . . 253
6.4.3 Pendekatan Matriks untuk Metode Kemungkinan Maksimum . 256 6.5 Interval Keyakinan µdan Prediksi Y . . . 260
6.6 Melaporkan Nilai Probabilitas p . . . 263
6.7 Model Linier dengan Variabel Kualitatif . . . 265
6.7.1 Variabel Boneka dengan Model Berkonstanta . . . 266
6.7.2 Variabel Boneka dengan Konstanta tidak Eksplisit. . . 268
6.8 Ilustrasi Model Linier Normal dengan R . . . 273
6.8.1 Simulasi dengan R. . . 273
6.8.2 Menggunakan Fungsilm() . . . 277
6.8.3 Model dengan Variabel Kualitatif . . . 281
6.8.4 Analisis dengan Subset . . . 290
6.9 Ringkasan . . . 295
6.10 Bacaan Lebih Lanjut . . . 296
6.11 Latihan Soal- Soal . . . 297
II
Model-model Statistika Modern
299
7 MODEL LINIER TERAMPAT 300 7.1 Konsep Dasar Model Linier Trampat/Tergeneralisir . . . 305UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 7 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
7.1.2 Generalisasi Model Linier Klasik ke Model Linier Terampat/
Tergeneralisir . . . 306
7.2 Estimasi pada Model Linier Tergeneralisir . . . 310
7.2.1 Metode Penduga Kuadrat Terkecil . . . 312
7.2.2 Metode Penduga Likelihood Maksimum . . . 314
7.3 Inferensi pada Model Linier Tergeneralisir . . . 321
7.3.1 Distribusi dari Penduga Likelihood Maksimum . . . 322
7.3.2 Kecocokan Model . . . 325
7.4 Model Logit, Probit dan Log-linier . . . 328
7.5 Dispersi Berlebih. . . 331
7.6 Ilustrasi GLM dengan R . . . 332
7.6.1 Data dengan Sebaran Binomial . . . 334
7.6.2 Prediksi pada GLM . . . 343
7.7 Ringkasan . . . 346
7.8 Bacaan Lebih Lanjut . . . 347
7.9 Latihan Soal-soal . . . 348
8 MODEL DENGAN MULTI RESPON 349 8.1 Model Marjinal . . . 354
8.2 Quasi-Likelihood dan Generalized Estimating Equations(GEE) . . . 357
8.3 Generalisasi dan Bentuk GEE . . . 359
8.4 Perluasan untuk GEE Orde 2 . . . 363
8.5 Ilustrasi GEE dengan R . . . 364
8.6 Gamma-HGLM dan Model Lainnya . . . 371
8.6.1 Gamma-HGLMs . . . 371
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 8 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
8.6.3 Estimasi Parameterβ dan v . . . 376
8.6.4 Pendugaan parameter dispersiν danα . . . 382
8.6.5 Analisis HGLM dengan R . . . 384
8.7 Ringkasan . . . 389
8.8 Bacaan Lebih Lanjut . . . 390
8.9 Latihan Soal-soal . . . 391
9 MODEL ADITIF TERAMPAT 392 9.1 Data dengan Hubungan Tidak Linier . . . 396
9.1.1 Data dengan Hubungan Tidak Linier Sederhana/ Parametrik . 396 9.1.2 Data dengan Hubungan nonlinier tidak sederhana . . . 396
9.2 Model Statistika Aditif Terampat . . . 402
9.2.1 Bentuk Umum dan Asumsi . . . 402
9.2.2 Penghalus lokal . . . 404
9.3 Pengepasan GAM . . . 407
9.4 Perluasan GAM ke GAMLSS . . . 410
9.5 GAM dan GAMLSS dengan R . . . 413
9.5.1 Model semiparametrik dengangam(). . . 414
9.5.2 Model parametrik dengangam() danbs() . . . 417
9.5.3 Model penghalusan parametrik dengangamlss() . . . 419
9.6 Bacaan Lebih Lanjut . . . 425
10 PENGANTAR MODEL PERSAMAAN STRUKTURAL (Dalam Proses KON-STRUKSI) 426 10.1 Latar belakang dan Motivasi . . . 429
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 9 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
10.2.1 Variabel Laten dan Variabel Indikator . . . 434
10.2.2 Notasi dan Terminologi . . . 435
10.3 Jenis dan Pendekatan Analisis SEM . . . 436
10.4 Diagram Jalur . . . 442
10.5 Model Matematika SEM . . . 444
10.6 Analisis SEM pada R . . . 445
10.7 Kelemahan CB-SEM dan SEM Alternatif . . . 450
10.8 Rangkuman . . . 452
10.9 Bacaan Lebih Lanjut . . . 454
Glosarium 455 A DATA UNTUK ILUSTRASI 469 A.1 Dari Paket base . . . 470
A.2 Dari Paket car . . . 473
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 10 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
Daftar Gambar
1.1 Menulis Skrip dengan Tinn-R . . . 19
1.2 Lay Out Multi Grafik . . . 26
1.3 Contoh Histogram dengan Kurva Densitas . . . 39
1.4 Contoh Diagram Pencar dengan rug dan boxplot . . . 40
1.5 Contoh Gabungan Grafik Besar dengan Grafik Mini . . . 41
1.6 Contoh Gabungan Grafik dengan Pembagian Layar . . . 42
1.7 Contoh Gabungan Grafik dengan pembagian layar . . . 43
1.8 Contoh Histogram dengan Kurva Densitas . . . 54
1.9 Contoh Diagram Pencar dengan rug dan boxplot . . . 55
1.10 Contoh Gabungan Grafik Besar dengan Grafik Mini . . . 56
1.11 Contoh Gabungan Grafik dengan Pembagian Layar . . . 57
1.12 Contoh Gabungan Grafik dengan pembagian layar . . . 58
1.13 Ilustrasi Simulasi Mean Populasi dan Sata-rata sampel . . . 68
1.14 Contoh Grafik Fungsi Parametrik Dimensi dua . . . 69
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 11 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
2.1 Ilustrasi fungsi dan penambahan konstanta . . . 125
2.2 Ilustrasi fungsi dan perkalian suatu konstanta . . . 126
2.3 Ilustrasi bentuk dan skala distribusi gamma . . . 127
2.4 Ilustrasi bentuk dan skala distribusi χ2 . . . 135
2.5 Ilustrasi bentuk dan skala distribusi ekspoensial . . . 136
2.6 Plot Densitas dari sampel dengan berbagai nilai-tengah dengan uku-ran sampel 100 . . . 152
2.7 Sebaran Data dengan ukuran sampel 100 dengan distribusi Normal (b) dan Gamma (r) . . . 153
3.1 Ilustrasi distribusi tdengan berbagai derajat kebebasan . . . 172
3.2 Ilustrasi distribusi tdan normal baku . . . 172
3.3 Ilustrasi transformasi fungsi peubah acak . . . 177
5.1 Ilustrasi Regresi 1 . . . 222
5.2 Ilustrasi Regresi 2 . . . 223
6.1 Ilustrasi Garis regresi dan sabuk keyakinan . . . 262
6.2 Sebaran data dengan variabel kualitatif . . . 270
6.3 Garis Regresi sejajar dengan selisih konstantaβ2 dan gradien sama (β1) . . . 271
6.4 Garis Regresi berbeda dengan selisih konstanta β2 dan selisih gra-dien β3 . . . 272
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 12 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
6.6 Grafik Penduga ˆβ1 = ˆα dari beberapa penarikan sampel dengan
ukuran mulai 10 sampai dengan 1000. Nilai parameter sebenarnya
adalah α= 3. . . 278
6.7 Contoh Histogram dengan Kurva Densitas Data Cars. . . 292
6.8 Diagram Pencar X dengan Y yang mengandung kelompok yang da-pat digabung . . . 293
6.9 Diagram Pencar X dengan Y mengandung kelompok yang perlu dipisah . . . 294
7.1 Respon dengan Fungsi Hubungan Logit dan Probit . . . 309
7.2 Diagram Pencar Prediksi dan Data Asli Peluang Keberhasilan Berba-gai Kelompok . . . 345
9.1 Ilustrasi data dengan hubungan kuadratik . . . 397
9.2 Ilustrasi data dengan hubungan kubik . . . 398
9.3 Ilustrasi data dengan hubungan log . . . 399
9.4 Ilustrasi data dengan hubungan eksponensial . . . 400
9.5 Ilustrasi data dengan hubungan nonlinier . . . 401
9.6 Ilustrasi pengepasan berlebih . . . 409
9.7 Grafik Pemeriksaan Peubah Penghalus . . . 424
10.1 Hubungan Variabel pada Regresi . . . 432
10.2 Hubungan Variabel diluar Analisis Regresi. . . 433
10.3 Contoh model CFA . . . 439
10.4 Contoh model hybrid . . . 440
10.5 Contoh model hybrid . . . 441
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 13 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
Daftar Tabel
1.1 Daftar Operasi Vektor dan Matriks . . . 34
1.2 Fungsi Dasar Statistika . . . 35
1.3 Fungsi Pembangkit Data . . . 36
1.4 Fungsi R untuk Grafik . . . 37
1.5 Fungsi dan paket untuk menggambar grafik R . . . 38
1.6 Aneka Rupa Fungsi R . . . 44
1.7 Fungsi dan paket untuk menggambar grafik R . . . 53
2.1 Rangkuman Distribusi Anggota Keluarga Eksponensial . . . 151
2.2 Ciri-ciri khas Distribusi Keluarga Eksponensial . . . 151
5.1 Tabel jumlah (kg) salak dan anggur dan harga yang dibayar . . . . 196
6.1 Alternatif Penulisan Model dalam Formula R . . . 286
7.1 Jumlah Sukses(S) dan Gagal dalam Berbagai Kelompok Faktor . . 330
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 14 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
7.3 Jumlah Kelulusan dalam Berbagai Kelompok Perlakuan . . . 336
7.4 Format Data R Jumlah Kelulusan dan Kegagalan . . . 337
8.1 Respon Pengukuran berulang . . . 356
8.2 Paket dan Fungsi R terkait GEE dan HGLM . . . 365
9.1 Sebaran diluar Keluarga Eksponensial yang dicakup GAMLSS . . 411
9.2 Paket dan Fungsi R terkait GAM . . . 423
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 15 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
Bab 1
DASAR-DASAR PEMROGRAMAN R
Setelah membaca materi pada bab ini pembaca menguasai kemampuan yang ditandai oleh indikator seperti berikut:
❼ dapat membuat program sederhana dengan R;
❼ dapat memanfaatkan kemampuan analisis R melalui skrip;
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 16 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1.1.
Tampilan R-Console
Dengan menggunakan RCLI diperoleh bentuk tampilan R-Console yang sama, baik dengan menggunakan sistem operasi Windows maupun Linux. Bentuk tampilan layarR consoleuntuk R versi 2.15.0 adalah seperti berikut ini.
R version 2.15.0 (2012-03-30)
Copyright (C) 2012 The R Foundation for Statistical Computing ISBN 3-900051-07-0
Platform: i386-pc-mingw32/i386 (32-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions.
Type ✬license()✬ or ✬licence()✬ for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type ✬contributors()✬ for more information and
✬citation()✬ on how to cite R or R packages in publications.
Type ✬demo()✬ for some demos, ✬help()✬ for on-line help, or
✬help.start()✬ for an HTML browser interface to help.
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 17 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
Dengan adanya RGUI Tinn-R, seperti telah dibahas sebelumnya, maka penulisan dan eksekusi skrip dapat lebih mudah dilakukan melalui Jendela Command SciViews. Beberapa keuntungan menggunakan Tinn-R adalah: telah dilengkapi panel penting seperti buka skrip, simpan skrip, dan eksekusi skrip; dapat memeriksa kecocokan pasangan tanda kurung (), dan {}; dapat memberi arahan dalam memanggil fungsi yang telah didefinisikan; dapat mengeksekusi skrip per baris atau secara keseluruhan; tampilan memberikan warna berbeda (script highlighting) untuk notasi tertentu dan antara skrip dengan komentar.
Semua kemampuan diatas sangat membantu baik dalam mengedit maupun dalam mengeksekusi skrip (Lihat Gambar 1.1), halaman 19.
R termasuk pemrograman berorentasi objek. Semua hal yang dikerjakan dalam R dapat disimpan dalam bentuk objek dengan mendefinisikannya. Definisi dalam R menggunakan notasi <-. Perhatikan bahwa notasi garis bawah (under score) ” ” yang biasa dipakai pada S-Plus bermakna lain
pada R. Namun, seperti halnya S-Plus, R sangat peka terhadap huruf besar/ kecil (case sensitive).
NamaObjek<-definisi
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 18 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
>x<-2^3 >X<-3^2 >x [1] 8 >X [1] 9
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 19 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 20 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1.2.
Beberapa Fungsi Penting dalam R
R telah dilengkapi dengan banyak fungsi yang dapat dimanfaatkan untuk penulisan skrip program. Selain fungsi-fungsi yang terdapat dalam paket standar, banyak fungsi yang didefinisikan dalam berbagai pustaka R.
1.2.1.
Operasi Vektor dan Matriks
Untuk matriks atau vektor yang berdimensi sama maka opersi hitung bi-asa dapat dilakukan dan itu akan dikerjakan berdbi-asarkan unsur-unsur yang bersesuaian seperti pada contoh diatas. Khusus untuk opersi vektor dan ma-triks, R memiliki operasi dasar seperti yang ditunjukkan dalam Tabel 1.1
pada halaman 34.
Contoh 1.2. Misalkan kita memiliki dua vektor, yaitu X=
  
4 5 3 6
  
dan Y =
  
2 4 3 6
  
, maka hasil berbagai operasi hitung biasa di antara kedua vektor ini
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 21 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
> x<-matrix(c(4,5,3,6),4,1) > y<-matrix(c(2,4,3,6),4,1) > x*y
[,1]
[1,] 8
[2,] 20
[3,] 9
[4,] 36
> x/y [,1] [1,] 2.00 [2,] 1.25 [3,] 1.00 [4,] 1.00
> sum(log(x)) [1] 5.886104 > prod(log(x)) [1] 4.39191
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 22 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
> x%*%t(y)
[,1] [,2] [,3] [,4]
[1,] 8 16 12 24
[2,] 10 20 15 30
[3,] 6 12 9 18
[4,] 12 24 18 36
> t(x)%*%y [,1]
[1,] 73
>solve(t(x)%*%y) [,1] [1,] 0.01369863
> x[2] [1] 5
1.2.2.
Fungsi Dasar Statistika
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 23 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
Contoh 1.3. Misalkan dua vektor X,Y seperti pada contoh sebelumnya. Jika masing-masing vektor diperlakukan sebagai data, maka hasil terhadap beberapa fungsi statistika tadi adalah:
> min(x) [1] 3
> max(y) [1] 6 > mean(x) [1] 4.5
> var(y) [,1] [1,] 2.916667
> cor(x,y) [,1] [1,] 0.8315218
> range(x) [1] 3 6
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 24 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
[1] 2 6
> sample(0:1,30,replace=T) # simulasi Tos Uang logam
[1] 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 1
> sample(c("A","G"),15,replace=T)
[1] "G" "G" "A" "A" "G" "G" "A" "A" "G" "G" "G" "A" "A" "G" "G"
> sample(1:6,30,replace=T) # Simulasi Tos Dadu
[1] 6 3 2 6 4 1 1 4 2 3 6 5 3 4 3 4 2 3 1 4 1 5 3 5 1 5 1 6 4 1
rangememberikan informasi minimum dan maksimum secara serempak.
1.2.3.
Fungsi Pembangkit Data Peubah Acak
Disamping fungsi dasar yang telah dibicarakan, R juga memiliki fungsi-fungsi statistika lainnya yang banyak dipergunakan dalam simulasi data. Fungsi-fungsi ini adalah Fungsi-fungsi untuk membangkitkan data dari peubah acak dengan berbagai distribusi yang banyak dijumpai seperti normal, poisson dan gamma dengan jumlah/ ukuran sampel n. Pada dasarnya ada empat jenis fungsi terkait dengan distribusi peubah acak yaitu:
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 25 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
ddistribusi untuk mencari nilai fungsi kepadatan f(x) pada suatu nilai x
tertentu.
pdistribusi untuk mencari luas daerah (nilai peluang) suatu distribusi yang dibatasi oleh nilai xtertentu
qdistribusi untuk mencari nilai x yang membatasi luas daerah (nilai pelu-ang) tertentu dari suatu distribusi
distribusiadalah nama-nama distribusi yang tersedia pada R di antaranya
beberapa yang penting yang banyak dipakai adalah norm (normal), gamma
(Gamma),t(t),F(F),chisq(χ2
),pois(Poisson,binom(Binomial). Sebagian daftar fungsi- fungsi ini dapat dilihat pada Tabel 1.3 pada halaman 36.
Contoh 1.4. Misalkan kita ingin mensimulasi data dari distribusi normal dengan parameter populasinya µ = 50 dan σ = 5. Kita dapat menghitung mean maupun variansi sampel dari data yang dibangkitkan untuk melihat kedekatannya dengan µdan σ2
>mean(rnorm(100,50,5)) [1] 50.19985
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 26 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1.2.4.
Fungsi untuk Menangani Grafik
Untuk menangani grafik, R memiliki beberapa fungsi seperti ditunjukkan pada Tabel1.4 pada halaman 37. Dokumentasi yang lebih lengkap dapat diperoleh dengan menggunakan perintah help(...). Di antara fungsi ini adalah untuk membuat lay out lembaran grafik yang dibagi menjadi matriks sub-lembaran kecil (a×b). Masing-masing sublembaran dapat memiliki judul dan absis sendiri (lihat Gambar 1.2).
Gambar 1.2: Lay Out Multi Grafik
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 27 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
grafik ini diatur sehingga yang biasa diberi label sumbu adalah semua sumbu bawah, sumbu paling kiri, sumbu atas, dan sumbu paling kanan. Maka perintahnya adalah seperti berikut dan hasil grafiknya dapat dilihat pada Gambar 1.2.
par(mfrow=c(2,3))
plot(1,1,xlim=c(0,4),ylim=c(1,3),) text(2,2,"Gambar 1.1")
plot(1,2,xlim=c(0,4),ylim=c(1,3)) text(2,2,"Gambar 1.2")
plot(1,3,xlim=c(0,4),ylim=c(1,3)) text(2,2,"Gambar 1.3")
plot(2,1,xlim=c(0,4),ylim=c(1,3)) text(2,2,"Gambar 2.1")
plot(2,2,xlim=c(0,4),ylim=c(1,3)) text(2,2,"Gambar 2.2")
plot(2,3,xlim=c(0,4),ylim=c(1,3)) text(2,2,"Gambar 2.3")
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 28 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
memberikan visualisasi model (diagram pencar data yang dilengkapi garis regresi, khususnya untuk dua dimensi). Tabel1.7memuat beberapa paket dan fungsi yang terkait dengan penyajian grafik dalam analisis regresi.
Visualisai tentang sebaran data baik terkait sebaran univariat, maupun pen-caran bivariat dapat disajikan dalam berbagai cara (layout), misalnya menyisip-kan grafik kecil dalam grafik besar, atau membagi lay out layar. Informasi lebih lengkap dapat dilihat pada Tirta [59] atau Burns [4]. Berikut adalah beberapa contoh penyajian grafik terkait regresi.
1. Histogram dilengkapi dengan kurva densitas (baik teoritis maupun emperik). Grafik ini memberikan gambaran secara intuitif kesesuaian sebaran data dengan sebaran teoritis yang menjadi asumsi (skrip berikut hasilnya terlihat pada Gambar1.8).
hist(x,freq=FALSE,ylim=c(0,0.45),
main="HISTOGRAM DENGAN KURVA DENSITAS") lines(density(x),lty=4) #densitas emperik
lines(sort(x),dnorm(sort(x)))#densitas teoritik
2. Diagram pencar dilengkapi dengan rugplot dan boxplot marjinal (untuk peubah penjelas dan peubah respon). Grafik ini memberikan gambaran se-cara intuitif kesesuaian sebaran data sese-cara univariate (skrip berikut hasil-nya terlihat pada Gambar1.9)
plot(x,y,xlab="X", ylab="Y",col="red",
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 29 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
abline(lm(y~x),col="blue")
rug(side=1, jitter(x, 5),col="green" ) rug(side=2, jitter(y, 20),col="green" )
par(mar=c(1,2,5,1)) boxplot(y, axes=F)
par(mar=c(5,1,1,2))
boxplot(x, horizontal=T, axes=F)
3. Diagram pencar dilengkapi dengan histogram dan qqplot marjinal (untuk peubah penjelas dan peubah respon). Grafik ini memberikan gambaran secara intuitif kesesuaian sebaran data secara univariate. Grafk dapat dis-ajikan dengan menyisipkan histogram dan qqplot di dalam diagram pencar (lihat Gambar 1.10) atau dengan mengatur lay out tampilan grafik seperti Gambar 1.11dan Gambar 1.12. Berikut adalah skrip untuk Layout c(1,2)-c(2,1), untuk Gambar 1.11, yaitu pertama layar dibagi atas 1 baris dan 2 kolom, selanjutnya layar kolom kedua dibagi menjadi 2 baris 1 kolom.
split.screen(c(1,2))
split.screen(c(2,1), screen = 2) screen(1)
plot(x,y,main="Diagram Pencar (X,Y)") abline(lm(y~x))
screen(3)
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 30 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
main="Histogram Y")
lines(density(y), col="red", lwd=2) screen(4)
qq.plot(x,main="QQ.norm X")
Skrip berikut adalah untukLayout c(2,1)-c(1,2), untuk Gambar 1.12, yaitu pertama layar dibagi atas 2 baris dan 1 kolom, selanjutnya layar baris kedua dibagi menjadi 1 baris 2 kolom.
split.screen(c(2,1))
split.screen(c(1,2), screen = 2) screen(1)
plot(x,y,main="Diagram Pencar (X,Y)") abline(lm(y~x))
screen(3)
hist(y, probability=T, main="Histogram Y")
lines(density(y), col="red", lwd=2) screen(4)
qq.plot(x,main="QQ.norm X")
1.2.5.
Perintah Penanganan Berkas R
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 31 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
dan variabel, di antaranya adalah seperti yang ada pada Tabel 1.6 pada halaman 44.
Contoh 1.6. Misalkan kita ingin mencetak keluaran yang sekaligus memuat komentar atau nama beserta nilainya, seperti “Untukx= 2 dan y= 3 maka hasil kali x dengan y adalah 6. Skrip untuk program ini adalah sebagai berikut.
x<-2 y<-3
cat("Hasil kali x dengan y adalah",x*y)
Contoh 1.7. Untuk menjalankan contoh yang ada pada fungsilinear model
lm() maka perintahnya adalah
example(lm)
dan sebagian hasil keluaran yang terjadi adalah:
> example(lm)
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 32 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
lm> trt <- c(4.81, 4.17, 4.41, 3.59, 5.87, 3.83, 6.03, 4.89, 4.32, 4.69)
lm> group <- gl(2, 10, 20, labels = c("Ctl", "Trt"))
lm> weight <- c(ctl, trt)
lm> anova(lm.D9 <- lm(weight ~ group)) Analysis of Variance Table
Response: weight
Df Sum Sq Mean Sq F value Pr(>F)
group 1 0.6882 0.6882 1.4191 0.249
Residuals 18 8.7293 0.4850
lm> summary(lm.D90 <- lm(weight ~ group - 1))
Call:
lm(formula = weight ~ group - 1)
Residuals:
Min 1Q Median 3Q Max
-1.0710 -0.4938 0.0685 0.2462 1.3690
Coefficients:
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 33 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
groupCtl 5.0320 0.2202 22.85 9.55e-15 ***
groupTrt 4.6610 0.2202 21.16 3.62e-14 ***
---Signif. codes: 0 ❵***✬ 0.001 ❵**✬ 0.01 ❵*✬ 0.05 ❵.✬ 0.1 ❵ ✬ 1
Residual standard error: 0.6964 on 18 degrees of freedom
Multiple R-Squared: 0.9818, Adjusted R-squared: 0.9798
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 34 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar Tabel 1.1: Daftar Operasi Vektor dan Matriks dalam R. Operasi lanjut yang
lebih spesifik dapat dilihat pada pustakamatrix
No Nama Fungsi/
Operasi
Notasi Matem-atika
Fungsi R
1 pembentukan
ma-triks
x matrix(data, nbaris, nkolom);
2 pembentukan
barisan
seq(awal, akhir, kenaikan); seq(awal, akhir, length=n)
3 barisan berpola rep((el.),replik) atau
rep((elemen),each=n)
4 transpose matriks xT t(x)
5 determinan
ma-triks
det(x) det(x)
6 matriks diagonal D diag(data)
7 diagonal matriks diag(matriks)
8 teras (trace) ma-triks
tr(matriks)
9 perkalian matriks xy x %*% y
10 inverse matriks x−1
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 35 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar Tabel 1.2: Fungsi Dasar Statistika pada R
No Nama Fungsi Notasi Statistika Fungsi dalam R
1 minimum.
maxi-mum
min, max min(), max()
2 range range range()
3 mean, median, x¯,median mean(), median()
4 variance S2
var()
5 correlation ρxy cor(x,y)
6 ringkasan data summary()
7 contoh/ sampling
data
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 36 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar Tabel 1.3: Fungsi Pembangkit Data pada R. Selain fungsi membangkitkan
data acak juga terdapat fungsi-fungsi menghitung peluang dis-tribusi.
No Nama Distribusi Parameter Perintah dalam R
1 Poison(λ) µ=σ2
=λ rpois(n,lamda); dpois(x,
lambda); ppois(x, lambda); qpois(p, lambda)
2 Binomial (s, π)
µ=sπ σ2 =sπ(1−π)
rbinom(n, s, pi); dbinom(x, s, pi); pbinom(x, s, pi); qbinom(p, s, pi)
3 Normal N(µ, σ2
) mean=µ, varians=σ2
rnorm(n, mean, sigma); dnorm(x, mean, sigma); pnorm(x, mean, sigma); qnorm(p, mean, sigma)
4 Gamma G(α, β)
µ=α/β σ2=α/β2
rgamma(n, alpha,beta); dgamma(x, alpha, beta); pgamma(x, alpha,beta); qgamma(p, alpha, beta)
5 Chi-kuadrat
χ2(r) µ=r;
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 37 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar Tabel 1.4: Beberapa Fungsi Dasar R untuk Grafik. Tersedia fungsi baik
untuk dua maupun tiga dimensi.
No Tujuan Perintah R Keterangan
1 membuat multigrafik
(banyak layar)
par(mfrow=c(b, k)) b=banyak baris k=banyak
kolom
2 membuat diagram
(grafik pencaran= p, dan garis =l)
plot(x,y,
type=’l/p/b’, xlab="", ylab="", lty=0,
ylim=c(,))
l=line(grafik garis)
p=point(grafik titik)
b=keduanya
3 menambah garis pada
grafik yang sudah ada
lines(x, y, lty=, pch= ’numerik’)
angka numerik menunjukkan jenis garis
4 menambah titik pada
grafik yang sudah ada
points(x, y,
pch=’numerik/simbol’)
numerik/simbol menunjukkan jenis titik
5 memunculkan sumbu axis(1,outer=T,las=1) Nomor aksis 1=bawah 2=kiri,
3=atas, 4=kanan.
6 menambah text text(x,y,"teks")
7 membuat grafik tiga di-mensi
persp(x,y,z) Data dalam bentuk matriks
contour(x,y,z)
8 membuat garis lurus abline(a,b) untuk y=a+bx
abline(lm(y x)) dari estimasi regresi
9 memberi judul grafik
dan sumbu
main=’judul
grafik’,xlab=’sumbu x’, ylab=’sumbu y’
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 38 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar Tabel 1.5: Fungsi dan paket untuk menggambar grafik R
Fungsi Paket Penggunaan
barplot() graphics menggambar grafik batang
hist() graphics menggambar histogram
boxplot() graphics menggambar boxplot
plot() graphics menggambar grafik X-Y
pairs() graphics menggambar Matriks
Dia-gram Pencar
abline() graphics menggambar garis lurus
yang diketahui konstanta dan gradiennya
contour() graphics menggambar kontur
persp() graphics menggambar boxplot
rug() graphics menggambar sebaran data
pada sumbu
qq.plot() car menggambar plot
per-bandingan kuantil
reg.line() car menggambar garis regresi
scatterplot(), sp()
car menggambar diagram pen-car data
spm(),
scatterplot.matrix(),
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 39 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar HISTOGRAM DENGAN KURVA DENSITAS
x
Density
−3 −2 −1 0 1 2
0.0
0.1
0.2
0.3
0.4
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 40 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
DIAGRAM PENCAR DENGAN RUG & BOXPLOT
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 41 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
DIAGRAM BESAR DENGAN GRAFIK MINI
x
norm quantiles
x
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 42 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Frequency
120 140 160 180
0
QQ.norm X
norm quantiles
x
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Frequency
120 140 160 180
0
QQ.norm X
norm quantiles
x
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Frequency
120 140 160 180
0
QQ.norm X
norm quantiles
x
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Frequency
120 140 160 180
0
QQ.norm X
norm quantiles
x
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Frequency
120 140 160 180
0
QQ.norm X
norm quantiles
x
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Density
120 140 160 180
0.000
QQ.norm X
norm quantiles
x
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 43 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Density
120 140 160 180
0.000
QQ.norm X
norm quantiles
x
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 44 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar Tabel 1.6: Aneka Rupa Fungsi R. Fungsi-fungsi ini bermanfaat untuk
menangani file baik skrip maupun keluaran
No Tujuan Perintah R
1 membaca tanpa membuka file source("namafile")
2 mengarahkan penulisan hasil ke file sink("nama file")
3 mencetak hasil (variabel) print(variabel)
4 mencetak text cat("teks")
5 mencetak garis baru cat("\n")
6 mendefinisikan variabel, konstanta atau fungsi (berfungsi sebagai ”=” dalam matem-atika)
nama <- definisi
7 membaca tabel read.table("namatabel")
8 mengambil bagian dari kesatuan(objek) objek\$bagian
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 45 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1.3.
Memanfaatkan Pustaka
1.3.1.
Mencari Informasi Pustaka
Hal pertama yang terpenting dapat dilakukan dalam menggunakan program R adalah mendapatkan informasi tentang fasilitas yang disediakan R. Dari tampilan sebelumnya dapat diketahui bahwa jika kita ingin mengetahui be-berapa kemampuan dan fasilitas R dapat dilakukan dengan menggunakan salah satu alternatif berikut:
help() untuk mengetahui dokumentasi bantuan secara umum. Selanjutnya
kita dapat memilih topik yang tersedia dan lebih mengkhususkan pen-carian kita pada topik tersebut dengan menggunakan help(topik).
help.start(). Untuk mengaktifkan dokumentasi dalam format html yang
lebih interaktif. Pengguna selanjutnya dapat memilih topik yang terse-dia seperti layaknya mencari informasi di internet.
help.search("kata kunci"). Jika kita ingin mendapat informasi dari
su-atu topik tertentu dapat juga kita masukkan susu-atu kata kunci melalui
help.search().
Misalkan kita ingin mencari informasi tentang analisis regresi, maka kata kunci yang mungkin bisa dimasukkan di antaranya adalah
regression atau linear model. kata kunci ini selanjutnya dimasukkan
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 46 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
>help.search("regression")
Sebagian dari hasil penelusuran adalah sebagai berikut ini (tampilan aslinya jauh lebih banyak dari apa yang ditampilkan di sini). Hasil penelusuran tersebut menunjukkan bahwa ada berbagai fungsi yang dapat dipergunakan untuk men-ganalisis data dengan metode regresi sesuai dengan spesifikasi data yang dimiliki.
Help files with alias or concept or title matching ✬regression✬
using fuzzy matching:
nnr(assist) Nonlinear Non-parametric Regression
predict.snr(assist) Predict Method from a Semiparametric
Nonlinear Regression Model Fit
snr(assist) Fit A Semi-parametric Nonlinear Regression
Model
ssr(assist) Fit a General Smoothing Spline Regression
Model
aws(aws) Local polynomial Adaptive Weights Smoothing
for regression with additive errors
awsh(aws) Univariate local polynomial Adaptive Weights
Smoothing for regression with heteroscedastic additive errors
breg(bayesm) Posterior Draws from a Univariate Regression
with Unit Error Variance
betareg(betareg) Fitting beta regression models
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 47 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
spm(SemiPar) Fit a SemiParametric regression Model
ridge(survival) Ridge regression
survreg(survival) Regression for a Parametric Survival Model
tree(tree) Fit a Classification or Regression Tree
zicensor(zicounts) Fitting classical and zero-inflated count
regression models
1.3.2.
Memanggil Pustaka
Apablia kita telah mengetahui cara pemanfaatan suatu pustaka maka kita dapat meniru untuk dipergunakan dalam analisis data riil yang kita miliki. Misalkan dari
data Orange dengan variabel Tree, age dan circunference, kita dapat melakukan
analsis gam yang paling sederhana seperti berikut.
library(gee) example(gee)
Dengan pilihan distribusi = Gamma dan fungsi link log diperoleh hasil
gee> data(warpbreaks)
gee> summary(gee(breaks ~ tension, id = wool, data = warpbreaks, corstr = "exchangeable"))
[1] "Beginning Cgee S-function, @(#) geeformula.q 4.13 98/01/27" [1] "running glm to get initial regression estimate"
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 48 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
GEE: GENERALIZED LINEAR MODELS FOR DEPENDENT DATA
gee S-function, version 4.13 modified 98/01/27 (1998)
Model:
Link: Identity
Variance to Mean Relation: Gaussian
Correlation Structure: Exchangeable
Call:
gee(formula = breaks ~ tension, id = wool, data = warpbreaks, corstr = "exchangeable")
Summary of Residuals:
Min 1Q Median 3Q Max
-22.388889 -8.138889 -2.666667 6.333333 33.611111
Coefficients:
Estimate Naive S.E. Naive z Robust S.E. Robust z
(Intercept) 36.38889 3.069434 11.855246 5.774705 6.301428
tensionM -10.00000 3.910008 -2.557539 7.463905 -1.339781
tensionH -14.72222 3.910008 -3.765266 3.731952 -3.944912
Estimated Scale Parameter: 141.1481
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 49 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1.3.3.
Aplikasi R untuk Manipulasi Grafik
Selain analisis statistik secara numerik, analisis regresi juga perlu dilengkapi dengan visualisasi data melalui grafik. Visualisasi grafik selain bermanfaat untuk mendapatkan gambaran tentang kondisi data terkait dengan asumsi-asumsi sebaran (histogram, QQPlot, Boxplot, diagram pencar sisa), juga bermanfaat dalam memberikan visualisasi model (diagram pencar data yang dilengkapi garis regresi, khususnya untuk dua dimensi). Tabel 1.7 memuat beberapa paket dan fungsi yang terkait dengan penyajian grafik dalam anal-isis regresi.
Visualisai tentang sebaran data baik terkait sebaran univariat, maupun pencaran bivariat dapat disajikan dalam berbagai cara (layout), misalnya menyisipkan grafik kecil dalam grafik besar, atau membagi lay out layar. Informasi lebih lengkap dapat dilihat pada Tirta [59] atau Burns [4]. Berikut adalah beberapa contoh penyajian grafik terkait regresi.
1. Histogram dilengkapi dengan kurva densitas (baik teoritis maupun em-perik). Grafik ini memberikan gambaran secara intuitif kesesuaian se-baran data dengan sese-baran teoritis yang menjadi asumsi (skrip berikut hasilnya terlihat pada Gambar 1.8).
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 50 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
main="HISTOGRAM DENGAN KURVA DENSITAS") lines(density(x),lty=4) #densitas emperik
lines(sort(x),dnorm(sort(x)))#densitas teoritik
2. Diagram pencar dilengkapi dengan rugplot dan boxplot marjinal (untuk peubah penjelas dan peubah respon). Grafik ini memberikan gambaran secara intuitif kesesuaian sebaran data secara univariate (skrip berikut hasilnya terlihat pada Gambar 1.9)
plot(x,y,xlab="X", ylab="Y",col="red",
main="DIAGRAM PENCAR DENGAN RUG & BOXPLOT") abline(lm(y~x),col="blue")
rug(side=1, jitter(x, 5),col="green" ) rug(side=2, jitter(y, 20),col="green" )
par(mar=c(1,2,5,1)) boxplot(y, axes=F)
par(mar=c(5,1,1,2))
boxplot(x, horizontal=T, axes=F)
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 51 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
(lihat Gambar 1.10) atau dengan mengatur lay out tampilan grafik seperti Gambar 1.11 dan Gambar 1.12. Berikut adalah skrip untuk Layout c(1,2)-c(2,1), untuk Gambar 1.11, yaitu pertama layar dibagi atas 1 baris dan 2 kolom, selanjutnya layar kolom kedua dibagi menjadi 2 baris 1 kolom.
split.screen(c(1,2))
split.screen(c(2,1), screen = 2) screen(1)
plot(x,y,main="Diagram Pencar (X,Y)") abline(lm(y~x))
screen(3)
hist(y, probability=T, main="Histogram Y")
lines(density(y), col="red", lwd=2) screen(4)
qq.plot(x,main="QQ.norm X")
Skrip berikut adalah untukLayout c(2,1)-c(1,2), untuk Gambar 1.12, yaitu pertama layar dibagi atas 2 baris dan 1 kolom, selanjutnya layar baris kedua dibagi menjadi 1 baris 2 kolom.
split.screen(c(2,1))
split.screen(c(1,2), screen = 2) screen(1)
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 52 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
screen(3)
hist(y, probability=T, main="Histogram Y")
lines(density(y), col="red", lwd=2) screen(4)
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 53 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar Tabel 1.7: Fungsi dan paket untuk menggambar grafik R
Fungsi Paket Penggunaan
barplot() graphics menggambar grafik batang
hist() graphics menggambar histogram
boxplot() graphics menggambar boxplot
plot() graphics menggambar grafik X-Y
pairs() graphics menggambar Matriks Diagram Pencar
abline() graphics menggambar garis lurus yang diketahui
konstanta dan gradiennya
contour() graphics menggambar kontur
persp() graphics menggambar boxplot
rug() graphics menggambar sebaran data pada sumbu
qq.plot() car menggambar plot perbandingan kuantil
reg.line() car menggambar garis regresi
scatterplot(), sp() car menggambar diagram pencar data
spm(),
scatterplot.matrix(),
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 54 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar HISTOGRAM DENGAN KURVA DENSITAS
x
Density
−3 −2 −1 0 1 2
0.0
0.1
0.2
0.3
0.4
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 55 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
DIAGRAM PENCAR DENGAN RUG & BOXPLOT
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 56 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
DIAGRAM BESAR DENGAN GRAFIK MINI
x
norm quantiles
x
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 57 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Frequency
120 140 160 180
0
QQ.norm X
norm quantiles
x
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Frequency
120 140 160 180
0
QQ.norm X
norm quantiles
x
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Frequency
120 140 160 180
0
QQ.norm X
norm quantiles
x
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Frequency
120 140 160 180
0
QQ.norm X
norm quantiles
x
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Frequency
120 140 160 180
0
QQ.norm X
norm quantiles
x
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Density
120 140 160 180
0.000
QQ.norm X
norm quantiles
x
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 58 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Diagram Pencar (X,Y)
x
y
Histogram Y
y
Density
120 140 160 180
0.000
QQ.norm X
norm quantiles
x
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 59 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1.4.
Menulis Program pada R
Pada bagian ini akan dibahas secara lebih detail cara- cara mendefinisikan fungsi, maupun membuat skrip program.
1.4.1.
Komponen-Komponen Program
Program adalah sekumpulan perintah yang menjadi suatu kesatuan yang harus dikerjakan oleh komputer. Program biasanya ditulis untuk menger-jakan pekerjaan sejenis untuk keperluan jangka panjang dan bisa diman-faatkan oleh orang lain yang tidak terlibat dalam pembuatan program terse-but. Oleh karena itu penulisan program ini harus memenuhi beberapa per-syaratan. Naskah dari suatu pemrograman biasa disebut listing atau script
dari program tersebut. Komponen- komponen pemrograman yang besar se-baiknya memuat hal-hal berikut.
1. Seting Umum. Bagian ini mengatur hal yang sangat mendasar dari komputer, seperti alokasi memori, jumlah digit dari luaran, nama file dan sebagainya. Dalam R, perintah ini biasanya dikerjakan dengan perintah options. Untuk jelasnya dapat dilihat dari dokumentasi per-intah options ini.
options(argumen1, argument2,...,...);
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 60 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
❼ echo= T atau F, jika T berarti setiap ekspresi yang dieksekusi
atau dievaluasi akan ditulis dulu (echoed) sebelum dievaluasi.
❼ digits= angkayang menunjukkan banyaknya angka penting yang
akan dicetak di print out.
❼ object.size= 1e+08 atau lebih yang diperlukan untuk program
yang memerlukan memori besar (misalnya dalam simulasi).
2. Definisi fungsi. Apabila dalam program itu diperlukan fungsi yang didefinisikan sendiri, sebaiknya fungsi ini dikelompokkan dan didefin-isikan pada bagian awal;
fungsi1<-function(){} fungsi2<-function(){}
3. Data dan Inisiasi. Bagian berikut skrip biasanya berisi pengambi-lan data, baik yang dilakukan secara simulasi maupun dengan meng-gunakan data riil yang dimpor dari berbagai program yang tersedia. Data riil harus diaktifkan atau diset sebelum dianalisis.
Untuk data simulasi sebelum variabel dan konstanta bisa dipergunakan harus ditetapkan nilai- nilai awalnya. Nilai awal (inisiasi) dari variabel-variabel ini juga sebaiknya diberikan pada bagian tersendiri secara men-gelompok untuk memudahkan pemeriksaan atau perubahan.
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 61 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
5. Penutup. Bagian penutup bisa berisi rangkuman dari hasil- hasil yang diperoleh dalam pemrograman tersebut. Biasanya bagian ini berisi perintah menyimpan file, mentabulasi hasil, atau membuat grafik.
Contoh 1.8. Contoh pemrograman yang lengkap beserta komponen-komponennya.
# namafile
options(echo=F,digits=4) #fungsi
f1<-function(p1,p2){ ekspresi1
ekspresi2 hasil akhir }
#inisiasi p1<-5
p2<-15 #Program utama #loop luar
for(i in 1:n){
while(kon1){ #loop dalam
tugas1 }
}
#Penutup Print(hasil.akhir)
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 62 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1.4.2.
Langkah- langkah Penting dalam Penulisan Program
Program yang baik adalah program yang memenuhi beberapa persyaratan di antaranya adalah seperti berikut ini.
1. Mengerjakan dengan benar apa yang mestinya dikerjakan. Untuk pro-gram yang dikonsumsi sendiri atau bagi pemula, syarat yang paling utama adalah program yang dibuat harus mengerjakan dan memberi hasil yang benar.
2. Alur logika dan matematikanya benar dan mudah diikuti. Untuk itu, sebelum menulis skrip suatu pemrograman dan yakinkan bahwa baik persamaan-persamaan maupun fungsi-fungsi matematika yang akan di-gunakan sudah benar/valid. Selain itu langkah yang lebih rinci berupa algoritma dari apa yang akan dikerjakan oleh komputer sudah siap se-belum memulai menulis skrip dan yakinkan bahwa algoritma ini sudah benar. Algoritma ini bisa juga dibuat secara lebih eksplisit berupa diagram alir (flow chart.)
3. Mudah direvisi. Apa yang akan dikerjakan komputer seharusnya da-pat dilacak dengan mudah sehingga kalau ada kesalahan juga mudah direvisi. Penelusuran atau revisi diharapkan tetap bisa dilakukan den-gan mudah, meskipun suatu skrip program baru dibuka lagi setelah beberapa minggu, bulan, atau tahun.
ter-UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 63 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
lalu penting bagi pemula, karena kecepatan dan penggunaan memori ini secara umum dapat teratasi dengan semakin canggihnya piranti keras komputer sekarang sehingga masalah ini tidak akan terlalu menjadi hambatan.
5. Mudah dimanfatkan. Syarat terakhir penting terutama kalau program yang dibuat juga disediakan bagi orang lain yang mungkin tidak banyak memahami pemrograman.
Serangkaian perintah atau fungsi-fungsi matematika yang sering diper-gunakan sebaiknya didefinisikan dalam bentuk fungsi R. Identifikasi fungsi-fungsi dan variabel yang akan diperlukan dan didefinisikan di bagian awal. Usahakan memanfaatkan sebanyak mungkin fungsi-fungsi internal yang su-dah ada dalam paket (dalam hal ini R). Ini penting agar penggunaan memori efisien mengingat selain karena sifatnya yang internal fungsi-fungsi ini telah teruji kemampuannya. Buatlah program dalam ukuran sedang dan program yang besar sebaiknya dipecah-pecah menjadi beberapa modul/ subprogram yang hanya dipanggil kalau diperlukan. Berilah komentar atau keterangan pada setiap fungsi yang didefinisikan, demikian juga pada setiap langkah penting. Hal ini akan membantu banyak dalam pemahaman dan proses per-baikan/revisi terutama jika program yang dibuat dibuka lagi setelah kurun waktu yang agak lama.
Khusus untuk R, sedapat mungkin hindarkan atau kurangi penggunaan
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 64 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
digunakan perhitungan vektor dari pada loop. Karenanya, khususnya bagi pemrogram yang sudah berpengalaman, sedapat mungkin gunakan perhi-tungan secara vektor. Jika loop digunakan, pada tahap awal, gunakan kri-teria konvergensi yang agak kasar/besar, setelah program berfungsi dengan baik, kriteria konvergensi dapat diatur sesuai kebutuhan. Skrip loop selain dikelompokkan dengan menggunakan kurung kurawal, juga perlu di-indent
sesuai dengan tingkatnya. Berikut ini diberikan contoh program yang belum memerlukan adanya fungsi.
Contoh 1.9. Kita ingin mengilustrasikan hubungan antara mean populasi dengan rata- rata sampel berdasarkan ukuran sampelnya.
Untuk tujuan itu kita harus membuat loop pembangkitan data random untuk berbagai ukuran sampel, misalnya dari 10 sampai 100 dengan kenaikan 10. Untuk itu kita akan menempuh beberapa langkah berikut ini.
1. Mendefinisikan matriks yang terdiri atas 2 kolom dan 10 baris, untuk menampung mean sampel dari 10 macam ukuran sampel. Kolom per-tama bisa diisi ukuran sampel dan kolom kedua berisi besarnya mean masing- masing sampel. Sebagai inisiasi, kita bisa mendefinisikan selu-ruh elemen matriks sama dengan 0.
m<-matrix(0,10,2)
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 65 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
(a) Dengan menggunakan indeks i = 1...10 ditentukan ukuran sam-pelnya adalah i×10
for(i in 1:10){ n.sampel<-i*10 }
(b) Dengan menggunakan batasan maksimum 100, sedangkan
n.sampelmengalami kenaikan 10 mulai dari 10
n.sampel<-10
while(n.sample<100){
n.sampel<-n.sampel+10 }
3. Selanjutnya pada loop tadi dapat disisipkan perintah membangkitkan data normal dengan mean 50 dan variansi 10, X ∼ N(50,10). Hal ini bisa juga dilakukan dengan membangkitkan dataZ ∼N(0,1) selanjut-nya ditransformasi denganX =σZ+µ.Pada bagian/tahap yang sama kita menghitung mean dariX serta menaruh hasilnya pada matriks m
pada baris dan kolom yang bersesuaian
Z<-rnorm(n.sample) X<-sqrt(10)*Z+50 m[i,1]<-n.sampel m[i,2]<-mean(X)
4. Selanjutnya, setelahloopberakhir, kita bisa mencetak grafiknya. Grafik sederhana dapat dibuat dengan menggunakan perintah
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 66 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
m[,k] menunjukkan seluruh baris pada kolom k sedangkanm[i,]
me-nunjukkan baris kedua untuk seluruh kolom. Perintah yang lebih lengkap dapat dilakukan dengan memberikan judul dan label sumbu koordinat, atau bahkan warna.
plot(m[,1],m[,2],type=✬l✬,xlab=✬Sumbu X✬,ylab=✬Sumbu Y✬,
main=✬Judul Grafik✬)
Secara keseluruhan kita mempunyai skrip berikut.
n<-10
m<-matrix(0,n,2) for(i in 1:n){
n.sampel<-i*10 Z<-rnorm(n.sample) X<-sqrt(10)*Z+50 m[i,1]<-n.sampel m[i,2]<-mean(X) }
plot(m[,1],m[,2],type=✬l✬,xlab=✬Sumbu X✬,ylab=✬Sumbu
Y✬,main=✬Judul Grafik✬)
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 67 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
Contoh 1.10. Misalkan kita ingin membuat grafik dari persamaan matem-atika berbentuk persamaan parametriks seperti berikut.
(x, y) =
(
x=φ1(t)
y=φ2(t)
Salah satu program yang bisa dibuat adalah seperti berikut dengan hasil seperti pada Gambar 1.14.
par(mfrow=c(2,2)) t<-seq(0,360,5) y<-sin(t)
x<-cos(t)
plot(x,y,type=✬l✬,col=✬blue✬,main=✬(cos(t),sin(t))✬)
plot(x^2,y,type=✬l✬,col=✬green✬,main=✬(cos(t)^2,sin(t))✬)
plot(x,x*y,type=✬l✬,col=✬red✬,main=✬(cos(t),cos(t)*sin(t))✬)
plot(y,y/x,type=✬l✬,col=✬cyan✬,main=✬(cos(t),cos(t)/sin(t))✬)
1.4.3.
Mendefinisikan Fungsi dalam R
Perintah panjang (terutama terkait dengan rumus-rumus matematika) dan sering dievaluasi dengan nilai berbeda dapat ditulis sebagai fungsi. Berikut akan dibahas secara lebih rinci cara-cara mendefinisikan fungsi sesuai petun-juk yang telah diberikan pada bagian sebelumnya. Sebagaimana telah dibicarakan sebelumnya bahwa fungsi dalam R memilikiParameterdengan struktur berikut:
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 68 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
0 1000 2000 3000 4000 5000
49.4
49.6
49.8
50.0
50.2
50.4
50.6
Mean Populasi dan Rata−rata Sampel
Ukuran Sampel
Mean−Rata−rata
Gambar 1.13: Ilustrasi Simulasi Mean Populasi dan Rata-rata Sampel
ekspresi1, ....
fungsi1 ....
hasil akhir (returned value) }
per-UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 69 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Gambar 1.14: Contoh Grafik Fungsi Parametrik Dimensi Dua
hitungan yang dilakukan dalam suatu fungsi, maka harus ditegaskan hasil yang akan ditampilkan sebagai hasil akhir eksekusi fungsi. Hasil ini disebut sebagaireturned valueyang dilakukan dengan memanggil kembali hasil yang telah dihitung. Pada dasarnya fungsi R adalah translasi dari fungsi matem-atika ke dalam bahasa R. Hal ini akan terlihat jelas dari beberapa contoh yang diberikan.
fungsi.f<-function(x){x*sin(x)} fungsi.g<-function(x,y){
log(x)+fungsi.f(x)+exp(y)
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 70 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
memanggil fungsi f dan ini hal yang bisa dilakukan dalam mendefinisikan fungsi-fungsi R. Agar fungsi g berfungsi dengan baik maka fungsi f harus sudah didefinisikan terlebih dahulu sebelum mendefinisikan fungsi g.
Menghitung nilai fungsi dan akar-akar persamaan kuadrat
Kita dapat mendefinisikan fungsi untuk menghitung nilai fungsi persamaan tersebut untuk berbagai nilai konstanta dan variabel. Hal ini bermanfaat dalam membuat grafik dari persamaan tersebut.
Contoh 1.11. Fungsi untuk menghitung nilai fungsi kuadrat
f<-function(a,b,c,x){ a*x^2+b^x+c
}
Fungsi di atas dapat dievaluasi untuk nilai-nilai konstanta baik a, b, c
maupun variabel x yang berbeda-beda. Selain menghitung nilai fungsi, kita juga dapat membuat program untuk menghitung akar-akar persamaan kuadrat.
Contoh 1.12. Misalkan kita ingin membuat program/fungsi R dari rumus abc untuk menghitung akar-akar persamaan kuadratf(x) = ax2
+bx+c= 0 untuk berbagai nilai a, b, c.
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 71 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1. Yakinkan bahwa fungsi yang akan diprogramkan secara matematis su-dah valid. Untuk fungsi yang merupakan rumus abc bentuk matem-atikanya adalah
x12 = −
b±√b2
−4ac
2a
Dalam format fungsi R, koefisien a, b, dan c diperlakukan sebagai pa-rameter fungsi. Akar-akar x1 dan x2 didefinisikan sesuai dengan
ru-mus abc. Ini adalah bagian algoritma yang harus dimiliki sebelum kita menulis skrip pemrograman. Untuk rumus abc, kita tahu hasil secara matematis untuk persamaan kuadrat fungsi matematikanya di-tunjukkan oleh persamaan di atas.
2. Langkah selanjutnya adalah menerjemahkan rumus atau komponen-komponennya ke dalam bahasa R. Mengingat ada dua nilai yang di-hasilkan yaitu x1 dan x2, maka variabel x1 dan x2 harus
dikombi-nasikan melalui perintah cbind(x1,x2) jika dikelompokkan menjadi vektor baris, atau rbind(x1,x2) jika dikelompokkan menjadi vektor kolom. Vektor ini sekaligus menjadi hasil yang ditampilkan (returned value).
fungsi.abc<-function(a,b,c){
x1<-(-b+sqrt(b^2-4*a*c))/2*a x2<-(-b-sqrt(b^2-4*a*c))/2*a cbind(x1,x2)
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 72 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1.4.4.
Mengevaluasi Nilai Fungsi
Setelah fungsi terbentuk kita bisa melakukan evaluasi. Kita bisa mengevalu-asi fungsi tersebut untuk suatu nilaia, b, ctertentu. Berikut adalah beberapa hasil yang diperoleh dari hasil evaluasi fungsi yang dibuat.
> fungsi.abc(1,-5,6) x1 x2
[1,] 3 2
> fungsi.abc(1,0,-4) x1 x2
[1,] 2 -2
Jika pembentukan vektor mwenggunakan perintah rbind(x1,x2) maka kita akan memperoleh hasil seperi berikut
> fungsi.abc(1,-5,6) [,1]
x1 3
x2 2
> fungsi.abc(1,0,-4) [,1]
x1 2
x2 -2
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 73 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
> fungsi.abc(1,0,4) [,1]
x1 NA
x2 NA
NA berarti tidak ada hasil yang tersedia.
Jika dalam pemanggilan fungsi hanya diberi nilai parameter, R akan mendistribusikan nilai parameter sesuai dengan urutan parameternya. Jika dalam pemanggilan identitas parameternya telah ditentukan, urutan penem-patan dapat berbeda. Pemanggilan berikut menghasilkan hasil yang sama
fungsi.abc(1,-2,-15)
fungsi.abc(a=1,c=-15,b=-2) fungsi.abc(c=-15,b=-2,a=1)
> fungsi.abc(1,-2,-15) x1 x2
[1,] 5 -3
> fungsi.abc(a=1,c=-15,b=-2) x1 x2
[1,] 5 -3
> fungsi.abc(c=-15,b=-2,a=1) x1 x2
[1,] 5 -3
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 74 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
abc tersebut kurang dari 0. Untuk itu, kita perlu menggunakan perintah-perintah kontrol seperti if, if else. Fungsi di atas dapat dikembangkan menjadi seperti berikut ini.
# contoh fungsi untuk menghitung akar- akar persamaan # kuadrat dengan rumus abc
# dalam fungsi ini a tidak boleh sama dengan 0. fungsi.abc<-function(a,b,c){
if(a==0){stop("\na harus <>0")} D<-b^2-4*a*c # diskriminan
if(D>=0){
x1<-(-b+sqrt(b^2-4*a*c))/2*a x2<-(-b-sqrt(b^2-4*a*c))/2*a
rbind(x1,x2) # membuat vektor akar- akar }
else{cat("\n Akar- akar imaginer")} # pesan kalau D<0
}
Setiap kali kita melakukan perubahan atau revisi pada fungsi, maka fungsi itu harus di eksekusi dulu supaya perbaikannya menjadi efektif ter-catat dalam R. Jika tidak, maka R tetap akan memanggil fungsi yang belum diperbaiki. Beberapa hasil yang diperoleh dari eksekusi fungsi yang telah dimodifikasi untuk berbagai nilai parameter a, b, c adalah sebagai berikut.
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 75 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
[,1]
x1 2
x2 -2
> fungsi.abc(1,5,-6) [,1]
x1 1
x2 -6
> fungsi.abc(1,5,6) [,1]
x1 -2
x2 -3
> fungsi.abc(1,0,4) Akar- akar imaginer >
> fungsi.abc(0,0,4)
Error in fungsi.abc(0, 0, 4): a harus <>0
UNEJ
Daftar Isi
Judul
◭◭ ◭ ◮ ◮◮
Hal. 76 dari 483
Cari Halaman
Kembali
Layar Penuh
Tutup
Keluar
1.4.5.
Mengemas Keluaran Fungsi
Untuk fungsi yang lebih kompleks, misalnya dalam analisis data, banyak hal yang dikerjakan dalam fungsi. Hal-hal yang dikerjakan dalam fungsi dapat dikemas menjadi satu kesatuan keluaran. Misalnya dalam hal persamaan kuadrat, selain perhitungan akar-akar, ada perhitungan diskriminan. Semua perhitungan ini da-pat dikemas menjadi suatu daftar ataulist(). Program fungsi.abc di atas selan-jutnya dapat dimodifikasi dengan menambahkan beberapa baris program berikut.
x12<-rbind(x1,x2) # membuat vektor akar- akar hasil<-list()
hasil<-list(akar1=x12[1],akar2=x12[2],disk=D)
Pemanggilan fungsi dengan evaluasi nilai tertentu akan menghasilkan learan yang dilabel sebagai akar dan det.
$akar1 [1] 1
$akar2 [1] -3
$disk [1] 16