Anda di halaman 1dari 84

TUGAS

Nama : Jeremia Momongan


NIM : 20504020
Mata Kuliah : Komputasi Statistika

Ringkasa program R
 Mendapatkan Program (source) R
Dapat didownload di http://CRAN.R-project.org

 Instalasi
Dapat di instal pada system operasi Windows dan Linux.

 Instalasi di Sistem Operasi Windows


Langkah-langkah :
1. Pilih Bahasa instalasi kemudian klik OK !

2. Klik Next untuk melanjutkan installasi

3. Pilih I accept the agreement (atau scroll ke bawah untuk membaca GNU GPL) dan klik Next
untuk melanjutkan installasi

1
4. Pilih Browse dan tentukan directory installasi R anda, kemudian klik Next untuk
melanjutkan instalasi

5. Pilih komponen yang akan diinstall (disarankan pilih semua), kemudian klik Next untuk
melanjutkan instalasi

6. Pilih Browse dan tentukan nama dan letak program R anda, kemudian klik Next untuk
melanjutkan installasi

2
7. Pilih icon tambahan, kemudian klik Next untuk melanjutkan installasi

8. Klik Finish untuk menyelesaikan instalasi, dan R anda sudah dapat digunakan.

 Melakukan Un-Instal R di Sistem Operasi Windows


Langkah-langkah :
1. Cara pertama
Control Panel ->Add or Remove Programs -> Pilih R untuk di remove/un-install
2. Cara kedua
Start -> All Programs -> R -> Uninstall R 2.1.1
3. Cara ketiga
Windows Explorer Anda -> Program Files -> R -> rw2011 -> pilih icon aplikasi
unins001

3
Setelah anda melakukan salah satu dari tiga cara un-instalasi, maka akan keluar window :

Klik Yes untuk melanjutkan un-install atau Klik No untuk membatalkan un-install.

 Instalasi di Sistem Operasi Linux


Pada dasarnya R dapat bekerja hampir di semua sistem operasi yang ada sekarang ini, seperti
Unix beserta turunannya termasuk Darwin, juga di Mac OS X, FreeBSD, Solaris dan
termasuk LINUX. Ada distro/jenis Linux yang memerlukan cara instalasi, diantaranya (yang
kami ambil dari situs R) adalah debian, Suse, Ubuntu. Namun dalam pembahasan tata cara
instalasi,

 Menu-menu dalam R
Setelah instalasi selesai anda dapat menjalankan R pada tombol menu
Start>All Programs> R > R 2.1.1

Tampilan :
1. Setelah menjalankan program R, windows yang tampil akan seperti gambar berikut.

2.

 Menu default R-RGui

4
1. Menu Utama

2. Menu File
Menu ini menampilkan diantaranya: cara mengambil kode sumber R yang sudah ada tau
tersimpan di komputer kita dengan menggunakan menu Source R code. Biasanya untuk
perhitungan statistic tertentu kita dapat mendownload kode sumber dari internet secara Cuma-
Cuma sehingga kita tidak harus menulis ulang kode sumber yang biasanya dengan jumlah baris
perintah/command yang sangat panjang.
Menu ini juga memudahkan kita dalam menyimpan ruang kerja/workspace yang sedang
kita kerjakan (menu Save Workspace) di R console ke dalam folder komputer kita dan
menggunakannya kembali dengan menggunakan menu Load Workspace.

3. Menu Edit
Menu ini adalah menu editor yang diantaranya berisikan: menu editor yang umum
seperti
Copy, Paste, Select All, dan menu editor lainnya seperti menempelkan (paste) hanya
commands, membersihkan console R sehingga console R yang penuh dengan commands
akan putih bersih sediakala ketika memulai R. Selain itu kita dapat juga mengedit data yang
dimiliki dengan menggunakan menu Data editor.

4. Menu Misc
5
Menu ini adalah menu tambahan diantaranya: memberhentikan seketika perhitungan
yang
sedang berlangsung dengan menggunakan tombol ESC; menampilkan objek (List objects)
dan membuang objek (Remove all objects).

5. Menu Packages
Menu ini berisikan fasilitas untuk menambahkan paket statistic dan paket lainnnya
dalam
menu Load package dan instalasi paket dalm Install package(s) dan update paket dalam
Update packas serta memungkinkan instalasi paket dari file zip yang ada di komputer kita
(local) dengan menggunakan menu Install package(s) from local zip files.

6. Menu Windows

7. Menu Help
Menu ini berisikan sejumlah panduan, pertanyaan yang sering diajukan tentang R (FAQ)
,
fasilitas pencarian melalui situs resmi maupun situs proyek pengembangan R. Panduan dalam

6
format html dan pdf (anda memerlukan pdf viewer terinstal di komputer seperti acrobat
reader dan sejenisnya).

 Library dan fungsi dasar dalam instalasi R.2.1

 Manipulasi sederhana untuk bilangan dan vektor


7
 Vektor dan assignment

R beroperasi pada suatu struktur data, contoh yang paling sederhana adalah vektor
numerik, yakni suatu entitas tunggal yang terdiri dari koleksi terurut bilangan-
bilangan. Misalkan pembuatan vektor numerik x yang mempunyai enam bilangan
11.0, 16.2, 7.2, 1.3, 8.3, 3.6. Perintah yang digunakan pada prompt (>) R sebagai
berikut:

> x <− c(11.0, 16.2, 7.2, 1.3, 8.3)

Perintah ini merupakan assignment dengan menggunakan fungsi c(), sedangkan


assignment operator adalah ”<-” yang terdiri dari tanda kurang dari ”<” dan tanda
minus ”-”. Assignment tersebut di atas dapat juga dilakukan dengan menggunakan
fungsi assign():

> assign("x", c(11.0, 16.2, 7.2, 1.3, 8.3))

Fungsi assign() identik dengan operator “<-“. Selain operan x terletak di sebelah
kiri, pada R operan x tersebut dapat terletak di sebelah kanan dan dengan
menggunakan tanda assignment ”->” yang berlawanan dengan tanda assignment
sebelumnya, seperti berikut ini:

> c(11.0, 16.2, 7.2, 1.3, 8.3) −> x

Perintah berikut:
> y <− c(x,0,x)
> y
[1] 11.0 16.2 7.2 1.3 8.3 0.0 11.0 16.2 7.2 1.3 8.3

akan meng-assign vektor y dengan panjang 11 elemen, yang merupakan


penggabungan (concatanation) vektor x, angka 0 dan vektor x.

Vektor Aritmatika

Vektor dapat digunakan dalam ekspresi aritmatika, dimana operasi-operasi aritmatika


dilakukan pada setiao elemen vector. Vektor-vektor pada suatu ekspresi aritmatika
yang sama tidak harus memiliki panjang yang sama. Hasil perhitungan yang
melibatkan beberapa vektor dengan panjang yang berbeda akan menghasilkan vektor
dengan panjang yang sesuai dengan vektor yang terpanjang dalam ekspresi tersebut.
Pada vektor yang lebih pendek elemen akan diulang dari elemen terdepan hingga
panjang vemtor tersebut sama dengan vektor yang terpanjang, begitupun dengan
konstanta. Sebagai contoh perhatikan perintah berikut:

> v <− 2*x+y+1


> v
[1] 34.0 49.6 22.6 4.9 25.9 23.0 44.4 31.6 10.8 18.9 31.3

Perintah tersebut di atas akan menghasilkan vektor v dengan panjang sesuai dengan
panjang vektor y, yaitu 11. Dimana vektor x diulang sebanyak 11/5 (2.2) kali dan
konstanta 1 diulang sebanyak 11/1 (11) kali.
8
Beberapa operator aritmatik yang tersedia di R untuk operasi vektor adalah seperti
pada tabel berikut:

Tabel 4.1 Operator Aritmatik dalam R


Operator Fungsi
+, -, *, / , ^ Penjumlahan, pengurangan, perkalian,
pembagian dan perpangkatan
log, exp, sin, cos, tan, Logaritma basis 10, exponential, sinus,
sqrt, mean, var cosinus, tangen, akar kuadrat, nilai rata-
rata dan varian
min, max, range, length Nilai minimum, maksimum, ranah
vektor, dan panjang vektor
sum, prod Jumlah total elemen vektor dan product
(perkalian) vektor

Sebagai contoh, untuk menghitung dua nilai dalam sample, yakni mean dan variansi
(var) dapat kita tuliskan formula sum(x)/length(x) untuk mean(x) dan
sum((x-mean(x))^2)/(length(x)-1) untuk var(x)

Fungsi sort(x) akan menghasilkan sebuah vektor yang berukuran sama


dengan vector x dimana elemennya sudah terurut dengan urutan menaik; selain itu
terdapat

9
fasilitas pengurutan lain yang fleksibel (lihat fungsi order() atau sort.list() yang
menghasilkan suatu permutasi dalam pengurutan).

> sort(x)
[1] 1.3 7.2 8.3 11.0 16.2
> order(x)
[1] 4 3 5 1 2
> sort.list(x)
[1] 4 3 5 1 2

Catatan: fungsi max dan min memilih nilai terbesar dan terkecil dari input
argumen. Fungsi parallel maksimum (pmax) dan parallel minimum (pmin)
menghasilkan sebuah vector (yang panjangnya sama dengan vector yang terpanjang
dari input argumen) dimana elemennya merupakan nilai terbesar (terkecil) diantara
nilai elemen pada posisi yang sama dari vector-vektor input argument yang
dibandingkan.

Pada kebanyakan penggunaan, kita tidak perlu memperhatikan tipe data numeric
vektor apakah integer, real atau bahkan kompleks. Pada dasarnya R akan
menggunakan tipe data real dengan double precision untuk melakukan proses
aritmatika (untuk bilangan kompleks menggunakan double procision complex).
Perhitungan bilangan kompleks secara eksplisit menggunakan format bilangan
kompleks tersebut. Sebagai contoh:

> sqrt(-17)
Warning message:
In sqrt(-17) : NaNs produced

Kesalahan disebabkan oleh tidak ada nilai untuk akar negatif, sehingga perlu
dikonversi nilai -17 sebagai bilangan kompleks, yaitu -17 + 0i sehingga pencarian
nilai akar -17 adalah:

> sqrt(-17+0i)
[1] 0+4.123106i

yang menghasilkan bilangan kompleks

Barisan

R juga mempunyai sejumlah fasilitas untuk membangkitkan (generate) barisan


bilangan. Fungsi yang digunakan adalah seq(). Sebagai contoh, untuk menuliskan
suatu barisan dari 1 hingga 20, kita tidak perlu menuliskan satu persatu elemen ke
dalam vektor, cukup menuliskan

> seq (1, 20)


atau
> seq (from=1, to=20)

akan menghasilkan

