You are on page 1of 149

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/301294862

Seri Belajar Pemrograman: Pengenalan Bahasa Pemrograman R

Book · April 2016


DOI: 10.13140/RG.2.1.3457.3203

CITATION READS

1 14,498

1 author:

M Reza Faisal
Universitas Lambung Mangkurat
33 PUBLICATIONS   15 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Effect of features Generated from additional segments in protein sequence classification View project

IT Asset Management View project

All content following this page was uploaded by M Reza Faisal on 15 April 2016.

The user has requested enhancement of the downloaded file.


Kata Pengantar
Puji dan syukur diucapkan kepada Allah SWT atas selesainya ebook sederhana yang berjudul
Pengenalan Bahasa Pemrograman R.
Ebook ini dibuat sebagai rangkuman dan catatan untuk menjawab pertanyaan-pertanyaan
saya tentang bahasa pemrograman R dan juga implementasi kasus-kasus statistik pada
lingkungan R. Sehingga pada ebook ini akan dipaparkan konsep-konsep dasar tentang bahasa
pemrograman R, pembahasan sederhana tentang statistik serta contoh-contoh kasus dari setiap
pembahasan tersebut yang dapat langsung dicoba oleh pembaca. Harapannya hal ini akan
membantu pembaca yang memiliki pertanyaan yang sama seperti yang seperti saya untuk
mendapatkan jawabannya pada ebook ini.
Akhir kata, selamat membaca dan semoga ebook ini bermanfaat bagi para pemula dalam
pengolahan data statistik dan machine learning. Kritik dan saran akan sangat berarti dan dapat
ditujukan via email.

Banjarmasin, April 2016

M Reza Faisal
(reza.faisal@gmail)

I
Daftar Isi
Kata Pengantar ............................................................................................... I
Daftar Isi ........................................................................................................ II
Daftar Gambar ............................................................................................ VII
1 Pendahuluan ...............................................................................................12
Pengantar R ...................................................................................................... 12
Installasi ............................................................................................................ 12
Setup Environment Variable MS Windows .............................................. 12
Hello World ...................................................................................................... 14
R Environment ................................................................................................. 16
RStudio vs RGui .............................................................................................. 19
Referensi ........................................................................................................... 20

2 Fungsi & Operator Dasar .........................................................................21


Sintaks ............................................................................................................... 21
Operator ............................................................................................................ 22
Bantuan ............................................................................................................. 23
Working Directory .......................................................................................... 25
Memanggil Fungsi Terdahulu ...................................................................... 28
Mengelola Session .......................................................................................... 28
Memuat File ..................................................................................................... 29
Menyimpan Output ke File ........................................................................... 30
Daftar Fungsi ................................................................................................... 31
Package .............................................................................................................. 32
Lokasi Library..........................................................................................................32
Daftar Library ..........................................................................................................32
Install Package .........................................................................................................33

Setting Opsi Lingkungan .............................................................................. 33


Keluar dari Lingkungan R ............................................................................. 34
3 Dasar-Dasar Pemrograman .....................................................................35
Variable ............................................................................................................. 35
Tipe Data........................................................................................................... 35

II
Skalar ........................................................................................................................36
Vector ........................................................................................................................36
Factor ........................................................................................................................38
Matrix .......................................................................................................................39
Array .........................................................................................................................43
Data Frame ...............................................................................................................44
List .............................................................................................................................46
Fungsi Pendukung ..................................................................................................47

Percabangan ..................................................................................................... 51
Operator ...................................................................................................................51
Statement if ..............................................................................................................51
Statement ifelse........................................................................................................53
Statement switch .....................................................................................................54

Pengulangan ..................................................................................................... 54
Statement for ............................................................................................................55
Statement while .......................................................................................................56
Statement repeat ......................................................................................................57

Function ............................................................................................................ 58
Membuat Fungsi .....................................................................................................58
Menjalankan Fungsi pada RStudio.......................................................................59

Komentar .......................................................................................................... 60
Eksekusi Script R ............................................................................................ 61
Referensi ........................................................................................................... 62
4 Pemrograman Berbasis Obyek ................................................................63
Class ................................................................................................................... 63
Obyek ................................................................................................................ 64
Inheritance ........................................................................................................ 64
Method & Fungsi Generic ............................................................................. 65

5 Dasar-Dasar Pengelolaan Data ..............................................................67


Import Data ...................................................................................................... 67
Text File ....................................................................................................................67
Excel ..........................................................................................................................70
Fungsi Built-in Import Data...................................................................................76
Format Data Populer ..............................................................................................76

III
Melihat Data..................................................................................................... 78
ls() ..............................................................................................................................78
name() .......................................................................................................................79
str() ............................................................................................................................79
head() ........................................................................................................................80
tail() ...........................................................................................................................80

Export Data ....................................................................................................... 81


Teks dengan pemisah tab.......................................................................................81
Excel ..........................................................................................................................81
SPSS...........................................................................................................................82

Referensi ........................................................................................................... 82
6 Dasar-Dasar Pembuatan Grafik .............................................................83
Dasar Membuat Grafik .................................................................................. 83
plot()..........................................................................................................................83
title() ..........................................................................................................................83
text() ..........................................................................................................................84
dev.list() ....................................................................................................................88
dev.off() ....................................................................................................................88

Histogram ......................................................................................................... 88
Density .............................................................................................................. 90
Dot Plot ............................................................................................................. 91
Bar Plot .............................................................................................................. 92
Line Plot ............................................................................................................ 95
Pie Plot............................................................................................................... 97
Box Plot ............................................................................................................. 98
Scatter Plot ...................................................................................................... 100
Export Gambar ............................................................................................... 101
Referensi ......................................................................................................... 104

7 Dasar-Dasar Statistik ............................................................................105


Mean, Median & Modus .............................................................................. 105
Mean .......................................................................................................................105
Median ....................................................................................................................105
Modus .....................................................................................................................106
Hubungan Antara Mean, Median & Modus .....................................................106

IV
Linear Regression .......................................................................................... 109
Pendahuluan ..........................................................................................................109
Implementasi .........................................................................................................110
Visualisasi ..............................................................................................................111

Multiple Regression ..................................................................................... 113


Pendahuluan ..........................................................................................................113
Implementasi .........................................................................................................114

Logistic Regression ....................................................................................... 115


Pendahuluan ..........................................................................................................115
Implementasi .........................................................................................................116

Normal Distribution ..................................................................................... 117


Pendahuluan ..........................................................................................................117
Implementasi .........................................................................................................119
Contoh Kasus.........................................................................................................123

Binomial Distribution .................................................................................. 124


Pendahuluan ..........................................................................................................124
Implementasi .........................................................................................................124

Poisson Regression ....................................................................................... 126


Pendahuluan ..........................................................................................................126
Implementasi .........................................................................................................127

Analysis of Covariance................................................................................. 129


Pendahuluan ..........................................................................................................129
Implementasi .........................................................................................................129

Time Series Analysis .................................................................................... 131


Pendahuluan ..........................................................................................................131
Implementasi .........................................................................................................131
Contoh Kasus.........................................................................................................132

Nonlinear Least Square ................................................................................ 142


Pendahuluan ..........................................................................................................142
Implementasi .........................................................................................................142

Referensi ......................................................................................................... 144


8 Glosarium .................................................................................................146
Standard Deviation ....................................................................................... 146
Standard Error ................................................................................................ 146

V
p Value ............................................................................................................ 146

9 Penutup......................................................................................................147

VI
Daftar Gambar
Gambar 1. Window System................................................................................................................ 13
Gambar 2. Window System Properties............................................................................................. 13
Gambar 3. Window Environment Variables. ................................................................................... 13
Gambar 4. Window Edit System Variable. ...................................................................................... 14
Gambar 5. RGui. .................................................................................................................................. 14
Gambar 6. Hello World pada command prompt. ........................................................................... 15
Gambar 7. HelloWorld.R. ................................................................................................................... 16
Gambar 8. Fitur edit data.................................................................................................................... 16
Gambar 9. Memilih lokasi untuk mengunduh paket. .................................................................... 17
Gambar 10. Daftar paket. .................................................................................................................... 18
Gambar 11. Status pemasangan paket. ............................................................................................. 18
Gambar 12. Fungsi install.packages() untuk menginstall package yang diinginkan. ................ 19
Gambar 13. RStudio. ........................................................................................................................... 19
Gambar 14. Penulisan dua fungsi sekaligus pada lingkungan R. ................................................ 22
Gambar 15. Contoh-contoh operator. ............................................................................................... 22
Gambar 16. Operator = dan tanda panah. ........................................................................................ 23
Gambar 17. Halaman utama bantuan/manual penggunaan. ........................................................ 23
Gambar 18. Bantuan untuk perintah ls(). ......................................................................................... 24
Gambar 19. Bantuan untuk fungsi help(). ........................................................................................ 25
Gambar 20. Hasil perintah setwd() dan getwd(). ............................................................................ 26
Gambar 21. Tab file pada RStudio..................................................................................................... 26
Gambar 22. Memilih direktori. .......................................................................................................... 26
Gambar 23. Perintah Set As Working Directory. ............................................................................ 26
Gambar 24. Window Create Project. ................................................................................................. 27
Gambar 25. Memilih direktori. .......................................................................................................... 27
Gambar 26. Project baru. .................................................................................................................... 28
Gambar 27. Objek data dan value pada session. ............................................................................. 29
Gambar 28. Daftar file pada working directory. ............................................................................. 30
Gambar 29. Source code HelloWorld.R. ........................................................................................... 30
Gambar 30. Daftar fungsi pada tab Environtment. ......................................................................... 30
Gambar 31. File output.txt. ................................................................................................................. 31
Gambar 32. Daftar package atau library pada path pertama. ....................................................... 32

VII
Gambar 33. Daftar package atau library pada path kedua. ........................................................... 33
Gambar 34. Prompt. ............................................................................................................................ 34
Gambar 35. Hasil penggantian parameter dengan fungsi option(). ............................................. 34
Gambar 36. Penggunaan variable. .................................................................................................... 35
Gambar 37. Variable vector. ............................................................................................................... 36
Gambar 38. Cara mengakses elemen vector vec_number.............................................................. 37
Gambar 39. Hasil akses elemen vector vec_char. ............................................................................ 37
Gambar 40. Memodifikasi nilai pada elemen vector. ..................................................................... 38
Gambar 41. Hasil penggunaan fungsi factor() dan summary(). ................................................... 38
Gambar 42. Mengubah nilai elemen pada factor. ........................................................................... 39
Gambar 43. Contoh pembuatan matrix sederhana. ........................................................................ 40
Gambar 44. Output matrix z. ............................................................................................................. 41
Gambar 45. Mengakses beberapa elemen matrix. ........................................................................... 42
Gambar 46. Mengubah nilai elemen matrix. .................................................................................... 42
Gambar 47. Array berdimesi 3x3x3. .................................................................................................. 43
Gambar 48. Array tiga_d_array. ........................................................................................................ 44
Gambar 49. Data pada data_frame. ................................................................................................... 45
Gambar 50. Tampilan data_frame secara visual pada RStudio. ................................................... 45
Gambar 51. Output variable bentukan fungsi list(). ....................................................................... 46
Gambar 52. Cara mengakses list dan outputnya. ........................................................................... 47
Gambar 53. Hasil fungsi dim(). .......................................................................................................... 47
Gambar 54. Hasil dari fungsi class(). ................................................................................................ 48
Gambar 55. Output fungsi length(). .................................................................................................. 48
Gambar 56. Output fungsi names(). .................................................................................................. 49
Gambar 57. Window Data Editor. ..................................................................................................... 49
Gambar 58. Menambah kolom dengan nama d. ............................................................................. 50
Gambar 59. Menambahkan data pada kolom d. ............................................................................. 50
Gambar 60. Data pada objek data_frame_baru. .............................................................................. 50
Gambar 61. Mengedit data pada objek dengan fungsi fix(). ......................................................... 51
Gambar 62. Hasil fungsi HitungNilai(). ........................................................................................... 53
Gambar 63. Contoh penggunaan ifelse. ........................................................................................... 54
Gambar 64. Output statement for...................................................................................................... 55
Gambar 65. Pengulangan vector dengan for(). ................................................................................ 56
Gambar 66. Output statement while. ................................................................................................ 56
Gambar 67. Pengulanan while() untuk mengakses data vector. ................................................... 57

VIII
Gambar 68. Output pengulangan dengan repeat. .......................................................................... 58
Gambar 69. Eksekusi script *.R pada RStudio. ................................................................................ 60
Gambar 70. Menjalankan script R dengan RScript.exe. ................................................................. 61
Gambar 71. Isi data pada objek bab4_data_text. ............................................................................. 68
Gambar 72. Isi data objek bab4_data_text hasil import dari file Bab4DataText02.txt. ............... 68
Gambar 73. Header data pada objek bab4_data_text. .................................................................... 69
Gambar 74. Output fungsi read.csv() dan read.csv2().................................................................... 70
Gambar 75. Window Install Packages. ............................................................................................. 71
Gambar 76. Proses pengunduhan paket xlsx. .................................................................................. 71
Gambar 77. Proses pengunduhan dan installasi paket telah berhasil. ......................................... 72
Gambar 78. Memuat paket xlsx dengan menggunakan fungsi library(). .................................... 72
Gambar 79. Data dari file Excel – Bab4DataExcel.xlsx. .................................................................. 73
Gambar 80. Hasil import data dari file Excel. .................................................................................. 74
Gambar 81. Data Excel dengan header – Bab4DataExcel.xlsx. ...................................................... 75
Gambar 82. Output objek bab4_data_excel yang menampung data dari file Excel. .................. 75
Gambar 83. Antarmuka tool Amelia. ................................................................................................ 78
Gambar 84. Daftar objek yang aktif pada workspace. .................................................................... 78
Gambar 85. Daftar objek pada tab Environment pada RStudio. ................................................... 79
Gambar 86. Output penggunaan fungsi names(). ........................................................................... 79
Gambar 87. Output penggunaan fungsi str()................................................................................... 80
Gambar 88. Output fungsi head(). .................................................................................................... 80
Gambar 89. Output fungsi tail(). ....................................................................................................... 81
Gambar 90. Gambar yang dihasilkan oleh fungsi plot(). ............................................................... 83
Gambar 91. Memberikan judul pada grafik dengan fungsi title(). ............................................... 84
Gambar 92. Memuat data dari file usingR.RData. .......................................................................... 84
Gambar 93. Grafik data primates. ..................................................................................................... 86
Gambar 94. Memberikan title dan text pada titik-titik. .................................................................. 87
Gambar 95. Setting grafik dengan menggunakan parameter tambahan pada fungsi plot(). ... 87
Gambar 96. Memuat isi file Bab4DataPasien.txt ke data_pasien. ................................................. 88
Gambar 97. Histogram data_pasien$AGE. ...................................................................................... 89
Gambar 98. Histogram dengan title dan label. ................................................................................ 90
Gambar 99. Grafik density data_pasien$AGE. ................................................................................ 90
Gambar 100. Data pada mtcars. ......................................................................................................... 91
Gambar 101. Chart dengan fungsi dotchart(). ................................................................................. 92
Gambar 102. Chart bar distribusi mobil. .......................................................................................... 93

IX
Gambar 103. Chart bar ditampilkan secara horizontal. ................................................................. 93
Gambar 104. Chart bar horizontal dengan label. ............................................................................ 94
Gambar 105. Chart stack bar. ............................................................................................................. 94
Gambar 106. Chart bar group. ........................................................................................................... 95
Gambar 107. Chart line dengan berbagai nilai parameter type. ................................................... 96
Gambar 108. Chart line tanpa menggunakan parameter type=”n” pada fungsi plot(). ............ 97
Gambar 109. Chart pie. ....................................................................................................................... 98
Gambar 110. Data jarak tempuh. ....................................................................................................... 99
Gambar 111. Chart boxplot data jarak tempuh. .............................................................................. 99
Gambar 112. Keterangan box pada boxplot. .................................................................................. 100
Gambar 113. Contoh hasil plot scatter. ........................................................................................... 101
Gambar 114. Halaman pertama file kumpulan_chart.pdf. .......................................................... 102
Gambar 115. Halaman kedua file kumpulan_chart.pdf. .............................................................. 103
Gambar 116. Halaman ketiga file kumpulan_chart.pdf. .............................................................. 103
Gambar 117. Distribusi data ketika nilai mean, median dan modus adalah sama. ................. 107
Gambar 118. Distribusi data jika mean lebih kecil daripada median dan modus. ................... 108
Gambar 119. Distribusi data jika mean lebih besar daripada median dan modus. .................. 108
Gambar 120. Plot linear regression tinggi dan berat. ................................................................... 109
Gambar 121. Plot data tinggi dan berat. ......................................................................................... 112
Gambar 122. Garis model linear regression. .................................................................................. 112
Gambar 123. Prediksi data baru tinggi 170 cm. ............................................................................. 113
Gambar 124. Prediksi data baru tinggi 185 cm. ............................................................................. 113
Gambar 125. Kurva density ketika nilai mean, median dan modus adalah sama. .................. 118
Gambar 126. Kurva distribusi normal. ........................................................................................... 118
Gambar 127. Luar di bawah kurva sesuai panjang deviasi standar. .......................................... 119
Gambar 128. Grafik plot dengan menggunakan fungsi dnorm(). .............................................. 120
Gambar 129. Grafik plot fungsi dnorm() dengan nilai mean = 0. ............................................... 120
Gambar 130. Grafik plot dengan menggunakan fungsi pnorm(). .............................................. 121
Gambar 131. Grafik plot dengan fungsi qnorm(). ......................................................................... 122
Gambar 132. Grafik histogram dengan data dari hasil fungsi rnorm()...................................... 122
Gambar 133. dua kemungkinan keluaran saat melempar uang koin. ....................................... 124
Gambar 134. Grafik plot dengan menggunakan fungsi dbinom(). ............................................ 125
Gambar 135. Data curah_hujan_timeseries. ................................................................................... 131
Gambar 136. Plot curah hujan. ......................................................................................................... 132
Gambar 137. Data deret waktu kelahiran di kota New York. ..................................................... 133

X
Gambar 138. Plot kelahiran di kota New York. ............................................................................. 133
Gambar 139. Data komponen seasonal pada deret waktu kelahiran di kota New York. ........ 134
Gambar 140. Data komponen trend pada deret waktu kelahiran di kota New York. ............. 134
Gambar 141. Plot komponen-komponen data deret waktu. ....................................................... 135
Gambar 142. Grafik plot CO2. ......................................................................................................... 136
Gambar 143. Plot data CO2 dan data hasil prediksi. .................................................................... 138
Gambar 144. Plot nilai-nilai komponen pada data CO2. ............................................................. 138
Gambar 145. Grafik plot data AirPassengers. ................................................................................ 139
Gambar 146. Grafik plot data aktual dan prediksi penumpang pesawat. ................................. 141
Gambar 147. Plot grafik komponen-komponen pada model_penumpang. .............................. 141
Gambar 148. Plot data x dan y. ........................................................................................................ 143
Gambar 149. Plot dengan data baru. ............................................................................................... 144

XI
1
Pendahuluan

Pengantar R
R bukan saja bahasa tetapi juga lingkungan/environment untuk komputasi statistik dan
grafik. R merupakan project GNU yang dikembangkan oleh Bell Laboratories (sebelumnya
AT&T, sekarang Lucent Technologies) oleh John Chamber dan teman-temannya.
R menyediakan berbagai macam tool statistik dari linier dan memodelan non linier, uji
statistik klasik, analisis time-series, klasifikasi, clustering dan lain-lain. R juga menyediakan
tool teknik grafis yang bertujuan untuk menampilkan data yang telah diolah secara visual
dalam bentuk grafik.
R merupakan project open-source yang memungkinkan banyak pihak untuk memberikan
kontribusi dalam proses pengembangan.

Installasi
Installer atau source code R tersedia dalam beberapa platform yaitu Windows, Mac OS X dan
Linux. Pada ebook ini digunakan installer yang diunduh dari link berikut ini
https://cran.rstudio.com/.
Saat ebook ini ditulis versi R adalah 3.2.3 yang release pada tanggal 10 Desember 2015, versi
ini mempunyai kode Wooden Chrismas-Tree. Nama file installer yang digunakan adalah R-
3.2.2-win.exe. Proses installasi sangat mudah seperti proses installer pada platform Windows
pada umumnya.

Setup Environment Variable MS Windows


Setelah proses installasi maka file-file hasil installasi akan disimpan pada folder C:\Program
Files\R\. Jika nanti ada keperluan untuk menjalankan script *.R pada command line maka
harus dilakukan setup environment agar R.exe atau Rscript.exe dapat dijalankan tanpa harus
mengetikan lokasi file secara lengkap.
Berikut ini adalah langkah-langkah yang harus dilakukan untuk melakukan setup
environment variable pada MS Windows. Pertama jalankan Windows Explorer kemudian
pada My Computer atau This PC klik kanan dan pilih Properties. Pada jendela System pilih
Advanced system settings.

12
Gambar 1. Window System.
Kemudian pada window System Properties klik tombol Environment Variables.

Gambar 2. Window System Properties.


Kemudian pada window Environment Variables pilih Path pada kolom System variables dan
klik tombol Edit.

Gambar 3. Window Environment Variables.

13
Kemudian pada window Edit System Variable dapat ditambahkan baris berikut ini.

Gambar 4. Window Edit System Variable.


Kemudian klik tombol OK.

Hello World
Setelah proses installasi selesai dilakukan. Maka saatnya untuk menjalankan RGui untuk
pertama kali. Berikut ini adalah antarmuka yang dapat dilihat.

Gambar 5. RGui.
Saat belajar bahasa pemrograman baru maka hal pertama yang dilakukan adalah membuat
program sederhana yaitu Hello World. Untuk menampilkan kalimat Hello World dapat
dilakukan beberapa cara, yang pertama adalah menulis baris berikut ini pada command
prompt yang terlihat pada gambar.

sprintf("R says Hello World")

Maka hasilnya dapat dilihat pada gambar di bawah ini.

14
Gambar 6. Hello World pada command prompt.

Cara yang kedua adalah membuat file HelloWorld.R denga nisi seperti berikut ini.

HelloWorld.R

HelloWorld <- function( name ) {


sprintf( "Hello world from , %s", name );
}

Kemudian tentukan direktori kerja ke lokasi file tersebut disimpan. Dengan sintaks perintah
seperti berikut ini.

setwd(direktori)

Kemudian panggil file tersebut dengan perintah berikut ini.

source(nama_file)

Selanjutnya panggil nama fungsi yang terdapat pada file tersebut.

HelloWorld(“R”)

Pada gambar di bawah ini dapat dilihat hasil dari setiap perintah yang telah disebutkan di
atas.

15
Gambar 7. HelloWorld.R.