[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

10
Keterangan: [1] pada sisi paling kiri mengartikan baris ke-1 dari hasil
perhitungan di R

> seq (20, 1)

Perintah tersebut akan menghasilkan barisan bilangan yang menurun dari 20 ke 1

Barisan bilangan juga dapat dibangkitkan dengan cacah kelipatan tertentu. Misalkan:

> s3 <- seq(from=-5, to=5, by=.5)


atau
> s3 <- seq(-5,5,by.5)
atau
> s3 <- seq(length=21,from-5,by=.5)

Ketiga perintah diatas menghasilkan keluaran yang sama. Argumen length


menyatakan panjang vektor.

> s3
[1] -5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0
1.5 2.0
[16] 2.5 3.0 3.5 4.0 4.5 5.0

Pembangkitan barisan bilangan yang elemennya merupakan pengulangan dapat


dilakukan dengan menggunakan fungsi rep(), misalkan:

> s4 <- rep(x,times=5)


[1] 11.0 16.2 7.2 1.3 8.3 11.0 16.2 7.2 1.3 8.3 11.0
16.2 7.2 1.3 8.3
[16] 11.0 16.2 7.2 1.3 8.3 11.0 16.2 7.2 1.3 8.3

akan menyalin sebanyak 5 kali angka 4, sedangkan perintah berikut:

> s5 <- rep(4,each = 5)


[1] 11.0 11.0 11.0 11.0 11.0 16.2 16.2 16.2 16.2 16.2 7.2 7.2 7.2
7.2 7.2
[16] 1.3 1.3 1.3 1.3 1.3 8.3 8.3 8.3 8.3 8.3

akan menyalin setiap elemen x sebanyak 5 kali.

Vektor Logika

Seperti halnya vektor numerik, R juga menyediakan fasilitas untuk memanipulasi


nilai logika. Elemen dari suatu vektor logika dapat bernilai Boolean (TRUE atau
FALSE) atau NA (untuk ”not available” (tidak tersedia)). TRUE dan FALSE masing-
masing biasa disingkat T dan F. Dalam hal ini T dan F hanyalah sebagai variabel
yang di set nilainya ke TRUE dan FALSE secara defaultnya, tetapi bukan merupakan
reserved word, sehingga dapat digunakan sebagai variabel dengan tipe lainnya.
Vektor logika dibangkitkan dengan menggunakan perintah kondisi, seperti:

> temp <- x < 13

11
akan menghasilkan suatu vektor yang panjangnya sam dengan vektor x dimana nilai
elemennya merupakan nilai BOOLEAN dari hasil perbandingan nilai setiap elemen di
x, dimana jika nilai elemen x < 13 maka bernilai TRUE selain itu bernilai FALSE.
Sehingga nilai vektor temp adalah:

> temp
[1] FALSE TRUE FALSE FALSE FALSE

Operator logika yang ada di R adalah <, <=, >, >=, == untuk persamaan
eksak dan != untuk pertidaksamaan. Jika c1 dan c2 adalah ekspresi logika, maka
c1&c2 adalah irisan keduanya, c1|c2 adalah gabungan keduanya dan !c1
adalah negasi(atau ingkaran) dari c1

Vektor logika dapat digunakan pada operator aritmatik, dimana nilai FALSE
dinyatakan sebagai 0 dan TRUE sebagai 1. Tetapi juga vektor logika dengan nilai
numeriknya tidak ekivalen.

Missing value

Dalam beberapa kasus dijumpai adanya komponen yang tidak lengkap dari suatu
vektor. Nilai atau elemennya menjadi “not available” atau “missing value”, dan untuk
alasan statistika, biasanya digantikan dengan nilai khusus NA. Umumnya dalam
setiap operasi NA akan menjadi NA. Motivasinya adalah, jika spesifikasi suatu
operasi tidak lengkap, maka hasilnya tidak diketahui dan oleh karenanya menjadi “not
available”.
Sebagai contoh, fungsi is.na(x) memberikan vektor logika yang mempunyai
panjang yang sama dengan x dengan nilai TRUE jika dan hanya jika elemen yang
berkorespondensi dalam x adalah NA.

> z <- c(1:3,NA); ind <- is.na(z)


> z
[1] 1 2 3 NA
> ind
[1] FALSE FALSE FALSE TRUE

Maksud dari hasil diatas, pertama mendefinisikan vektor c dengan elemen vector 1,
2, 3, NA. Kemudian membentuk vector ind berupa nilai logika dari setiap
elemen c dengan kondisi is.na(z), yaitu apabila elemen di c berupa NA maka
bernilai TRUE, selain itu bernilai FALSE.
Terkadang pada operasi perhitungan juga akan dijumpai hasil NaN (Not a Number)
untuk kalkulasi yang tidak mempunyai nilai, misal

> 0/0
[1] NaN
> Inf – Inf
[1] NaN
(Ket: Inf = Infinity (tak berhingga ∞).

12
Vektor karakter

Vektor ini sering digunakan dalam R, misalkan dalam memberikan label suatu plot.
Vektor ini menggunakan tanda petik dua (“) atau tanda petik satu (‘) untuk string
karakter, dan biasanya di print dalam petik dua (“) (kadang tanpa tanda petik).
Sebagai contoh

> labs <- paste(c("X","Y"), 1:10, sep="")

menghasilkan vektor karakter labs

[1] "X1" "Y2" "X3" "Y4" "X5" "Y6" "X7" "Y8" "X9" "Y10"

 Objek dan Atribut

Entitas dalam R dikenal sebagai objek. Vektor logika, vektor numeric, vektor karakter
adalah suatu objek. Operasi pada objek harus mempunyai mode (atau sifat/property)
objek yang sama, tanpa kesamaan tersebut maka operasi akan mengalami kesalahan
(error). Singkatnya, nilai vektor semuanya harus mempunyai mode yang sama.

Atribut (attribute)

Fungsi attribute(object) menampilkan/mendapatkan daftar semua atribut


non-instrinsik yang didefinisikan untuk suatu objek. Fungsi attr(object,
name) dapat digunakan untuk memilih suatu atribut tertentu. Sebagai contoh

> attr(z, "dim") <- c(10,10)

mendefiniskan bahwa z memiliki mode sebagai matriks berukuran 10 x 10.

Kelas (class) Objek

Semua objek di R mempunyai kelas, dengan menggunakan fungsi class().


Kelas objek yang merupakan atribut spesial digunakan dalam pemrograman
berorientasi object di R. Sebagai contoh, suatu objek dengan kelas “data.frame”,
akan ditampilkan (di print) dengan cara tertentu. fungsi plot() akan menampilkan
grafik dalam cara tertentu. Secara umum, suatu kelas objek mempunyai tampilan
yang berbeda-beda.
Untuk menghilangkan sementara efek dari kelas, maka dapat digunakan fungsi
unclass(). Sebagai contoh, jika notebook berkelas “data.frame” maka
> notebook

akan dicetak dalam bentuk data frame, yang mirip dengan tampilan matriks, dimana

> class(notebook)

akan dicetak dalam bentuk daftar (list) biasa.

13
 Faktor terurut dan tidak terurut

Suatu faktor adalah objek vektor yang digunakan untuk menspesifikasikan


pengelompokan (grouping) diskrit komponen-komponen vektor lain yang mempunyai
panjang yang sama. R menyediakan fasilitas untuk factor baik terurut maupun factor
tidak terurut.

Sebagai contoh, misalkan terdapat sample 15 akuntan pajak dari beberapa provinsi di
pulau jawa, yaitu: 1 dari Banten (btn), 4 dari Jakarta (jkt), 3 dari Jawa Barat (jabar), 3
dari Jawa Tengah (jateng), 2 dari Yogyakarta (diy) dan 2 dari Jawa Timur (jatim).
Vektor akuntan dinyatakan sebagai berikut:

> prov <- c("btn", "btn", "btn", "dki", "dki","dki", "dki", "jabar",
"jabar", "jabar", "jateng", "jateng", "jateng",
"diy","diy", "jatim", "jatim")

Suatu faktor dibuat dengan menggunakan fungsi factor()

> provf <- factor(prov)

Fungsi print() menangani factor dengan cara yang sedikit berbeda dari objek lain:

> provf
[1] btn btn btn dki dki dki dki jabar jabar jabar
[11] jateng jateng jateng diy diy jatim jatim
Levels: btn diy dki jabar jateng jatim

Untuk menentukan level suatu vektor, gunakan fungsi level()

> levels(provf)

[[1] "btn" "diy" "dki" "jabar" "jateng" "jatim"

Fungsi tapply()

Melanjutkan contoh sebelumnya, setiap akuntan memiliki pendapatan yang


dinyatakan dalam suatu vector yang berbeda, yaitu vector incomes.

> incomes <- c(50, 82, 75, 80, 60, 61, 64, 60, 60, 75, 89, 96, 68,
89, 96, 93, 78)

Untuk menghitung nilai mean sample pendapatan untuk setiap provinsi, kita gunakan
fungsi tapply():

> incmeans <- tapply(incomes, provf, mean);


> incmeans

akan memberikan mean vektor untuk setiap provinsi

btn diy dki jabar jateng jatim


69.00000 92.50000 66.25000 65.00000 84.33333 85.50000

14
Selain itu kita juga dapat mendefinisikan fungsi sendiri di R. Seperti berikut ini
merupakan pendefinisian fungsi standard error (stderr):

> stderr <- function(x) sqrt(var(x)/length(x))

dimana var(x) adalah variansi sample.


Selanjutnya, standar error untuk masing-masing prov dituliskan sebagai berikut:

> incster <- tapply(incomes, provf, stderr)


> incster

btn diy dki jabar jateng jatim


9.712535 3.500000 4.661455 5.000000 8.412953 7.500000

Faktor terurut

Level-level dari faktor-faktor disimpan secara terurut alfabetis, atau dalam urutan
dimana faktor dispesifikasikan secara eksplisit. Terkadang level akan memiliki suatu
urutan yang sesuai dengan yang diinginkan untuk merekam data yang kemudian
digunakan untuk analisis statistik. Fungsi ordered() membentuk factor terurut
tetapi identik dengan fungsi faktor(). Pada kebanyakan penggunaan, yang
hanya menjadi perbedaan antara faktor terurut dengan tidak terurut adalah
pembentukan urutan level. Tetapi hal ini berbeda dengan pembentukan dalam model
pencocokan linear.

 Matriks dan Array

 Array

Suatu array adalah koleksi beragam model subscript data entri, misalkan numerik. R
memiliki fasilitas untuk pembuatan dan penanganan array, dan khususnya matriks.
Dimensi vektor adalah vektor bilangan bulat non-negatif. Jika panjang vektor tersebut
k maka array merupakan berdimensi k. Sebagai contoh, matrik adalah array
berdimensi 2. Dimensi adalah indeks dari satu hingga nilau yang diberikan dalam
dimensi vektor. Suatu vektor dapat digunakan di R sebagai suatu array jika hanya
memiliki dimensi sama dengan atribut dim nya. Misalkan suatu vektor z merupakan
vektor yang terdiri dari 1500 elemen. Perintah

> dim(z) <- c(3,5,100)

Memberikan ke vektor nilai atribut dim yang menyatakan vektor tersebut merupakan
array dengan dimensi 3x5x100.

R memiliki fungsi yang dapat mempermudah penulisan vektor yakni matrix() dan
array().
Contoh, jika array berdimensi vektor c(3, 4, 3) maka array tersebut
mempunyai 3 x 4 x 3 =36 elemen.

15
 Indeks matriks

Suatu matriks dapat digunakan dengan indeks tunggal untuk memberukan nilai untuk
koleksi elemen yang tidak beraturan dalam array tersebut, atau untuk mengekstraksi
koleksi yang tidak beraturan sebagai suatu vektor.
Contoh yang jelas adalah suatu matriks. Dalam hal indeks ganda suatu array, suatu
indeks matriks dapat terdiri dari dua kolom dan banyak baris sesuai dengan yang
diinginkan. Entri dalam indeks matriks adalah indeks baris dan kolom untuk array
berindeks ganda. Misalkan kita memilik array X berdimensi 4x5 dan untuk
mendapatkan array X tersebut dapat melakukan hal sebagai berikut:
 Ekstrak elemen X[1,3], X[2,2] dan X[3,1] sebagai suatu struktur
vektor, dan
 Menggantikan entri-entri pada indeks tersebut dengan 0 dalam array X

Dalam kasus ini, diperlukan suatu array bersubscript 3x2 seperti contoh berikut ini:

> x <- array(1:20, dim=c(4,5))

Perintah tersebut akan membentuk array berukuran 4 x 5

> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20

> i <- array(c(1:3,3:1), dim=c(3,2))

Perintah tersebut akan membentuk array berukuran 3x2

> i

[,1] [,2]
[1,] 1 3
[2,] 2 2
[3,] 3 1

> x[i] # Mengekstrak elemen-elemen


tersebut [1] 9 6 3

> x[i] <- 0

perintah di atas mengganti elemen-elemen tersebut dengan nol

> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 0 13 17
[2,] 2 0 10 14 18
[3,] 0 7 11 15 19
[4,] 4 8 12 16 20

16
Indeks negatif tidak diperbolehkan dalam indeks matriks. Nilai 0 dalam indeks
matriks akan diabaikan, sedangkan nilai NA akan menghasilkan NA.

 Fungsi array( )

Selain menggunakan atribut dim (dimension), sebuah vector dapat juga dibentuk
dengan menggunakan fungsi array(), dengan bentuk umum sebagai berikut:
> Z <- array(data_vector, dim_vector)

Sebagai contoh, jika vektor h mempunyai 24 atau lebih sedikit elemen, maka dapat
dituliskan dengan cara seperti berikut:

>Z <- array(h, dim=c(3,4,2))

perintah tersebut akan membentuk array 3x4x2 di Z. Sedangkan jika ukuran h


adalah tepat 24 elemen maka hasilnya sama dengan

> dim(Z) <- c(3,4,2)

However if h is shorter than 24, its values are recycled from the beginning again to make
it up to size 24

Tetapi jika h lebih pendek dari 24, maka nilainya digunakan (diputar) kembali dari
depan hingga ukurannya menjadi 24.

Dalam hal indeks, dim(Z) menyatakan dimensi vector c(3,4,2) dan Z[1:24]
menyatakan data vektor seperti h di atas, dan Z[] dengan subscript hampa atau Z
tanpa subscript untuk menyatakan array keseluruhan sebagai array.

 Outer product dari dua array

Outer product merupakan salah satu operasi yang penting dalam array. Jika a dan b
dua array numeric, outer product dari array tersebut adalah sebuah array dengan
dimensi dan data dari array a dan b sesuai dengan ketentuan perkalian matriks.
Operator outer product berbentuk %o% . Contoh:

> ab <- a %o% b

Sebagai alternative:

> ab <- outer(a,b,”*”)

Fungsi perkalian dapat digantikan oleh sembarang fungsi dengan dua variabel.
Sebagai contoh jika akan menghitung fungsi f(x,y) = cos(y) = (1 + x2)
pada grid nilai vektor sumbu x dan y di R, maka dapat dilakukan sebagai berikut:

> f <- function(x, y) cos(y)/(1 + x^2)


> z <- outer(x, y, f)

17
Secara khusus, outer product dua vector adalah array dengan subscript ganda (yaitu sebuah
matriks dengan rang paling besar 1). Operator outer product bersifat non komutatif.

Contoh: Perhitungan nilai determinan matriks berdigit tunggal berukuran 2x2. [a,
b; c, d] dimana setiap elemen adalah integer non negative dalam range 0,
1,
;..., 9. Permasalahannya adalah bagaimana menghitung determinan ad-bc, dari
semua kemungkinan matriks dalam bentuk yang ditentukan tersebut serta
menunjukkan frekuensi kemunculan setiap nilai sebagai plot densitas tinggi (high
density). Untuk mendapatkan probabilitas distribusi determinan jika setiap digit
dipilih secara bebas dan acak secara uniform, maka digunakan fungsi outer()
sebanyak dua kali seperti berikut:

> d <- outer(0:9, 0:9)


> fr <- table(outer(d, d, "-"))
> plot(as.numeric(names(fr)), fr, type="h",xlab="Determinan",
ylab="Frekuensi")

Catatan: konversi dari atribut names dari table frekuensi fr ke numeric untuk
mendapatkan range nilai determinan.

Hasil dari perintah di atas adalah sebagai gambar plot berikut:

Gambar 4.1: Plot densitas tinggi untuk frekuensi kemunculan matriks

18
 Array Transpose
Fungsi aperm(a, perm) digunakan untuk permutasi array a. Argumen perm
adalah permutasi bilangan bulat {1, ..., k}, dimana k adalah banyaknya
subscripts dalam a. Hasil fungsi tersebut adalah array yang berukuran sama dengan a
namun dengan dimensi yang sebelumya diberikan oleh perm[j] menjadi dimensi
baru yakni dimensi ke j.
Cara paling mudah, yakni dengan menganggap operasi tersebut sebagai transposisi
matrik. Jika A adalah matrik, maka B (sebagai permutasi A) dituliskan sebagai
beirkut:

> B <- aperm(A, c(2,1))

adalah transpos A dan dapat juga ditulis

> B <- t(A)

 Fasilitas matriks

Matriks merupakan array dengan dua subscript (baris dan kolom).


Dalam bagian ini akan dijelaskan fasilitas matriks yakni operasi dan operator yang
penting dalam matriks seperti perkalian matriks, persamaan linier, inverse matriks,
nilai eigen dan vektor eigen, determinan dan dekomposisi nilai tunggal, least squares
fitting and the dekomposisi QR.

Perkalian matrik

Jika A dan B adalah matrik, maka

> A * B

matrik dengan perkalian elemen (elemen product) dan dinyatakan sebagai:

> A %*% B

matrik dengan perkalian matriks (matrix product). Jika x adalah vektor, maka

> x %*% A %*% x

adalah bentuk kuadrat.

Fungsi crossprod() membentuk “crossproducts”, yang berarti crossprod(x,


y) adalah sama dengan t(x)%*% y. Dalam hal ini akan lebih efisien dalam
penulisan.

Fungsi diag() mempunyai arti yang tergantung pada argumennya. Untuk vektor v,
maka diag(v), berarti s diagonal matrik v.

Untuk matrik M, diag(M), berarti matrikx yang merupakan diagonal utama dari
matrik M. Konvensi pengertian tersebut serupa juga dalam software Matlab.

19
Persamaan linier dan inverse matrik

R mempunyai fasilitas untuk mencari pemecahan persamaan linier matriks dan invers
matrik.

Diberikan matrik A dan b , maka persamaan Ax = b dituliskan,

> b <- A %*% x

dengan vektor x adalah solusi sistem persamaan linier (spl).

Solusi dari persamaan tersebut, dalam R ditulis:


> solve(A,b)

Dalam aljabar linier, secara formal x = A-1 b dimana A-1 menyatakan inverse A,
yang dapat dihitung dengan solve(A) tetapi jarang digunakan. Secara nukerik,
keduanya tidak efisien dan berpotensi tidak stabil untuk menghitung

> x <- solve(A) %*% b daripada solve(A,b).

Nilai eigen dan vektor eigen

Dalam R, fungsi eigen(Sm) digunakan untuk menghitung nilai eigen dan vektor
eigen suatu matrik simetris Sm. Hasil dari fungsi ini adalah daftar/list dua komponen
dengan nama values (nilai eigen) dan vectors (vektor eigen).

Penulisan dari vektor eigen adalah sebagai berikut:

> ev <- eigen(Sm)

dimana menunjukkan daftar objek ev. Maka ev$val adalah vektor dari nilai eigen
matrik simeteris Sm dan ev$vec adalah matrik yang berkoresponden vektor eigen

Jika kita hanya akan mencari nilai eigen, maka dapat tuliskan perintah sebagai
berikut:

> evals <- eigen(Sm)$values

objek evals menunjukkan vektor dari nilai eigen dan komponen kedua (eigen
vector) diabaikan.

Jika dituliskan suatu perintah

> eigen(Sm)

Maka akan mencetak kedua komponen, values dan vectors.

20
Saran: Untuk matrik yang berukuran besar, lebih baik hindari perhitungan vektor
eigen.

Determinan dan dekomposisi nilai tunggal

Jika M adalah matriks kuadrat, maka fungsi

> absdetM <- prod(svd(M)$d)

menyatakan perhitung nilai mutlak (absolute) determinan M.

Untuk menghitung dekomposisi nilai tunggal, dapat menggunakan fungsi svd(M),


dimana M adalah matrik sembarang, u adalah kolom matrik orthogonal dan d
matrik diagonal yang semuanyabernilai positif.

Fungsi lsfit() akan mengahsilkan prosedur least squares. Penulisannya adalah

> ans <- lsfit(X, y)

Berikut merupakan contoh untuk menghitung dekomposisi QR, dengan menggunakan


fungsi qr()

> Xplus <- qr(X)


> b <- qr.coef(Xplus, y)
> fit <- qr.fitted(Xplus, y)
> res <- qr.resid(Xplus, y)

akan menghitung proyeksi orthogonal y pada range X, fit menunjukkan proyeksi


pada orthogonal komplemen dan b sebagai vektor koefisien untuk proyeksi.
Dalam hal ini, tidak diasumsikan bahwa X mempunyai rank kolom yang lengkap.
Masalah redudansi akan ditemukan dan dihilangkan pada saat terdeteksi.

 Pembentukan matrik partisi (forming partitioned matrices), cbind() dan


rbind()

Fungsi bind() dalam cbind() dan rbind() mempunyai arti


mengikat/menyatukan. Lengkapnya cbind() berarti membentuk matrik dengan
menyatukan/mengikat matrik-matrik secara baris (horizontal) atau/terhadap kolom
(vertikal) dan rbind() menyatukan/mengikat matrik-matrik secara kolom
atau/terhadap baris. Bentuk penulisannya adalah sebagai berikut:

> X <- cbind(arg_1, arg_2, arg_3, ...)

dimana argumen-argumennya dalam bentuk vektor, atau matrik yang kolomnya


berukuran sama.

Sama halnya dalam penulisan rbind(), argument-argumennya dalam bentuk


vektor, atau matrik yang barisnya berukuran sama.

21
Misal X1 dan X2 mempunyai baris dengan jumlah yang sama. Untuk
mengkombinasikannya terhadapa kolom ke dalam matrik x, maka dituliskan

> X <- cbind(1, X1, X2)

Hasil cbind() dan rbind() adalah matrik. Oleh karena itu cbind() dan
rbind()adalah cara yang paling mudah untuk memperlakukan vektor x sebagai
matriks baris atau matrik kolom.

 Tabel frekuensi dari suatu faktor

Perlu diingat kembali, karena faktor mendefinisikan suatu partisi ke dalam bentuk
kelompok (grup), maka secara similar faktor juga mendefinisikan klasifikasi silang
dua arah, dan seterusnya.
Fungsi table() digunakan untuk menghitung tabel frekuensi dari faktor dengan
panjang yang sama. Jika terdapat k faktor argument, akan menghasilkan frekuensi
berbentuk array yang berukuran k (k –arah).

Sebagai contoh, anggap, dengan menggunakan contoh pada data mengenai provinsi di
pulau jawa, faktor provf akan mengatur menjadi kode-kode untuk setiap provinsi.
Penulisan pernyataan ini adalah:
> provfr <- table(provf)

memebentuk provfr sebagai table frekuensi setiap provinsi (prov) dalam sample
dengan output seperti berikut:

btn diy dki jabar jateng jatim


3 2 4 3 3 2

Frekuensi akan diurutkan dan diberi label dengan atribut level suatu faktor.
Penulisannya sebagai berikut:
> provfr <- tapply(provf, provf, length)

Anggap, incomef adalah faktor yang membentuk “bagian/ kelas dari pendapatan
(income)” untuk setiap entri dalam data, sebagai contoh kita dapat menggunakan
fungsi cut()

> factor(cut(incomes, breaks = 35+10*(0:7))) -> incomef

Dan untuk membentuk table frekuensi dua arah, kita tuliskan:

> table(incomef,provf)
provf
incomef btn diy dki jabar jateng jatim
(45,55] 1 0 0 0 0 0
(55,65] 0 0 3 2 0 0
(65,75] 1 0 0 1 1 0
(75,85] 1 0 1 0 0 1
(85,95] 0 1 0 0 1 1
(95,105] 0 1 0 0 1 0

22
 List dan Frame Data

List (daftar) dalam R adalah objek yang terdiri dari koleksi terurut suatu objek yang
disebut sebagai komponen.

Suatu komponen dalam list tidak harus berjenis atau mode yang sama. Sebagai
contoh, suatu list dapat terdiri dari vektor numerik, nilai logika, matriks, vektor
komplek, array karakter, fungsi, dan lain lain.
Penulisan berikut adalah contoh membuat suatu list:

> Lst <- list(name="Fred", wife="Mary",


no.children=3, child.ages = c(4,7,9))

> Lst
$name
[1] "Fred"

$wife
[1] "Mary"

$no.children
[1] 3

$child.ages
[1] 4 7 9

List (daftar) baru dapat dibentuk dari objek yang sudah ada dengan menggunakan
fungsi list(). Cara penulisannya adalah sebagai berikut:

> Lst <- list(name_1=object_1, ...,name_m=object_m)

Akan membentuk list Lst dengan m komponen dan menggunakan object_1, ...,
object_m serta memberikan nama masing-masing dengan argument names.

Jika nama dihilangkan , komponennya hanya berupa bilangan.

Suat list, dapat diperluas dengan menambahkan komponen-komponen tambahan.


Sebagai contoh

> Lst[5] <- list(matrix=Mat); Lst[5]

Frame Data (data frame)

Frame Data adalah list dengan kelas “data.frame”. Sebagai catatan, ada emapat hal
pembatasan suatu list diubah menjadi data frame, yakni:
 Komponennya harus berupa vektor (numeric, karakter atau logika), faktor,
matriks numeric, list, atau data frame lainnya.
 Matriks, list, dan data frame menyediakan banyak variable untuk data frame
sebanyak kolom, elemen atau variable yang dimiliki/didefinisikan
sebelumnya.

23
 Struktur vektor yang ditampilkan dalam bentuk variable suatu data frame
harus memiliki panjang yang sama, struktur matriknya harus mempunyai
ukuran baris yang sama.

Dalam praktiknya, data frame sering digunakan dalam bentuk matriks.

Membuat Data Frame

Fungsi yang digunakan untuk membuat data frame adalah data.frame. Seperti
contoh berikut:

> akuntan <- data.frame(home=provf, loot=incomes, shot=incomef)

akan membentuk objek akuntan sebagai suatu data frame.

Fungsi attach( ) dan detach( )

Fungsi attach() digunakan untuk memepermudah penulisan dalam list dan data
frame, seperti penggunaan notasi $ pada penulisan akuntan$provf .

Misal, anggap lentils terdiri tiga variable lentils$u, lentils$v,


lentils$w. Maka penulisan

> attach(lentils)

akan menempatkan data frame kedalam jalur pencarian pada posisi 2, dan
menyatakan bahwa tidak ada variable u, v atau w pada posisi 1. u, v dan w
adalah variable dari frame dalam bentuk awal yang sudah ditentukan sebelumnya.

Dalam hal ini, penulisan

> u <- v+w

tidak menggantikan komponen u dari data frame, namun hanya menutupinya dengan
variable u lainnya dalam direktori kerja (working directory) pada posisi 1 pada jalur
pencarian.

Sedangkan untuk membuat perubahan atau pergantian suatu data frame yang
permanent, cara yang sederhana yang dapat dilakukan dengan mengurutkan ulang
(resort) pada notasi $:

> lentils$u <- v+w

Namun bagaimanapun, nilai baru suatu komponen u tidak tampak (visible) sampai
data frame di-detach dan di-attach lagi. Untuk men-detach-nya dengan
menuliskan fungsi

> detach()

24
Sebagai contoh, untuk men-detach data frame lentils, dengan menuliskan

> detach(lentils)

Bekerja dengan data frame

Berikut adalah cara bekerja dengan data frame dalam direktori kerja yang sama:

 Kumpulkan secara bersamaan semua variable dari setiap permasalahan yang


telah didefinisikan dan terpisah dalam data frame dengan nama informative
yang sesuai
 Ketika mengerjakan/memproses suatu permasalahan, attach data frame yang
bersangkutan pada posisi 2, dan gunakan direkori kerja pada level 1 untuk
kuantitas operasional dan variable sementara/temporer;
 Sebelum keluar dari suatu permasalahan, tambahkan sebarang variable yang
ingin anda simpan untuk referensi kerja selanjutnya dengan menggunakan
assignment $ dan kemudian detach();

Catatan: lebih mudah apabila bekerja dalam direktori yang sama.

 Membaca Data Suatu File

Suatu objek data yang berukuran besar, biasanya dibaca sebagai nilai dari file
eksternal (selain dari data R yang sedang kita kerjakan). Fasilitas input data di R,
sangat mudah , sebgai contoh fungsi scan() yang dapat langsung kita panggil
(fungsi scan(), fungsi yang primitive), sedangkan untuk data yang besar, dengan
menggunakan fungsi read.table().

Fungsi read.table()

Untuk langsung membaca data frame dari suatu file eksternal yang normalnya
mempunyai bentuk khusus:
 Baris pertama file terdiri dari nama setiap variabel dalam data frame
 Setiap penambahan baris pada suatu file mempunyai label baris dan nilai
untuk setiap variable pada baris pertama.
Jika suatu file mempunyai item yang lebih sedikit pada baris pertamanya dibanding
baris kedua, harus dilakukan suatu perubahan. Maka dalam baris pertama yang lebih
sedikit akan dibaca sebagai data frame yang terlihat pada tabel berikut ini:

25
Input file form with names and row labels:

Price Floor Area Rooms Age Cent.heat


01 52.00 111.0 830 5 6.2 no
02 54.75 128.0 710 5 7.5 no
03 57.50 101.0 1000 5 4.2 no
04 57.50 131.0 690 6 8.8 no
05 59.75 93.0 900 5 1.9 yes

Ket: 01,02,03,04,05, ….. adalah label untuk setiap baris dalam data frame

Dengan item numerik yang sudah ditetapkan secara default (kecuali label baris) akan
dibaca sebagai variabel numerik dan variabel non numerik, seperti pada Cent.heat
yang dianggap sebagai factor, dan jika diperlukan, hal tersebut dapat diubah.

Fungsi read.table() digunakan untuk membaca data frame secara langsung:

> HargaRumah <- read.table("rumah.data")

Kita juga dapat menghilangkan label baris untuk data frame dengan menuliskan

> HargaRumah <- read.table("rumah.data",header=TRUE)

header=TRUE digunakan untuk mengatur tabel data frame dalam bentuk default,
sehingga label baris tidak akaan tampak, seperti dalam tabel berikut:

Input file form with names and row labels:

Price Floor Area Rooms Age Cent.heat


52.00 111.0 830 5 6.2 no
54.75 128.0 710 5 7.5 no
57.50 101.0 1000 5 4.2 no
57.50 131.0 690 6 8.8 no
59.75 93.0 900 5 1.9 yes

Fungsi scan()

Apabila akan membaca beberapa vektor data dengan panjang yang sama secara
parallel (anggap ada tiga vektor, yang pertama dalam bentuk karakter dan sisanya
dalam bentuk numeric, dan filenya adalah input.dat), maka pertama dapat
menggunakan fungsi scan() untuk membaca ketiga vektor dalam bentuk list,
dengan menuliskan:

> inp <- scan("input.dat", list("",0,0))

Pada fungsi scan tersebut, argumen kedua adalah struktur list dummy, yang
menetapkan mode ketiga vektor dapat dibaca. Hasilnya adalah objek inp yang

26
merupakan list yang komponennya adalah ketiga vektor tersebut. Untuk memisahkan
item data menjadii tiga vektor terpisah, kita tuliskan:

> label <- inp[[1]]; x <- inp[[2]]; y <- inp[[3]]

Kita juga dapat memberikan nama komponen pada daftar dummy, (dalam kasus ini)
digunakan untuk mengakses vektor yang ada di dalamnya. Sebagai contoh:

> inp <- scan("input.dat", list(id="", x=0, y=0))

Jika anda ingin mengakses variabel secara terpisah, hal itu dapat dilakukan dengan
re-assign variabel pada data frame, kita tuliskan:

> label <- inp$id; x <- inp$x; y <- inp$y

Jika argument kedua merupakan nilai tunggal atau tidak ada dalam list, maka semua
komponen dalam vektor harus mempunyai mode yang sama sebagai nilai dummy.

> X <- matrix(scan("light.dat", 0), ncol=5, byrow=TRUE)

Mengakses dan menggunakan data yang built-in di R.

Ketika anda meng-instal R, maka anda mempunyai sekitar 100 kumpulan data
sebagai contoh atau latihan ( dalam paket dataset) . Untuk melihat kumpulan data
tersebut, tuliskan:

> data()

akan tampak Gambar 4.2 berikut:

27
Gambar 4.2: Dataset default dalam R

untuk melihat kumpulan data lengkap, maximize-kan window menjadi gambar


berikut:

28
Gambar 4.3: Daftar dataset dalam R

Untuk menggunakan salah satu data built-in anda dapat menggunakan fungsi
data(). Sebagai contoh, untuk menggunakan data AirPassengers, tuliskan:

> data(AirPassengers)

dan untuk melihat item datanya, tuliskan

> list(AirPassengers)
[[1]]
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

29
Loading data dari paket R lainnya

Selain dari dataset yang built-in, kita dapat menggunakan data dari paket R lainnya
(dapt di download di website resmi R).
Sebagai contoh:

> data(package="rpart")
> data(Puromycin, package="datasets")

baris pertama akan memanggil (kumpulan) data dari paket rpart, pada baris kedua
akan memanggil data Puromycin dari paket datasets.

Menyunting/edit data

Seperti software pengolahan & analisis data lainnya, R menyediakan fasilitas editor
data mirip tampilan spreadsheet dengan menggunakan fungsi edit() yang
penulisannya sebagai berikut:

> xnew <- edit(xold)

akan mengedit data sebelumnya xold menjadi data (objek) baru xnew.
Sebagai contoh, dengan menggunakan data built-in pada dataset , yakni
AirPassenger , penulisannya:

> data(AirPassengers)
> xnew<-edit(AirPassengers)

menampilkan editor berikut:

Gambar 4.4: Editor data AirPassenger

Ket: Pemberian nama objek data yang diedit adalah bebas (bergantung
kebutuhan dan kemudahan pengguna).

30
Untuk pengeditan data asli, dapat digunakan fungsi fix(). Misalkan:

> xnew <- fix(xold)

Ket: fungsi fix() ekivalen dengan fungsi edit() (pen.)


Sebagai contoh, untuk mengganti data AirPassenger , dapat dilakukan dengan cara
sebagai berikut:

> xnew <- fix(AirPassengers)

Sedangkan untuk melakukan pemasukan (input) data dengan menggunakan interface


spreadsheet (seperti MS Excel), penulisannya sebagai berikut:

> xnew <- edit(data.frame())

Sebagai contoh, akan digunakan data faithful untuk mengedit dengan model
grid, dengan penulisan sebagai berikut:

> attach(faithful)
> xnew <-fix(faithful)

Maka akan muncul spreadsheet sbb:

Gambar 4.5: Spredsheet editor data

31
Pengeditan data dapat dilakukan dengan penulisan statement R seperti di atas, atau
dengan menggunakan menu window: Edit -> Data editor …-> Masukan nama data
(misal data faithful) -> OK untuk melanjutkan edit data. Tahapan tersebut
ditunjukkan pada gambar berikut:

Gambar 4.5: Menu Data editor pada menu utama

 Statistika deskriptif

 Rerata (Mean)
Rerata merupakan deskripsi statistika yang menggambarkan tentang nilai rata-rata
dari suatu sample. Perhitungan rerata secara matematis adalah sebagai berikut:
n

mean  1/ n *  xi
i

Dalam R terdapat fungsi untuk menghitung nilai rerata sampel. Fungsi yang
digunakan adalah mean(x) ataupun dengan menggunakan fungsi summary(x).
Sebagai contoh, digunakan data dari datapackage yang sudah tersedia di R, pilih
salah satu data (misalkan Nile). Kemudian hitung nilai rerata sampel, dengan
menuliskan

> data()
> data(Nile)
> Nile
Time Series:
Start = 1871
End = 1970
Frequency = 1
[1] 1120 1160 963 1210 1160 1160 813 1230 1370 1140 995 935 1110
[14] 994 1020 960 1180 799 958 1140 1100 1210 1150 1250 1260 1220
[28] 1030 1100 774 840 874 694 940 833 701 916 692 1020 1050
[41] 969 831 726 456 824 702 1120 1100 832 764 821 768 845
[54] 864 862 698 845 744 796 1040 759 781 865 845 944 984
[67] 897 822 1010 771 676 649 846 812 742 801 1040 860 874
[80] 848 890 744 749 838 1050 918 986 797 923 975 815 1020
[94] 906 901 1170 912 746 919 718 714 740

47
> mean(Nile)
[1] 919.35
> summary(Nile)
Min. 1st Qu. Median Mean 3rd Qu. Max.
456.0 798.5 893.5 919.4 1033.0 1370.0

Hasil tersebut di atas adalah menunjukkan tentang data Nile yang terdiri dari 100 data
dengan nilai rerata 919.35. Selain rerata ada pula nilai statistik lainnya, yaitu
minimum, kuartil pertama, nilai tengah (median), kuartil ke tiga dan maksimum.
Nilai-nilai tersebut ditampilkan dengan menjalankan fungsi summary().

 Nilai Tengah (median)

Seperti halnya dengan rerata, R juga menyediakan fungsi untuk mencari nilai tengah
(median) sampel dengan menuliskan fungsi median().
Sebagai contoh, dapat digunakan data seperti mencari nilai rerata sebelumnya untuk
menghitung nilai tengah (median):

> median(Nile)
[1] 893.5

 Nilai minimum dan maksimum

R menyediakan fasilitas untuk mencari nilai minimum dan maksimum suatu data,
yaitu dengan digunakan perintah min() dan max()

> min(x) # untuk nilai minimum, dan


> max(x) # untuk nilai maksimum

 Grafik

R dilengkapi dengan fasilitas untuk visualisasi statistik dalam bentuk grafik, baik
statistik, kontur, map, dll. Sistem grafik di R terdiri dari dua sistem: sistem
(dasar/default) yang terdapat dalam paket graphics dan sistem trellis yang
terdapat dalam paket lattice. Grafik di R dapat diatur sesuai keperluan. Untuk
melihat lebih detil mengenai fitur grafik dalam R, pilih menu Help di menu R
kemudian pilih Manual (dalam format pdf) atau HTML help. Untuk mendapatkan
gambaran langsung tentang grafik dalam R, dapat dilihat dalam fungsi demo(),
dengan menuliskan

> demo() #
untuk melihat jenis-jenis demo
> demo(graphics) #
atau
> demo(image) #
atau
> demo(persp) #
atau
> demo(lattice) #
sebelumnya diperlukan load package dan pilih
lattice pada menu di windows R anda; atau
> demo(package = .packages(all.available = TRUE)) # untuk melihat
semua jenis demo yang tersedia

Ket: untuk R versi 2.1.1, penulisan Return dituliskan setelah penulisan fungsi
demo()

48
Grafik Dasar (Base)

Pengantar tentang prosedur grafik dapat dilihat di dokumen “Introduction to R” pada


menu Help ->Manual (dalam format pdf).

Berikut akan disajikan contoh pembuatan plot secara bertahap diawali dengan model
standar hingga pengaturan sesuai dengan yang diinginkan (customize). Contoh
berikut adalah pembuatan scatterplot untuk petal.length yang dibandingkan
dengan petal.width dari dataset iris. Default scatterplot dari dua variabel
dihasilkan oleh metod plot.default, yang secara otomatis digunakan oleh
perintah plot generik dimana argumennya merupakan dua vektor dengan panjang
yang sama seperti berikut ini:

> data(iris)
> str(iris)

‘data.frame’: 150 obs. of 5 variables:


$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 …
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 …
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 …
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 …
$ Species : Factor w/ 3 levels "setosa","versicolor",..:
1 1 1 1 1 1

Data tersebut di atas menyatakan bahwa data iris terdiri dari 5 variabel dimana setiap
variable terdiri dari 150 data observasi. Lima variable tersebut adalah: Sepal.Length,
Sepal.Width, Petal.Length, Petal.Width dan Species.
> attach(iris)
> plot(Petal.Length, Petal.Width)

Hasil dari perintah tersebut terlihat pada Grafik 5.1 (merupakan bentuk grafik secara
default). Dalam grafik tersebut, sumbu x dan sumbu y berasal dari argumen pertama
(Petal.Length) dan argumen kedua (Petal.Width), dari pernyataan
plot(argument_1, argument_2).
Gambar 5.1: Scatter plot data variabel Petal

Grafik 5.1 di atas dapat dilengkapi untuk menunjukan dependensi argumen dimana

49
sumbu y sebagai variabel dependen. Hal tersebut dilakukan dengan menuliskan
perintah seperti berikut, dimana variable terikat terletak sebelah kiri:
> plot(Petal.Width ~ Petal.Length,)

Pada Gambar 5.1 bentuk grafik sangat standart, sehingga perlu dilengkapi dengan
beberapa keterangan tambahan untuk memperjelas dan mempermudah dalam
melakukan interpretasi grafik. Hal ini dapat dilakukan dengan menambahkan fitur
warna atau simbol dalam tampilan grafik. Untuk hal tersebut, R mempunyai fasilitas
pewarnaan (yaitu dengan argumen col), simbol (dengan argumen pch), ukuran
(dengan argumen cex), label/nama sumbu kordinat (dengan argumen xlab dan
ylab), judul grafik (dengan argumen main). Beberapa jenis warna yang disediakan
dalam R dapat diketahui dengan menggunakan perintah colours(), dimana akan
ditampilan daftar warna-warna tersebut.
> colours()

[1] "white" "aliceblue" "antiquewhite"


[4] "antiquewhite1" "antiquewhite2 " antiquewhite3"

[655] "yellow3" "yellow4" "yellowgreen"

sedangkan fungsi palette() dapat digunakan untuk menampilkan daftar warna


dalam bilangan numeric:

> palette()

[1] "black" "red" "green3" "blue" "cyan" "magenta" "yellow"


[8] "gray"
Selain warna, simbol juga dapat digunakan untuk menampilkan tanda plot.
Spesifikasi simbol dapat dilakukan dengan menentukan karakter yang akan
digunakan (misalkan asterik ”*”) atau kode integer dari simbol tersebut. Gambar 5.2
menunjukkan simbol dan kodenya. Simbol dengan kode 21-26 memiliki fill (warna
latar) yang dispesifikasikan pada argumen bg, spesifikasi warna utama dengan
argumen col menspesifikasikan garis border.

Gambar 5.2: Simbol dan kode dalam R

Berikut ini merupakan contoh yang menampilkan grafik plot yang dilengkapi dengan
pewarnaan, modifikasi ukuran dan pemilihan simbol plotting. Penulisannya adalah
sebagai berikut:

> plot(1, 1, xlim=c(1, 7.5), ylim=c(0,5), type="n")


> points(1:7, rep(4.5, 7), cex=1:7, col=1:7, pch=0:6)
> text(1:7,rep(3.5, 7), labels=paste(0:6), cex=1:7, col=1:7)
> points(1:7,rep(2,7), pch=(0:6)+7) # Plot simbol 7 hingga 13
> text((1:7)+0.25, rep(2,7), paste((0:6)+7)) # Label dengan bilangan simbol
> points(1:7,rep(1,7), pch=(0:6)+14) # Plot symbols 14 hingga 20
> text((1:7)+0.25, rep(1,7), paste((0:6)+14)) # Labels dengan bilangan simbol

dan akan menghasilkan Gambar 5.3 sebagai berikut:

50
51
Gambar 5.3: Simbol, Kode dan Warna dalam R

Setelah kita mengetahui bentuk dan kode simbol, maka berikut ini akan dilakukan
penggunaan simbol, warna dan modifkasi lain untuk menggambarkan plot/grafik dari
contoh sebelumnya dengan menuliskan perintah seperti berikut:

> plot(Petal.Length, Petal.Width, pch=20, cex=1.2,


+ xlab=" Petal length (cm)", ylab="Petal width (cm)",
+ main="Data Anderson Iris",
+ col=c("slateblue","firebrick",darkolivegreen")
+ [as.numeric(Species)])

Data menunjukkan dengan jelas bahwa ukuran spesies berbeda (Sentosa paling kecil,
Versicolor menengah, Virginica terbesar) tetapi rasio petal length dan weight sama
untuk ketiga ukuran tersebut.

Gambar 5.4: Grafik scatterplot data Iris

52
 Histogram

Selain plot, bentuk representasi grafis lainnya yang paling mudah digunakan untuk
menggambarkan sebaran data adalah histogram. R menyediakan fasilitas fungsi
histogram yang digunakan untuk mengetahui sebaran sampel suatu data. Sebagai
catatan: histogram ataupun boxplot, digunakan untuk satu variable.
Sebelum kita mencoba untuk menggunakan fasilitas histogram, maka perlu sedikit
penjelasan yang berkaitan dengan histogram, yaitu:
 histogram digunakan untuk mengestimasi fungsi distribusi probabilitas
densitas (probability density function);

f (x)  lim Pr ob(x    X  x) / 


 0

 histogram ditentukan pula oleh bin/lebar batang;


 sumbu- y dalam histogram dapat berupa frekuensi kemunculan atau proporsi;
 tidak ada estimasi statistik yang dapat dibaca langsung dari histogram, namun
 dengan histogram kita dapat menduga kemiringan, sifat/behavior pada tail
atau ujung kurva, dan outlier data;
 histogram dapat dibandingkan sebagai suatu distribusi analitik standar.

Selain histogram, R juga menyediakan plot yang fungsinya menyerupai histogram


yakni stem-and-leaf plot dengan penulisan:

> stem(variabel)

Sebagai contoh, gunakan variabel eruptions dari tabel data faithful, dengan
menuliskan:

> attach(faithful)
> summary(eruptions)

Min. 1st Qu. Median Mean 3rd Qu. Max.


1.600 2.163 4.000 3.488 4.454 5.100

> fivenum(eruptions)

[1] 1.6000 2.1585 4.0000 4.4585 5.1000

> stem(eruptions)

The decimal point is 1 digit(s) to the left of the |


16 | 070355555588
18 | 000022233333335577777777888822335777888
20 | 00002223378800035778
22 | 0002335578023578
24 | 00228
26 | 23
28 | 080
30 | 7
32 | 2337
34 | 250077
36 | 0000823577
38 | 2333335582225577

53
40 | 0000003357788888002233555577778
42 | 03335555778800233333555577778
44 | 02222335557780000000023333357778888
46 | 0000233357700000023578
48 | 00000022335800333
50 | 0370

Kita juga dapat melihat sebaran data dalam plot histogram yaitu dengan
menggunakan fungsi hist()

> hist(eruptions)

Gambar 5.5: Grafik histogram data eruptions

Pada Gambar 5.5 di atas, fungsi hist() menggunakan jarak antar batang (disebut
bin) cukup besar. Untuk membuat bin lebih kecil, diperlukan tambahan atribut
dengan menuliskan:

> hist(eruptions, seq(1.6, 5.2, 0.2), prob=TRUE)

Pada perintah di atas, argumen seq(1.6, 5.2, 0.2) adalah histogram


menggunakan range dari 1.6 hingga 5.2 dengan lebar bin 0.2. Sehingga tampilan
grafik histogram adalah sebagai berikut:

54
Gambar 5.6: Grafik histogram data eruption berdasarkan lebar bin 0.2

Gambar 5.6 di atas menunjukkan lebar batang histogram yang lebih kecil dibanding
Gambar 5.5. Apabila ingin ditambahkan garis pada data densitas, maka dapat
menggunakan fungsi lines()seperti berikut:
> lines(density(eruptions, bw = 0.1))

Keterangan: bw adalah bandwidth (lebar pita), dengan nilainya berdasarkan trial and
error.

Gambar 5.7: Grafik histogram data eruptions dengan bw = 0.1

Untuk menampilkan point data aktual digunakan fungsi rug()

sbb:>rug(eruptions

55
Gambar 5.8: Grafik histogram data eruption dengan data aktual

Selain histogram, R dapat memplot fungsi distribusi kumulatif empiris dengan


menggunakan fungsi ecdf():
> plot(ecdf(eruptions), do.points=FALSE, verticals=TRUE)

Gambar 5.9: Plot 1 ecdf data eruption

Distribusi ecdf di atas masih jauh dari standar distribusi yang ada. Untuk itu dapat
dicobakan dengan mencocokkan distribusi normal dan “menutupi” fungsi distribusi
kumulatif (ecdf) sebelumnya. Penulisannya adalah sebagai berikut:

> long <- eruptions[eruptions > 3]


> plot(ecdf(long), do.points=FALSE, verticals=TRUE)

56
Gambar 5.10: Plot 2 ecdf data eruption

> x <- seq(3, 5.4, 0.01)


> lines(x, pnorm(x, mean=mean(long), sd=sqrt(var(long))), lty=3)

Gambar 5.11: Plot 3 ecdf data eruption

 Q-Q (Quantile – Quantile)

Selain histogram sebagai alat untuk memplot sebaran data suatu variabel adalah
Quantile – Quantile (Q-Q) plot. Q-Q plot dapat digunakan untuk memplot variable
secara lebih teliti berdasarkan nilai quantile data.
Q-Q plot adalah suatu scatter plot yang membandingkan distribusi empiris dengan
fitted distribution dalam kaitannya dengan nilai dimensi suatu variabel (misalkan:
nilai quantile empiris). Q-Q plot dapat memplot dengan baik jika dataset diperoleh
dari populasi yang sudah diketahui.

57
Q-Q plot dalam R dibagi menjadi dua, yaitu:
 qqnorm(variabel); untuk menguji goodness of fit dari distribusi
Gaussian. qqnnorm() disebut juga sebagai plot probabilitas normal.

 qqplot(variabel); untuk sebarang jenis distribusi

Melanjutkan contoh sebelumnya, untuk data eruptions, penggunaan Q-Q plot


dituliskan sbb:

> par(pty="s") # mengatur pembuatan daerah gambar berbentuk kotak


> qqnorm(long)

Gambar 5.12: Plot1 Q-Q Normal

> qqline(long)

Gambar 5.13: Plot 2 Q-Q Normal

58
 Boxplot

Selain dua alat untuk menggambarkan grafik untuk satu variable yang sudah
dijelaskan sebelumnya, terdapat fasilitas boxplot yang digunakan untuk melihat
sebaran data. Berikut adalah penjelasan tentang fitur dasar boxplot:
 Berguna untuk membanding banyak kelompok/grup.
 Dasarnya menggunakan 3 jenis summary: 3 quartil.
 Mudah dalam menampilkan nilai rerata (mean).
 Dapat diperluas untuk menampilkan persentil lainnya, terutama pada
ujung(tails) suatu distribusi.
R menyediakan fitur untuk menampilkan boxplot, dengan menuliskan fungsi
boxplot(variabel).
Untuk menjelaskan penggunaan fungsi boxplot(), berikut adalah contoh
menggambar grafik dengan menggunakan data faithful seperti pada contoh
sebelumnya.
> boxplot(eruptions)

Perintah di atas akan mendapatkan gambar boxplot dari variabel eruption seperti
berikut:

Gambar 5.14: Boxplot data eruption

Apabila ingin menambahkan judul gambar, maka penulisannya adalah:

> boxplot(eruptions, main=”Plot dengan Boxplot”)

59
Gambar 5.15: Boxplot data eruption dengan nama titel

R menyediakan beragam bentuk penyajian grafik plot. Berikut adalah daftar plot
grafik dasar yang ada dalam R (beberapa ada yang termasuk dalam instalasi awal dan
adapula yang masuk dalam paket lain yang harus didownload dari CRAN):

Tabel 5.1: Jenis plot dalam R


Jenis Fungsi Plot Keterangan
assocplot Plot Asosiasi (Association)
barplot Plot Batang (Bar)
boxplot Plot Kotak (Box)
contour Plot Contour
coplot Plot Conditioning
dotchart Plot Cleveland Dot
filled.contour Plot Level (Contour)
fourfoldplot Plot Fourfold
hist Histogam
image Menampilkan suatu Warna Image
matplot Plot Kolom suatu Matriks
mosaicplot Plot Mosaic
pairs Matriks Scatterplot
persp Plot Perspektif
plot Plot X-Y Umum
stars Plot Star (Spider/Radar)
stem Plot Stem-and-Leaf
stripchart Plot Scatter 1-D
sunflowerplot Plot Scatter Sunflower

60
Gambar 5.16 terdiri dari beberapa contoh tampilan grafik plot, yaitu boxplot, a
conditioning plot, pairwise scatterplot, dan star plot, yang kesemuanya mengaplikasikan dataset
Anderson iris. Perintah di R untuk menggambarkan grafik-grafik tersebut adalah :

> boxplot(Petal.Length ~ Species, horizontal=T,


+ col="lightblue", boxwex=.5,
+ xlab="Petal length (cm)", ylab="Species",
+ main="BoxPlot Group")
> coplot(Petal.Width ~ Petal.Length | Species,
+ col=as.numeric(Species), pch=as.numeric(Species))
> pairs(iris[,1:4], col=as.numeric(Species),
+ main="Pairwise scatterplot")
> stars(iris[,1:4], key.loc=c(2,35), mar=c(2, 2, 10, 2),
+ main="Star plot of individuals", frame=T)

Conditioning plot
boxplot

Pairwise scatterplot Star plot

Gambar 5.16: Contoh grafik plot

61
 Grafik Trellis

Sistem grafik trellis dalam R tersedia dalam paket lattice. Model grafik ini khususnya
digunakan untuk visualisasi multivariate apabila relasi antara variable berubah
bersama beberapa group factor yang disebut sebagai kondisi (conditioning) suatu
grafik terhadap factor. Metoda ini menggunakan formula yang similar dengan
formula statistic untuk menspesifikasikan variable yang akan diplot serta
hubungannya dalam plot.

Untuk memudahkan dalam penggunaannya, jenis plot dibagi berdasarkan banyaknya


variabel: satu variable (univariate), dua variable (bivariate), tiga variable (trivariate)
dan banyak variable (hypervariate).

Satu varibel/Univariate

Sebagai salah contoh univariate adalah membuat grafik plot densitas pada
keseluruhan data. Pada contoh ini digunakan dataset iris seperti contoh sebelumnya.
Berikut adalah metode yang digunakan untuk menampilkan plot densitas:
> densityplot(~ Petal.Length, data=iris,main=”Seluruh Spesies”)

Operator ~ tidak memiliki operan di sebelah kiri, karena tidak ada variable terikat
(dependent) dalam plot; ini menunjukkan sifat univariate. Petal.Length adalah
variable bebas (independent), dan diperoleh plotnya. Gambar 5.17(a) sebelah kiri
menunjukkan plot densitas univariate.
Pengkondisian dilakukan dengan menambahkan operator “|”, yang dapat dibaca
sebagai “pengkondisian pada” (conditioned on) satu (beberapa) variable pada sisi
kanan operator, seperti pada berikut ini:
> densityplot(~ Petal.Length | Species, data=iris)

Perintah tersebut akan menampilkan satu panel per spesies; seperti yang ditunjukkan
pada Gambar 5.17(b). Pada gambar tersebut tampak jelas bahwa distribusi multi-
modal keseluruhan data set berdasarkan perbedaan distribusi untuk setiap spesies.

(a) (b)
Gambar 5.17 Plot densitas triller (a) tanpa dan (b) dengan pengkondisian faktor
Jenis plot untuk satu variable (univariate) adalah seperti pada table 5.2 berikut: Tabel
62
Jenis Keterangan
assocplot Plot hubungan (association)
5.2: Jenis plot untuk satu variable

Dua variable (Bivariate)

Salah satu metode membuat plot dua variable (bivariate) adalah xyplot, dimana
sumbu y adalah variable terikat dan sumbu x adalah variable bebas; variable tersebut
juga dapat dikondisikan terhadap satu atau lebih kelompok faktor seperti pada
perintah berikut.

> xyplot(Petal.Width ~ Petal.Length, data=iris,


+ groups=Species, auto.key=T,main=”Seluruh Spesies”)
> xyplot(Petal.Width ~ Petal.Length | Species, data=iris,
+ groups=Species,main=”Dipisah berdasarkan spesies”)

Gambar 5.18: Scatter plot triller (a) tanpa dan (b) dengan pengkondisian faktor

Gambar 5.18 menunjukkan penggunaan argumen group untuk menspesifikasikan


perbedaan cara menampilkan grafik (dalam hal ini warna) untuk setiap spesies, dan
argument auto.key untuk mendapatkan kunci sederhana terhadap warna yang
digunakan untuk setiap spesies. Motode lain yang ada di R untuk membentuk grafik
dengan bivariate adalah pada table 5.3 berikut:

63
Tabel 5.3: Jenis plot untuk dua variable
Jenis Keterangan
qq Plot untuk membandingkan dua
distribusi
xyplot Plot scatter

Tiga variable(Trivariate)

Plot yang paling banyak digunakan untuk trivariate adalah levelplot dan
contourplot untuk melakukan plot 2D dari satu variable respon pada dua
variable terikat kontinu (misalkan, elevation vs. dua koordinat), metode wireframe
untuk suatu versi grafik 3D, dan metode cloud (awan) untuk scatter plot 3D dari tiga
variable. Semua dapat dikondisikan pada suatu factor tertentu. Gambar 5.19
menunjukkan contoh yang dihasilkan dari kode berikut:

> pl1 <- cloud(Sepal.Length ~ Petal.Length * Petal.Width,


+ groups=Species,
+ data=iris, pch=20, main="Anderson Iris data, all species",
+ screen=list(z=30, x=-60))
> data(volcano)
> pl2 <- wireframe(volcano,
+ shade = TRUE, aspect = c(61/87, 0.4),
+ light.source = c(10, 0, 10), zoom=1.1, box=F,
+ scales=list(draw=F), xlab="", ylab="", zlab="",
+ main="Wireframe plot, Maunga Whau Volcano, Auckland")
> pl3 <- levelplot(volcano,
+ col.regions=gray(0:16/16),
+ main="Levelplot, Maunga Whau Volcano, Auckland")
> pl4 <- contourplot(volcano, at=seq(floor(min(volcano)/10)*10,
+ ceiling(max(volcano)/10)*10, by=10),
+ main="Contourplot, Maunga Whau Volcano, Auckland",
+ sub="contour interval 10 m",
+ region=T,
+ col.regions=terrain.colors(100))
> print(pl1, split=c(1,1,2,2), more=T)
> print(pl2, split=c(2,1,2,2), more=T)
> print(pl3, split=c(1,2,2,2), more=T)
> print(pl4, split=c(2,2,2,2), more=F)
> rm(pl1, pl2, pl3, pl4)

Gambar 5.19 menunjukkan hasil dari perintah di atas. Sebagai catatan, data set
volcano merupakan matriks elavasi:

> str(volcano)
num [1:87, 1:61] 100 101 102 103 104 105 105 106 107 108 ...

Metode levelplot menkonversi ke variable respon (nilai z) dan dua predictor, yaitu
baris dan kolom matriks (nilai x dan y). Contoh tersebut menunjukkan metode lattice
tingkat tinggi yang melakukan pembentukan grafik sendiri. Hasil dari metode
levelplot digambar dengan metode print. Metode plot tiga variable adalah seperti
Table 5.4:

64
Gambar 5.19: Grafik plot Trellis trivariate Tabel 5.4: Jenis plot untuk

tiga variable
Jenis Keterangan
levelplot Plot level
contourplot Plot contour
cloud Plot scatter 3 dimensi
wireframe Permukaan 3 dimensi (similar
dengan plot persp di R)

Lebih dari tiga variabel/Hypervariate

Selain motode plot untuk satu, dua, tiga variable, R juga menyediakan plot grafik
untuk lebih dari tiga variable (hypervariate) seperti pada Table 5.5 berikut:

Tabel 5.5: Jenis plot untuk lebih dari tiga variable


Jenis Keterangan
splom Matriks plot scatter
parallel Plot koordinat paralel

 Fungsi Distribusi

Fungsi distribusi merupakan salah satu bahasan penting dalam statistika, terutama
dalam analisis data. Fungsi distribusi merupakan salah satu alat pendekatan distribusi
suatu data. Fungsi distribusi juga berperan dalam menentukan densitas suatu fungsi
data. Dalam bab ini akan dibahas fungsi distribusi dan fungsi yang berkaitan
dengannya.
65
 Jenis fungsi distribusi dalam R

Software R mempunyai koleksi fungsi distribusi standar yang lengkap, yang tersedia
dalam paket program R dan dapat ditambah dengan mendownload dalam bentuk
paket dari situs R.

Fungsi distribusi di R disediakan untuk memfasilitasi fungsi distribusi kumulatif


(Cummulative Distributive Function (CDF)) P(X ≤ x),fungsi probabilitas densitas
(Probability Density Function (PDF)), dan fungsi kuantil (diberikan q, x lebih kecil
sedemikian hingga P(X ≤ x) > q). Berikut adalah tabel distribusi di R.

Tabel 5.6: Jenis fungsi distribusi dalam R


Nama Distribusi Nama fungsi di R Argument tambahan
Beta beta shape1, shape2, ncp
Binomial binom size, prob
Cauchy cauchy location, scale
Chi-squared chisq df, ncp
Exponential exp rate
F f df1, df1, ncp
Gamma gamma shape, scale
Geometric geom Prob
Hypergeometric hyper m, n, k
Log-normal lnorm meanlog, sdlog
Logistic logis location, scale
Binomial negative nbinom size, prob
Normal norm mean, sd
Poisson pois Lambda
t - Student’s t df, ncp
Uniform unif min, max
Weibull weibull shape, scale
Wilcoxon wilcox m, n

 Fungsi Probabilitas Densitas (Probability Density Function (PDF))

Fungsi probabilitas densitas merupakan salah satu parameter statistic yang digunakan
untuk mengetahui probabilitas terhadap suatu factor yang ada dalam sample. Buku ini
akan mengawali pembahasan dengan contoh kasus untuk mempermudah pemahaman
tentang fungsi densitas seperti berikut ini:
Terdapat 16 mahasiswa dipilih secara acak dari populasi dimana 30% adalah wanita.
Berapa probabilitas sebanyak nol, satu, dua, …, enam belas dari mahasiswa tersebut
yang dipilih adalah wanita?. Untuk menghitung probabilitas tersebut akan digunakan
beberapa langkah dalam R seperti dibawah ini.
round(dbinom(0:16, 16, 0.3), 3) # dbinom artinya d:densitas dan
binom:binomial

[1] 0.003 0.023 0.073 0.146 0.204 0.210 0.165 0.101 0.049 0.019 0.006 0.001
[13] 0.000 0.000 0.000 0.000 0.000

66
Pertama adalah menghitung nilai probabilitas jumlah wanita yang terpilih dari
populasi yang dicari tersebut berdasarkan distribusi binomial dengan menggunakan
fungsi dbinom(). Nilai probabilitas dari masing-masing kejadian tersebut adalah:

Jml Wanita Probabilitas


terpilih
0 0.003
1 0.023
2 0.073
3 0.146
4 0.204
5 0.210
6 0.165
7 0.101
8 0.049
9 0.019
10 0.006
11 0.001
12 - 16 0.000

Total kumulatif dari masing-masing nilai probabilitas tersebut adalah 1 (hal ini
menunjukkan bahwa nilai probabilitas tersebut merupakan pdf). Kemudian untuk
menggambarkan scatter plot nilai probabilitas tersebut digunakan perintah plot seperti
berikut:

> plot(dbinom(0:16, 16, 0.3), type =”h”, xlab=” Banyaknya wanita”,


+ ylab=”Probabilitas”)

Perintah tersebut menggambarkan grafik plot (Gambar 5.20) dimana sample


berdistribusi binomial dimana menghitung probabilitas sukses 0 hingga 16 (0:16)
pada suatu populasi yang terdiri dari 16 mahasiswa dimana terdiri dari 0.3 (30%)
mahasiswa wanita.

Misalkan terdapat kondisi bahwa hanya 2 dari 16 yang terpilih adalah wanita. Berapa
probabilitas dua atau kurang dari jumlah wanita dapat terpilih kembali? Penyelesaian
masalah tersebut dapat diselesaikan dengan menggunakan fungsi pbiom() seperti
perintah program dibawah, dimana argument pertama = 2 yang menyatakan jumlah
wanita terpilih, argument kedua adalah 16 yang menyatakan jumlah keseluruhan,
argument ketiga menyatakan probabilitas jumlah wanita. Perintah dalam R adalah
sebagai berikut:

> pbinom(2, 16, 0.3, lower.tail = T) # pbinom, p: fungsi distribusi


atau probabilitas, binom: binomial
[1] 0.09935968

67
Gambar 5.20: Plot binomial data mahasiswa

(Interpretasi: dalam sample random dari 16 orang populasi dengan 30% adalah
wanita, terdapat sekitar 10% bahwa dari sample akan terpilih sebanyak nol, satu atau
dua adalah wanita. Maka jika kita lihat, 16 orang sample dengan dua atau kurang
wanita, maka kita menduga bahwa terjadi diskriminasi terhadap hal tersebut, maka
10% kesempatan yang kita duga tersebut adalah tanpa dasar yang kuat).

Contoh berikut menyatakan bahwa dua random sample yang saling bebas yang
berdistribusi normal seharusnya tidak berkorelasi. Kita dapat mensimulasikan hal ini
berulangkali untuk menaksi koefisien korelasi dimana probabilitas error Type I (yaitu
menolak hipotesis yang menyatakan tidak terdapat suatu korelasi) adalah 10%.
Pertama, kita akan menuliskan:

> size <- 20


> sample.1 <- rnorm(size) # rnorm; r: deviasi random; norm:
distribusi normal
> sample.2 <- rnorm(size)
> cor.test(sample.1, sample.2)

Pearson’s product-moment correlation

data: sample.1 and sample.2


t = 0.4394, df = 18, p-value = 0.6656
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.3557135 0.5217580
sample estimates:
cor
0.1030244

> plot(sample.1, sample.2)


> abline(h=0, lty=2)
> abline(v=0, lty=2)
> title(paste(“r=”, round(cor(sample.1, sample.2), 3)))

68
69
Gambar 5.21: Plot variabel sample1 dan sample 2

Gambar 5.21 menunjukkan bahwa 2 variabel random sample.1 dan sample.2 adalah
saling bebas.
Sebagai catatan, karena sifat kerandomannya, hasil yang akan anda peroleh dari hasil
percobaan yang dilakukan tentu akan berbeda dengan apa yang disajikan dalam buku
ini.

Kemudian, untuk perhitungan yang lebih besar lagi, yakni mencari nilai-nilai
statistiknya, perlu mendefinisikan fungsi secara tersendiri seperti berikut ini:

> cor.2 <- function(size) {


+ sample.1 <- rnorm(size)
+ sample.2 <- rnorm(size)
+ cor(sample.1, sample.2)
+}
> results <- NULL
> length <- 1000
> for (i in 1:length) {
+ results[i] <- cor.2(20)
+}
> hist(results, xlab= “r”, main= “Koefisien Korelasi”)
> (paste(“5% nilai r lebih negative dari”,
round(sort(results)[length/20], 3)))

[1] "5% nilai r lebih negative dari -0.386"

> (paste(“5% nilai r lebih positif dari”,


round(sort(results)[length - length/20], 3)))

[1] "5% nilai r lebih positif dari 0.35"

70
Gambar 5.22: Histogram koefisien korelasi

Sepertinya, terlihat suatu interval antara -0, 36 …. +0,37 yang melingkupi 90% dari
koefisien korelasi r sample untuk ukuran sample 20. Sekali lagi hasilnya mungkin
sedikit berbeda antara yang anda lakukan dengan yang dikerjakan dalam buku ini.

Suatu plot perspektif untuk PDF - distribusi normal bivariat:


> range <- seq (-3, 3, by= 0.1)
> random.1 <- dnorm(range, 0, 1)
> random.2 <- dnorm(range, 0, 0.7)
> mesh <- outer(random.1, random.2, function(x, y) x * y)
> persp(range, range, mesh, phi = 20, theta = 30, expand = 0.8,
+ xlab = “N(0, 1)”, ylab = “N(0, 0.7)”,zlab = “PDF”,
+ main = ”Contoh PDF untuk Distribusi Normal Bivariat”)

Gambar 5.23: Grafik 3D untuk pdf normal bivariat

71
Baris perintah di atas adalah salah satu contoh pembahasan mengenai fungsi
probabilitas densitas (probability density function (PDF)) dengan kasus distribusi
normal bivariat.

 Fungsi Kumulatif Densitas Empirik (Empirical Cummulative Density


Function (ECDF))

R menyediakan fitur dengan fungsi ecdf()untuk mencari fungsi densitas kumulatif


empirik (empirical cummulative density function (ecdf))..
Berikut adalah teori yang berkaitan dengan ecdf:
 Fungsi distribusi kumulatif suatu populasi dituliskan dalam bentuk

F (x)  Pr ob( X  x)

 Daerah di bawah fungsi densitas f(x) dari a ke b dituliskan dalam bentuk

F (b)  F (a)  Pr ob(a  X  b)

 Fungsi distribusi kumulatif dicari dengan mengestimasi nilai F(x), dimana


proporsi nilai data ≤ x
 Histogram yang ditampilakan adalah histogram kumulatif
 Dapat menjadi sempurna jika histogramnya hanya memiliki satu observasi per
bin (batang)
 ECDF bersifat unik dan tidak memerlukan binning
 Sangat baik untuk menunjukkan perbedaan dalam distribusi keseluruhan di
antara dua atau tiga grup yang berlapis/ menumpuk.
 Dapat membaca langsung nilai quantil nya.

 Regresi & ANOVA (Analysis of Variance)

Dalam sub bab ini akan dijelaskan tentang regresi dan ANOVA, yang merupakan
salah satu metode dasar statitistik dalam melakukan pengolahan dan analisis data.
Disini akan disajikan teori dan praktek regresi dan anova serta penggunaan R untuk
analisis tersebut. Pada tahap awal mungkin akan terasa sedikit rumit, namun
diharapkan setelah mencoba beberapa contoh akan menjadi lebih mudah.

Analisis regresi digunakan untuk menjelaskan atau memodelkan hubungan antara


suatu variable tunggal Y, disebut sebagai variable respon, output atau terikat, dan satu
atau lebih variable predictor, input, bebas atau penjelasan (explanatory), X1, …, Xp.
Apabila p = 1 maka disebut regresi sederhana, sedangkan apabila p > 1 maka
disebut regresi berganda atau regresi multivariate. Jika terdapat lebih dari satu
variable terikat Y, maka disebut regresi mulrivariate berganda.

Variabel respon harus berbentuk kontinu, sedangkan variabel penjelasan dapat


berbentuk kontinu, diskrit ataupun kategori. Sebelum kita masuk ke contoh, maka
akan digunakan data pima dari paket library ”faraway” yang sudah tersedia di paket
CD. Selain dalam CD, library(faraway) dapat didownload di situs
www.stat.lsa.umich.edu/˜faraway.
72
Pertama digunakan library faraway dan memanggil data pima tersebut dengan
mengetikkan:

> library(faraway)
> data(pima)
> pima
pregnant glucose diastolic triceps insulin bmi diabetes age test
1 6 148 72 35 0 33.6 0.627 50 1
2 1 85 66 29 0 26.6 0.351 31 0
3 8 183 64 0 0 23.3 0.672 32 1
4 1 89 66 23 94 28.1 0.167 21 0
5 0 137 40 35 168 43.1 2.288 33 1
….
Simpulan dari dataset tersebut dapat kita lihat sebagai berikut:
> summary(pima)
pregnant glucose diastolic triceps
Min. : 0.000 Min. : 0.0 Min. : 0.0 Min. : 0.00
1st Qu.: 1.000 1st Qu.: 99.0 1st Qu.: 62.0 1st Qu.: 0.00
Median : 3.000 Median :117.0 Median : 72.0 Median :23.00
Mean : 3.845 Mean :120.9 Mean : 69.1 Mean :20.54
3rd Qu.: 6.000 3rd Qu.:140.2 3rd Qu.: 80.0 3rd Qu.:32.00
Max. :17.000 Max. :199.0 Max. :122.0 Max. :99.00
insulin bmi diabetes age
Min. : 0.0 Min. : 0.00 Min. :0.0780 Min. :21.00
1st Qu.: 0.0 1st Qu.:27.30 1st Qu.:0.2437 1st Qu.:24.00
Median : 30.5 Median :32.00 Median :0.3725 Median :29.00
Mean : 79.8 Mean :31.99 Mean :0.4719 Mean :33.24
3rd Qu.:127.2 3rd Qu.:36.60 3rd Qu.:0.6262 3rd Qu.:41.00
Max. :846.0 Max. :67.10 Max. :2.4200 Max. :81.00
test
Min. :0.0000
1st Qu.:0.0000
Median :0.0000
Mean :0.3490
3rd Qu.:1.0000
Max. :1.0000

Simpulan data di atas menunjukkan beberapa hal yang tidak wajar yang mungkin
disebabkan ketika memasukkan data, misalkan nilai maksimum pregnant = 17 (ini
sangat besar, tetapi juga memungkinkan), tekanan darah (diastolic) = 0. Dengan
demikian kita perlu sedikit melakukan pembersihan data tersebut, khususnya yang
diasumsikan ketika memasukkannya tidak benar. Melihat ketidak wajaran tersebut
kita perlu menset nilai dari dataset yang bernilai 0 dengan NA, hal ini untuk
menghindari terjadinya pada kesalahan perhitungan. Nilai NA data tidak tersedia
untuk nilai yang diasumsikan salah ketika memasukkan, sehingga tidak termasuk
dalam perhitungan. Apabila nilai tersebut tetap 0, maka nilai statistik menjadi tidak
wajar, karena tidak sesuai dengan kenyataan. Perintah yang digunakan untuk menset
nilai tersebut adalah:

> pima$diastolic[pima$diastolic == 0] <- NA


> pima$glucose[pima$glucose == 0] <- NA
> pima$triceps[pima$triceps == 0] <- NA
> pima$insulin[pima$insulin == 0] <- NA
> pima$bmi[pima$bmi == 0] <- NA

Variabel test adalah bukan kuantitatif melainkan kategori. Variabel tersebut adalah faktor.
Tetapi karena merupakan kode numerik, variabel tersebut diperlakukan seperti halnya
kuantitatif. Akan lebih baik apabila variabel tersebut adalah faktor sehingga dapat
diperlakukan sesuai fungsinya. Hal seperti itu kadang terlupakan dan akibatnya akan terjadi
73
kesalahan proses perhitungan statistik (misalkan proses perhitungan ”rata-rata code pos”
(dimana kodenya numerik tetapi bukan data kuantitatif)). Sehingga untuk mendefinisikan
variabel test sebagai faktor maka perintah yang digunakan adalah:

> pima$test <- factor(pima$test)


> summary(pima$test)
0 1
500 268

Sekarang jelas bahwa 500 kasus adalah negative (0) dan 268 positif (1). Sehingga untuk
menggunakan deskripsi label yang benar untuk variabel test sebagai kategori maka dimana
(0) adalah negatif dan (1) adalah positif, maka dituliskan perintah berikur:

> levels(pima$test) <- c("negative","positive")


> summary(pima)

pregnant glucose diastolic triceps insulin


Min. : 0.00 Min. : 44 Min. : 24.0 Min. : 7.0 Min. : 14.0
1st Qu.: 1.00 1st Qu.: 99 1st Qu.: 64.0 1st Qu.: 22.0 1st Qu.: 76.2
Median : 3.00 Median :117 Median : 72.0 Median : 29.0 Median :125.0
Mean : 3.85 Mean :122 Mean : 72.4 Mean : 29.2 Mean :155.5
3rd Qu.: 6.00 3rd Qu.:141 3rd Qu.: 80.0 3rd Qu.: 36.0 3rd Qu.:190.0
Max. :17.00 Max. :199 Max. :122.0 Max. : 99.0 Max. :846.0
NA’s : 5 NA’s :35 NA’s :227 NA’s :374
bmi diabetes age test
Min. :18.2 Min. :0.078 Min. :21.0 negative:500
1st Qu.:27.5 1st Qu.:0.244 1st Qu.:24.0 positive:268
Median :32.3 Median :0.372 Median :29.0
Mean :32.5 Mean :0.472 Mean :33.2
3rd Qu.:36.6 3rd Qu.:0.626 3rd Qu.:41.0
Max. :67.1 Max. :2.420 Max. :81.0
NA’s :11.0

Data yang ada menunjukkan beberapa kemungkinan diantaranya regresi test


(sebagai respons) terhadap diastolic dan bmi (predictor) melibatkan suatu
respon kualitatif. Hal tersebut menunjukkan bahwa analisis regresi memiliki beberapa
kemungkinan berdasarkan pada tujuan yang dikehendaki, yaitu:
 Prediksi observasi ke depan
 Penilaian efek, hubungan antara, variable explanatory terhadap respon.
 Deskripsi umum struktur data.

Variabel prediktor dalam fungsi adalah berbentuk data kategori/kualitatif. Nama


ANOVA sendiri merupakan kependekan dari Analysis of Variance, dimana sering
digunakan untuk membagi/mempartisi keseluruhan variansi sebagai respon terhadap
setiap faktor-faktor dan error. Pada saat ini variabel prediktor disebut sebagai faktor
karena memiliki beberapa tingkatan/level. Sedangkan parameter-paremeter yang
terlibat disebut sebagai efek. Kita sekarang akan memperhatikan model dimana
parameternya tetap (fixed) tetapi tidak diketahui – disebut model fixed-effect tetapi
model randompeffect juga digunakan dimana parameter yang diambil merupakan
variabel random.

 ANOVA Satu Arah

 Model
Model untuk ANOVA jenis ini yaitu, diberikan faktor α terjadi pada tingkat i = 0, 1,
…, I , dengan sejumlah j observasi per tingkat dimana j = 1, …, Ji. Model yang
74
digunakan:
yij    i  ij , i  1,..., I ; j  1,..., Ji
dengan batasan-batasan parameter sebagai berikut:
1. Set μ = 0 dan variabel dummy I yang berbeda
2. α1 = 0 – berhubungan dengan perlakuan yang kontras
3.  J i
i
i  0 , yang mengarah pada penaksir kuadrat terkecil (least square
estimate).
ˆ  y , ˆ i  yi  y ,

Dimana tanda  (misal pada y ) menyatakan indeks dari rerata yang digunakan.
Metode terakhir ini paling banyak direkomendasikan untuk penghitungan
manualwalaupun akan lebih sulit disajikan dalam bentuk y  X   . Faktor kedua
pertama di atas lebih mudah diimplementasikan secara komputas. Seperti biasa,
beberapa analisis grafis awal diperlukan sebelum melakukan pencocokkan (fitting).
Boxplot sisi per sisi merupakan plot yang paling banyak digunakan. Lihat pada
persamaan variansi, transformasi, outliers (disini tidak berpengaruh secar relevan
karena levarage tidak akan berbeda kecuali disain yang sangat tidak seimbang)

 Penaksiran dan Pengujian

Penaksiran efek menggunakan langsung formula seperti yang sudah dijelaskan


sebelumnya atau menggunakan pendekatan least square (karena hasil sama).
Pada ANOVA, penaksiran dan pengujian dilakukan pertama kali adalah mencari
perbedaan factor levelnya. Kita lakukan perbandingan hipotesis, dimana:
 H0 : αi = 0 , berlaku untuk semua i
 Ha :paling sedikit satu αi ≠ 0

Contoh kasus,
Suatu penelitian ingin mengetahui apakah factor sosioekonomi mempengaruhi IPK
mahasiswa. Sosioekonomi dibagi dalam tiga kelompok, yaitu rendah (r), sedang (s)
dan tinggi (t). Dalam penelitian tersebut, masing-masing kelompok terdiri dari 7
mahasiswa yang diambil data IPK secara acak.

> ipksosek <- edit(data.frame()) #memasukkan data ipksosek


>ipksosek

ipk sosek
1 2.87 r
2 2.16 r
3 3.14 r
4 2.51 r
5 1.80 r
6 3.01 r

75
7 2.16 r
8 3.23 s
9 3.45 s
10 2.78 s
11 3.77 s
12 2.97 s
13 3.53 s
14 3.01 s
15 2.25 t
16 3.13 t
17 2.44 t
18 2.54 t
19 3.27 t
20 2.81 t
21 1.36 t

Langkah pertama adalah melihat sebaran data dengan melakukan plot, dan digunakan
boxplot dan hasilnya seperti Gambar 5.24:

> boxplot(ipks̃osek, data=ipksosek)

Gambar 5.24. Boxplot sebaran IPK mahasiswa berdasarkan sosio ekonomi

Disini diharapkan tidak terlihat adanya outlier, kemiringan (skewness) dan variansi
yang berbeda.
Selanjutnya, dilakukan pencocokan model dengan cara sebagai berikut:
Eksperimen tersebut melibatkan suatu factor tunggal yaitu kelas sosioekonomi

(sosek) pada tiga level (r,s,t). Misalkan r , s , masing-masing menyatakan rata-


t
rata IPK untuk mahasiswa tingkat social ekonomi rendah, sedang dan tinggi.
Sehingga akan diujikan hal berikut:
H 0 : r  s  t
melawan alternatif:
Ha : paling sedikit dua dari tiga perlakuan berbeda.

Maka untuk mendapatkan hal tersebut, maka perlu dibuat suatu model linear yang
menggambarkan hubungan ipk dengan sosek sebagai berikut:

> g <- lm(ipks̃osek,ipksosek)


76
> summary(g)

Residuals:
Min 1Q Median 3Q Max
-1.18286 -0.29286 -0.01143 0.34857 0.72714

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.52143 0.19336 13.040 1.31e-10 ***
soseks 0.72714 0.27346 2.659 0.0160 *
sosekt 0.02143 0.27346 0.078 0.9384
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5116 on 18 degrees of freedom


Multiple R-Squared: 0.3372, Adjusted R-squared: 0.2636
F-statistic: 4.579 on 2 and 18 DF, p-value: 0.02468

Karena nilai statistik F = 4.579 melebihi nilai kepercayaan F0.05 = 3.55, maka H0
ditolak dan disimpulkan (pada tingkat kepercayaan  = 0.05) bahwa rata-rata IPK
mahasiswa berbeda paling sedikit dua dari tiga tingkat sosio ekonomi. Hal ini juga
ditunjukkan oleh  = 0.05 lebih besar dari p-value = 0.02468.

Grup r adalah level rujukan dan mempunyai nilai rerata 2.52143, sedangkan grup s
dan t berturut-turut memiliki nilai rerata 0.72714 dan 0.02143 lebih besar dari rata-
rata r. Kemudian berdasarkan factor sosioekonomi tersebut, maka dilakukan
pemeriksaan matriks rancangan untuk memahami pengkodean:

> model.matrix(g)

Kita dapat mencocokan model tanpa mengintersepsi batasan:


> gi <- lm(ipks̃osek -1, ipksosek)
> summary(gi)

Residuals:
Min 1Q Median 3Q Max
-1.18286 -0.29286 -0.01143 0.34857 0.72714

Coefficients:
Estimate Std. Error t value Pr(>|t|)
sosekr 2.5214 0.1934 13.04 1.31e-10 ***
soseks 3.2486 0.1934 16.80 1.91e-12 ***
sosekt 2.5429 0.1934 13.15 1.14e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5116 on 18 degrees of freedom


Multiple R-Squared: 0.972, Adjusted R-squared: 0.9674
F-statistic: 208.4 on 3 and 18 DF, p-value: 3.662e-14

Kita lihat, dengan nilai p (p-value) = 3.662*10-14 (mendekati 0) maka kita tidak dapat
melakukan perbandingan hipotesis sebelumnya.

77
 ANOVA Dua Arah

Anggap terdapat dua faktor,  pada level I dan  pada level J. Misalkan jumlah observasi
pada level i dari  dan level j dari  dan misalkan observasi tersebut sebagai yi j1, yi j2, …. Suatu
layout lengkap A memiliki nij  untuk semua i, j. memiliki model umum yang paling
sesuai adalah : 1

78
yijk    i   j  ( )ij  ijk

Efek interaksi ( ij diinterpretasikan sebagai bagian dari rata-rata respon yang bukan
(

merupak atribut efek tambahan dari i and j Sebagai contoh misalkan anda menyukai
strawberi dan es krim secara individu, tetapi strawberi yang dicampur dalam eskrim
lebih disukai. Hal yang berlawanan misalkan anda menyukai ikan dan es krim tetapi
tidak menyukai es krim yang dicampur ikan.

Berikut ini adalah contoh penggunaan anova dua arah [23]:


Perusahaan pengecatan pesawat udara akan melakukan pengecatan pada permukaan
alumunium dengan dua cara; penyemprotan (spray) dan dipping. Percobaan
perbedaan faktor dilakukan untuk menyelidiki efek dari tipe pengecatan dan metode
pengecatan terhadap daya rekat (adhisif) cat. Kekuatan daya rekat diukur, dengan tiga
jenis cat (primer) yang berbeda dan dua metode pengecatan (aplikasi). Berikut adalah
penulisan dalam R:

> paint <- data.frame(adhf =


c(4.0,4.5,4.3,5.6,4.9,5.4,3.8,3.7,4.0,5.4,4.9,5.6,5.8,6.1,6.3,5.5
,5.0,5.0), primer = factor(rep(rep(1:3,rep(3,3)),2)),applic =
factor(rep(c("D","S"),c(9,9))))
> paint
adhf primer applic
1 4.0 1 D
2 4.5 1 D
3 4.3 1 D
4 5.6 2 D
5 4.9 2 D
6 5.4 2 D
7 3.8 3 D
8 3.7 3 D
9 4.0 3 D
10 5.4 1 S
11 4.9 1 S
12 5.6 1 S
13 5.8 2 S
14 6.1 2 S
15 6.3 2 S
16 5.5 3 S
17 5.0 3 S
18 5.0 3 S

Hasil tersebut adalah untuk anova satu arah, dengan mengabaikan metode
pengecatan. Statemen lm() menyesuaikan model linier dan statemen anova()
menampilkan hasil dalam bentuk tabel anova.

> anova(lm(adhf~primer, data=paint))


Analysis of Variance Table

Response: adhf
Df Sum Sq Mean Sq F value Pr(>F)
primer 2 4.5811 2.2906 5.5989 0.01527 *
Residuals 15 6.1367 0.4091
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1

Tampilan hasil di atas adalah anova satu arah untuk metode pengecatan, dengan

79
mengabaikan jenis cat (primer).

> anova(lm(adhf~applic, data=paint))


Analysis of Variance Table

Response: adhf
Df Sum Sq Mean Sq F value Pr(>F)
applic 1 4.9089 4.9089 13.521 0.002039 **
Residuals 16 5.8089 0.3631
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1

Hasil berikut merupakan anova dua arah untuk metode pengecatan, varibel primer
dan interaksi antar keduanya.
Sebagai catatan, jumlah kuadrat untuk variable primer dan untuk variable applic
bernilai sama dengan hasil perhitungan dalam analisis satu arah.
> anova(lm(adhf~primer*applic, data=paint))
Analysis of Variance Table

Response: adhf
Df Sum Sq Mean Sq F value Pr(>F)
primer 2 4.5811 2.2906 27.8581 3.097e-05 ***
applic 1 4.9089 4.9089 59.7027 5.357e-06 ***
primer:applic 2 0.2411 0.1206 1.4662 0.2693
Residuals 12 0.9867 0.0822
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1

Interaksi variable tidak signifikan (p = 0.2693) oleh karena itu kita dapat
melakukan uji untuk efek utama, dimana keduanya memiliki signifikansi yang tinggi.
Kesimpulan: Bahwa pemilihan tipe primer dan pemilih metode pengecatan (aplikasi)
mempengaruhi kekuatan daya rekat cat, dan selisih antara tiga tipe cat adalah sama
untuk kedua cara pengecatan (aplikasi), dan selisih antara dua metode pengecatan
adalah sama untuk setiap tipe cat.
Untuk uji t contoh pengecatan di atas, dibahas di V.5. sub bab uji t.
Perintah berikut digunakan untuk menunjukkan cara perhitungan nilai rerata untuk
enam tipe cat yang berbeda: kombinasi variable applic dan cara bagaimana mengatur
nilai rerata dalam bentuk matriks untuk memberikan plot interaksi.

> split(paint$adhf,paint$applic:paint$primer)
$"D:1"
[1] 4.0 4.5 4.3

$"D:2"[1] 5.6 4.9 5.4

$"D:3"
[1] 3.8 3.7 4.0

$"S:1"
[1] 5.4 4.9 5.6

$"S:2"
[1] 5.8 6.1 6.3

$"S:3"
[1] 5.5 5.0 5.0

80
>sapply (split (paint$adhf, paint$applic:paint$primer), mean)

D:1 D:2 D:3 S:1 S:2 S:3


4.266667 5.300000 3.833333 5.300000 6.066667 5.166667

>matrix(sapply(split(paint$adhf,
paint$applic:paint$primer),mean),ncol=2)
[,1] [,2]
[1,] 4.266667 5.300000
[2,] 5.300000 6.066667
[3,] 3.833333 5.166667

Perintah mathplot() akan mem-plot setiap kolom dari matriks pada graph yang
sama.

> matplot(matrix(sapply(split(paint$adhf,
paint$applic:paint$primer),mean),ncol=2), type="l",
xlab="Primer",ylab="Daya Rekat")

Gambar 5.25: Plot kolom matrik

Dua garis di atas tampak seperti paralel, sesuai dengan kesimpulan sebelumnya
bahwa tidak terjadinya suatu interaksi. Oleh karena itu, selisih/perbedaan antara tipe
cat (primer) adalah sama untuk setiap metode pengecatan.

81
> matplot(matrix(sapply(split(paint$adhf,paint$primer:paint$applic),
mean),ncol=3), type="l", xlab="Aplikasi",ylab="Daya Rekat")

Cara lain, anda dapat juga memplot daya rekat (adhesi) dengan metode pengecatan
(aplikasi), dengan garis yang berbeda untuk setiap primer garis tampak parallel
(Gambar 5.23).

Gambar 5.26: Matplot daya rekat (adhesi) vs aplikasi

 Analisis (Uji) Statistika t

Berkaitan den gan contoh kasus pengecatan pesawat terbang dengan variable primer
(tipe cat) dan variable applic (metode pengecatan; semprot dan dipping) (lihat kasus
di bagian anova dua arah), penulisan uji t dan koefisiennya dalam R adalah:
> summary(lm(adhf~primer*applic, data=paint))
Call:
lm(formula = adhf ~ primer * applic, data = paint)

Residuals:
Min 1Q Median 3Q Max
-0.40000 -0.16667 0.03333 0.21667 0.33333

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.2667 0.1656 25.772 7.1e-12 ***
primer2 1.0333 0.2341 4.414 0.000845 ***
primer3 -0.4333 0.2341 -1.851 0.088949 .
applicS 1.0333 0.2341 4.414 0.000845 ***
primer2:applicS -0.2667 0.3311 -0.805 0.436265
primer3:applicS 0.3000 0.3311 0.906 0.382736
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1

Residual standard error: 0.2867 on 12 degrees of freedom


Multiple R-Squared: 0.9079, Adjusted R-squared: 0.8696

82
F-statistic: 23.67 on 5 and 12 DF, p-value: 7.89e-06
Data di atas menunjukkan nilai uji t dari masing-masing variabel.

 R dan Statistika Lanjut

 Pencocokan distribusi (Fitting Distribution)

Pencocokan distribusi adalah suatu cara untuk menentukan fungsi matematis yang
diwakili dalam bentuk variabel-variabel statistika.
Masalah yang sering dihadapi oleh statistikawan adalah, jika mempunyai suatu
pengamatan/observasi dengan variabel kuantitatif x1, x2, …., xn dan ingin
menguji jika pengamatannya itu, menjadi sample dari populasi yang tidak diketahui
atau milik dari suatu populasi dengan pdf (fungsi densitas probabilitas) f(x, θ), dimana
θ adalah vektor dari parameter yang akan diestimasi dengan data yang ada.

Ada empat langkah utama dalam pencocokan distribusi:


1) Pemilihan model: Hipotesis distribusi
2) Estimasi/taksiran parameter
3) Pengukuran Goodnes of Fit
4) Uji Goodness of Fit

Empat langkah ini akan dibahas pada sub-bagian berikut ini.

 Pemilihan Model

Langkah pertama dalam pencocokan distribusi adalah memilih model atau fungsi
matematis yang mewakili data dengan baik. Semakin baik suatu model maka semakin
baik pula keterwakilan data. (Catatan: baik buruknya model, salah satunya dapat
diukur dengan error yang dihasilkan).
Terkadang untuk pemilihan suatu model atau fungsi, teknik grafik seperti histogram
dan lainnya dapat membantu. Namun secara grafik dapat mengakibatkan cenderung
subjektif, oleh karena itu ada metode yang didasari pada ekspresi analitik seperti
kriteria Pearson’s K. Memecahkan persamaan diferensial tertentu dapat dicapai
dengan menggunakan kelompok fungsi yang mewakili distribusi empiris. Kurva dari
fungsi tersebut hanya bergantung pada nilai rerata, variabilitas, skewness/kemiringan,
dan kurtosis. Dengan menstandarisasi data, tipe kurva yang hanya bergantung pada
pengukuran skewness dan kurtosis diformulasikan dalam fungsi berikut:
 2 (  6)2
K  4(4 2  31 2 2 12)(2  3 2 )
1 2 1

dimana:

 (x
n
i   )3

  i 1
adalah koefisien skewness Pearson’s
1 n 3
n (xi   )4
i 1
2   3 adalah koefisien kurtosis Pearson’s
n 4

83
Berdasarkan nilai K, yang diperoleh dari data yang ada, kita mempunyai suatu fungsi
jenis tertentu. Berikut adalah beberapa contoh distribusi kontinu dan distibusi diskrit.
Untuk setiap distribusi, terdapat bentuk grafik dan perintah R untuk membentuk
grafik tersebut.

Untuk data diskrit, dapat melihat distribusi


x Poisson, dengan fungsi mass probabilitas:
 

f (x, )  e dimana x = 0, 1, 2, ...


x!

Contoh, penulisan:

> x.poi <- rpois(n=200,lambda=2.5)


> hist(x.poi,ylab="Frekuensi",xlab="x.poi",main="Distribusi Poisson")

menghasilkan gambar berikut

Gambar 5.27: Histogram distribusi Poisson

Untuk data yang kontinu, distribusi yang digunakan antara lain:


 Distibusi Normal (Gaussian), dengan fungsi:

1( x  

f (x, , )  1 )2
untuk x  R
2 e 2 2

Sebagai contoh, dapat dituliskan perintah pembentukan kur va untuk model distribusi
Normal (Gaussian):
> curve(dnorm(x,m=10,sd=2), from=0,to=20,main="Distribusi Normal")

maka akan menghasilkan tampilan grafik seperti Gambar 5.28 sebagai berikut:

84
Gambar 5.28: Kurva distribusi Normal

 Distribusi Gamma:

  
untuk x  R
f ( x, , )  1
x

x  ( ) e

Sebagai contoh, penulisan:

> curve(dgamma(x, scale=1.5, shape=2),from=0, to=15, main="Distribusi


Gamma")

Menghasilkan grafik sebagai berikut:

Gambar 5.29: Kurva distribusi Gamma

85
Distribusi Weibull: x 
[ ]

f (x, ,  )   
x ( untuk x  R
1 
e )

Sebagai contoh, penulisan:

> curve(dweibull(x, scale=2.5, shape=1.5),from=0, to=15, main="Distribusi


Weibull")

akan menghasilkan grafik seperti Gambar 5.30 sebagai berikut:

Gambar 5.30: Kurva distribusi Weibull

Indeks kemiringan dan kurtosis dihitung dengan menggunakan perintah


skewness()dan kurtosis() yang terdapat dalam paket fBasics (dapat
didownload dari website CRAN). Perintah untuk menghitungnya adalah sebagai
berikut:

> library(fBasics) ## load paket fBasics


> skewness(x.norm) ## kemiringan(skewness) distribusi normal
[1] 0.1242952
> kurtosis(x.norm) ## kurtosis distribusi normal
[1] 0.01372539
> skewness(x.wei) ## skewness distribusi Weibull
[1] 0.7788843
> kurtosis(x.wei) ## kurtosis distribusi Weibull
[1] 0.4331281

 Taksiran parameter

Setelah pemilihan model yang merepresentasikan data, kita perlu melakukan


penaksiran parameter dari model yang telah dipilih. Dalam literatur statistik, ada
beberapa metode penaksiran parameter namun dalam buku ini memfokuskan pada
metode berikut:

86
1) analogi
2) moment
3) maximum likelihood.

Metode analogi terdapat dalam penaksiran model parameter yang mengaplikasikan


fungsi yang sama untuk data empiris, yaitu: kita estimasi rerata yang tidak diketahui
dari populasi normal menggunan rerata sample.

> mean.hat<-mean(x.norm)
> mean.hat
[1] 0.02646597

Metode moment adalalah teknik untuk membentuk penaksir parameter berbasis pada
pencocokan moment sample yang berhubungan dengan moment distribusi. Metode
ini membandingkan moment terhadap populasi (secara teori). Apabila terdapat
metode momen maka keuntungannya adalah terdapat pula bentuk yang sederhana.
Kita mendefinisikan moment sample (secara empiris) dengan cara tersebut.

Pendefinisian moment (empiris) suatu sampel adalah sebagai berikut:


 Moment sample ke-t sekitar 0 (nol):

m 
n xt
, t  0,1,2,...
y
t i i
i 1

 Moment sample ke-t sekitar rerata (mean):


n
m'   (x   )t y ,t  0,1,2,...
t i
i i 1

dimana moment populasi dari tinjauan teori adalah:


 Moment populasi ke-t sekitar 0 (nol):

m* 
t

xt f (x, ,t  0,1,2,...
)dx


m'* Moment
 populasi
(x   )t f (x, ke-t sekitar rerata:
)dx ,t  0,1,2,...
t 
dimana (β – α) adalah range dimana f(x,θ) didefinisikan, μ adalah rerata dari
distribusi, dan yi adalah frekuensi relative empiris, yaitu: kita akan menaksir
parameter distribusi gamma menggunakan metode moment dengan
mempertimbangkan moment pertama sekitar 0 (maupun rerata) dan moment kedua
terhadap rerata (maupun variansi):

x


 s2

87
2

88
dimana pada sisi kiri adalah rerata dan variansi distribusi gamma dan sisi kanan
adalah rerata sample dan variansi sample terkoreksi. Dengan memecahkan persamaan
sebelumnya di atas, didapat:
x
ˆ  2
s
2
x
ˆ 
s2
Penulisan untuk kasus di atas dengan R adalah sebagai berikut:
> x.gam<-rgamma(200,rate=0.5,shape=3.5) # sampling dari distribusi
gamma dengan λ = 0.5 dan α = 0.35 (parameter bentuk)

> med.gam<-mean(x.gam) # rerata sampel


> var.gam<-var(x.gam) # variansi sample
> l.est<-med.gam/var.gam # penaksiran lambda (berhubungan dengan
rata-rata)
> a.est<-((med.gam)^2)/var.gam # penaksiran alfa
> l.est
[1] 0.579852

> a.est
[1] 4.153633

Metode maximum likelihood digunakan dalam inferensi statistic untuk menaksir


parameter. Misal kita mempunyai variabel random dengan diketahui pdf f(x,θ) yang
menggambarkan karakter kuantitatif dalam populasi. Untuk itu kita harus menaksir
vektor konstanta dan parameter tidak diketahui (unknown) θ sesuai data sample: x1,
x2, …, xn .

Penaksiran maximum likelihood dimulai dengan model matematika yang diketahui


sebagai fungsi likelihood dari data sample. Singkatnya, likelihood dari himpunan data
adalah probabilitas untuk memperoleh himpunan data dengan yang sudah diberikan
model probabilitas yang dipilih. Ekspresi ini mengandung parameter tidak diketahui
(unknown). Nilai-nilai parameter yang memaksimumkan likelihood suatu sampel
dikenal sebagai penaksiran maximum likelihood (MLE = Maximum Likelihood
Estimate).
Definisi fungsi likelihood adalah sebagai berikut:
n

L(x1, x2 ,..., xn , )   f (xi , )


i 1

Selanjutnya kita dapat menggunakan metode analisis matematik (turuan parsial sama
dengan nol) bila fungsi likelihoodnya cukup sederhana, namun seringnya kita
mengoptimasi L(x1, x2, …, xn, θ) menggunakan metode iterasi. MLE mempunyai
beberapa sifat statistik dan beberapa keuntungan.
Misalkan, dalam kasus distribusi gamma, fungsi likelihoodnya adalah:

89
n n
 
1 x  nn

1
 n xi
L(x1, x2 ,..., xn , )   f (xi , , )  xi i
( ) ( xi e i1

 e )
i 1 i 1 ( ( ) i 1
)

dan fungsi logaritmanya:


n n

log(L)  n log()  n log(( ))  (  1)log xi    xi


i 1 i 1

R menyediakan fungsi untuk menghitung MLE dalam dua statement berikut:


1) mle() yang termasuk dalam paket stats4
2) fitdistr() yang termasuk dalam paket MASS

mle() mencocokkan (fit) parameter dengan metode maximum likelihood yang


menggunakan metode iterasi kalkulus numeric untuk meminimumkan negative log-
likelihood ekspresi analitik sebagai argumen dan memberikan nilai penaksiran
parameter awal. Penulisan di R untuk kasus distribusi gamma adalah sebagai berikut:

> library(stats4) # loading paket stats4


> ll<-function(lambda,alfa) {n<-200 x<-x.gam - n*alfa*log(lambda)
+n*log(gamma(alfa))-(alfa- 1)*sum(log(x))+lambda*sum(x)} #
fungsi negative log-likelihood
> est<-mle(minuslog=ll, start=list(lambda=2,alfa=1))
> summary(est)

Maximum likelihood estimation


Call:
mle(minuslogl = ll, start = list(lambda = 2, alfa = 1))
Coefficients:
Estimate Std. Error
lambda 0.5290189 0.05430615
alfa 3.6829126 0.35287672
-2 log L: 1044.282

Pertama ditentukan nilai awal parameter penaksir secara acak, tetapi dapat pula
digunakan metode moment untuk menentukan nilai awal parameter penaksir tersebut.
Perintah mle( ) digunakan untuk menaksir parameter setiap jenis pdf. Untuk hal
ini perlu diketahui bahwa ekspresi analitik likelihood perlu diketahui.