R Environment
Dari paparan di atas dapat dilihat bahwa R bukan hanya sebagi bahasa pemrograman saja,
tetapi juga merupakan lingkungan atau environment yang dapat digunakan sebagai tool
menulis perintah atau mengeksekusi program yang ditulis dengan bahasa R.
Sebagai lingkungan atau environment yang terintegrasi, R juga memiliki fitur-fitur lain yang
sangat membantu. Sebagai contoh fitur untuk melihat dan mengedit data seperti yang terlihat
pada gambar di bawah ini.

Gambar 8. Fitur edit data.

16
Fitur lain adalah integrasi untuk mengakses paket bantuan pengolahan data.

Gambar 9. Memilih lokasi untuk mengunduh paket.

Untuk menggunakan paket yang diinginkan terlebih dahulu dipilih lokasi tempat paket
tersebut disimpan. Pada gambar di atas dipilih lokasi di Japan. Setelah lokasi paket dipilih,
maka akan ditampilkan daftar paket-paket yang tersedia seperti yang dapat dilihat pada
gambar di bawah ini.

17
Gambar 10. Daftar paket.
Setelah paket yang diinginkan dipilih maka selanjutnya paket tersebut akan diunduh dan
dipasang untuk siap digunakan.

Gambar 11. Status pemasangan paket.


Cara lain untuk menginstall package adalah dengan menggunakan fungsi install.packages().
Berikut adalah sintaks dari fungsi ini:

install.packages(“nama_paket”)

18
Sebagai contoh jika ingin menginstall paket randomForest untuk melakukan klassifikasi maka
dapat diketikan baris berikut ini.

install.packages(“randomForest”)

Dan hasil dari fungsi di atas dapat dilihat pada gambar di bawah ini.

Gambar 12. Fungsi install.packages() untuk menginstall package yang diinginkan.


Bagi yang telah memiliki pengalaman dengan Matlab, maka paket (package) yang dibahas di
atas memiliki kemiripan dengan Toolbox pada Matlab. Package/paket pada R ini memiliki
kemampuan spesifik untuk mengolah data. Karena lingkungan R yang bersifat terbuka maka
paket ini terus bertambah dan berkembang. Bahkan kita pun dapat terlibat dalam membuat
paket sendiri sesuai dengan kebutuhan.

RStudio vs RGui
Pada bagian sebelumnya sudah diperlihatkan RGui yang menjadi tool default pada
lingkungan R. Selain RGui ada tool lain yang memiliki fitur yang sama dengan beberapa
kemudahan lain yang ditawarkan yaitu RStudio.

Gambar 13. RStudio.

19
Ada beberapa kemudahan-kemudahan yang diberikan oleh RStudio, yaitu:
1. Bantuan code completion yang akan menampilkan daftar perintah saat kita telah
mengetik karakter pada command prompt.
2. Integrasi bantuan dalam satu layar, sehingga informasi hasil perintah help() dapat
langsung ditampilkan.
3. Tab environment yang menampilkan daftar objek yang dibuat.
4. Tab display Files, Plots, Package yang juga terintegrasi pada satu layar.
5. Penggunakan shortcut untuk posisi cursor masih dapat digunakan pada command
prompt. Seperti shortcut tombol keyboard Ctrl dan panah kiri atau kanan untuk
pindah cursor per kata.
Pembahasan pada ebook ini selanjutnya akan digunakan RStudio sebagai tool belajar bahasa
R.

Referensi
https://www.r-project.org/about.html
https://dzone.com/articles/learn-r-hello-world-r
https://www.rstudio.com/

20
2
Fungsi & Operator Dasar
Pada bagian ini akan diberikan sintaks fungsi- fungsi beserta contoh-contoh penggunaannya.
Fungsi-fungsi yang akan dibahas akan digolongkan sesuai dengan pekerjaan yang ingin
dilakukan/diselesaikan.

Sintaks
Perlu diperhatikan bahwa fungsi atau kode pada lingkungan R adalah case sensitif, artinya
penggunaan huruf besar atau kecil akan sangat berpengaruh. Misal jika fungsi adalah setwd()
ditulis dengan huruf kecil maka perintah yang ditulis dengan SETWD() atau SetWD() tidak
akan dikenali oleh lingkungan R. Hal ini juga berpengaruh pada penulisan sintaks program
atau penulisan fungsi.
Selain itu biasanya fungsi pada lingkungan R memiliki akhiran (), sebagai contoh:

ls()

setwd()

help()

Tanda () sering kita temui saat pengakses fungsi atau prosedur pada bahasa pemrograman
pada umumnya. Seperti layaknya fungsi atau prosedur maka diantara tanda () dapat berisi
parameter, seperti contoh berikut ini:

help(“ls”) atau help(ls)

setwd(“C:/data”)

sprintf(“hello world”)