Dalam paket MASS tersedia fungsi fitdistr() untuk pencocokan maximum


likelihood distribusi univariate tanpa informasi tentang likelihood ekspresi analitik.
Hal ini cukup dengan menspesifikasikan suatu vector data, tipe pdf (densfun) dan
tentu saja daftar (list) nilai awal (start) untuk prosedur iterasi.
> library(MASS) # loading package MASS
> fitdistr(x.gam,"gamma") # fitting parameter pdf gamma

shape rate
3.68320097 0.52910229
90
(0.35290545) (0.05431458)

91
> fitdistr(x.wei,densfun = dweibull, start = list(scale=1,shape=2))#
fitting parameter pdf Weibull

scale shape
-1.04721828 2.04959159
(0.03814184) (0.11080258)

> fitdistr(x.norm,"normal") # fitting parameters pdf gaussian

mean sd
9.9355373 2.0101691
(0.1421404) (0.1005085)

 Pengukuran Goodness of Fit

Pengukuran goodness of Fit berguna untuk memasangkan frekuensi secara empiris


dengan yang dicocokkan oleh model teoritis. Dalam hal ini terdapat pengukuran
absolute dan relative. Diantara pengukuran absolute kita dapat memilih:
 yi  y *
n

 i 1
n
n

( y  y ) ii
*

2
 i 1
n

dimana yi adalah frekuensi empiric dan y*i adalah nilai yang dicocokkan.
Berikut adalah beberapa pengukuran relative:

n
yi  y *
 n  i

 n n y
i 1

yi i 1
i

i 1 n

2
 y  y*  / n
2

 i i
2
 n 
i 1
n

 yi  y /n i
n i 1
i 1
n

2
 ( y  y ) * 2
ii
2
2   i 1
n
n

 yi 2/ n  yi
i 1
2

i 1

Keterangan: biasanya indeks tersebut merupakan persentase dari rerata yang sesuai.

Berikut adalah contoh menggunakan R perhitungan data (berdistribusi Poisson):

> lambda.est<-mean(x.poi) # estimasi lambda parameter


92
> tab.os<-table(x.poi) # tabel dengan frekuensi empiris
> tab.os > x.poi

93
0 1 2 3 4 5 6 7 8
21 29 46 53 28 16 4 2 1

> freq.os<-vector()
> for(i in 1: length(tab.os)) freq.os[i]<-tab.os[[i]] #
vektor frekuensi
empirik
> freq.ex<-(dpois(0:max(x.poi),lambda = lambda.est)*200) # vektor
frekuensi yang diharapkan atau fitted (expected)
> freq.os

[1] 21 29 46 53 28 16 4 2 1
> freq.ex