read.table(header = TRUE, text = "


a b
1 2
3 4
")

Dari contoh-contoh di atas dapat dilihat bahwa fungsi-fungsi tidak ditulis tanpa tanda baca
sebagai akhiran. Tetapi jika ingin menggunakan akhiran untuk satu fungsi maka dapat
digunakan tanda ;
Berikut ini contoh penggunaan tanda ; pada lingkungan R.

ls();

21
sprintf(“kalimat pertama”); sprintf(“kalimat kedua”)

Hasil dari contoh fungsi di atas dapat dilihat pada gambar di bawah ini.

Gambar 14. Penulisan dua fungsi sekaligus pada lingkungan R.

Operator
Pada command prompt, pengguna dapat melakukan operasi matematika. Operator adalah
salah sarana yang digunakan untuk melakukan operasi matematika. Pada gambar di bawah
ini dapat dilihat penggunaan contoh matematika sederhana.

Gambar 15. Contoh-contoh operator.


Selain operator matematika seperti contoh di atas, R juga memili operati untuk assignment
yaitu = atau tanda panah (<- atau ->). Pada contoh di bawah ini dapat dilihat penggunaan
keduanya dan perbedaannya.

22
Gambar 16. Operator = dan tanda panah.
Dari contoh di atas fungsi operator = dan tanda panan (<- atau ->) memiliki fungsi yang sama
yaitu untuk assign suatu nilai ke variable (misal variabel x, y, z). selain untuk operasi
matematika seperti contoh di atas, operator ini juga dapat digunakan untuk menampung nilai
keluaran dari suatu fungsi, seperti contoh di bawah ini.

HelloWorld <- function( name ) {


sprintf( "Hello world from %s ", name )
}

SendHello = function( name ) {


sprintf( "Send Hello to %s ", name )
}

Pada contoh di atas dapat dilihat operator tersebut juga dapat digunakan untuk assign fungsi
ke suatu variable sebagai nama fungsi tersebut.

Bantuan
Lingkungan R juga menyediakan bantuan atau manual penggunaan. Untuk mengakses
halaman bantuan atau manual tersebut dapat menggunakan fungsi berikut ini.

help.start()

Maka akan ditampilkan halaman berikut ini pada tab Help.

Gambar 17. Halaman utama bantuan/manual penggunaan.

23
Dari halaman di atas dapat dilihat terdapat 3 tipe bantuan yaitu:
1. Manual
Pada tipe bantuan ini terdiri atas:
a. An Introduction R.
b. Writing R Extensions.
c. R Data Import/Export.
d. The R Language Definition.
e. R Installation and Administration.
f. R Internals.
2. Reference
Pada tipe bantuan ini terdiri atas:
a. Packages.
b. Search Engine & Keywords.
3. Miscellaneous material
Pada bagian ini bantuan yang dapat digunakan adalah:
a. Frequently Asked Questions.
b. User Manuals.
Selain itu fungsi help() dapat digunakan untuk memberikan bantuan untuk mengetahui
penggunaan suatu perintah. Berikut ini adalah contohnya:

help(ls)

Fungsi tersebut akan menampilkan informasi tentang fungsi ls() dari deskripsi, sintaks
penggunaan dan penjelasan argumen atau parameter masukan pada fungsi tersebut.

Gambar 18. Bantuan untuk perintah ls().


Fungsi lain adalah seperti berikut ini:

help(help)

Dan informasi yang ditampilkan seperti pada gambar di bawah ini.

24
Gambar 19. Bantuan untuk fungsi help().

Working Directory
Working directory merupakan direktori aktif yang digunakan untuk bekerja saat berada di
lingkungan R. Saat berada pada direktori kerja (working directory) maka file-file pada
direktori tersebut dapat langsung diakses hanya dengan memanggil nama filenya tanpa perlu
menulis lengkap path absolutnya.
Berikut ini adalah contoh untuk memuat source kode file *.R.

source("C:/Users/faisal/Documents/Data/My Books/Pemrograman-Pengenalan
Bahasa Pemrograman R/source/HelloWorld.R")

Atau fungsi lain untuk memuat data dari file pada suatu direktori.

genes = read.table("C:/Users/faisal/Documents/Data/My Books/Pemrograman-


Pengenalan Bahasa Pemrograman R/source/gene_expression.txt")

Pada lingkungan R ada dua fungsi yang dapat digunakan terkait dengan penanganan
working direktori. Fungsi pertama adalah untuk mengetahui path working directory yang
sedang digunakan.

getwd()

Sedangkan untuk menentukan working direktori yang digunakan digunakan fungsi berikut
ini:

setwd(“C:/Users/faisal/Documents/Data/My Books/Pemrograman-Pengenalan
Bahasa Pemrograman R/source”)

25
Gambar 20. Hasil perintah setwd() dan getwd().
Selain dengan fungsi di atas, RStudio telah memberikan fasilitas untuk memilih direktori dan
menjadikannya sebagai working directory. Langkah-langkah yang mesti dilakukan adalah
dengan memilih icon pada lingkaran merah pada gambar.

Gambar 21. Tab file pada RStudio.


Pada window Browse for Folder pilih direktori yang diinginkan kemudian klik tombol OK.

Gambar 22. Memilih direktori.


Maka akan ditampilkan daftar file pada direktori tersebut seperti pada gamba di bawah ini.

Gambar 23. Perintah Set As Working Directory.

26
Kemudian pada tombol More pilih Set As Working Directory. Tetapi working directory yang
dipilih tersebut hanya bertahan saat itu saja, jika nanti RStudio ditutup dan digunakan lagi
maka working directory yang aktif adalah working directory default.
Jika ingin memiliki working directory yang dapat digunakan kembali saat membuka ulang
RStudio maka dapat dilakukan dengan cara membuat project dengan cara pilih menu File >
New Project maka akan ditampilkan window seperti pada gambar di bawah ini.

Gambar 24. Window Create Project.


Jika telah memiliki direktory kerja sebelumnya dapat dipilih Existing Directory kemudian
pilih direktori yang diinginkan seperti pada window di gambar berikut ini.

Gambar 25. Memilih direktori.


Setelah mengklik tombol Create Project maka dilihat tampilan berikut ini.

27
Gambar 26. Project baru.
Nama project adalah sesuai dengan nama direktori yang diakses. Nanti jika RStudio ditutup
dan dijalankan lagi dilain waktu maka secara default akan diaktifkan project yang terakhir
digunakan. Atau dapat juga dengan memilih project yang diinginkan dari menu File > Open
Project atau memilih dari daftar project pada menu File > Recent Projects.

Memanggil Fungsi Terdahulu


Terkadang fungsi yang telah dituliskan sebelumnya ingin dijalankan lagi, maka daripada
harus mengetik fungsi yang sama dari awal maka sebaiknya cukup panggil saja fungsi
tersebut. Untuk mengakses fungsi-fungsi history tersebut dapat digunakan tombol panah
atas atau panah bawah.

Mengelola Session
Jika sedang bekerja dengan data atau value maka objek data atau variable itu akan ada pada
session. Secara visual objek tersebut dapat dilihat pada tab Environmen di RStudio.

28
Gambar 27. Objek data dan value pada session.
Jika data atau value tersebut sudah tidak digunakan lagi dan ingin dihapus pada session maka
dapat digunakan fungsi berikut ini:

rm(gene_expression)

Fungsi di atas untuk menghapus data gene_expression, sedangkan untuk menghapus value
x digunakan fungsi berikut ini.

rm(gene_expression)

Tetapi dapat juga menghapus kedua objek tersebut secara bersamaan dengan perintah ini.

rm(gene_expression, x)

Sedangkan jika ingin menghapus seluruh objek yang ada bisa digunakan perintah berikut ini.

rm(list=ls())

Memuat File
Pada Bab 1 di bagian Hello World telah dapat dilihat penggunaan perintah source(). Fungsi
ini berfungsi untuk memuat file yang berisi source code program yang ditulis dengan bahasa
R.
Sintaks dari fungsi ini adalah:

source(“nama_file”)

Sebagai contoh

source('~/Data/My Books/Pemrograman-Pengenalan Bahasa Pemrograman


R/source/HelloWorld.R')

Cara yang lebih mudah adalah dengan memilihnya langsung dengan cara mengklik double
pada file *.R yang diinginkan pada tab Files.

29
Gambar 28. Daftar file pada working directory.
Maka akan ditampilkan window yang memuat file *.R yang dipilih seperti pada gambar di
bawah ini.

Gambar 29. Source code HelloWorld.R.


Klik tombol Source untuk memuat fungsi-fungsi yang terdapat di dalam file tersebut sehingga
fungsi tersebut dapat dilihat pada tab Environtment.

Gambar 30. Daftar fungsi pada tab Environtment.


Selanjutnya tinggal tuliskan nama fungsi yang diinginkan pada command prompt untuk
menjalankan fungsi tersebut.

Menyimpan Output ke File


Pada contoh di atas setiap perintah atau fungsi yang dijalankan menampilkan hasilnya di
layar. Jika ada kebutuhan untuk menampilkan output untuk disimpan ke dalam file maka R
memiliki fungsi yang bisa digunakan untuk kebutuhan tersebut.
Berikut adalah langkah-langkah sebagai berikut di bawah ini. Pertama adalah mengeksekusi
fungsi di bawah ini.

sink("ouput.txt")

Perintah di atas menyatakan bahwa output dari fungsi-fungsi R yang akan dijalankan
setelahnya akan disimpan pada file output.txt.
Kemudian sebagai contoh dijalankan fungsi sebagai berikut:

30
sprintf("kalimat 1")
sprintf("kalimat 2")
sprintf("kalimat 3")

Dan terakhir ketikkan fungsi berikut ini.

sink()

Setelah fungsi di atas dijalankan maka proses penulisan ke file output.txt akan berhenti. Dan
ketika fungsi-fungsi lain dieksekusi maka output dari setiap fungsi tidak akan disimpan ke
file output.txt lagi.
Jika ingin melihat isi dari file output.txt dapat dilihat dengan memilihnya pada tab Files
seperti yang terlihat pada gambar di bawah ini.

Gambar 31. File output.txt.


Berikut ini adalah isi dari file output.txt.

[1] "kalimat 1"


[1] "kalimat 2"
[1] "kalimat 3"

Daftar Fungsi
Fungsi yang dapat digunakan untuk melihat fungsi-fungsi yang terdapat pada lingkungan R
adalah sebagai berikut:

builtins()

Hasilnya adalah seperti berikut ini.


[1] "zapsmall" "xzfile" "xtfrm.Surv"
[4] "xtfrm.POSIXlt" "xtfrm.POSIXct" "xtfrm.numeric_version"
[7] "xtfrm.factor" "xtfrm.difftime" "xtfrm.default"
...
[1303] "!=" "!.octmode" "!.hexmode"
[1306] "!" "-.POSIXt" "-.Date"
[1309] "-"

31
Package
Pada bagian ini akan diterangkan fungsi-fungsi yang berguna untuk mengelola package pada
lingkungan R. Package yang telah diinstall pada lingkungan R juga dikenal dengan istilah
library.

Lokasi Library
Untuk mengetahui lokasi penyimpanan library maka dapat digunakan perintah berikut ini.

.libPaths()

Hasil dari fungsi di atas adalah sebagai berikut, output ini mungkin akan berbeda.

[1] "C:/Users/faisal/Documents/R/win-library/3.2" "C:/Program Files/R/R-


3.2.3/library"

Daftar Library
Untuk melihat daftar library yang telah terpasang pada lingkurangan R dapat menggunakan
fungsi berikut ini.

library()

Hasil dari fungsi tersebut akan dapat dilihat pada tab R packages available yang akan
ditampilkan di atas area console. Karena pada contoh di atas terdapat dua lokasi
penyimpanan library, maka daftar library juga ditampilkan berdasarkan kelompok lokasi
tersebut.

Gambar 32. Daftar package atau library pada path pertama.

32
Gambar 33. Daftar package atau library pada path kedua.

Install Package
Untuk menginstall package dapat dilakukan dengan dua cara yaitu dengan menggunakan
fungsi yang sudah disediakan pada interface RGui atau RStudio. Yang kedua dengan cara
mengetikkan fungsi install.packages() pada console dengan sintaks berikut ini.

install.packages("Package Name")

Jika ternyata paket yang ingin digunakan terdapat pada GitHub maka dapat diguakan library
devtools untuk menggunakan fungsi install_github(). Selain itu juga terdapat fungsi jika ingin
menginstall paket dari lingkungan repositori yang lain seperti SVN dan lain-lain.

Setting Opsi Lingkungan


Untuk mengetahui parameter-paremeter opsi yang digunakan pada lingkungan R di
komputer pengguna dapat digunakan fungsi berikut ini.

options()

Berikut ini adalah sebagian output dari fungsi ini.

$add.smooth
[1] TRUE

$CBoundsCheck
[1] FALSE

$check.bounds
[1] FALSE

$citation.bibtex.max
[1] 1

$continue
[1] "+ "

$prompt
[1] "> "

$warn
[1] 0

33
$warning.length
[1] 1000

$width
[1] 124

$windowsTimeouts
[1] 100 500

Pada output di atas dapat dilihat parameter $prompt yang bernilai “> “. Hal tersebut sesuai
dengan karakter yang terlihat pada gambar di bawah ini.

Gambar 34. Prompt.


Jika ingin mengubah nilai parameter tersebut maka dapat digunakan perintah berikut ini.

options(prompt = "darkside# ")

Hasilnya seperti terlihat pada gambar di bawah ini.

Gambar 35. Hasil penggantian parameter dengan fungsi option().


Dengan fungsi ini maka pengguna dapat mengubah nilai parameter sesuai dengan
kebutuhan.

Keluar dari Lingkungan R


Fungsi yang digunakan untuk keluar dari lingkungan R adalah seperti berikut ini:

q()

Jika perintah ini diketik pada command prompt pada RGui atau RStudio maka secara
otomatis tool tersebut juga akan ditutup.

34
3
Dasar-Dasar Pemrograman

Variable
Seperti halnya pemrograman dengan PHP, variable pada R tidak perlu melakukan deklarasi
tipe data untuk variable yang digunakan. Tipe data variable akan sesuai dengan data yang
dimasukkan pada variable tersebut. Sebagai contoh dapat dilihat pada kode berikut ini.

Gambar 36. Penggunaan variable.


Dari contoh di atas dapat dilihat digunakan “a” sebagai variable. Pertama variable “a”
diberikan nilai angka, kemudian variable “a” diberikan nilai dengan tipe string dan terakhir
variable “a” diberikan nilai boolean. Dari contoh di atas dapat dilihat bahwa variable pada
lingkungan R tidak bersifat strong type, sehingga suatu variable dapat diisi dengan nilai
dengan tipe data yang berbeda-beda.
Untuk membuat atau mendeklarasikan variable pada lingkungan R dapat dilakukan dengan
dua cara yaitu dengan menggunakan tanda = atau <- seperti contoh berikut ini.

a = 1
a <- 1

Keduanya mempunyai efek yang sama.

Tipe Data
Walaupun variable tidak harus dideklarasikan tipe datanya sebelum digunakan, tetapi
lingkungan R tetap mengenal tipe data. Pada lingkungan R tipe data digolongkan menjadi:
1. Skalar.
2. Vector.
3. Matrix.

35
4. Data Frame.
5. List.
6. Dan lain-lain.

Skalar
Contoh tipe skalar sudah sering digunakan pada contoh-contoh sebelumnya, yaitu:
1. Number, secara default digunakan double.
2. Character, selain single character juga dapat menangani string.
3. Logical, yaitu bernilai TRUE atau FALSE.

Vector
Untuk membuat vector digunakan bantuan fungsi c(). Vector dapat berisi tipe data skalar
seperti number, character atau logical. Berikut ini adalah contoh mendeklasikan variable
sebagai vector.

vec_number <- c(1,2,-5.13,6,-2,4)


vec_char = c("mohammad", "reza", "faisal")
vec_bool = c(TRUE, FALSE, TRUE, TRUE)

Hasil dari kode di atas dapat dilihat pada gambar di bawah ini.

Gambar 37. Variable vector.


Pada gambar di atas dapat dilihat cara untuk melihat seluruh nilai dari variable yang dipilih.
Sebagai contoh untuk melihat nilai-nilai pada vector vec_number.

> vec_number
[1] 1.00 2.00 -5.13 6.00 -2.00 4.00

Jika ingin menampilkan atau mengakses elemen dari vec_number dapat digunakan cara
sebagai berikut.

36
Gambar 38. Cara mengakses elemen vector vec_number.
Dari gambar di atas dapat dilihat bahwa index dari variable vector berisi fungsi c() yang
didalamnya berisi urutan angka elemen yang ingin diakses. Pada gambar di atas terdapat
kode vec_number[c(0)] yang menghasilkan output numeric(0), hal ini menandakan bahwa
index tidak dimulai dari 0 tetapi dimulai dari 1.
Contoh lain bisa dilihat pada gambar di bawah ini.

Gambar 39. Hasil akses elemen vector vec_char.


Pada gambar di atas juga dapat dilihat cara mengakses lebih dari satu elemen vector sekaligus.
Jika ingin mengubah nilai suatu elemen pada vector dapat dilakukan dengan cara berikut ini.

vec_char[c(1)] = “muhammad”

Maka hasilnya bisa dilihat pada gambar di bawah ini.

37
Gambar 40. Memodifikasi nilai pada elemen vector.

Factor
Factor dapat dibentuk dari vector. Jika ada kebutuhan untuk mengkategorikan nilai-nilai
yang dimiliki oleh suatu variable maka factor dapat memberikan kemudahan. Sebagai contoh
misalnya dimiliki nilai ujian akhir mahasiswa pada suatu kelas yang disimpan pada vector
berikut.

nilai_uas_v = c("A", "A", "C", "B", "A", "E", "E", "E", "A", "C", "D", "C"
,"D", "A" ,"C")

Maka untuk mengkonversi vector tersebut menjadi factor digunakan fungsi factor() seperti
contoh di bawah ini.

nilai_uas_f = factor(nilai_uas_v)

Berikut adalah hasil dari perintah di atas dan pengenalan fungsi summary().

Gambar 41. Hasil penggunaan fungsi factor() dan summary().


Dari gambar di atas dapat dilihat ketika variable nilai_uas_f dipanggil maka selain
menampilkan isi dari variable tersebut juga menampilkan keterangan Levels yang
mengkategorikan isi dari variable. Secara otomatis dilakuan pengelompokan atau
pengkategorian berdasarkan nilai. Kemudia jika digunakan fungsi summary() maka akan
ditampilkan jumlah dari setiap kategori/kelompok. Pada kasus di atas secara otomatis dapat
diketahui jumlah mahasiswa yang mendapatkan nilai A adalah 5 orang, B adalah 1 orang, C
adalah 4 orang, D adalah 2 orang dan E adalah 3 orang.
Untuk mengubah nilai pada factor harus sesuai dengan nilai yang telah dikategorikan sesuai
nilai yang terlihat pada Levels. Sebagai contoh pada gambar di atas nilai Levels : A B C D E,
artinya tidak dapat mengubah nilai elemen selain nilai tersebut.

38
Pada gambar di bawah ini diperlihatkan cara mengganti nilai elemen pada factor.

Gambar 42. Mengubah nilai elemen pada factor.

Matrix
Untuk membuat matrix dapat mengikuti sintaks seperti berikut ini.

var_matrix<- matrix(data, nrow=r, ncol=c, byrow=FALSE, dimnames=list(char_


vector_rownames, char_vector_colnames))

Keterangan:
1. data: adalah isi dari matrix. Nilai dapat diisi dari vector.
2. nrow: jumlah baris.
3. ncol: jumlah kolom.
4. byrow: jika nilainya FALSE maka matrix diisi berdasarkan kolom, sebaliknya akan
diisi berdasarkan row.
5. dimnames: digunakan untuk menentukan nama kolom dan baris.
Dalam membuat matrix harus diperhatikan bahwa:
1. Seluruh kolom pada matrix harus berisi tipe data yang sama (numeric, char, boolean).
2. Seluruh kolom harus memiliki panjang yang sama.
Berikut ini adalah contoh membuat matrix. Pada contoh di bawah ini akan dibuat dua buah
matrix sederhana tetapi dengan menggunakan nilai parameter byrow yang berbeda. Secara
default nilai parameter byrow adalah FALSE.

39
Gambar 43. Contoh pembuatan matrix sederhana.

Dari contoh di atas nilai yang diberikan pada matrix adalah angka 1 sampai 20 yang cukup
ditulis dengan cara 1:20. Pada contoh di atas dibuat dua buah matrix yaitu matrix y yang
pengisian nilainya berdasarkan kolom dan matrix x yang pengisiannya nilainya berdasarkan
baris. Matrix y diisi berdasarkan baris karena mengisikan nilai pada paramenter byrow.
Contoh pembuatan matrix yang lain dapat dilihat pada contoh di bawah ini.

data = c(1,26,24,68)
nama_baris = c("R1", "R2")
nama_kolom = c("C1", "C2")
z = matrix(data, nrow=2, ncol=2, byrow=TRUE, dimnames=list(nama_baris,
nama_kolom))

Baris pertama adalah membuat variable data yang menampung data dalam bentuk vector.
Baris kedua adalah membuat variable nama_baris yang akan menjadi nama baris sedangkan
pada baris ketiga adalah membuat variable nama_kolom. Selanjutnya adalah membuat
matrix z.
Hasil dari perintah ini akan dibentuk matrix seperti pada gambar di bawah ini.

40
Gambar 44. Output matrix z.

Selanjutnya adalah cara untuk mengakses matrix. dari contoh di atas dapat dilihat untuk
menampilkan isi seluruh matrix cukup dengan memanggil nama variable matrix yang
diinginkan yaitu x atau x atau z.
Jika ingin mengakses seluruh baris kedua pada matrix z maka dapat digunakan perintah
berikut ini.

z[2,]
z["R2",]

Sedangkan jika ingin mengakses seluruh kolom pertama pada matrix z maka digunakan
perintah berikut ini.

z[,1]
z[,"C1"]

Sedangkan jika ingin mengakses nilai elemen pada elemen baris ke-2 dan kolom ke-2
digunakan perintah berikut ini.

z[2,2]
z["R2","C2"]

Hasil dari ketiga perintah ini dapat dilihat pada gambar di atas.
Selain itu dapat juga mengakses matrix dengan keluaran berupa matrix seperti contoh di
bawah ini.

x[2:4,1:3]

Maksud dari perintah itu adalah mengakses elemen matrix baris 2 sampai dengan 4 dan
kolom 1 sampai dengan 3, sehingga akan didapatkan keluaran berupa matrix seperti pada
gambar di bawah ini.

41
Gambar 45. Mengakses beberapa elemen matrix.
Sedangkan jika ingin memodifikasi nilai elemen pada matrix dapat dilakukan dengan cara
seperti contoh berikut ini.

x[1,1] = 20
x[1,] = 20

Baris pertama bertujuan untuk memberikan nilai baru pada elemen matrix baris 1 dan kolom
1. Sedangkan kode pada baris kedua bertujuan untuk mengubah nilai seluruh elemen pada
baris pertama. Sehingga dapat dilihat hasilnya seperti pada gambar di bawah ini.

Gambar 46. Mengubah nilai elemen matrix.

42
Array
Array, tipe data ini, mempunyai karakteristik seperti matrix bedanya adalah dimensi yang
dimiliki array dapat lebih dari 2, seperti diketahui bahwa matrix hanya dapat memiliki
dimensi N x N. Array memungkinkan untuk memiliki dimensi:
1. N x N x N.
2. N x N x N x N.
3. Dan seterusnya.
Berikut ini adalah contoh membuat variable bertipe array.

number_arr = array(1:27, dim=c(3,3,3))

Dan berikut adalah isi dari variable number_arr.

Gambar 47. Array berdimesi 3x3x3.


Untuk mengakses variable array berdimensi 3x3x3 ini dapat dilakukan dengan cara berikut
ini, yang akan menghasilkan keluaran yaitu 9.

number_arr [3,3,1]

Cara lain yang lebih rumit untuk membuat array dapat dilihat dari contoh di bawah ini

tiga_d_array = array(
1:24,
dim = c(4, 3, 2),
dimnames = list(
c("satu", "dua", "tiga", "empat"),
c("siji", "loro", "telu"),
c("hiji", "dua")
)
)

Contoh di atas adalah membuat array dengan memberikan nama untuk kolom dan baris
dimensinya.

43
Gambar 48. Array tiga_d_array.

Data Frame
Frame lebih general jika dibandingkan dengan matrix. Frame dapat memiliki tipe data skalar
yang berbeda, tetapi jumlah elemen seluruh kolom tetap harus sama. Bagi pengguna yang
telah memiliki pengalaman menggunakan dataset pada SAS atau SPSS akan familiar dengan
data seperti ini.
Berikut ini adalah sintaks yang dapat digunakan.
data.frame(..., row.names = NULL, check.rows = FALSE,
check.names = TRUE,
stringsAsFactors = default.stringsAsFactors())

Dan di bawah ini adalah contoh penggunaan fungsi ini.

a = c(1,2,3,4)
b = c("green", "white", "red", "blue")
c = c(TRUE,TRUE,TRUE,FALSE)
data_frame = data.frame(a,b,c, stringsAsFactors = FALSE)
names(data_frame) = c("ID","Color","Passed")

Baris pertama sampai dengan ketiga bertujuan untuk membuat variable a,b dan c yang berisi
vector dengan tipe data skalar yang berbeda. Sedangkan baris keempat adalah langkah untuk
membuat variable dengan nama data_frame sebagai data frame dengan isi vector a, b dan c.
terakhir adalah memberikan nama kolom, kolom pertama akan memiliki nama ID, kolom
kedua bernama Color dan kolom ketiga memiliki nama Passed. Berikut ini adalah isi dari
data frame data_frame.

44
Gambar 49. Data pada data_frame.
Jika pada tab Environment dipilih data_frame dengan cara mengklik double maka akan
ditampilkan data_frame seperti pada gambar di bawah ini.

Gambar 50. Tampilan data_frame secara visual pada RStudio.


Dari gambar di atas dapat dilihat fungsi names() bertujuan untuk memberikan nama untuk
setiap kolom pada data frame.
Selanjutnya adalah akan dicontohkan bagaimana mengakses elemen pada data frame. Jika
ingin mengakses elemen baris ke 4 dan kolom pertama maka bisa dilakukan dengan dua cara
yaitu:

data_frame[4,1]
data_frame[4,”ID”]

Sedangkan jika ingin mengakses seluruh nilai elemen kolom kedua dapat dilakukan dengan
kedua cara berikut ini.

data_frame[,2]
data_frame[,”Color”]

Sedangkan untuk mengubah nilai suatu elemen, misal elemen baris ke-1 dan kolom ke-1,
maka dapat dilakuan dengan cara seperti berikut.

data_frame[1,1] = 5
data_frame[1,”ID”] = 5

45
List
Fungsi list() dapat digunakan untuk membuat variable yang di dalamanya berisi banyak
objek dengan tipe data yang beragam. Sebagai contoh di dalam sebuat variable yang dibentuk
dari fungsi list() dapat berisi atas tipe data skalar, vector, matrix dan lain-lain. Berikut adalah
contoh dari variable yang dibentuk dari fungsi list().

mahasiswa <- list(name="Adi", mynumbers=a, mymatrix=y, umur=21)

Sebagaimana yang telah dibahas pada bagian sebelumnya, pembahasan tentang data frame,
telah dibuat vector a. Dan pada pembahasan bagian tentang matrix telah dibuat matrix y.
dari contoh kode di atas dapat diketahui bahwa list() dapat digunakan untuk menampung
beragam tipe data.
Dan pada gambar di bawah ini dapat dilihat isi dari variable mahasiswa.

Gambar 51. Output variable bentukan fungsi list().


Sedangkah cara untuk mengakses isi dari data yang disimpan di dalam list dapat digunakan
dengan sintaks seperti berikut ini.

nama_objek[[index]]

Jika ingin mengakses nilai pertama pada variable mahasiswa maka digunakan kode seperti
berikut.

mahasiswa[[1]]

Dan berikut adalah contoh lain mengakses variable list beserta hasilnya.

46
Gambar 52. Cara mengakses list dan outputnya.

Fungsi Pendukung
Pada pembahasan sebelumnya telah diberikan contoh penggunaan fungsi typeof() yang dapat
digunakan untuk mengetahui tipe data dari suatu variable.

dim()
Sedangkan fungsi dim() berfungsi untuk memeriksa dimensi dari suatu variable yang tipenya
bukan skalar seperti matrix, data frame dan lain-lain. Sintaks dari fungsi ini adalah sebagai
berikut.

dim(objek_yang_akan_diperiksa)

Dan hasilnya dapat dilihat pada gambar di bawah ini.

Gambar 53. Hasil fungsi dim().

47
Dari gambar di atas dapat dilihat variable x adalah matrix dengan dimensi 5x4 dan dengan
perintah dim(x) dapat dilihat output 5 4. Begitu juga untuk perintah dim(data_frame) yang
berfungsi untuk mengetahui dimensi variable data_frame.

class()
Fungsi class() bertujuan untuk memeriksa tipe data pembentuk objek yang diperiksa. Sintaks
dari fungsi ini adalah sebagai berikut.

class(objek_yang_akan_diperiksa)

Dan hasil dari fungsi ini dapat dilihat pada gambar di bawah ini.

Gambar 54. Hasil dari fungsi class().

Pada gambar dapat dilihat bahwa x merupakan matrix dan data_frame adalah data frame.

length()
fungsi untuk mendapatkan informasi panjang dari vector, list, factor dan objek lainnya.
Sintaks dari fungsi ini adalah sebagai berikut.

length(objek)

Sebagai contoh bisa dilihat sebagai berikut

Gambar 55. Output fungsi length().


names()
Fungsi ini berfungsi untuk mendapatkan nama yang dimiliki oleh objek. Misal jika data frame
memiliki nama untuk kolom-kolomnya maka dengan fungsi ini akan ditampilkan nama-
nama tersebut. Berikut adalah sintaks dari fungsi ini.

names(objek)

Sebagai contoh dapat dilihat pada kode di bawah ini.

48
names(data_frame)

Dan berikut ini adalah hasil dari kode di atas.

Gambar 56. Output fungsi names().


Dapat dilihat objek data_frame memiliki kolom dengan nama a, b dan c. Dan ketika
digunakan fungsi names() maka ditampilkan output sesuai dengan nama dari kolom-kolom
tersebut.

edit()
Fungsi ini dapat digunakan untuk menyalin suatu objek ke objek baru kemudian mengedit
objek baru tersebut secara visual. . Sintaks dari fungsi ini adalah sebagai berikut.

objek_baru = edit(objek)

Sebagai contoh dari penggunaan fungsi ini adalah sebagai berikut.

data_frame_baru = edit(data_frame)

Setelah baris kode di atas ditulis maka akan ditampilkan seperti pada gambar di bawah ini.

Gambar 57. Window Data Editor.

49
Window tersebut berfungsi untuk mengedit objek data_frame dan hasilnya akan disimpan
pada objek data_frame_baru. Dengan window data editor ini dimungkinkan untuk
menambah kolom dan menambah data.

Gambar 58. Menambah kolom dengan nama d.


Dan berikut adalah gambar setelah kolom dibuat dan ditambahkan data pada kolom d
tersebut.

Gambar 59. Menambahkan data pada kolom d.


Dan berikut adalah hasil ketika objek data_frame_baru dipanggil.

Gambar 60. Data pada objek data_frame_baru.

fix()
fungsi fix() ini berfungsi untuk mengedit suatu objek dengan menggunakan window Data
Editor seperti yang sudah dapat dilihat pada pembahasan di atas. Fungsi ini tidak
memungkinkan untuk menambah kolom, tetapi hanya digunakan untuk mengedit atau
menambah data saja.

50
Gambar 61. Mengedit data pada objek dengan fungsi fix().

Percabangan
Pada bagian ini akan diberikan penjelasan tentang percabangan pada bahasa R.

Operator
Untuk melakukan percabangan pada bahasa R perlu digunakan operator pembanding dan
operator logika. Operator ini merupakan operator umum yang dijumpai pada bahasa
pemrograman lain.
Berikut ini adalah daftar operator pembanding:
Tanda Fungsi
== Sama dengan
!= Tidak sama dengan
> Lebih besar
>= Lebih besar atau sama dengan
< Lebih kecil
<= Lebih kecil atau sama dengan
Sedangkan operator logika dapat dilihat pada tabel di bawah ini.
Tanda Fungsi
& and
| or
! negasi

Statement if
if adalah statement yang umum digunakan pada percabangan. Berikut ini adalah sintaks dari
statement ini.

if(kondisi) {
...
}

51
Jika “kondisi” bernilai benar maka “fungsi” akan dijalankan, jika “kondisi” salah maka
“fungsi” tidak akan dijalankan.
Sebagai contoh:

if(5 > 4){sprintf("5 lebih besar daripada 4")}

Karena kondisi 5 > 4 adalah benar maka fungsi sprintf di dalam tanda { } dieksekusi.

Sintaks penggunaan statement ini yang lebih rumit dapat dilihat di bawah ini.

if(kondisi) {
...
} else {
...
}

Atau sintaks berikut ini.

if(kondisi 1) {
...
} else if(kondisi 2) {
...
} else {
...
}

Untuk mencoba sintaks di atas maka dibuat fungsi sederhana yang disimpan pada file
HitungNilai.R dengan kode di bawah ini.
HitungNilai.R
HitungNilai <- function(nilai){
if(nilai > 100 | nilai < 0) {
sprintf("Nilai harus 0-100")
} else {
if(nilai >= 80){
sprintf("A")
} else if (nilai >= 70){
sprintf("B")
} else if (nilai >= 60){
sprintf("C")
} else if (nilai >= 50) {
sprintf("D")
} else {
sprintf("E")
}
}
}

Hasilnya dapat dilihat pada gambar di bawah ini.

52
Gambar 62. Hasil fungsi HitungNilai().

Pada contoh kode HitungNilai.R di atas telah digunakan operator logika dan operator
pembanding.

Statement ifelse
Statement ini merupakan percabangan yang merupakan bentuk ringkas dari sintaks if-else di
bawah ini.

if(kondisi) {
...
} else {
...
}

Dengan statement ifelse maka sintaksnya menjadi seperti berikut.

if(kondisi, dijalankan_jika_benar, dijalankan_jika_salah)

Contoh penggunaan perintah ini adalah sebagai berikut.

ifelse(TRUE, sprintf("benar"), sprintf("salah"))


ifelse(FALSE, sprintf("benar"), sprintf("salah"))

Dan hasilnya bisa dilihat pada gambar di bawah ini.

53
Gambar 63. Contoh penggunaan ifelse.

Statement switch
Sintaks untuk statement switch adalah sebagai berikut.

switch (statement, list)

Parameter statement dapat berupa tipe data numerik, string atau karakter. Sedangkan
parameter list berisi nilai-nilai yang akan ditampilkan sesuai dengan nilai yang diberikan
pada parameter statement.
Untuk parameter statement berupa numerik dapat dilihat contohnya di bawah ini.

switch(2,"merah","kuning","biru")

Pada contoh di atas, nilai untuk parameter statement adalah 2. Sedangkan parameter list
berisi nilai-nilai sebagai berikut:
1. merah.
2. kuning.
3. biru.
Karena diberikan nilai 2 sebagai nilai parameter maka output dari contoh di atas adalah
“kuning”.
Contoh berikutnya adalah jika tipe data parameter statement adalah karakter.

switch("B","B" = "Benar","S" = "Salah")

Output dari contoh di atas adalah “Benar”.


Sedangkan contoh yang lain dapat dilihat di bawah ini.

switch("panjang", "warna"="merah", "bentuk"="persegi", "panjang"=5)

Output dari contoh di atas adalah 5.

Pengulangan
Pada bagian ini akan dijelaskan penggunaan statement for dan while untuk melakukan
pengulangan.

54
Statement for
Berikut ini adalah sintaks dari statement for.

for(variable in sequence) {
...
}

Jika dilihat dari sintaks di atas maka sintaks tersebut lebih mirip dengan statement foreach
yang ada pada bahasa pemrograman lain seperti C#.
Berikut adalah contoh penggunaan statement ini.

for(i in 1:5) {print(i)}

Keluaran dari kode di atas adalah sebagai berikut.

Gambar 64. Output statement for.


Dari kode di atas dilakukan pengulangan 1:5 (1 sampai 5) dan nilai itu akan disimpan pada
variable i setiap langkah pengulangan dilakukan.

Contoh lain adalah menggunakan pengulanan untuk membaca isi dari vector yang dibuat
dengan cara di bawah ini.

data = 1:10
for(i in data) {print(data[i])}

Hasilnya dapat dilihat pada gambar di bawah ini.

55
Gambar 65. Pengulangan vector dengan for().

Statement while
Cara lain untuk melakukan pengulangan adalah dengan menggunakan statement while.
Sintaks dari statement ini adalah sebagai berikut.
inisialisasi nilai variable
while (kondisi) {
...
mengubah nilai variable
}

Contoh penggunaan statement ini adalah seperti dicontohkan pada kode di bawah ini.
i = 1;
while(i <= 5){
print(i);
i = i+1;
}

Hasil dari kode di atas dapat dilihat pada gambar di bawah ini.

Gambar 66. Output statement while.


Berikut ini adalah contoh penggunaan pengulangan while() untuk mengakses data pada
vector.

56
data_mahasiswa = c("mohammad", "reza", "faisal", "budi", "iwan", "wati")

i=1

while(i <= 6){


print(data_mahasiswa[i])
i = i+1
}

Dan berikut adalah hasil dari kode di atas.

Gambar 67. Pengulanan while() untuk mengakses data vector.

Statement repeat
Sintaks untuk statement repeat adalah sebagai berikut.

repeat {
...
}

Berbeda dengan bahasa pemrogram seperti Pascal, statement repeat pada R tidak memiliki
kondisi. Untuk itu perlu dibuat kondisi di dalam badan tanda { }. Berikut ini adalah contoh
dari penggunaan statement repeat.
i = 1
repeat{
print(i)
if(i==5) {break()}
i = i + 1
}

Dan hasilnya dapat dilihat pada gambar di bawah ini.

57
Gambar 68. Output pengulangan dengan repeat.

Function
Membuat Fungsi
Selain menggunakan fungsi yang telah disediakan pada lingkuran R, pengguna
dimungkinkan untuk membuat fungsi sendiri. Sintaks yang digunakan untuk membuat
fungsi dapat dilihat di bawah ini. Pada bahasa pemrograman terdapat dua jenis fungsi yaitu
fungsi yang tidak mengembalikan nilai dan fungsi yang mengembalikan nilai.
Untuk fungsi yang tidak mengembalikan nilai maka digunakan sintaks seperti berikut ini.

NamaFungsi <- function(arg1,arg2,... ){


...
}

Atau

NamaFungsi = function(arg1,arg2,... ){
...
}

Sedangkan fungsi yang mengembalikan nilai digunakan sintaks seperti berikut ini.

NamaFungsi <- function(arg1,arg2,... ){


...
return(object)
}

Atau

NamaFungsi = function(arg1,arg2,... ){
...

58
return(object)
}

Untuk membuat fungsi sebaiknya disimpan pada file dengan extension *.R. Cara penanganan
file *.R untuk memuat fungsi ke dalam session dapat dilihat pada Bab 2 bagian pembahasan
Memuat File. Sedangkan untuk membuat file *.R dapat dilakukan dengan memilih File > New
File > R Script dan kemudian simpan dengan nama file yang diinginkan dan diikuti dengan
extension .R.
Berikut ini adalah contoh kedua tipe fungsi tersebut dan bagaimana cara untuk
menggunakannya.
Bab3Latihan.R

# Fungsi tanpa mengembalikan keluaran


HelloRepeat = function(jumlah) {
data = 1:jumlah
for(i in data) {
print(data[i])
}
}

# Fungsi yang mengembalikan keluaran


Tambah = function(bilangan1, bilangan2) {
hasil = bilangan1 + bilangan2;
return(hasil);
}

HelloRepeat(6)

hasil_jumlah = Tambah(5,6)
hasil_jumlah

Untuk fungsi yang mengembalikan keluaran maka fungsi tersebut dapat digunakan dengan
dua cara, yaitu dengan cara memanggil langsung atau dapat pula ditampung terlebih dahulu
dengan cara seperti contoh di atas, dimana keluaran fungsi Tambah() ditampung pada
variable hasil_jumlah.

Menjalankan Fungsi pada RStudio


RStudio memiliki fitur untuk menjalankan file *.R yaitu dengan mengklik tombol Run seperti
pada gambar di bawah ini.

59
Gambar 69. Eksekusi script *.R pada RStudio.
Hal yang perlu diperhatikan, jika dilakukan pengubahan atau penambahan pada file dan
ingin mengeksekusinya pada command prompt sebaiknya tekan tombol Source untuk
memuat ulang script yang baru tersebut ke session. Hal lain yang perlu diperhatikan dalam
menggunakan tombol Run adalah berfungsi untuk menjalankan baris yang dimana cursor
aktif pada file tersebut. Sebagai contoh jika cursor berada pada baris ke-15 maka yang
dijalankan hanya baris itu saja yaitu fungsi HelloRepeat(5).

Komentar
Komentar adalah baris yang tidak dianggap dijalankan sebagai kode program atau fungsi.
Komentar sering digunakan untuk memberikan keterangan terhadap apa yang ditulis pada
program. Selain itu komentar juga dapat digunakan untuk “menon-aktifkan” suatu baris agar
tidak dieksekusi.
Untuk membuat komentar cukup gunakan karakter # pada posisi awal baris, seperti yang
terlihat pada contoh di bawah ini.
Bab3Latihan.R
# Fungsi tanpa mengembalikan keluaran
HelloRepeat = function(jumlah) {
data = 1:jumlah
for(i in data) {
print(data[i])

60
}
}

# Fungsi yang mengembalikan keluaran


Tambah = function(bilangan1, bilangan2) {
hasil = bilangan1 + bilangan2;
return(hasil);
}

HelloRepeat(6)

#hasil_jumlah = Tambah(5,6)
#hasil_jumlah

Pada dua baris terakhir dapat dilihat fungsi komentar agar kedua baris tersebut tidak
dijalankan.

Eksekusi Script R
Jika ada kebutuhan untuk mengeksekusi fungsi atau urutan fungsi-fungsi yang telah
disimpan pada file script R maka hal tersebut dapat dilakukan pada lingkungan R dengan
menggunakan RScript.exe.
Sintaks perintah yang digunakan adalah sebagai berikut:

RScript.exe nama_file.R

Sebagai contoh seperti perintah di bawah ini.

RScript.exe Bab3Latihan.R

Dan hasilnya dapat dilihat pada gambar di bawah ini.

Gambar 70. Menjalankan script R dengan RScript.exe.


Dari hasil percobaan yang dilakukan pada contoh script Bab3Latihan.R, ada beberapat hal
yang perlu diperhatikan dalam membuat script yang akan dijalankan dengan RScript.exe
yaitu:

61
1. Pada contoh Bab3Latihan.R terdapat dua baris kode yang menampilkan output yaitu
pada baris ke 15 dan 18. Jika menggunakan RScript.exe maka hanya “baris kode yang
menampilkan output” pertama saja yang akan ditampilkan pada layar.
2. Sebaiknya script R yang ingin dijalankan dengan cukup mengeluarkan output yang
disimpan ke layar. Untuk menyimpan output ke layar dapat digunakan fungsi sink()
yang telah dibahas pada Bab 2. Selain sink() juga terdapat fungsi lain yang bisa
digunakan untuk menyimpan hasil program ke file seperti pdf(), png(), jpeg(), bmp()
dan postscript(). Fungsi-fungsi tersebut akan dibahas pada pada pembahasan
pembuatan grafik dengan R.

Referensi
http://manuals.bioinformatics.ucr.edu/home/programming-in-r
http://www.statmethods.net/input/datatypes.html
https://en.wikibooks.org/wiki/R_Programming/Data_types
http://www.stat.berkeley.edu/~s133/factors.html
http://www.tutorialspoint.com/r/

62
4
Pemrograman Berbasis Obyek
Setelah belajar dasar-dasar pemrograman R selajutnya akan dikenalkan pemrograman
berbasis obyek atau Object Oriented Programming (OOP) dengan menggunakan R. Hal ini
perlu diperkenalkan agar pembaca dapat mengerti ketika bertemu contoh-contoh kode
program yang ditulis dengan R yang menggunakan konsep OOP ini, sebagai contoh adalah
jika contoh kode program pada bidang Bioinformatics.
Lingkungan R mendukung dua sistem untuk OOP yaitu S3 dan yang lebih baru adalah S4.
Pada sistem S4 telah mendukung multiple inheritance, multiple dispach dan introspection.

Class
Untuk membuat class pada lingkungan R digunakan fungsi setClass(). Seperti pada fungsi
pada umumnya, didalamnya dapat berisi parameter-parameter. Berikut adalah contoh
penggunaan fungsi tersebut.
y = matrix(1:50, 10, 5)

setClass(Class="ProsesMatrix",
representation=representation(a="ANY"),
prototype=prototype(a=y[1:2,]),
validity=function(object) {
if(class(object@a)!="matrix") {
return(paste("nilai yang digunakan harus matrix, data yg anda gunakan
adalah", class(object@a)))
} else {
return(TRUE)
}
}
)

Keterangan parameter-parameter yang dimiliki oleh fungsi setClass():


1. Class: nama class.
2. representation: slot yang harus dimiliki oleh class baru atau class turunannya.
3. prototype: sebuah obyek menyediakan data default untuk slot.
4. contains: class-class induk.
5. validity, access, version: control argument.
6. where: lingkungan untuk menggunakan, menyimpan atau menghapus definisi
sebagai meta data.
Untuk membuat inisialisasi method yang akan dipanggil saat class diinstasiasi dapat
digunakan dengan lain seperti berikut ini.

setMethod("initialize", "ProsesMatrix", function(.Object, a) {


.Object@a <- a/a
.Object
})

63
Obyek
Untuk membuat objek dari class yang telah dibuat digunakan fungsi new(). Berikut ini adalah
contoh untuk membuat objek dari class ProsesMatrix yang telah dibuat pada bagian
sebelumnya.

prosesMatrixObj = new("ProsesMatrix", a=y)

Jika objek prosesMatrixObj dipanggil akan dapat dilihat output seperti berikut.

> prosesMatrixObj
An object of class "ProsesMatrix"
Slot "a":
[,1] [,2] [,3] [,4] [,5]
[1,] 1 11 21 31 41
[2,] 2 12 22 32 42
[3,] 3 13 23 33 43
[4,] 4 14 24 34 44
[5,] 5 15 25 35 45
[6,] 6 16 26 36 46
[7,] 7 17 27 37 47
[8,] 8 18 28 38 48
[9,] 9 19 29 39 49
[10,] 10 20 30 40 50

Berikut ini akan dicontohkan jika class diberikan nilai dengan tipe bukan matrix. Pada contoh
di bawah ini nilai yang diberikan bertipe data frame.

> prosesIris = new("ProsesMatrix", a=iris)


Error in validObject(.Object) :
invalid class “ProsesMatrix” object: nilai yang digunakan harus matrix,
data yg anda gunakan adalah data.frame

Inheritance
Inheritance atau pewarisan adalah konsep pemrograman dimana sebuah class dapat
menurunkan sifat-sifat (biasanya berupa pewarisan property dan method) yang dimilikinya
kepada class lain. Pada lingkungan R, untuk mewarisi suatu class induk dapat dilakukan
dengan menggunakan pengisian parameter contain pada fungsi setClass().
Misal dibuat dua buah class yaitu ClassInduk1 dan ClassInduk2 seperti berikut.

setClass("ClassInduk1", representation(a = "character", b = "character"))


setClass("ClassInduk2", representation(c = "numeric", d = "numeric"))

Jika ingin membuat class yang mewarisi sifat-sifat dari ClassInduk1 dan ClassInduk2 maka
dapat dibuat class dengan cara seperti berikut ini.

setClass("ClassAnak", contains=c("ClassInduk1", "ClassInduk2"))

Untuk melihat sifat-sifat ClassInduk1 dan ClassInduk2 pada ClassAnak maka dapat dibuat
objek dari ClassAnak sebagai berikut.

> new("ClassAnak", a=letters[1:4], b=letters[1:4], c=1:4, d=4:1)


An object of class "ClassAnak"

64
Slot "a":
[1] "a" "b" "c" "d"

Slot "b":
[1] "a" "b" "c" "d"

Slot "c":
[1] 1 2 3 4

Slot "d":
[1] 4 3 2 1

Dan jika dilihat obyek yang dibuat dari class ClassInduk1 maka akan dapat dilihat output
seperti berikut.

> getClass("ClassInduk1")
Class "ClassInduk1" [in ".GlobalEnv"]

Slots:

Name: a b
Class: character character

Known Subclasses: "ClassAnak"

Sedangkan output dari obyek yang dibuat dari class ClassInduk2 adalah sebagai berikut.

> getClass("ClassInduk2")
Class "ClassInduk2" [in ".GlobalEnv"]

Slots:

Name: c d
Class: numeric numeric

Known Subclasses: "ClassAnak"

Pada contoh kode di atas diperkenalkan fungsi untuk memeriksa class, yaitu getClass().
Selain fungsi itu juga dapat digunakan fungsi lain untuk memeriksa class yaitu:
1. getSlots().
2. slotNames().
3. extends().

Method & Fungsi Generic


Untuk membuat method atau fungsi generic pada lingkungan R digunakan fungsi:
1. setMethod()
2. setGeneric().
Untuk membuat fungsi generic dapat dilakukan dengan dua cara. Yang pertama adalah
dengan mengubah fungsi yang sudah ada menjadi fungsi generic dengan cara seperti berikut
ini.

fungsiBiasa = function(object) 0
fungsiGeneric = setGeneric("fungsiBiasa")

65
Cara kedua adalah membuat fungsi generic sendiri dengan cara seperti berikut, misal dimiliki
class seperti berikut.

setClass("Shape")
setClass("Polygon", representation(sides = "integer"), contains = "Shape")

Maka untuk membuat method untuk class tersebut dapat dilakukan dengan cara seperti
berikut.

setMethod("sides", signature(object = "Polygon"), function(object) {


object@sides
})

Jika diperiksa dengan fungsi showMethods() seperti berikut di bawah ini, maka akan dapat
dilihat obyek yang menggunakan method ini adalah obyek dari class Polygon.

> showMethods("sides")
Function: sides (package .GlobalEnv)
object="ANY"
object="Polygon"

Fungsi-fungsi yang dapat digunakan untuk memeriksa method adalah sebagai berikut:
1. showMethods().
2. findMethods().
3. getMethod().
4. existsMethod().

66
5
Dasar-Dasar Pengelolaan Data
Pada bab ini akan dibahas dan dicontohkan cara untuk bekerja dengan data dalam proses
import dan export data. Hal ini dikarenakan biasanya telah dimiliki data dengan format
tertentu seperti format plain text, CSV, Excel atau format keluaran aplikasi SPSS atau SAS,
yang mana file data tersebut ingin diolah di lingkungan R. Data tersebut akan ditampung ke
dalam tipe data yang telah dibahas pada Bab 3, yang mana tipe data tersebut harus dipilih
sesuai dengan kebutuhan.
Selain itu mungkin ada kebutuhan dimana data hasil proses dari lingkuran R akan digunakan
kembali atau akan digunakan oleh aplikasi lain sehingga perlu dilakukan proses export.

Import Data
Pada lingkungan R terdapat fungsi-fungsi yang dapat digunakan untuk melakukan proses
import data. Untuk sebuah format file maka akan digunakan sebuah fungsi yang spesifik.
Data yang diimport akan disimpan dalam objek dengan tipe data yaitu data frame.

Text File
Data yang disimpan pada file plain text biasanya dipisahkan oleh karakter sebagai separator.
Selain itu kadang digunakan tabulasi (tombol tab) sebagai pemisah pada data. Karakter
separator yang umum digunakan adalah adalah koma (,) sehingga text file jenis ini sering
disebut sebagai file CSV (comma separated value).
Fungsi yang digunakan untuk keperluan ini adalah read.table(). Berikut adalah sintaks fungsi
ini.

read.table(file, header = FALSE, sep = "", quote = "\"'",


dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)

Selain fungsi tersebut juga terdapat fungsi-fungsi lain yang dapat digunakan yaitu:

read.csv(file, header = TRUE, sep = ",", quote = "\"",


dec = ".", fill = TRUE, comment.char = "", ...)

read.csv2(file, header = TRUE, sep = ";", quote = "\"",


dec = ",", fill = TRUE, comment.char = "", ...)

Kedua fungsi tersebut dapat digunakan untuk membara file dengan format csv.

67
Fungsi lain yang dapat digunakan adalah read.delim() dan read.delim2() dengan sintaks
seperti berikut:

read.delim(file, header = TRUE, sep = "\t", quote = "\"",


dec = ".", fill = TRUE, comment.char = "", ...)

read.delim2(file, header = TRUE, sep = "\t", quote = "\"",


dec = ",", fill = TRUE, comment.char = "", ...)

Berikut adalah contoh-contoh penggunaan fungsi-fungsi tersebut. Untuk menggunakan


fungsi di atas maka terlebih dahulu dilakukan pemeriksaan data yang dimiliki. Sebagai
contoh dimiliki data seperti berikut ini.
Bab4DataText01.txt
YAL033W -0.38 1000 -0.23 -0.17 -0.31 -0.16 0.07 0.4 0 0.26
YAL034C -0.54 1.04 0.05 -0.31 -0.27 -0.27 0.19 -0.38 0 0.3
YAL035C 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000
YAL035W -0.35 -0.91 -0.6 -0.32 -0.22 0.17 -0.15 0.2 0.13 -0.13

Pada contoh data di atas dapat dilihat setiap kolom data hanya dipisahkan oleh tabulasi
(tombol tab). Untuk mengimport data seperti itu dapat digunakan kode di bawah ini.

bab4_data_text = read.table("Bab4DataText01.txt")
bab4_data_text

Jika objek bab4_data_text dipanggil maka akan dapat dilihat data yang sesuai dengan isi file
Bab4Data.txt seperti pada gambar di bawah ini.

Gambar 71. Isi data pada objek bab4_data_text.


Untuk membuktikan apakah objek yang menampung data adalah data frame, maka dapat
dilihat dengan menggunakan perintah class(bab4_data_text) seperti pada gambar di atas.
Contoh lain jika dimiliki data seperti berikut ini.
Bab4DataText02.txt
Gen T1 T2 T3 T4 T5 T6 T7 T8 T9 T10
YAL033W -0.38 1000 -0.23 -0.17 -0.31 -0.16 0.07 0.4 0 0.26
YAL034C -0.54 1.04 0.05 -0.31 -0.27 -0.27 0.19 -0.38 0 0.3
YAL035C 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000
YAL035W -0.35 -0.91 -0.6 -0.32 -0.22 0.17 -0.15 0.2 0.13 -0.13

Jika data Bab4DataText02.txt diimport dengan kode yang sama persis dengan contoh di atas
maka akan didapatkan isi objek seperti berikut.

Gambar 72. Isi data objek bab4_data_text hasil import dari file Bab4DataText02.txt.

68
Dapat dilihat pada baris pertama yang berisi informasi yang seharusnya menjadi header dari
data, sedangkan data dimulai dari baris kedua. Berikut ini adalah kode yang dapat
digunakan.

bab4_data_text = read.table("Bab4DataText02.txt", header = TRUE)

Dengan kode di atas maka objek bab4_data_text akan seperti berikut ini.

Gambar 73. Header data pada objek bab4_data_text.


Dengan baris kode yang menggunakan opsi header=TRUE membuat baris pertama pada data
di file Bab4DataText02.txt menjadi nama kolom sedangkan baris kedua sampai baris terakhir
menjadi data.
Contoh data yang lain adalah seperti contoh di bawah ini. Item-item pada data di bawah ini
dipisahkan oleh tanda koma (,).
Bab4DataText03.txt
Gen,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10
YAL033W,-0.38,1000,-0.23,-0.17,-0.31,-0.16,0.07,0.4,0,0.26
YAL034C,-0.54,1.04,0.05,-0.31,-0.27,-0.27,0.19,-0.38,0,0.3
YAL035C,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000
YAL035W,-0.35,-0.91,-0.6,-0.32,-0.22,0.17,-0.15,0.2,0.13,-0.13

Untuk mengimport data di atas digunakan kode seperti berikut. Pada kode di bawah ini
digunakan opsi sep=”,”. Opsi sep memiliki arti sebagai separator.

bab4_data_text = read.table("Bab4DataText03.txt", header = TRUE, sep = ",")

Selain itu juga dapat digunakan fungsi read.csv() yang lebih spesifik bertujuan untuk
menangani data CSV (comma separated value) seperti di atas. Berikut adalah contoh kode
penggunaan kedua fungsi tersebut.

bab4_data_text = read.csv("Bab4DataText03.txt")

Sedangkan jika data yang dimiliki dipisahkan oleh tanda titik koma (;) seperti contoh data
berikut ini. Maka data digunakan fungsi read.csv2().
Bab4DataText04.txt
Gen;T1;T2;T3;T4;T5;T6;T7;T8;T9;T10
YAL033W;-0.38;1000;-0.23;-0.17;-0.31;-0.16;0.07;0.4;0;0.26
YAL034C;-0.54;1.04;0.05;-0.31;-0.27;-0.27;0.19;-0.38;0;0.3
YAL035C;1000;1000;1000;1000;1000;1000;1000;1000;1000;1000
YAL035W;-0.35;-0.91;-0.6;-0.32;-0.22;0.17;-0.15;0.2;0.13;-0.13

Berikut adalah contoh kode penggunaan fungsi read.csv2().

bab4_data_text = read.csv2("Bab4DataText04.txt")

Hasil dari kedua fungsi read.csv() dan read.csv2() adalah seperti pada gambar di bawah ini.

69
Gambar 74. Output fungsi read.csv() dan read.csv2().
Fungsi yang lain adalah read.delim() yang dapat digunakan untuk mengimport data dengan
karakteristik seperti berikut.
Bab4DataText05.txt
t1 t2 t3 t4 t5 t6 t7 t8
r1 1 0 1 0 0 1 0 2
r2 1 2 2 1 2 1 2 1
r3 0 0 0 2 1 1 0 1
r4 0 0 1 1 2 0 0 0
r5 0 2 1 1 1 0 0 0
r6 2 2 0 1 1 1 0 0
r7 2 2 0 1 1 1 0 1
r8 0 2 1 0 1 1 2 0
r9 1 0 1 2 0 1 0 1
r10 1 0 2 1 2 2 1 0
r11 1 0 0 0 1 2 1 2
r12 1 2 0 0 0 1 2 1
r13 2 0 0 1 0 2 1 0

Item-item pada data pada file Bab4DataText05.txt dipisahkan oleh tanda \t yang sama artinya
dengan tab. Biasanya data seperti ini merupakan keluaran dari suatu aplikasi dimana cara
untuk mengkonversi aksi tekan tombol tab dengan karakter \t pada kode program di aplikasi
tersebut. Berikut adalah contoh kode penggunaan fungsi read.delim() dan read.delim2().

bab4_data_text = read.delim("Bab4DataText05.txt")
bab4_data_text = read.delim2("Bab4DataText05.txt")

Kedua fungsi tersebut menghasilkan keluaran yang sama, walaupun sebenarnya antara
kedua fungsi tersebut memiliki perbedaan nilai default opsi dec yaitu opsi yang berisi nilai
default tanda yang digunakan sebagai pemisah bilangan desimal. Untuk lebih jelasnya bisa
dilihat kembali sintaks fungsi read.delim() dan read.delim2() di atas.

Excel
Untuk mengimport file Excel maka terlebih dahulu harus memuat paket xlsx. Untuk
menambahkan paket ini ke lingkungan R dapat dilakukan dengan cara memilih menu Tools

70
> Install Packages. Kemudian pada window Install Packages tulis nama paket xlsx seperti
pada gambar di bawah ini.

Gambar 75. Window Install Packages.


Untuk menginstall paket pada lingkungan R harus dipastikan komputer terhubung ke
internet. Langkah selanjutnya secara otomatis paket yang diinginkan akan diunduh.

Gambar 76. Proses pengunduhan paket xlsx.


Jika proses pengunduhan dan installasi berhasil maka dapat dilihat pesan seperti pada
gambar di bawah ini.

71
Gambar 77. Proses pengunduhan dan installasi paket telah berhasil.
Pada gambar dapat dilihat telah diinstall dua paket, yaitu:
1. xlsxjars.
2. xlsx.
Fungsi yang digunakan untuk mengimport data dari file Excel adalah read.xlsx(). Untuk
menggunakan fungsi ini terlebih dahulu paket ini harus dimuat dengan fungsi library(),
seperti dicontohkan pada kode di bawah ini.

library(xlsx)

Dan hasilnya akan terlihat seperti gambar di bawah ini.

Gambar 78. Memuat paket xlsx dengan menggunakan fungsi library().


Sebagai informasi, jika ingin membatalkan pemuatan paket maka dapat digunakan fungsi
unloadNamespace(), sebagai contoh bisa dilihat kode berikut ini.

unloadNamespace(xlsx)

Setelah itu maka fungsi read.xlsx() dan read.xlsx2() sudah dapat digunakan. Sintaks dari
kedua fungsi ini adalah sebagai berikut.

read.xlsx(file, sheetIndex, sheetName=NULL, rowIndex=NULL,


startRow=NULL, endRow=NULL, colIndex=NULL,
as.data.frame=TRUE, header=TRUE, colClasses=NA,
keepFormulas=FALSE, encoding="unknown", ...)

read.xlsx2(file, sheetIndex, sheetName=NULL, startRow=1,


colIndex=NULL, endRow=NULL, as.data.frame=TRUE, header=TRUE,
colClasses="character", ...)

72
Berikut ini adalah data yang akan dimport dengan menggunakan fungsi terserbut.

Gambar 79. Data dari file Excel – Bab4DataExcel.xlsx.


File Bab4DataExcel.xlsx di atas terdiri atas 2 sheet yaitu:
1. Sheet dengan label Hasil 1 yang terdiri atas 13 record.
2. Sheet dengan label Hasil 2 yang terdiri atas 13 record.
Kedua sheet tersebut terdiri atas 11 kolom dan tidak memiliki header.
Untuk mengimport data dari sheet 1 (Hasil 1) maka digunakan perintah berikut.

bab4_data_excel = read.xlsx("Bab4DataExcel.xlsx", header = FALSE , 1)

Sedangkan jika ingin mengimport data dari sheet 2 (Hasil 2) maka digunakan perintah
berikut.

bab4_data_excel = read.xlsx("Bab4DataExcel.xlsx", header = FALSE , 2)

Dari contoh di atas maka dapat dilihat sintaks yang digunakan cukup seperti berikut ini.

read.xlsx("nama_file", header = FALSE , nomor_sheet)

73
Hasil dari perintah di atas dapat dilihat pada gambar di bawah ini.

Gambar 80. Hasil import data dari file Excel.


Sedangkan jika file Excel memiliki header seperti pada perintah yang digunakan adalah
sebagai berikut.

bab4_data_excel = read.xlsx("Bab4DataExcel02.xlsx", 1)
bab4_data_excel

bab4_data_excel = read.xlsx("Bab4DataExcel02.xlsx", 2)
bab4_data_excel

74
Berikut adalah contoh data yang digunakan untuk kode di atas.

Gambar 81. Data Excel dengan header – Bab4DataExcel.xlsx.


Dan pada gambar di bawah ini dapat dilihat isi dari objek bab4_data_excel yang menampung
data import dari file Bab4DataExcel.xlsx.

Gambar 82. Output objek bab4_data_excel yang menampung data dari file Excel.

75
Sebagai informasi paket xlsx ni juga dapat digunakan untuk membuat dan mengedit file
Excel. Cara untuk membuat dan mengedit file Excel akan dibahas pada bagian Export Data.

Fungsi Built-in Import Data


Selain fungsi-fungsi yang telah dicontohkan di atas, lingkungan R memiliki fungsi lain untuk
import data. Fungsi-fungsi itu adalah:
1. read.dcf(), berfungsi untuk membaca file format Debian Control File.
2. read.DIF(), berfungsi untuk membaca file DIF (Data Interchange Format).
3. read.fotran(), berfungsi untuk membaca file data fixed-format Fortran.
4. read.ftable(), berfungsi untuk membaca format flat contigency table.
5. read.fwf(), berfungsi untuk membaca table dengan format fwf (fixed width
formatted) yang akan ditampung ke dalam objek data frame.

Format Data Populer


Selain format file text dan file Excel yang telah dicontohkan di atas, pada lingkungan R juga
memungkinkan untuk mengimport data dari aplikasi populer lainnya seperti:
1. SPSS.
2. SAS.
3. Stata.
4. Systat.
5. Dan lain-lain.

SPSS
Untuk import data dari file SPSS terlebih dahulu perlu dilakukan file SPSS ke format
transport.

get file='c:\data_spss.sav'.
export outfile='c:\data_spss.por'.

Kemudian gunakan paket Hmisc untuk mengimport data tersebut dengan kode seperti
berikut.

library(Hmisc)
bab4_data_spss = spss.get("data_spss.por", use.value.labels=TRUE)

SAS
Untuk import data dari file SAS terlebih dahulu perlu dilakukan file SAS ke format transport.
Berikut adalah perintah yang dapat digunakan untuk keperluan tersebut.

libname out xport 'data_sas.xpt';


data out.mydata;
set sasuser.mydata;
run;

76
Kemudian gunakan paket Hmisc untuk mengimport data tersebut dengan kode seperti
berikut.

library(Hmisc)
bab4_data_sas = sasxport.get("data_sas.xpt")

Stata
Untuk mengimport data Stata digunakan paket foreign. Dan fungsi yang digunakan untuk
import adalah seperti contoh di bawah ini.

library(foreign)
bab4_data_stata = read.dta("data_stata.dta")

systat
Untuk mengimport data systat digunakan paket foreign. Dan fungsi yang digunakan untuk
import adalah seperti contoh di bawah ini.

library(foreign)
bab4_data_systat = read.systat("data_systat.dta")

Tool Import Data


Jika terbiasa dengan tool visual untuk melakukan proses import data maka paket Amelia
dapat menjawab kebutuhan itu. Caranya adalah dengan mengetikan kode berikut pada
command prompt yang bertujuan untuk menginstall paket Amelia.

install.packages(“Amelia”)

Setelah proses installasi berhasil maka gunakan kode di bawah ini untuk menampilkan tool
Amelia secara stand alone.

library(Amelia)
AmeliaView()

77
Maka akan ditampilkan antarmuka tool seperti berikut ini.

Gambar 83. Antarmuka tool Amelia.


Pada gambar di atas dapat dilihat terdapat tombol untuk import data dengan format CSV,
STATA dan SPSS.

Melihat Data
Pada bagian ini akan diberikan contoh-contoh penggunaan fungsi-fungsi untuk melihat data.

ls()
fungsi ini berguna untuk melihat daftar objek yang aktif pada workspace. Berikut adalah
contoh output dari perintah ini.

Gambar 84. Daftar objek yang aktif pada workspace.


Jika menggunakan RStudio, daftar objek tersebut juga dapat dilihat pada tab Environment
pada bagian Data, seperti yang dapat dilihat pada gambar di bawah ini.

78
Gambar 85. Daftar objek pada tab Environment pada RStudio.

name()
fungsi ini berguna untuk melihat variable yang dimiliki suatu objek. Sintaks dari fungsi ini
adalah sebagai berikut.

name(objek)

Berikut adalah contoh penggunaan fungsi ini dan hasilnya.

Gambar 86. Output penggunaan fungsi names().

str()
Fungsi ini untuk menampilkan daftar struktur dari suatu objek. Sintaks dari fungsi ini adalah
sebagai berikut.

str(objek)

79
Dan pada gambar di bawah ini dapat dilihat contoh output dari fungsi ini.

Gambar 87. Output penggunaan fungsi str().

head()
Fungsi ini dapat digunakan untuk menampilkan sejumlah data pertama yang dimiliki suatu
objek. Berikut adalah sintaks dari fungsi ini.

head(objek, jumlah_data)

Berikut ini adalah contoh output dari fungsi ini.

Gambar 88. Output fungsi head().


Dari contoh di atas dapat dilihat jika nilai jumlah_data adalah 4 maka akan ditampilkan 4 data
pertama. Sedangkan jika nilai jumlah_data adalah 7 maka akan ditampilkan 7 data pertama.

tail()
Fungsi ini mempunyai kegunaan yang berkebalikan jika dibandingkan dengan fungsi head().
Fungsi ini berguna untuk menampilkan sejumlah terakhir data. Berikut adalah sintaks dari
fungsi ini.

tail(objek, jumlah_data)

80
Berikut adalah contoh keluaran dari fungsi ini.

Gambar 89. Output fungsi tail().


Dari contoh di atas dapat dilihat jika jumlah_data adalah 4 maka akan ditampilkan 4 data
terakhir, sedangkan jika nilai jumlah_data adalah 7 maka akan ditampilkan 7 data terakhir.

Export Data
Setelah melakukan perhitungan atau pengolahan data pada lingkungan R, maka hasil
perhitungan disimpan sementara pada suatu variable atau objek pada memory. Jika ingin
menyimpan data pada variable atau objek tersebut secara permanen maka data tersebut bisa
diexport ke file. Data tersebut dapat digunakan kembali pada lingkungan R atau pada
lingkungan lain seperti SPSS, SAS, Stata atau Excel. Untuk kebutuhan itu maka dapat
digunakan fungsi-fungsi berikut ini.

Teks dengan pemisah tab


Untuk menyimpan data ke dalam file teks dengan pemisah tab dapat digunakan fungsi
write.table() dengan contoh penggunaan seperti berikut ini.

write.table(mtcars, "mtcars.txt", sep="\t")

Excel
Sedangkan untuk mengekspor data untuk disimpan pada file dengan format Excel digunakan
fungsi write.xlsx() dari paket xlsx. Berikut adalah contoh penggunaan fungsi tersebut.

library(xlsx)
write.xlsx(mtcars, "mtcars.xlsx")

81
SPSS
Sedangkan untuk menyimpan data pada objek ke dalam format SPSS, SAS dan Strata dapat
digunakan fungsi write.foreign() dari paket foreign.
Berikut adalah contoh kode yang dapat digunakan. Untuk mengekspor data ke format SPSS
digunakan kode berikut.

write.foreign(mtcars, "mtcars.txt", "mtcars.sps", package="SPSS")

Untuk mengeksport data ke format SAS digunakan kode berikut.

write.foreign(mtcars, "mtcars.txt", "mtcars.sas", package="SAS")

Sedangkan untuk mengekspor data ke format Stata digunakan kode berikut ini.

write.dta(mtcars, "mtcars.dta")

Referensi
http://www.statmethods.net/input/importingdata.html
http://www.statmethods.net/input/contents.html
http://www.statmethods.net/input/exportingdata.html
https://cran.r-project.org/doc/contrib/usingR.pdf

82
6
Dasar-Dasar Pembuatan Grafik

Dasar Membuat Grafik


Berikut ini adalah fungsi-fungsi umum atau fungsi dasar yang digunakan untuk membuat
grafik.

plot()
Sintaks yang digunakan untuk plot data adalah seperti berikut ini:

plot(x, y)

Sedangkan x dan y adalah variable yang berisi data titik pada plot. Sebagai contoh jika
digunakan contoh data seperti berikut ini.

year = c(1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979)
snow.cover = c(6.5, 12.0, 14.9, 10.0, 10.7, 7.9, 21.9, 12.5, 15.5, 9.2)
plot(year, snow.cover)

Maka hasilnya dapat dilihat pada tab plot.

Gambar 90. Gambar yang dihasilkan oleh fungsi plot().

title()
Untuk memberikan annotasi pada grafik hasil fungsi plot maka dapat dapat digunakan fungsi
title() untuk memberikan judul pada grafik tersebut dengan sintaks seperti di bawah ini.

title(“title utama”, sub = “sub title”)

83
Maka jika digunakan baris kode di bawah ini.

title(“Grafik Volume Salju”, sub = “Data BMKG Jepang”)

Maka hasilnya dapat dilihat pada gambar di bawah ini.

Gambar 91. Memberikan judul pada grafik dengan fungsi title().

text()
Contoh selanjutnya adalah menggunakan data usingR.RData yang dapat diuduh pada link
berikut ini http://maths-people.anu.edu.au/~johnm/r/dsets/. Simpan file usingR.RData
kemudian load data pada file tersebut dengan perintah di bawah ini.

attach("usingR.RData")

Dan hasilnya dapat dilihat seperti pada gambar di bawah ini.

Gambar 92. Memuat data dari file usingR.RData.


Dari gambar di atas dapat dilihat terdapat data seperti:

84
1. ais.
2. anesthetic.
3. austpop.
4. Car93.cummary.
5. dewpoint.
6. dolphins.
7. elasticband.
8. florida.
9. hills.
10. huron.
11. islandcities.
12. kiwishade.
13. leafshape.
14. milk.
15. moths.
16. oddbooks.
17. orings.
18. possum.
19. primates.
20. rainforest.
21. seedrates.
22. tinting.
Untuk melihat isi data di atas cukup dengan mengetik nama variable tersebut pada command
prompt di R Studio, seperti contoh pada gambar di atas.
Berikut ini akan dicontohkan penggunaan fungsi plot() dan title() yang lebih lengkap.
Langkah pertama adalah menulis perintah berikut ini untuk memuat data primates.

attach(primates)

Kemudian membuat plot antara Bodywt dan Brainwt dengan kode berikut.

plot(Bodywt, Brainwt)

Maka akan didapatkan grafik seperti berikut.

85
Gambar 93. Grafik data primates.
Kemudian akan digunakan kode di bawah ini untuk membuat anotasi pada grafik berupa
title.

title("Primata", sub="Data WWF Indonesia")

Selanjutnya memberikan dan pemberian text pada titik-titik pada data dengan kedua baris
berikut ini.

row.names(primates) <- c("Potar monkey","Gorilla","Human", "Rhesus


monkey","Chimp")

text(x=Bodywt, y=Brainwt, labels=row.names(primates), pos=4)

Dan hasilnya dapat dilihat pada gambar di bawah ini.

86
Gambar 94. Memberikan title dan text pada titik-titik.
Pada contoh di atas fungsi plot() yang digunakan masih standar yaitu hanya menggunakan
dua parameter saja yaitu variable data untuk sumbu x dan y. Berikut ini adalah contoh
penggunaan fungsi plot() dengan penggunaan parameter lainnya.

plot(x=Bodywt, y=Brainwt, pch=16, xlab="Body weight (kg)", ylab="Brain


weight (g)", xlim=c(0,280), ylim=c(0,1350))

Dan hasilnya dapat dilihat pada gambar di bawah ini.

Gambar 95. Setting grafik dengan menggunakan parameter tambahan pada fungsi plot().
Berikut ini adalah keterangan dari parameter yang digunakan pada fungsi plot() di atas, yaitu:
1. pch=16, membuat titik yang semula lingkaran putih menjadi lingkaran hitam.
2. xlab, parameter yang digunakan untuk memberikan label pada sumbu x.
3. ylab, parameter yang digunakan untuk memberikan label pada sumbu y.
4. xlim, panjang maksimal sumbu x.

87
5. ylim, panjang maksimal sumbu y.
parameter yang lain adalah pos=integer, yang berfungsi untuk menentukan posisi label pada
titik. Pada gambar di atas secara default digunakan pos=4, sehingga posisi label berada di
sebelah kanan titik. Jika digunakan pos=1 maka label akan berada di bawah titik, pos=2 maka
label berada di sebelah kiri titik dan pos=3 maka label akan berada di atas titik.

dev.list()
fungsi ini berfungsi untuk melihat daftar grafik yang telah dibuat.

dev.off()
Fungsi ini berfungsi untuk menghentikan akses ke perangkat grafik.

Histogram
Histogram biasanya digunakan digunakan untuk memberikan visualisasi distribusi data.
Berikut ini akan diberikan contoh untuk membuat grafik histogram dengan menggunakan
fungsi hist().
Misalnya dimiliki data pasien pada suatu rumah sakit yang disimpan pada file
Data4Pasien.txt (file dapat dilihat pada project). Untuk itu terlebih dahulu memuat isi file
tersebut ke dalam variable data_pasien dengan kode perintah di bawah ini.

data_pasien = read.table("Bab4DataPasien.txt", header = TRUE)

Pada gambar di bawah ini dapat dilihat sebagaian isi dari data tersebut.

Gambar 96. Memuat isi file Bab4DataPasien.txt ke data_pasien.


Dari data di atas dapat dilihat data tersebut memiliki beberapa atribut yaitu:
1. AGE.
2. HEIGHT.
3. WEIGHT.
4. CHOL.
5. SMOKE.
6. BLOOD.
7. MORT.

88
Sehingga jika ingin membuat grafik histogram untuk melihat distribusi data berdasarkan
umum dapat digunakan sintaks berikut ini.

hist(nama_variable$nama_atribut)

Sehingga jika ingin membuat histogram dari atribut AGE yang dimiliki oleh data data_pasien,
maka digunakan kode di bawah ini.

hist(data_pasien$AGE)

Dan hasilnya dapat dilihat pada gambar di bawah ini.

Gambar 97. Histogram data_pasien$AGE.


Berikut ini adalah contoh fungsi hist() yang menggunakan parameter-parameter pelengkap,
seperti parameter pelengkap untuk memberikan title dan label pada sumbu x dan y.

hist(data_pasien$AGE, main = "Grafik Pasien Berdasarkan Umur", xlab =


"Umur", ylab = "Jumlah Pasien")

Dan gambar berikut adalah hasil dari kode di atas.

89
Gambar 98. Histogram dengan title dan label.

Density
Grafik density dapat digunakan untuk melihat distribusi dari atribut data secara lebih efektif
jika dibandingkan dengan grafik histogram. Sintaks yang dapat digunakan untuk membuat
grafik density adalah sebagai berikut:

plot(density(data))

Sehingga jika ingin membuat grafik density dari atribut AGE pada data_pasien maka
digunakan kode berikut ini.

plot(density(data_pasien$AGE))

Dan pada gambar berikut ini hasil dari kode tersebut.

Gambar 99. Grafik density data_pasien$AGE.

90
Dot Plot
Untuk membuat plot titik maka digunakan fungsi dotchart(). Berikut ini adalah sintaks
sederhana untuk memulai menggunakan fungsi ini.

dotchart(data, labels, cex, main, xlab)

Keterangan:
1. data, data yang akan digunakan.
2. label, label dari setiap titik yang digunakan.
3. cex, ukuran karakter yang digunakan. Penyesuaian ukuran karakter berguna agar
tulisan yang ditampilkan pada chart tidak saling tumpang tindih.
4. main, title utama chart.
5. xlab, title untuk busur x.
Sebagai contoh digunakan data mobil dari mtcars, untuk memuat data dari mtcars dapat
digunakan fungsi sebagai berikut.

attach(mtcars)

Untuk melihat data dapat digunakan fungsi berikut.

tail(mtcars, 10)

Berikut adalah 10 record dari 200 record pada mtcars yang ditampilkan.

Gambar 100. Data pada mtcars.


Selanjutnya digunakan baris berikut ini untuk membuat chart dengan fungsi dotchart().

dotchart(mtcars$mpg, labels = row.names(mtcars), cex = .5, main =


"Penggunaan Minyak per Mil", xlab = "Mil/Galon")

Dan hasilnya dapat dilihat pada gambar di bawah ini.

91
Gambar 101. Chart dengan fungsi dotchart().

Bar Plot
Untuk membuat chart berbentuk bar maka dapat digunakan fungsi barplot(). Sintaks
sederhana untuk menggunakan fungsi ini adalah sabagai berikut:

barplot(data, main=”title chart”, xlab=”label untuk busur x”)

Parameter data adalah variable yang bertipe vector atau matrix.


Berikut adalah contoh kode untuk membuat chart bar sederhana.

barplot(table(mtcars$gear), main="Distribusi Mobil", xlab="Jumlah Gears")

Hasil dari kode di atas dapat dilihat pada gambar di bawah ini.

92
Gambar 102. Chart bar distribusi mobil.
Pada contoh kode di atas digunakan bantuan fungsi table() untuk menghitung jumlah mobil
sesuai dengan kelompok jumlah gear yang dimiliki. Sebagai contoh pada gambar di atas
dapat dilihat mobil yang memiliki jumlah gear 3 adalah lebih dari 12, sedangkan mobil yang
memiliki jumlah gear 5 adalah sekitar 4.
Jika ingin menampilkan char bar secara horizontal maka dapat digunakan parameter horiz
dengan nilai TRUE, seperti contoh kode seperti berikut ini.

barplot(table(mtcars$gear), main="Distribusi Mobil", xlab="Jumlah Gear",


horiz = TRUE)

Maka dapat dilihat hasilnya seperti berikut ini.

Gambar 103. Chart bar ditampilkan secara horizontal.

Jika ingin mengubah label untuk masing-masing bar maka bisa digunakan parameter
names.arg. Parameter ini dapat diisi oleh variable vector atau list. Berikut adalah contoh kode
yang dapat digunakan.

barplot(table(mtcars$gear), main="Distribusi Mobil", xlab="Jumlah Gear",


horiz = TRUE, names.arg=c("3 Gears", "4 Gears", "5 Gears"), cex.names =
0.8)

93
Dan berikut adalah gambar chart hasil dari kode di atas.

Gambar 104. Chart bar horizontal dengan label.


Dengan chart bar juga dapat menampilkan data lebih dari satu, sebagai contoh menampilkan
data jumlah gear dan data vs maka dapat digunakan kode seperti berikut ini.

barplot(table(mtcars$vs, mtcars$gear), main="Distribusi mobil berdasarkan


Gear dan VS", xlab="Jumlah Gear", names.arg=c("3 Gears", "4 Gears", "5
Gears"), cex.names = 0.8, legend = rownames(table(mtcars$vs, mtcars$gear)))

Dan chartnya bisa dilihat pada gambar di bawah ini. Chart seperti pada gambar di bawah ini
dikenal sebagai chart stack bar.

Gambar 105. Chart stack bar.

Tipe chart bar yang lain dapat dibuat dengan melakukan plot data group dengan
menambahkan parameter beside dengan nilai adalah TRUE. Berikut adalah contoh kode yang
digunakan.

barplot(table(mtcars$vs, mtcars$gear), main="Distribusi mobil berdasarkan


Gear dan VS", xlab="Jumlah Gear", names.arg=c("3 Gears", "4 Gears", "5
Gears"), cex.names = 0.8, legend = rownames(table(mtcars$vs, mtcars$gear)),
beside = TRUE)

94
Dan berikut adalah chart bar group.

Gambar 106. Chart bar group.

Line Plot
Untuk membuat plot berbentuk garis dapat digunakan fungsi lines(x, y, type=) dimana x dan
y adalah data numerik bertipe data vector yang digunakan sebagai data titik-titik yang akan
dihubungkan menjadi garis. Sedangkan parameter type dapat berisi nilai berikut ini:
1. p, titik.
2. l, garis.
3. o, titik dan garis.
4. b, titik dan garis tetapi ada sedikit ruang antara setiap titik dan garis.
5. c, garis putus-putus dimana ruang pemutusnya adalah lokasi pertemuan setiap nilai-
nilai x dan y.
6. s, hubungan antara titik pertama dan berikutnya dengan cara menarik garis
horisontal terlebih dahulu kemudian garis vertikal ke garis kedua sehingga
menghasilkan garis seperti tangga.
7. S, hubungan antara titik pertama dan berikutnya dengan cara menarik garis vertikal
terlebih dahulu kemudian garis horisontal ke garis kedua sehingga menghasilkan
garis seperti tangga.
8. h: garis vertikal seperti histogram.
9. n: tidak menghasilkan titik atau garis.
Fungsi lines() tidak dapat berdiri sendiri untuk menghasilkan gambar chart seperti fungsi-
fungsi di atas. Untuk itu diperlukan fungsi plot() untuk menggambar chart. Berikut ini
adalah contoh kode yang akan menghasilkan hasil fungsi line dengan nilai parameter type
yang berbeda-beda.

x = c(1:5)
y = x
par(pch=22, col="red")
par(mfrow=c(2,4))
opts = c("p","l","o","b","c","s","S","h")
for(i in 1:length(opts)){

95
heading = paste("type=",opts[i])
plot(x, y, type="n", main=heading)
lines(x, y, type=opts[i])
}

Dan berikut adalah hasil dari kode program di atas.

Gambar 107. Chart line dengan berbagai nilai parameter type.


Jika ingin memberikan titik pada setiap pertemuan x dan y maka bisa menghilangkan
penggunaan parameter type = “n” pada fungsi plot() seperti pada kode di bawah ini.

x = c(1:5)
y = x
par(pch=22, col="red")
par(mfrow=c(2,4))
opts = c("p","l","o","b","c","s","S","h")
for(i in 1:length(opts)){
heading = paste("type=",opts[i])
plot(x, y, main=heading)
lines(x, y, type=opts[i])
}

Sehingga akan dihasilkan chart seperti berikut.

96
Gambar 108. Chart line tanpa menggunakan parameter type=”n” pada fungsi plot().

Pie Plot
Pada R, fitur untuk membuat chart pie adalah terbatas. Hal ini dikarenakan ada pendapat
yang menyatakan bahwa length lebih akurat dibandingkan volume. Oleh karena itu
disarankan untuk menggunakan plot bar dan dot dibandingkan pie.
Fungsi yang digunakan untuk mengambarkan chart pie adalah pie() dengan sintaks:

pie(x, labels=)

Dan berikut adalah contoh penggunaannya.

pie_data <- c(10, 12,4, 16, 8)


pie_label = c("Kalimantan", "Sumatera", "Jawa", "Sulawesi", "Papua")
pie(pie_data, labels = pie_label, main="Provinsi")

Dan berikut adalah gambar chart pie dari kode di atas.

97
Gambar 109. Chart pie.

Box Plot
Box plot adalah salah satu cara dalam statistik deskriptif untuk menggambarkan secara grafik
dari data numeris melalui lima ukuran yaitu:
1. Nilai minimum atau Nilai observasi terkecil.
2. Kuartil terendah atau kuartil pertama (Q1) yang memotong 25 % dari data terendah.
3. Median (Q2) atau nilai pertengahan.
4. Kuartil tertinggi atau kuartil ketiga (Q3) yang memotong 25 % dari data tertinggi.
5. Nilai observasi terbesar.
Selain itu dalam boxplot juga ditunjukkan nilai outlier dari observasi.
Fungsi yang digunakan untuk membuat plot ini adalah boxplot() dengan sintaks sebagai
berikut:

boxplot(x,data= …)

Parameter x adalah formula atau rumus sedangkan parameter data dapat berisi variable
dengan tipe data frame. Berikut ini adalah contoh penggunaanya fungsi boxplot().

boxplot(mpg~cyl,data=mtcars, main="Data Jarak Tempuh", xlab="Jumlah


Silinder", ylab="mil/galon")

Dari kode di atas dapat dilihat formula atau rumus x berisi seperti berikut: mpg~cyl dan
parameter data diisi oleh mtcars. Formula mpg~cyl menandakan bahwa data numerik mpg
akan dikelompokkan ke dalam group cyl atau jumlah silinder.
Berikut ini adalah data mpg-cyl jika disimpan dalam variable bertipe table.

98
Gambar 110. Data jarak tempuh.
Dari data di atas dapat dilihat pada baris pertama yang memberikan informasi bahwa 2 buah
mobil dengan jumlah mobil dengan silinder 8 mengkonsumsi 10.4 mil/galon.
Sehingga hasil dari kode di atas dapat dilihat pada gambar di bawah ini.

Gambar 111. Chart boxplot data jarak tempuh.


Berikut adalah keterangan dari box pada gambar di atas.

99
Gambar 112. Keterangan box pada boxplot.
Dengan melihat keterangan pada gambar 112 dan hasil plot pada gambar 111 maka sebagai
contoh group mobil dengan jumlah silider 4 akan didapat informasi berikut ini:
1. Min, nilai minimum seperti ditunjuk adalah di atas nilai 20, jika dilihat pada data
pada gambar 108 maka nilainya adalah 21.4.
2. Q1, pada chart nilai Q1 adalah sekitar 23 atau 24.
3. Media atau Q2, pada chart nilainya adalah sekitar 26.
4. Q3, pada chart nilai Q3 adalah sekitar 30 lebih.
5. Max, nilai maksimum yang ditunjukkan pada chart adalah sekitar 33 atau 34.
Sedangkan pada contoh group mobil dengan silinder 8 dapat dilihat terdapat outlier yang
memberikan informasi bahwa ada data yang berada pada area berikut:
1. Q3 + (1.5 x IQR) < outlier ≤ Q3 + (3 x IQR)
2. Q1 - (1.5 x IQR) > outlier ≥ Q1 - (3 x IQR)
Selain itu juga ada istilah nilai ekstrim jika pada area Q3 + (3 x IQR) atau lebih kecil dari Q1 –
(3 x IQR).

Scatter Plot
Untuk membuat plot jenis ini bisa menggunakan fungsi plot() dengan sintaks seperti di bawah
ini:

plot(x, y)

Dan beriku ini adalah contoh kode penggunaan fungsi plot().

attach(mtcars)
plot(wt, mpg, main="Scatterplot", xlab="Berat Mobil", ylab="mil/galon")

Dan berikut adalah hasilnya.

100
Gambar 113. Contoh hasil plot scatter.
Selain menggunakan fungsi plot() juga bisa digunakan fungsi-fungsi lain dari library pada
paket tambahan diluar fungsi default dari R, seperti library:
1. Fungsi scatterplot3d() pada library scatterplot3d untuk membuat plot 3d.
2. Paket hexbin untuk membuat high density scatter plot.
3. Fungsi scatterplot() pada library car.

Export Gambar
Selain mengekspor data yang disimpan pada objek, juga dimungkinkan untuk mengekspor
gambar chart hasil plot untuk disimpan dalam file. Format file yang bisa digunakan adalah:
1. PDF menggunakan fungsi pdf(“nama_file.pdf”).
2. WMF, windows metafile menggunakan fungsi win.metafile(“nama_file.wmf”).
3. PNG, menggunakan fungsi png(“nama_file.png”).
4. JPEG, menggunakan fungsi jpeg(“nama_file.jpg”).
5. BMP, menggunakan fungsi bmp(“nama_file.bmp”).
6. Postscript, menggunakan fungsi postscript(“nama_file.ps”).
Berikut ini adalah beberapa contoh kode yang digunakan untuk mengekspor chart hasil plot
ke dalam file dengan format di atas.

pdf("kumpulan_chart.pdf")
barplot(table(mtcars$gear), main="Distribusi Mobil", xlab="Jumlah Gears")
dev.off()

Maka outputnya adalah file 1 halaman pdf yang berisi 1 gambar chart bar. Jika ingin dalam
1 file pdf tersebut memiliki lebih dari 1 gambar chat maka bisa dibuat kode seperti berikut.

pdf("kumpulan_chart.pdf")

barplot(table(mtcars$gear), main="Distribusi Mobil", xlab="Jumlah Gears")


boxplot(mpg~cyl,data=mtcars, main="Data Jarak Tempuh", xlab="Jumlah
Silinder", ylab="mil/galon")

101
plot(wt, mpg, main="Scatterplot", xlab="Berat Mobil", ylab="mil/galon")

dev.off()

Jika digunakan 5 baris di atas maka akan dihasilkan 1 file pdf dengan nama
kumpulan_chart.pdf dengan halaman sebanyak 3 halaman, dimana setiap halaman akan
berisi sebuah gambar chart.
Sebagai contoh dapat dilihat pada gambar halaman PDF berikut ini. Pada lingkaran merah
di gambar di bawah ini dapat dilihat jumlah halaman.

Gambar 114. Halaman pertama file kumpulan_chart.pdf.


Pada gambar selanjutnya dapat dilihat chart yang lain pada halaman kedua dan ketiga.

102
Gambar 115. Halaman kedua file kumpulan_chart.pdf.

Gambar 116. Halaman ketiga file kumpulan_chart.pdf.


Hal ini tidak berlaku jika diekspor ke file gambar seperti PNG, JPG, BMP dan lainnya karena
pada file gambar tidak mengenal halaman seperti file bertipe dokumen seperti PDF. Jika cara
seperti contoh di atas dilakukan maka yang disimpan adalah gambar cari perintah plot
terakhir.
Dari contoh di atas maka penggunaan fungsi 1 sampai 6 di atas membuat fungsi plot yang
digunakan tidak akan langsung ditampilkan di layar komputer pada tab plot seperti contoh-
contoh yang telah diberikan pada bagian Plot Data.

103
Pada baris terakakhir pada setiap contoh di atas terdapat fungsi dev.off(). Fungsi tersebut
telah dibahas pada bagian Plot Data. Jika fungsi tersebut belum dipanggil maka file pdf atau
gambar tidak akan bisa dibuka karena dianggap file tersebut masih diakses untuk ditulisi.

Referensi
http://www.statmethods.net/graphs/
https://www.datacamp.com/community/tutorials/make-histogram-basic-r
https://www.researchgate.net/publication/278023412_Membuat_Box-
Plot_dengan_Program_Minitab_dan_SPSS

104
7
Dasar-Dasar Statistik
Pada bab ini dibahas mengenai fungsi-fungsi dasar pada lingkungan R yang umum
digunakan untuk pengolahan statistik.

Mean, Median & Modus


Ketiga istilah ini adalah istilah-istilah yang umum ditemui pada statistik. Ketiga

Mean
Mean atau rerata adalah rata-rata nilai dari data yang didapat dengan cara menjumlahkan
seluruh nilai dibagi jumlah item pada data. Mean berfungsi memberi informasi mengenai nilai
tengahan dari sebaran data-data yang ada, namun ini tidak cukup untuk dijadikan acuan
karena dalam kasus tertentu, data yang stabil dan data yang memiliki jarak yang lebar, dapat
saja memiliki nilai rata-rata yang sama. Contoh: Data dengan nilai-nilai 4,4,4,4 memiliki nilai
rata-rata yang sama dengan data 1,3,5,7.
Sebagai contoh jika dimiliki data pada lingkungan R sebagai berikut:

data = c(1, 2, 3, 4, 4, 4, 5, 6, 7, 8, 8, 9)

Maka untuk mendapatkan mean atau rerata dapat digunakan fungsi mean() berikut ini:

> mean(data)
[1] 5.083333

Sehingga didapatkan nilai rerata adalah 5,083333.

Median
Median adalah nilai yang berada pada posisi di tengah barisan item data yang telah diurut
dari nilai terkecil sampai terbesar. Median berfungsi menentukan nilai data yang berada di
tengah populasi. Nilai tengah ini dipakai untuk mengetahui range antara data terkecil-median
dan data terbesar-median.
Sedangkan untuk mendapatkan median atau nilai tengah digunakan fungsi median() seperti
contoh berikut ini:

> median(data)
[1] 4.5

Sehingga di dapat nilai median adalah 4.5.

105
Modus
Modus atau mode adalah nilai yang sering muncul pada data. Ini dapat memberi gambaran
mengenai konsistensi data. Semakin besar frekuensi modus dibandingkan jumlah total data,
semakin konsisten data yang ada.
Selanjutnya adalah modus atau nilai yang sering muncul pada data. Jika melihat isi item data
pada contoh di atas maka kita dapat melihat nilai yang sering muncul adalah 4 sebanyak 3
kali kemunculan. Fungsi untuk mencari modus tidak disediakan secara default di lingkuran
R sehingga untuk mendapatkan nilai tersebut dapat dilakukan dengan beberapa cara
alternatif yaitu:
1. Membuat fungsi sendiri.
2. Menginstall paket.
Cara pertama adalah dengan membuat kode program sederhana untuk mendapatkan
fungsionalitas mencari modus. Berikut ini adalah kode fungsi modus().

modus <- function(x) {


ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}

Dan berikut adalah penggunaan fungsi modus() ini:

> modus(data)
[1] 4

Cara kedua adalah dengan menginstall paket modeest dengan cara berikut ini.

install.packages("modeest")

Setelah proses installasi berhasil maka dapat digunakan fungsi mlv() dengan cara berikut ini
untuk mencari modus pada data.

> mlv(data, method = "mfv")


Mode (most likely value): 4
Bickel's modal skewness: 0.25
Call: mlv.default(x = data, method = "mfv")

Pada output fungsi mlv() di atas dapat dilihat nilai Mode (most likely value) : 4.

Hubungan Antara Mean, Median & Modus


Ketiga nilai ini sering disebut sebagai measure of central tendency sebab kecenderungan dari
nilai-nilai tersebut memusat pada bagian tengah suatu perangkat data. Pada analisis data
biasanya fokus perhatian tidak terletak pada keseluruhan data, tetapi terletak hanya dimana
data tersebut memusat. Oleh karena itulah nilai-nilai rata-rata, median dan modus sering
digunakan untuk mewakili seperangkat data dalam analisis statistik.
Hubungan antara ketiga nilai tersebut dapat memberikan informasi tentang distribusi data.
Secara sederhana ada tiga kemungkinan hubungan yang terjadi yaitu:
1. Jika mean, median dan modus bernilai sama, maka kurva distribusi frekuensi akan
berbentuk simetris.

106
2. Jika mean lebih kecil daripada median dan modus, maka kurva distribusi akan lebih
besar ke kanan.
3. Jika mean lebih besar daripada median dan modus, maka kurva distribusi akan lebih
besar ke kiri.
Untuk memvisualkan pernyataan di atas maka dibuat fungsi untuk membuat plot distribusi
data dan plot nilai mean, median dan modus.
DistribusiChart.R
modus <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}

distribusi <- function(x) {


hist(data, col = "peachpuff", border = "black", prob = TRUE)
lines(density(data), lwd = 2, col = "chocolate3")
abline(v = mean(data), col = "royalblue", lwd = 2)
abline(v = median(data), col = "green", lwd = 2)
abline(v = modus(data), col = "red", lwd = 2)
}

Untuk memvisualkan kemungkinan hubungan pada pernyataan pertama maka digunakan


data sebagai berikut.

data = c(1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7)

Dengan menggunakan fungsi distribusi() di atas maka akan dapat dilihat gambar seperti
berikut.

Gambar 117. Distribusi data ketika nilai mean, median dan modus adalah sama.
Selanjutnya akan digunakan data berikut ini untuk memvisualkan pernyataan kedua di atas.

data = c(1, 2, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7)

Jika data tersebut dimasukkan ke dalam fungsi distribusi() maka akan didapatkan chart
seperti berikut ini. Garis biru menyatakan nilai mean, garis hijau adalah nilai untuk median
sedangkan garis merah merupakan nilai modus.

107
Gambar 118. Distribusi data jika mean lebih kecil daripada median dan modus.
Dan untuk memvisualkan pernyataan terakhir atau yang ketiga digunakan data seperti
berikut ini.

data = c(1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 5,6)

Dengan menggunakan fungsi distribus() maka akan dihasilkan chart seperti berikut ini.

Gambar 119. Distribusi data jika mean lebih besar daripada median dan modus.

108
Linear Regression
Pendahuluan
Analisis regresi adalah perangkat statistik yang telah luas digunakan untuk membangun
model hubungan antara dua variable. Salah satu variabel ini disebut variabel prediktor yang
nilainya didapatkan melalui percobaan. Variabel lain disebut variabel respon yang nilainya
berasal dari variabel prediktor.
Linear regression dapat dapat ditulis dengan rumus matematika sederhana, yaitu:

y = ax + b

Keterangan:
1. y adalah variable respon.
2. x adalah variable prediktor.
3. a dan b adalah konstanta atau kofisien.
Salah satu contoh kasus yang dapat diselesaikan dengan linear regression adalah prediksi
berat badan seseorang ketika diketahui tinggi badannya. Secara sederhana cara kerja linear
regression dapat dijelaskan dengan gambar di bawah ini.

Gambar 120. Plot linear regression tinggi dan berat.


Keterangan:
1. Titik-titik biru adalah data-data hasil pengamatan hubungan tinggi dan berat badan.
Sebagai contoh untuk titik biru pertama dapat diketahui tinggi badan adalah 128 cm
dengan berat badan adalah 47 kg.
2. Kemudian garis hitam adalah persamaan yang paling dapat mewakili hubungan
relasi seluruh titik-titik biru. Persamaan tersebut dapat ditentukan dengan linear
regression.
3. Sedangkan titik merah merupakan hasil prediksi data baru dari orang yang memiliki
tinggi 170 cm. Dengan menarik garis dari titik 170,0 sampai menyentuh garis hitam,

109
kemudian menarik garis ke arah sumbu y maka dapat diketahui informasi dari orang
yang memiliki tinggi 170 cm adalah memiliki berat kira-kira 76 kg.

Implementasi
Untuk melakukan linear regression pada lingkuran R maka perlu dilakukan langkah-langkah
sederhana di bawah ini.
1. Temukan data nyata hasil pengamatan dari tinggi dan berat badan.
2. Buat model hubungan antar tinggi dan berat badan dengan menggunakan fungsi lm()
pada lingkungan R.
3. Setelah mendapatkan koefisien dari model yang telah dibuat kemudian dapat dibuat
persamaan matematikanya.
4. Dapatkan rangkuman (summary) dari model untuk mengetahui rata-rata error pada
proses prediksi, atau sering disebut sebagai residual.
5. Gunakan fungsi predict() untuk memprediksi berat badan dari data yang baru.
Implementasi langkah-langkah di atas pada lingkungan R dijelaskan di bawah ini.
Data nyata hasil pengamatan untuk tinggi dan berat dapat dilihat pada kode di bawah ini.

tinggi = c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
berat = c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

Variable tinggi adalah variable prediktor sedangkan variable berat adalah variable respon.
Selanjutnya akan dibuat model dari data tersebut dengan menggunakan fungsi lm(). Fungsi
lm() mempunyai sintaks seperti berikut:

lm(formula, data)

Dalam penggunaannya untuk membuat model hubungan antara tinggi dan berat badan dapat
dilakukan dengan cara seperti berikut ini.

relasi = lm(berat ~ tinggi)

Setelah model dibuat maka dapat diketahui koefisien dari model dengan menggunakan
memanggil variable relasi.

> relasi

Call:
lm(formula = berat ~ tinggi)

Coefficients:
(Intercept) tinggi
-38.4551 0.6746

Dengan didapatkannya koefisien tersebut maka dapat dibuat persamaan sebagai berikut:

berat = 0.6746tinggi - 38.4551

Atau

y = 0.6746x - 38.4551

110
Sedangkan untuk mengetahui rangkuman (summary) dari model dapat digunakan fungsi
summary() atau summary.lm(), berikut ini digunakan fungsi summary.lm().

> summary.lm(relasi)

Call:
lm(formula = berat ~ tinggi)

Residuals:
Min 1Q Median 3Q Max
-6.3002 -1.6629 0.0412 1.8944 3.9775

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -38.45509 8.04901 -4.778 0.00139 **
tinggi 0.67461 0.05191 12.997 1.16e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.253 on 8 degrees of freedom


Multiple R-squared: 0.9548, Adjusted R-squared: 0.9491
F-statistic: 168.9 on 1 and 8 DF, p-value: 1.164e-06

Setelah model dibuat maka dapat dipergunakan untuk melakukan prediksi dengan fungsi
predict(). Sebagai contoh jika ingin mengetahui berat seseorang yang memiliki tinggi 170,
maka proses prediksi dapat dilakukan dengan cara di bawah ini.

data_baru = data.frame(tinggi = 170)


prediksi_data_baru = predict(relasi,data_baru)

Hasil prediksi berat orang dengan tinggi 170 dapat dilihat dengan memanggil variable
prediksi_data_baru. Di bawah ini diketahui beratnya adalah 76.22869.

> prediksi_data_baru
1
76.22869

Visualisasi
Untuk membuat visualisasi model dan prediksi yang dibuat di atas maka dibuat kode berikut
ini.

plot(tinggi,berat,col = "blue",main = "Regresi Tinggi & Berat",cex = 1.3,pch


= 16,xlab = "Tinggi(cm)",ylab = "Berat(kg)")

abline(lm(berat~tinggi))

points(170, prediksi_data_baru, col = "red", cex = 1.3, pch = 16)

Baris pertama dari kode di atas akan melakukan plot data tinggi dan berat. Hasil dari kode
bares pertama adalah seperti gambar di bawah ini.

111
Gambar 121. Plot data tinggi dan berat.
Sedangkan baris kedua bertujuan untuk menggambar garis linear hasil dari model yang
dibuat dari fungsi lm(). Garis tersebut mempunyai persamaan y = 0.6746x - 38.4551.

Gambar 122. Garis model linear regression.


Baris terakhir berfungsi untuk menunjukkan titik memprediksi data baru, dimana diketahui
tinggi seseorang adalah 170 cm. Dari gambar dapat dilihat titik merah yang berada pada garis
model linear regression.

112
Gambar 123. Prediksi data baru tinggi 170 cm.
Sedangkan pada gambar di bawah ini adalah prediksi data baru untuk tinggi 185 cm yang
hasilnya bisa dilihat pada titik warna hijau.

Gambar 124. Prediksi data baru tinggi 185 cm.

Multiple Regression
Pendahuluan
Multiple regression merupakan pengembangan dari linear regression. Pada multiple
regression dimungkinkan untuk dimiliki lebih dari satu variable prediktor dan sebuah
variable respon.

y = a + b1x1 + b2x2 +...bnxn

113
Keterangan:
1. y adalah variable respon.
2. a, b1, b2 … bn adalah kofisien.
3. x1, x2, x3 … adalah variable prediktor.

Implementasi
Implementasi multiple regression pada lingkungan R dapat dilakukan dengan menggunakan
fungsi lm() dengan sintaks berikut ini:

lm(y ~ x1+x2+x3...,data)

Sebagai contoh akan digunakan dataset dari mtcars yang telah tersedia pada lingkungan R.
Pada contoh ini akan cari hubungan antara konsumsi bahan bakar per mil (mpg) dengan
perpindahan silinder (disp), horse power (hp) dan berat mobil (wt). Artinya pada kasus ini
mpg menjadi variable respon sedangkan yang menjadi variable prediktor adalah disp, hp dan
wt.
Langkah pertama yang harus dilakukan adakah menyiapkan data dari variable-variable
tersebut dengan cara seperti berikut ini.

data_mobil <- mtcars[,c("mpg","disp","hp","wt")]

Setelah data telah disiapkan, langkah selanjutnya adalah membuat model hubungan antara
variable-variable tersebut dengan menggunakan fungsi lm() seperti di bawah ini.

relasi_mobil <- lm(mpg~disp+hp+wt, data = data_mobil)

Untuk melihat hasil di atas dapat dilakukan dengan memanggil objek relasi_mobil seperti
contoh di bawah ini.

> relasi_mobil

Call:
lm(formula = mpg ~ disp + hp + wt, data = data_mobil)

Coefficients:
(Intercept) disp hp wt
37.105505 -0.000937 -0.031157 -3.800891

Dari output di atas maka dapat diketahui persamaan hubungan antar variable-variable
sebagai berikut:

y = 37.15+(-0.000937)*x1+(-0.0311)*x2+(-3.8008)*x3

Atau

y = 37.15+(-0.000937)*disp + (-0.0311)*hp + (-3.8008)*wt

Dengan persamaan tersebut jika telah diketahui nilai variable disp, hp dan wt yang baru maka
dapat diprediksi nilai mpg.

114
Misal dimiliki nilai baru dengan nilai disp = 221, hp = 102 dan wt = 2.91 maka dapat ditulis
deklarasi data baru pada lingkungan R dengan cara seperti berikut.

data_mobil_baru = data.frame(disp = 221, hp = 102, wt=2.91)

Kemudian untuk melakukan prediksi dapat dilakukan dengan menggunakan fungsi predict()
seperti contoh berikut ini.

> predict(relasi_mobil, data_mobil_baru)


1
22.65987

Dari hasil di atas dapat diketahui bahwa prediksi nilai mpg adalah 22.65987.

Logistic Regression
Pendahuluan
Logistic regression adalah model regresi dimana variable respon memiliki nilai kategori
seperti true dan false, atau 0 dan 1. Dari definisi tersebut dapat dilihat perbedaannya dengan
dua model linear di atas. Persamaan dan perbedaan mendasar dari model ini dengan dua
model sebelumnya adalah:
1. Persamaan: nilai variable prediktor dapat bernilai angka dengan rentang yang bebas.
Sebagai contoh 5, -13, 22.3, 100 dan lain-lain. Jumlah variable prediktor dapat
berjumlah satu seperti linear regression atau berjumlah lebih dari satu variable seperti
multiple regression. Tetapi dalam implementasinya lebih banyak menggunakan
jumlah varible predictor lebih dari satu.
2. Perbedaan: nilai variable respon pada model regression ini hanya dapat bernilai 1
atau 0. Sedangkan nilai variable respon pada dua model regression sebelumnya
dapat bernilai angka dengan rentang yang bebas.
Berikut ini adalah contoh data yang dapat diproses dengan model logistic regression.

am cyl hp wt
Mazda RX4 1 6 110 2.620
Mazda RX4 Wag 1 6 110 2.875
Datsun 710 1 4 93 2.320
Hornet 4 Drive 0 6 110 3.215
Hornet Sportabout 0 8 175 3.440
Valiant 0 6 105 3.460
Porsche 914-2 1 4 91 2.140
Lotus Europa 1 4 113 1.513
Ford Pantera L 1 8 264 3.170
Ferrari Dino 1 6 175 2.770
Maserati Bora 1 8 335 3.570
Volvo 142E 1 4 109 2.780

Dari contoh data di atas yang menjadi variable prediktor adalah cyl, hp dan wt. Sedangkan
variable respon adalah am, yang bernilai 0 jika transmisi yang digunakan adalah automatic
atau 1 jika transmisi yang digunakan adalah manual.
Contoh-contoh dunia nyata yang bisa dikerjakan dengan model ini adalah:
1. Pengaruh tingkat pendidikan, lapangan kerja yg dimasuki, pendapatan, pengeluaran,
jumlah anggota rumah tangga terhadap status kemiskinan (miskin/tidak miskin).

115
2. Pengaruh pendapatan keluarga, banyaknya anggota keluarga, jenis rumah, usia
kepala keluarga terhadap kepemilikan rumah (punya rumah/tidak punya rumah).

Implementasi
Untuk membuat model logistic regression pada lingkungan R digunakan fungsi glm(). Data
yang digunakan adalah dataset mtcars. Untuk mendapatkan data yang sesuai dengan model
ini maka dilakukan pemilahan data dengan cara seperti berikut ini.

data_logistic <- mtcars[,c("am","cyl","hp","wt")]

Selanjutnya dilakukan membuatan model dengan perintah glm() dengan contoh seperti
berikut ini.

relasi_logistic = glm(formula = am ~ cyl + hp + wt, data = data_logistic,


family = binomial)

Dan untuk melihat rangkuman hasil model di atas dapat dilakukan dengan cara memanggil
objek relasi_logistic.

> relasi_logistic

Call: glm(formula = am ~ cyl + hp + wt, family = binomial, data =


data_logistic)

Coefficients:
(Intercept) cyl hp wt
19.70288 0.48760 0.03259 -9.14947

Degrees of Freedom: 31 Total (i.e. Null); 28 Residual


Null Deviance: 43.23
Residual Deviance: 9.841 AIC: 17.84

Untuk mendapatkan informasi yang lebih lengkap dapat menggunakan fungsi summary()
atau summary.glm() maka akan didapatkan output seperti berikut ini.

> summary(relasi_logistic)

Call:
glm(formula = am ~ cyl + hp + wt, family = binomial, data = data_logistic)

Deviance Residuals:
Min 1Q Median 3Q Max
-2.17272 -0.14907 -0.01464 0.14116 1.27641

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 19.70288 8.11637 2.428 0.0152 *
cyl 0.48760 1.07162 0.455 0.6491
hp 0.03259 0.01886 1.728 0.0840 .
wt -9.14947 4.15332 -2.203 0.0276 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 43.2297 on 31 degrees of freedom


Residual deviance: 9.8415 on 28 degrees of freedom
AIC: 17.841

Number of Fisher Scoring iterations: 8

116
Selanjutnya jika ada data baru, untuk mendapatkan prediksi nilai am dari kasus di atas maka
dilakukan langkah-langkah berikut.
Jika dimiliki data baru seperti berikut.

data_logistic_baru = data.frame(cyl=8, hp=210, wt=3.5)

Kemudian gunakan fungsi predict() atau predict.glm(). Berikut ini adalah contoh
penggunaan salah satu fungsi tersebut.

> predict(relasi_logistic, data_logistic_baru, type="response")


1
0.171472

Dari nilai tersebut diketahui kemungkinan data_logistic_baru cocok dengan penggunaan


transmisi manual adalah 17%, artinya data baru ini lebih cocok menggunakan transmisi
automatic atau nilai am = 1.
Untuk mendapatkan nilai am adalah 0 atau 1, maka dapat dibuat fungsi dengan kode
pemrograman seperti berikut ini.

predict_am <- function(var_relasi_logistic, var_data_logicstic) {


persentase_am = predict.glm(var_relasi_logistic, var_data_logicstic, type
= "response")
if(persentase_am < 0.5) {
sprintf("am = 1")
} else {
sprintf("am = 0")
}
}

Dan berikut cara penggunaan fungsi predict_am() tersebut.

> predict_am(relasi_logistic, data_logistic_baru)


[1] "am = 1"

Normal Distribution
Pendahuluan
Pada bagian Mean, Median & Modus telah dijelaskan tentang hubungan antara mean, median
dan modus. Pada bagian tersebut terdapat penjelasan tentang keadaan dimana nilai mean,
median dan modus memiliki nilai yang sama sehingga dihasilkan grafik density yang simetris
seperti pada gambar di bawah ini.

117
Gambar 125. Kurva density ketika nilai mean, median dan modus adalah sama.
Pada bagian ini akan dibahas tentang normal distribution (distribusi normal). Beberapa ciri
distribusi normal adalah saat nilai mean, median dan modus sama dan nilainya adalah nol
(0). Sehingga kurva distribusi normal terlihat seperti bel yang simetris.

Gambar 126. Kurva distribusi normal.

Jika nilai δ (deviasi standar) bernilai 1 maka dapat disebut sebagai standard normal
distribution. Luas daerah di bawah kurva adalah 1 dimana ½ di sisi kanan dan ½ di sisi kiri.
Luas di bawah kurva normal adalah satu atau 100%. Sedangkan jika diketahui interval
berikut:
1. µ ± 1σ maka jumlah yang diliputi di bawah kurva adalah ∼ 68% dari distribusi.
2. µ ± 2σ maka jumlah yang diliputi di bawah kurva adalah ∼ 95% dari distribusi.
3. µ ± 3σ maka jumlah yang diliputi di bawah kurva adalah ∼ 100% dari distribusi.

118
Gambar 127. Luar di bawah kurva sesuai panjang deviasi standar.

Implementasi
Pada lingkunan R terdapat empat fungsi yang dapat digunakan untuk menghasilkan
distribusi normal, yaitu:
1. dnorm(x, mean, sd).
2. pnorm(x, mean, sd).
3. qnorm(x, mean, sd).
4. rnorm(x, mean, sd).
Keterangan:
1. x adalah bilangan dalam tipe data vector.
2. p adalah vector dari probabilitas.
3. n adalah bilangan hasil observasi.
4. mean adalah nilai rata-rata dari data dengan nilai defaultnya adalah 0.
5. sd adalah deviasi standar dengan nilai default adalah 1.

dnorm()
Pada bagian ini akan dicontohkan penggunaan fungsi dnorm() dan visualisasinya. Fungsi ini
memperlihatkan nilai distribusi probabilitas pada setiap titik untuk nilai mean dan deviasi
standar yang diberikan.
Berikut ini adalah contoh data yang digunakan.

x = seq(-10, 10, by = .1)

Kemudian menentukan nilai y dengan menggunakan fungsi dnorm() seperti berikut.

y = dnorm(x, mean = 2.5, sd = 0.5)

Untuk melihat bagaimana bentuk grafik hasil plot data tersebut dapat digunakan fungsi
plot().

plot(x,y)

119
Sehingga didapatkan grafik sebagai berikut.

Gambar 128. Grafik plot dengan menggunakan fungsi dnorm().


Jika menggunakan nilai mean adalah 0 maka dapat digunakan fungsi dnorm() seperti berikut
ini.

y = dnorm(x, mean = 0, sd = 0.5)

Dan berikut adalah hasil dari grafik dari plot data terserbut.

Gambar 129. Grafik plot fungsi dnorm() dengan nilai mean = 0.

120
pnorm()
Fungsi ini memberikan informasi probabilitas dari distribusi normal bilangan acak kemudian
dilakukan evaluasi pada nilai x untuk melihat apakah probabilitas nilai y akan mendapatkan
nilai lebih kecil atau sama dengan x.
Data yang digunakan adalah sebagai berikut.

x = seq(-10,10,by = .2)

Sedangkan untuk data pada sumbu y didapat dengan menggunakan fungsi pnorm().

y = pnorm(x, mean = 2.5, sd = 2)

Setelah itu digunakan fungsi plot(x,y) untuk mendapatkan grafik seperti pada gambar di
bawah ini.

Gambar 130. Grafik plot dengan menggunakan fungsi pnorm().

qnorm()
Fungsi ini mengambil nilai probabilitas dan memberikan bilangan yang nilai komultaif sesuai
dengan nilai probabilitas.
Berikut ini adalah kode yang menggunakan fungsi qnorm().

x = seq(0, 1, by = 0.02)
y = qnorm(x, mean = 2, sd = 1)
plot(x,y)

Dan berikut ini adalah grafik plot dari fungsi qnorm().

121
Gambar 131. Grafik plot dengan fungsi qnorm().

rnorm()
Fungsi ini digunakan untuk menghasilkan bilangan acak yang terdistribusi normal. Berikut
ini adalah kode yang menggunakan fungsi rnorm().

y = rnorm(50)
hist(y, main = "Distribusi Normal")

Sehingga didapatkan grafik plot berikut ini.

Gambar 132. Grafik histogram dengan data dari hasil fungsi rnorm().

122
Contoh Kasus
Pada bagian ini akan diberikan beberapa contoh kasus yang akan diselesaikan dengan fungsi-
fungsi yang telah diberikan di atas.

Peluang Umur Aki


Kasus pertama adalah jika suatu jenis aki mencapai umur rata-rata 3 tahun dengan simpangan
baku 0,5 tahun. Bila umur aki itu menyebar normal, maka untuk menghitung peluang bahwa
sebuah aki tertentu akan mencapai umur kurang dari 2,3 tahun dapat dilakukan dengan
menggunakan fungsi pnorm() seperti berikut ini.

> pnorm(2.3, 3, 0.5)


[1] 0.08075666

Dari hasil di atas didapatkan peluang 0.08075666.

Peluang Umur Lampu


Suatu perusahaan alat listrik memproduksi bola lampu yang umurnya berdistribusi normal
dengan rata-rata 800 jam dan simpangan bku 40 jam. Untuk mengetahui peluang sebuah bola
lampu dapat menyala antara 778 dan 834 jam maka dapat dilakuan dengan cara berikut ini.

> pnorm(834, 800, 40) - pnorm(778, 800, 40)


[1] 0.5111778

Maka peluang bola lampu yang dapat menyala antara 778 dan 834 jam adalah 0. 5111778.

Nilai Ujian
jika diketahui nilai rata-rata pada suatu ujian adalah 74 dengan simpangan baku adalah 7.
Dan diketahui 12% diantara peserta ujian mendapat nilai A maka dapat ditentukan
kemungkinan nilai A terkecil dan nilai B tertinggi dengan cara berikut ini.

> qnorm(0.12, 74, 7, lower.tail = FALSE)


[1] 82.22491

Jadi nilai A terkecil bagi A adalah 83 dan nilai tertinggi bagi B adalah 82.
Kasus yang lain yang masih berhubungan dengan perhitungan nilai adalah sebagai berikut.
Diketahui rata-rata dari 300 mahasiswa mengikuti sebaran normal dengai nilai rata-rata
adalah 2,1 dan deviasi standar adalah 0,8. Untuk menentukan jumlah mahasiswa yang
mencapai nilai antara 2,5 dan 3,5 inklusif bilai nilai dihitung sampai persepuluhan terdekat
dapat dilakukan dengan cara berikut ini.

> pnorm(3.5, 2.1, 0.8) - pnorm(2.5, 2.1, 0.8)


[1] 0.2684784

Sehingga didapat peluang sebesar 26,84% atau sekitar 80 mahasiswa di antara 300 mahasiswa
tersebut.

123
Binomial Distribution
Pendahuluan
Distribusi binomial merupakan model yang berurusan dengan pencarian probabilitas sukses
tidaknya suatu kejadian yang memiliki dua keluaran yang mungkin. Sebagai contoh adalah
probabilitas melempar uang koin yang mempunyai dua kemungkinan keluaran.

Gambar 133. dua kemungkinan keluaran saat melempar uang koin.


Definisi lain dari binomial distribution adalah distribusi probabilitas diskret jumlah
keberhasilan dalam n percobaan ya/tidak yang saling bebas, dimana setiap hasil percobaan
memiliki probabilitas p. Dari paparan di atas maka dapat diketahui ciri-ciri dari percobaan
binomial seperti di bawah ini:
1. Setiap percobaan dibedakan menjadi 2 jenis kejadian yang keduanya saling lepas.
2. Hasil dari percobaan tersebut hanya 2 macam, yaitu berhasil dan gagal, iya dan tidak,
angka atau gambar (untuk kasus pelemparan koin).
3. Peluang kejadian berhasil adalah p dan peluang kejadian gagal adalah q = 1-p.
4. Masing-masing percobaan bersifat saling bebas, artinya hasil percobaan pertama
tidak memengaruhi hasil percobaan berikutnya.

Implementasi
Pada lingkungan R terdapat 4 fungsi yang dapat digunakan untuk menghasilkan binomial
distribution yaitu:
1. dbinom(x, size, prob)
2. pbinom(x, size, prob)
3. qbinom(p, size, prob)
4. rbinom(n, size, prob)
Keterangan:
1. x adalah data tipe vector yang berisi angka.
2. p adalah data tipe vector yang berisi nilai probabilitas.
3. n adalah nilai jumlah observasi.
4. size adalah nilai jumlah percobaan yang dilakukan.
5. prob adalah probalitas keberhasilan dari setiap kemungkinan.

dbinom()
Fungsi ini untuk menentukan probabilitas kerapatan distribusi (probability density
distribution) untuk setiap titik.
Sebagai contoh jika dimiliki data titik tersebut sebagai berikut.

124
x = seq(0,50,by = 1)

Maka probality density distribution untuk setiap titik yang ada di x adalah sebagai berikut.

y = dbinom(x,50,0.5)

Untuk melihat grafik dari plot titik-titik x dan y maka dieksekusi fungsi berikut ini.

plot(x,y)

Sehingga didapat gambar sebagai berikut.

Gambar 134. Grafik plot dengan menggunakan fungsi dbinom().

pbinom()
Fungsi ini berguna untuk kumulatif probabilitas dari sebuah kejadian. Sebagai contoh jika
ingin diketahui kemungkinan mendapatkan sisi gambar pada koin sebanyak 26 kali atau
kurang dari 51 pelemparan koin maka dapat digunakan fungsi pbinom() seperti berikut:

> x = pbinom(26,51,0.5)
> x
[1] 0.610116

Dan didapatkan probabilitas yaitu 0.610116 atau sekitar 61%.

qbinom()
Fungsi ini berguna untuk memberikan jumlah nilai yang akan keluar jika diketahui nilai
probabilitasnya. Sebagai contoh jika diketahui probabilitas 0,25 atau 25% keluarnya sisi
gambar pada 51 kali pelemparan koin, maka dengan fungsi qbinom() di bawah ini akan dapat
diketahui jumlah berapa kali sisi gambar akan keluar.

125
> x = qbinom(0.25,51,1/2)
> x
[1] 23

Contoh lain jika adalah sebagai berikut.

> x = qbinom(0.61,51,1/2)
> x
[1] 26

rbinom()
Fungsi ini berguna untuk menghasilkan angka dari nilai acak jika diketahui probabilitas dari
sejumlah contoh atau sample. Sebagai contoh jika diketahui probalitas 0.4 dari 150 sample
maka untuk mendapatkan 8 nilai random digunakan fungsi rbinom() seperti berikut ini.

> x = rbinom(8,150,.4)
> x
[1] 53 62 42 73 58 57 54 55

Untuk memperlihatkan keluarannya adalah bilangan acak, maka dapat diulang eksekusi
fungsi tersebut seperti di bawah ini.

> x = rbinom(8,150,.4)
> x
[1] 50 60 60 61 58 62 67 60

Dari kedua eksekusi di atas dapat dilihat dengan fungsi yang sama tetapi menghasilkan
keluaran bilangan acak yang berbeda.

Poisson Regression
Pendahuluan
Poisson distribution adalah distribusi probabilitas diskret yang menyatakan peluang jumlah
peristiwa yang terjadi pada periode waktu tertentu apabila rata-rata kejadian tersebut
diketahui dan dalam waktu yang saling bebas sejak kejadian terakhir. Atau secara sederhana
dapat dijelaskan sebagai proses untuk menghitung jumlah suatu kejadian diskrit pada selang
waktu yang kontinyu.
Sedangkan Poisson regression seperti regresi yang telah dibahas sebelumnya melibatkan dua
variable yaitu variable respon dan variable prediktor. Pada model regresi ini melibatkan
variable respon dalam bentuk jumlah, sebagai contoh adalah jumlah dari angka kelahiran atau
jumlah kemenangan pada sebuah seri pertandingan sepakbola.
Secara rumus matematika maka Poisson regression dapat dituliskan sebagai berikut ini:

log(y) = a + b1x1 + b2x2 + bnxn.....

Keterangan:
1. y adalah variable respon.

126
2. a dan b adalah nilai koefisien.
3. x adalah variable prediktor.

Implementasi
Pada lingkungan R, untuk melakukan perhitungan Poisson regression digunakan fungsi
glm() sama seperti untuk melakukan perhitungan Logistic Regression. Sintaks umum dari
fungsi glm() adalah sebagai berikut:

glm(formula,data,family)

Keterangan:
1. formula adalah simbol untuk merepresentasikan hubungan antara variable.
2. data adalah data set yang berisi nilai untuk diproses.
3. family adalah model yang digunakan, karena proses yang akan dilakukan adalah
Poisson regression maka nilai dari parameter ini adalah ‘poisson’.
Sintaks di atas akan mempunyai format seperti berikut ini.

glm(counts~var1+var2+var3, data, family=poisson)

Sebagai contoh akan digunakan data dari dataset warpbreak yang berupakan data jumlah
kerusakan benang pada proses penenunan.

> head(warpbreaks)
breaks wool tension
1 26 A L
2 30 A L
3 54 A L
4 25 A L
5 70 A L
6 52 A L
...
49 17 B H
50 13 B H
51 15 B H
52 15 B H
53 16 B H
54 28 B H

Keterangan:
1. Kolom breaks adalah jumlah kerusakan.
2. Kolom wool berisi nilai tipe benang wool yang digunakan, kolom ini berisi nilai A
atau B.
3. Kolom tension berisi nilai level ketegangan benang, kolom ini berisi nilai L (low), M
(medium) atau H (high).
Selanjutnya adalah membuat model dengan menggunakan fungsi glm() seperti berikut ini.

model_poission = glm(formula = breaks ~ wool+tension, data = warpbreaks,


family = poisson)

Dan untuk melihat rangkuman informasi dari model yang telah dibuat pada objek
model_poission maka dapat digunakan fungsi summary() berikut ini.

127
> summary(model_poission)

Call:
glm(formula = breaks ~ wool + tension, family = poisson, data = warpbreaks)

Deviance Residuals:
Min 1Q Median 3Q Max
-3.6871 -1.6503 -0.4269 1.1902 4.2616

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.69196 0.04541 81.302 < 2e-16 ***
woolB -0.20599 0.05157 -3.994 6.49e-05 ***
tensionM -0.32132 0.06027 -5.332 9.73e-08 ***
tensionH -0.51849 0.06396 -8.107 5.21e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

Null deviance: 297.37 on 53 degrees of freedom


Residual deviance: 210.39 on 50 degrees of freedom
AIC: 493.06

Number of Fisher Scoring iterations: 4

Selanjutnya jika diketahui data baru sebagai berikut:

data_poisson_baru = expand.grid(wool=c("A","B"), tension=c("L","M","H"))

Berikut ini adalah isi dari data_poisson_baru tersebut.

> data_poisson_baru
wool tension
1 A L
2 B L
3 A M
4 B M
5 A H
6 B H

Kemudian dilakukan cara berikut ini untuk memprediksi baris yang ada pada data tersebut.

> cbind(data_poisson_baru, predicted=predict(model_poission,


newdata=data_poisson_baru, type="response"))

wool tension predicted


1 A L 40.12354
2 B L 32.65424
3 A M 29.09722
4 B M 23.68056
5 A H 23.89035
6 B H 19.44298

128
Analysis of Covariance
Pendahuluan
Analysis of covariance atau analisis kovarian (anakova) merupakan gabungan antara uji
komparatif dan korelasional. Jadi selain menguji perbadingan sekaligus
menghubungkannya, hal ini berbeda dengan ANOVA (analysis of variance) yang hanya
menguji perbandingan saja.
Sebagai contoh melakukan perbandingan variable tergantung atau variable respon Y dengan
variable bebas atau variable prediktor X1 sekaligus menghubungkan variable Y dengan
dengan variable bebas lainnya X2. Variable X2 yang digunakan untuk memprediksi ini
dinamakan dengan kovarian.
Secara teknis analysis of covariance adalah gabungan teknik anova dan regresi dimana:
1. Anova adalah teknik yang digunakan untuk menguji perbandingan variable respon
Y ditinjau dari variable bebas X1.
2. Regresi adalah teknik untuk memprediksi variable respon Y melalui variable bebas
X2.
Untuk mengetahui apakah suatu data dapat dianalisis dengan analysis of covariance dengan
mengetahui karakteristik variablenya, yaitu:
1. Variable respon Y : kontinum.
2. Variable bebas X1 : kategorikal.
3. Variable bebas X2 : kontinum.
Dimana penjelasannya adalah:
1. Kontinum merupakan variable yang memiliki nilai kuantitatif yang bergerak dalam
kontinum dari rendah ke tinggi (interval atau rasio). Contohnya adalah hasil
pengukuran melalui skala psikologi seperti harga diri, motivasi belajar, IQ, atau hasil
tes matematika.
2. Kategorikal merupakan variable hasil pengkodean terhadap kategori (nominal),
contohnya adalah jenis kelamin, kelas atau bidang pekerjaan.
Dari paparan di atas maka analysis of covariance dilakukan jika terdapat variable response
berbentuk kontinum dan harus ada dua variable berbas berbentuk kategorikal dan kontinum.

Implementasi
Implementasi analysis of covariance pada lingkungan R dapat dilakukan dengan
menggunakan fungsi aov() dilanjutkan dengan penggunaan anova(). Sebagai contoh akan
digunakan data mtcars dengan atribut mpg, hp dan am dimana mpg merupakan variable
respon dan hp menjadi variable bebas prediktor (kontinum) dan am merupakan variable
bebas kategorikal. Sehingga dipersiapkan data dengan cara sebagai berikut.

data_ancova = mtcars[,c("am","mpg","hp")]

Dan akan didapatkan data sebagai berikut.

> head(data_ancova)
am mpg hp
Mazda RX4 1 21.0 110
Mazda RX4 Wag 1 21.0 110

129
Datsun 710 1 22.8 93
Hornet 4 Drive 0 21.4 110
Hornet Sportabout 0 18.7 175
Valiant 0 18.1 105

Kemudian dibuat model regresi dengan interaksi antara variable kategorikal dan variable
prediktor dengan cara seperti berikut. Pada formula dapat dilihat interaksi antar kedua
variable tersebut dilambangkan dengan penggunaan operator *.

hasil1 <- aov(mpg~hp*am,data = data_ancova)

Dan berikut adalah hasil dari model regresi di atas.

> summary(hasil1)
Df Sum Sq Mean Sq F value Pr(>F)
hp 1 678.4 678.4 77.391 1.50e-09 ***
am 1 202.2 202.2 23.072 4.75e-05 ***
hp:am 1 0.0 0.0 0.001 0.981
Residuals 28 245.4 8.8
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Dari hasil di atas dapat dilihat bahwa hp (horse power) dan am (transmission type)
memberikan pengaruh yang signifikan terhadap nilai mp (mile per galon) jika dilihat nilai p
untuk keduanya adalah dibawah 0.05. Tetapi interaksi antara kedua variable (hp:am) tersebut
tidak signifikan jika dilihat nilai p yang lebih dari 0.05.
Selanjutnya dibuat model tanpa interaksi antara variable kategorikal dan variable prediktor
dengan cara seperti berikut ini. Pada formula dapat dilihat digunakan operator + untuk
menandakan tidak ada interaksi antar kedua variable.

hasil2 <- aov(mpg~hp+am,data = data_ancova)

Dan berikut adalah hasil dari model di atas.

> summary(hasil2)
Df Sum Sq Mean Sq F value Pr(>F)
hp 1 678.4 678.4 80.15 7.63e-10 ***
am 1 202.2 202.2 23.89 3.46e-05 ***
Residuals 29 245.4 8.5
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Pada hasil di atas dapat dilihat varible hp dan am mempunyai efek yang signifikan terhadap
mp jika dilihat dari nilai p yang kurang dari 0.05.
Langkah selanjutnya adalah membandingkan kedua model tersebut dengan menggunakan
fungsi anova() dengan cara sebagai berikut.

> anova(hasil1, hasil2)


Analysis of Variance Table

Model 1: mpg ~ hp * am
Model 2: mpg ~ hp + am
Res.Df RSS Df Sum of Sq F Pr(>F)
1 28 245.43
2 29 245.44 -1 -0.0052515 6e-04 0.9806

130
Dengan melihat nilai p di atas 0.05 maka dapat disimpulkan interaksi antara variable hp dan
am tidak signifikan, jadi variable mp akan tergantung pada hp di kedua transmission mode
baik yang bernilai auto atau manual.

Time Series Analysis


Pendahuluan
Time series atau deret waktu adalah deretan titik-titik data yang setiap titiknya terkait dengan
waktu. Sebagai contoh adalah catatan harga saham yang mempunyai nilai berbeda-beda
terhadap waktu. Contoh yang lain adalah nilai curah pada suatu daerah setiap bulan per
tahun.

Implementasi
Pada lingkungan R terdapat fitur yang dapat dimanfaatkan untuk mengolah data deret
waktu, salah satunya adalah objek tipe data time-series yang dapat dimanfaatkan untuk
menyimpan data deret waktu selain menggunakan objek dengan tipe data vector atau data
frame. Objek time-series akan menyimpan data output dari fungsi ts().
Berikut ini adalah sintaks penggunaan fungsi ts() dan objek time-series.

nama_objek = ts(data, start, end, frequency)

Keterangan:
1. data adalah variable dengan tipe data vector dan matrix yang berisi data seperti nilai
curah hujan atau nilai saham.
2. start adalah waktu awal observasi.
3. end adalah waktu akhir observasi.
4. frequency adalah jumlah observasi per unit waktu.
Untuk lebih mengerti sintaks dan keterangan di atas maka di bawah ini diberikan contoh
kasus pengolahan data curah hujan per bulan selama tahun 2015.

curah_hujan = c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,
985,882.8,1071)

Dari data di atas dapat dilihat nilai di dalam objek curah_hujan hanya berisi nilai curah hujan
saja dan belum diketahui waktu obrservasi dari setiap nilai. Selanjutnya digunakan fungsi
ts() untuk membentuk objek yang berisi data deret waktu dengan cara seperti berikut.

curah_hujan_timeseries = ts(curah_hujan,start = c(2015,1),frequency = 12)

Dan berikut adalah isi data dari objek curah_hujan_timeseries.

Gambar 135. Data curah_hujan_timeseries.

131
Setelah objek deret waktu dibuat maka dengan mudah diproses, sebagai contoh untuk
melakukan plot data dapat dilakukan dengan fungsi plot() atau plot.ts() cara berikut ini.

plot.ts(curah_hujan_timeseries)

Dan akan didapat grafik seperti berikut ini.

Gambar 136. Plot curah hujan.


Pada prakteknya tujuan melakukan analisa deret waktu adalah untuk membahas proyeksi
masa depan dari suatu variable didasarkan pada data masa lalu dan sekarang.

Contoh Kasus
Pada bagian ini akan dibahas beberapa contoh kasus pemprosesan data deret waktu.

Dekomposisi Data Kelahiran


Berikut ini akan digunakan data kelahiran di kota New York dari Januari 1946 sampai dengan
Desember 1959 yang dapat diunduh di http://robjhyndman.com/tsdldata/data/nybirths.dat.
Untuk membaca data tersebut langsung dari alamat di atas dapat dilakukan dengan cara
berikut ini.

kelahiran = scan("http://robjhyndman.com/tsdldata/data/nybirths.dat")

Agar data deret waktu tersusun berdasarkan bulan dan tahun maka dengan telah
diketahuinya setahun adalah 12 bulan dan data observasi dimulai dari bulan 1 tahun 1946
maka data deret waktu dapat dibentuk dengan fungsi ts() dengan cara seperti di bawah ini.

kelahiran_timeseries = ts(kelahiran, frequency=12, start=c(1946,1))

Dan akan didapatkan keluaran seperti gambar berikut ini.

132
Gambar 137. Data deret waktu kelahiran di kota New York.
Dan akan dihasilkan grafik plot seperti berikut.

plot.ts(kelahiran_timeseries)

Gambar 138. Plot kelahiran di kota New York.

Selanjutnya akan dilakukan dekomposisi data kelahiran di atas. Dekomposisi deret waktu
adalah memecah data deret waktu menjadi beberapa pola dan mengidentifikasi masing-
masing komponen secara terpisah. Pemisahan atau pemecahan ini dilakukan untuk
membantu meningkatkan ketepatan peramalan dan membantu pemahaman atas perilaku
deret data secara baik.
Dekomposisi deret waktu ini dilandasi oleh asumsi bahwa data yang ada merupakan
gabungan dari beberapa komponen, yang tergantung dari jenis datanya yaitu:
1. Non-seasonal data
Pada data deret waktu non-seasonal terdiri atas komponen berikut:
- Komponen trend.
- Komponen irregular.
2. Seasonal data
Pada data deret waktu seasonal terdiri atas komponen berikut:

133
- Komponen trend.
- Komponen seasonal.
- Komponen irregular.
Sebagai contoh untuk kasus data kelahiran di kota New York dapat didekomposisi dengan
menggunakan bantuan fungsi decompose() menjadi komponen-komponennya.

kelahiran_timeseries_komponen = decompose(kelahiran_timeseries)

Jika objek kelahiran_timeseries_komponen dipanggil maka dapat dilihat beberapa komponen


seperti seasonal, trend dan lain-lain. Jika ingin menampilkan komponen seasonal saja maka
dapat dilakuan dengan cara berikut ini.

kelahiran_timeseries_komponen$seasonal

Berikut ini adalah data komponen seasonal, dari data di bawah ini dapat diketahui nilai
tertinggi adalah setiap bulan Juli yang menunjukkan bahwa puncak kelahiran di bulan
tersebut.

Gambar 139. Data komponen seasonal pada deret waktu kelahiran di kota New York.
Atau jika ingin menampilkan komponen trend dapat dilakuan dengan cara berikut ini.

kelahiran_timeseries_komponen$trend

Dan akan dapat dilihat data seperti berikut.

Gambar 140. Data komponen trend pada deret waktu kelahiran di kota New York.
Sedangkan untuk menghasilkan grafik plot dari komponen trend, seasonal dan irregular
dapat dilakukan dengan menggunakan fungsi plot().

134
Gambar 141. Plot komponen-komponen data deret waktu.
Dari grafik dapat dilihat trend angka kelahiran yang cenderung meningkat.

Prediksi CO2 dengan Exponential Smoothing


Pada lingkungan R telah tersedia dataset konsentrasi CO2 per bulan yang merupakan hasil
observasi dari tahun 1959 sampai dengan 1997. Data ini telah dalam bentuk deret waktu
sehingga tidak perlu diproses dengan fungsi ts().
Sebelum menentukan metode apa yang akan digunakan untuk melakukan prediksi atau
forecasting maka terlebih dahulu dapat dilihat pola data ini dengan melihat grafik plot
berikut.

135
Gambar 142. Grafik plot CO2.
Dari grafik tersebut dapat dilihat bahwa data mengandung pola trend dan seasonal dengan
variasi relatif konstan. Sehingga dapat digunakan metode exponential smooting dengan
menggunakan fungsi HoltWinters().
Langkah pertama adalah membuat model dengan fungsi HoltWinters() dengan cara seperti
berikut.

model_co2 = HoltWinters(co2)

Hasil dari model_co2 dapat dilihat sebagai berikut.

> model_co2
Holt-Winters exponential smoothing with trend and additive seasonal
component.

Call:
HoltWinters(x = co2)

Smoothing parameters:
alpha: 0.5126484
beta : 0.009497669
gamma: 0.4728868

Coefficients:
[,1]
a 364.7616237
b 0.1247438
s1 0.2215275
s2 0.9552801
s3 1.5984744
s4 2.8758029
s5 3.2820088
s6 2.4406990
s7 0.8969433
s8 -1.3796428
s9 -3.4112376
s10 -3.2570163
s11 -1.9134850
s12 -0.5844250

136
Dari informasi di atas dapat diketahui bahwa nilai parameter smooting yang optimal adalah:
1. alpha = 0.5126484.
2. beta = 0.009497669.
3. gamma = 0.4728868.
Pada output di atas juga dapat dilihat nilai-nilai koefisien a,b dan 12 koefisien seasonal yaitu
s1 sampai s12.
Selanjutnya jika ingin melakukan prediksi 2 tahun ke depan maka dapat dilakukan dengan
menggunakan fungsi predict() seperti contoh berikut ini.

prediksi_co2 = predict(model_co2, 24, prediction.interval = TRUE)

Dan berikut adalah data hasil prediksi tersebut.

> prediksi_co2
fit upr lwr
Jan 1998 365.1079 365.7105 364.5053
Feb 1998 365.9664 366.6449 365.2879
Mar 1998 366.7343 367.4823 365.9864
Apr 1998 368.1364 368.9490 367.3238
May 1998 368.6674 369.5410 367.7937
Jun 1998 367.9508 368.8824 367.0192
Jul 1998 366.5318 367.5189 365.5446
Aug 1998 364.3799 365.4206 363.3392
Sep 1998 362.4731 363.5656 361.3806
Oct 1998 362.7520 363.8948 361.6093
Nov 1998 364.2203 365.4121 363.0285
Dec 1998 365.6741 366.9138 364.4345
Jan 1999 366.6048 367.9353 365.2744
Feb 1999 367.4633 368.8383 366.0884
Mar 1999 368.2313 369.6500 366.8125
Apr 1999 369.6333 371.0954 368.1713
May 1999 370.1643 371.6690 368.6596
Jun 1999 369.4477 370.9946 367.9008
Jul 1999 368.0287 369.6173 366.4401
Aug 1999 365.8769 367.5068 364.2469
Sep 1999 363.9700 365.6409 362.2991
Oct 1999 364.2490 365.9604 362.5375
Nov 1999 365.7172 367.4690 363.9655
Dec 1999 367.1710 368.9628 365.3793

Jika ingin membuat plot data awal dengan hasil prediksi ini maka dapat dilakukan dengan
fungsi plot() seperti contoh berikut ini.

plot(model_co2, prediksi_co2)

137
Gambar 143. Plot data CO2 dan data hasil prediksi.
Sedangkan jika ingin melihat informasi nilai-nilai komponen level, trend, seasonal pada data
CO2 maka dapat dilakukan dengan fungsi plot() dan fitted() seperti contoh berikut ini.

plot(fitted(model_co2))

Dan dihasilkan seperti gambar di bawah ini.

Gambar 144. Plot nilai-nilai komponen pada data CO2.

138
Prediksi Penumpang Pesawat
Data deret waktu yang juga telah tersedia di lingkungan R adalah data catatan jumlah
penumpang pesawat dari tahun 1949 sampai dengan tahun 1960 yang disimpan pada objek
AirPassengers. Berikut adalah data pada objek tersebut.

> AirPassengers
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201
1954 204 188 235 227 234 264 302 293 259 229 203 229
1955 242 233 267 269 270 315 364 347 312 274 237 278
1956 284 277 317 313 318 374 413 405 355 306 271 306
1957 315 301 356 348 355 422 465 467 404 347 305 336
1958 340 318 362 348 363 435 491 505 404 359 310 337
1959 360 342 406 396 420 472 548 559 463 407 362 405
1960 417 391 419 461 472 535 622 606 508 461 390 432

Dan berikut ini adalah grafik plot dari data tersebut.

Gambar 145. Grafik plot data AirPassengers.


Dari data terlihat mengandung pola tren dan seasonal dengan variasi yang cenderung
meningkat sehingga salah satu model yang sesuai untuk prediksi pada data ini adalah dengan
menggunakan HoltWinters multiplikatif.
Berikut adalah cara untuk membuat model HoltWinters multiplikatif.

model_penumpang = HoltWinters(AirPassengers, seasonal="mult")

139
Sehingga didapat nilai model sebagai berikut.

> model_penumpang
Holt-Winters exponential smoothing with trend and multiplicative seasonal
component.

Call:
HoltWinters(x = AirPassengers, seasonal = "mult")

Smoothing parameters:
alpha: 0.2755925
beta : 0.03269295
gamma: 0.8707292

Coefficients:
[,1]
a 469.3232206
b 3.0215391
s1 0.9464611
s2 0.8829239
s3 0.9717369
s4 1.0304825
s5 1.0476884
s6 1.1805272
s7 1.3590778
s8 1.3331706
s9 1.1083381
s10 0.9868813
s11 0.8361333
s12 0.9209877

Untuk memprediksi jumlah penumpang 12 bulan ke depan bisa dilakukan dengan fungsi
predict() seperti berikut ini.

prediksi_penumpang <‐ predict(model_penumpang, 12, prediction.interval =


TRUE)

Dan berikut ini adalah data hasil prediksi tersebut.

> prediksi_penumpang
fit upr lwr
Jan 1961 447.0559 466.8057 427.3061
Feb 1961 419.7123 440.2920 399.1326
Mar 1961 464.8671 486.7712 442.9630
Apr 1961 496.0839 519.3350 472.8329
May 1961 507.5326 531.9278 483.1375
Jun 1961 575.4509 602.1935 548.7083
Jul 1961 666.5923 696.5558 636.6288
Aug 1961 657.9137 688.6454 627.1821
Sep 1961 550.3088 578.9777 521.6398
Oct 1961 492.9853 520.9553 465.0153
Nov 1961 420.2073 446.9458 393.4688
Dec 1961 465.6345 487.9686 443.3004

Selanjutnya adalah membuat plot gabungan antara data aktual dan data prediksi dengan cara
seperti berikut.

plot(model_penumpang,prediksi_penumpang)

140
Gambar 146. Grafik plot data aktual dan prediksi penumpang pesawat.
Dan untuk melihat grafik masing-masing komponen dapat dilakukan dengan fungsi plot()
berikut ini.

plot(fitted(model_penumpang))

Dan gambar berikut adalah grafik plot dari kode di atas.

Gambar 147. Plot grafik komponen-komponen pada model_penumpang.

141
Nonlinear Least Square
Pendahuluan
Ketika melakukan modeling data kasus nyata untuk analisis regresi sangat jarang didapati
persamaan dari model tersebut adalah persamaan linear yang memberikan grafik linear.
Sering kali persamaan untuk model kasus nyata melibatkan fungsi matematika dengan
derajat yang lebih tinggi seperti eksponen 3 atau fungsi sinus. Pada kasus seperti itu didapati
plot dari model adalah lebih berbentuk kurva dibandingkan garis.
Tujuan dari regresi linear atau non-linear adalah menyesuaikan nilai dari parameter-
parameter model untuk mencari garis atau kurva yang paling dekat dengan data. Pada
menentuan nilai-nilai tersebut akan dapat memperkirakan variable respon dengan akurasi
yang baik.
Metode nonlinear least square atau metode kuadrat terkecil dalam kasus nonlinear untuk
menduga parameter model dengan cara meminimumkan jumlah kuadrat sisaan. Pendugaan
parameter ini dilakukan secara iteratif karena tidak ada solusi persamaan normal secara
analitik.

Implementasi
Pada lingkunan R terdapat fungsi nls() untuk menguji nonlinear least square. Sintaks fungsi
ini adalah sebagai berikut:

nls(formula, data, start)

Keterangan:
1. formula adalah formula nonlinear yang berisi variable dan parameter.
2. data adalah data yang digunakan untuk mengevaluasi variable pada formula.
3. start adalah list atau vektor yang berisi estimasi awal.
Sebagai contoh jika diketahui persamaan sebagai berikut:

a = b1*x^2+b2

Jika dimiliki nilai x dan y seperti berikut ini.

nilai_x = c(1.6,2.1,2,2.23,3.71,3.25,3.4,3.86,1.19,2.21)
nilai_y = c(5.19,7.43,6.94,8.11,18.75,14.88,16.06,19.12,3.21,7.58)

Dan plot dari data tersebut adalah sebagai berikut:

plot(nilai_x, nilai_y)

142
Gambar 148. Plot data x dan y.
Jika diasumsikan untuk fit dengan model diberikan nilai koefisien untuk b1 adalah 1 dan b2
adalah 3 maka ditulis fungsi nls() seperti berikut:

model = nls(nilai_y ~ b1*nilai_x^2+b2,start = list(b1 = 1,b2 = 3))

Dan misal dimiliki data baru untuk nilai x dan y sebagai berikut:

data_baru = data.frame(nilai_x = seq(min(nilai_x),max(nilai_x),len = 100))

Kemudian dapat digambar plot baru dengan data baru tersebut.

lines(data_baru$nilai_x,predict(model,newdata = data_baru))

Sehingga didapat gambar seperti berikut ini.

143
Gambar 149. Plot dengan data baru.
Selanjutnya dapat dijalankan perintah berikut ini.

> sum(resid(model)^2)
[1] 1.081935

Dan perintah berikut.

> confint(model)
Waiting for profiling to be done...
2.5% 97.5%
b1 1.137708 1.253135
b2 1.497364 2.496484

Dari kedua output di atas maka dapat disimpulkan bahwa nilai b1 lebih mendekati 1,
sedangkan b2 lebih mendekati 2 bukan 3.

Referensi
http://www.tutorialspoint.com/r/
http://www.theanalysisfactor.com/resources/by-topic/r/
http://www.rumusstatistik.com/2013/08/hubungan-rata-rata-median-dan-modus.html
http://math.arizona.edu/~ghystad/chapter3.pdf
http://www.stat.ucla.edu/~nchristo/introeconometrics/introecon_normal_dist.pdf
http://www.slideshare.net/hidayatulfitri/penerapan-distribusi-normal
http://stats.stackexchange.com/questions/59250/how-to-interpret-the-output-of-the-
summary-method-for-an-lm-object-in-r
http://www.ssc.wisc.edu/sscc/pubs/RFR/RFR_RegressionGLM_Sol.html

144
http://science.nature.nps.gov/im/datamgmt/statistics/r/formulas/
http://ww2.coastal.edu/kingw/statistics/R-tutorials/formulae.html
https://docs.tibco.com/pub/enterprise-runtime-for-
R/1.5.0_may_2013/TERR_1.5.0_LanguageRef/stats/predict.glm.html
http://widhiarso.staff.ugm.ac.id/files/Analisis%20Kovarian%20Untuk%20Eksperimen.pdf
https://a-little-book-of-r-for-time-series.readthedocs.org/en/latest/

145
8
Glosarium

Standard Deviation
Deviasi standar atau simpangan baku berfungsi untuk melihat apakah data yang dimiliki
bagus atau tidak. Jika deviasi standar bernilai kecil maka data dapat dikatakan bagus karena
data yang dimiliki tidak terlalu tersebar. Jika simpangan baku kecil maka data masih berada
di batas kuartil atas dan kuartil bawah. Sedangkan jika simpangan baku sangat besar maka
data yang dimiliki menyimpang cukup jauh dari kuartil atas dan kuartil bawah. Pada gambar
di atas dapat dilihat kurva berwarna biru memiliki nilai deviasi standar yang kecil
dibandingkan dengan kurva berwarna merah dan coklat, sehingga sebarannya terlihat lebih
bagus karena banyak data yang berada pada nilai rata-rata.
Sebagai contoh jika diketahui kelas A memiliki rata-rata nilai ujian adalah 70 sedangkan kelas
B memiliki rata-rata nilai ujian adalah 80. Walau nilai rata-rata kelas B lebih tinggi tetapi
belum tentu data kelas B lebih baik daripada kelas A, karena harus dilihat terlebih dahulu
deviasi standar dari masing-masing kelas. Jika nilai deviasi standar kelas A adalah 1,4 maka
dapat disimpulkan hampir semua murid pada kelas A memiliki nilai 70. Sedangkan jika nilai
deviasi standar kelas B adalah 20 maka banyak yang mendapatkan nilai di bawah 60
walaupun mungkin banyak juga yang dapat nilai 100.

Standard Error
Standard error (std. error) adalah nilai untuk mengukur seberapa tepat nilai mean (rerata)
yang diperoleh. Semakin kecil nilai ini maka semakin dekat dengan nilai mean. Jadi jika
diketahui nilai mean adalah 11 dan nilai standard errror adalah 3 maka rentang data dengan
nilai mean adalan 11±3.

p Value
p Value dapat diartikan sebagai besarnya peluang melakukan kesalahan apabila memutuskan
untuk menolak H0 atau menganggap pernyataan H0 salah. Jika p Value atau nilai p kecil maka
resiko melakukan kesalahan juga kecil.

146
9
Penutup
Ebook ini dibuat untuk menjawab keingintahuan penulis akan R dan statistik, dan ketika
keingintahuan itu sudah terjawab maka salah satu caranya agar jawaban itu tidak hilang
adalah dengan menulisnya. Selain sebagai catatan pribadi juga dapat dimanfaatkan orang
lain yang mempunyai pertanyaan yang serupa seperti saya sebelumnya.
Masih banyak pertanyaan-pertanyaan lain yang belum terjawab, jadi masih banyak hal-hal
bidang statistik dan R yang masih belum masuk ke dalam ebook ini. Semoga pertanyaan-
pertanyaan tersebut dapat dijawab pada ebook selanjutnya yang akan fokus pada pertanyaan
tentang Machine Learning di lingkungan R.
Akhir kata, semoga ebook ini dapat bermanfaat. Jika ada kesalahan pada isi buku ini, silakan
kirimkan saran dan kritiknya via email reza.faisal (at) gmail.com.
Terima kasih.

147

View publication stats

You might also like