[1] 15.0040080 38.8603808 50.3241931 43.4465534 28.1316433 14.5721912


6.2903292
[8] 2.3274218 0.7535028

> acc<-mean(abs(freq.os-trunc(freq.ex))) # index absolute dari


goodness of fit
> acc
[1] 2.111111

> acc/mean(freq.os)*100 # persentase relative index goodness of fit


[1] 17

Suatu teknik grafik untuk menghitung goodness of fit dapat menggambarkan kurva
pdf dan histogram dalam satu kesatuan seperti pada gambar 5.31. Adapun
penulisannya dalam R adalah sebagai berikut:

> h<-hist(x.norm,breaks=15)
> xhist<-c(min(h$breaks),h$breaks)
> yhist<-c(0,h$density,0)
> xfit<-seq(min(x.norm),max(x.norm),length=40)
> yfit<-dnorm(xfit,mean=mean(x.norm),sd=sd(x.norm))
> plot(xhist,yhist, type = "s", ylim = c(0,max(yhist, yfit)),
main=”Normal pdf dan histogram”)
> lines(xfit,yfit, col=”red”)

Gambar 5.31: Kurva dan histogram pdf Normal

 Uji kenormalan
Dalam analisis statitistika, statistikawan sering melakukan pengujian apakah
94
kumpulan data berasal/tidak dari pupulasi Normal, oleh karena itu perlu melakukan
uji kenormalan atas data tersebut. Beberapa literatur menyebutkan, ada beberapa uji
yang berguna untuk menguji kemiringan (skewness) dan/atau kurtosis dari suatu
distribusi berbasiskan pada b3 e b4 (atau gamma3 e gamma4). Salah satu uji yang
paling baik dan ampuh untuk menguji kenormalan terutama untuk sample kecil
adalah uji Shapiro-Wilk.

Dalam uji Shapiro-Wilk, kenormalan diuji dengan mencocokan dua penaksiran


variansi alternative, yaitu: penaksir non-parametrik didapat dari kombinasi linear nilai
sample terurut dan penaksir parameter biasa. Bobot (ai) dapat dilihat di table statistik:
2
 n 
  ai x(i ) 
 i 1
W  
n ( xi  x)
2

i 1

Fungsi R untuk uji Shapiro-Wilk adalah shapiro.test() yang akan menghitung


nilai statitistik W dan p- value. Penulisan perintah di R adalah sebagai berikut:

> shapiro.test(x.norm)

Shapiro-Wilk normality test

data: x.norm
W = 0.9938, p-value = 0.5659
p-value lebih tinggi dibandingkan tingkat (level) signifikansi yang biasanya
digunakan untuk menguji hipotesis statistik. Hipotesis nol akan diterima apabila
sample data termasuk dalam distribusi Gaussian.

Dalam Ekonometrik, uji Jarque-Bera sering digunakan untuk menguji kenormalan.


Uji Jarque-Bera berdasarkan pada pengukuran kemiringan/skewness dan kurtosis dari
distribusi dengan mempertimbangakn distribusi asimptotik dari b3 e b4 yang
merupakan, dibawah hipotesa nol, suatu chi kuadrat dengan 2 derajat kebebasan.
Uji Jarque-Bera di R berada dalam paket tseries (yang harus di download
website CRAN) dengan perintah jarque-bera.test() yang akan menghitung
nilai statistic, derajat kebebasan, dan p-value.

> library(tseries) # loading paket tseries


> jarque.bera.test(x.norm)

Jarque Bera Test

data: x.norm
X-squared = 0.539, df = 2, p-value = 0.7638

Suatu teknik pengujian yang diajukan oleh Cucconi (ahli statistik Italia) menguji
kenormalan tanpa minimbulkan masalah penaksiran parameter data sample.
Misal x1 ≥ x2 ≥, … ≥ xn sample variabel kontinu dan   n himpunan bilangan
acak normal standard berukuran n, misalkan:


1

i 1
2
i

n 95
1
r eq
n

kita pertimbangkan transformasi x x r dimana x adalah rerata


yi  q i ˆ  n
xi:

96
sample dan ˆ adalah akar kuadrat variansi sample.
Disini dapat dilihat jika xi berasal dari populasi normal dan yi berdistribusi normal
standard maka kita dapat menggunakan uji Kolmogorov-Smirnov untuk menguji
hipotesis tersebut. Berikut adalah contoh penulisan di R:

> zz <-rnorm(n=200,m=0,sd=1) # bilangan random sampling dari N(0,1)


> r <-zz[200]
> q <-sd(zz[-200])
> m <-mean(x.norm)
> s <-sqrt(var(x.norm))
> y <-q*((x.norm-m)/s)+(r/sqrt(200))
> ks.test(y,”pnorm”,m=0,sd=1)

One-sample Kolmogorov-Smirnov test

data: y
D = 0.0298, p-value = 0.9943
alternative hypothesis: two.sided

Paket nortest (harus di download dari situs CRAN) digunakan untuk melakukan
uji kenormalan hingga 5 cara yang berbeda, yaitu:
1) sf.test()melakukan uji Shapiro-Francia:

> library(nortest) #loading paket


> sf.test(x.norm)

Shapiro-Francia normality test

data: x.norm
W = 0.9926, p-value = 0.3471

2) ad.test() melakukan uji Anderson-Darling:

merupakan modifikasi uji Kolmogorov-Smirnov dan memerlukan distribusi tertentu


untuk menghitung nilai kritis. Pada saat ini tabel nilai kritis sudah mencakup
distribusi normal, lognormal, exponensial, Weibull, nilai ekstrim tipe I dan logistik.
Uji Anderson-Darling berdasarkan pada statistik ini:
A2  n  S

dimana,
(2i  1)
S 
n ln F (x )  ln(1  F )), n adalah ukuran sample, dan F(x) adalah
(x
i
i 1 n n i 1

fungsi distribusi kumulatif (CDF). R hanya menyediakan uji ini untuk cek
kenormalan:

> library(nortest) # loading paket


> ad.test(x.norm)

Anderson-Darling normality test

data: x.norm
A = 0.4007, p-value = 0.3581

97
3) cvm.test() melakukan uji Cramer-Von Mises, yang didasari teori statistik:

W 
 F (x)  F (x)
2 2
n f (x)dx


Penulisan uji ini dalam R adalah sebagai berikut:

> library(nortest) # loading paket


> cvm.test(x.norm)

Cramer-von Mises normality test

data: x.norm
W = 0.0545, p-value = 0.4449

4) lillie.test() melakukan uji Lilliefors:


Uji ini juga merupakan modifikasi dari uji Kolmogorov-Smirnov yang tidak bisa
digunakan untuk kenormalan apabila rerata dan standar deviasi (yang diambil dari

98
data sample) dari hipotesis distribusi normal tidak diketahui. Uji ini cukup ampuh
untuk data sample yang berukuran kecil. Uji Lilliefors mengevaluasi hipotesis bahwa
X berdistribusi normal dengan suatu nilai rerata dan variansi berbanding hipotesis
alternative bahwa X tidak berdistribusi normal.
Uji ini membandingkan distribusi empiric X dengan distribusi normal dengan rerata
dan variansi yang sama dengan X.

Uji Lilliefors mirip dengan uji Kolmogorov-Smirnov, namun parameter distribusi


normalnya ditaksir dari X. Penulisan dalam R adalah sebagai berikut:

> library(nortest) # loading paket


> lillie.test(x.norm)

Lilliefors (Kolmogorov-Smirnov) normality test data:

x.norm
D = 0.0414, p-value = 0.5509

5) pearson.test() melakukan uji Pearson’s chi-square:

Uji ini serupa dengan uji Chi-square


 2 yang digunakan untuk uji Goodness of fit
pada distribusi normal. Berikut adalah penulisan dalam perintah di R untuk uji chi-
square:

> library(nortest) # loading paket


> pearson.test(x.norm)

Pearson chi-square normality test data:

x.norm
P = 10.12, p-value = 0.753

99

Anda mungkin juga menyukai