Bab VI
Bab VI
VI
Contoh & Studi Kasus R
Dalam bab ini akan diberikan contoh-contoh dan studi kasus, untuk menjelaskan
funsgi dan perintah-perintah R yang digunakan. Bagian contoh kasus dasar
merupakan studi kasus yang menggunakan perintah penulisan kode R yang
sederhana, sedangkan untuk bagian kasus lanjut adalah studi kasus yang
menggunakan perintah penulisan kode R yang lebih kompleks.
A. Contoh kasus dasar
A.1. Rerata (mean), variansi dan standar deviasi
Sebagai contoh, data mengenai banyaknya mobil merek X (dalam satuan ribu) yang
terjual di Indonesia pada periode tahun 1990 sampai 1999. yakni
74 122 235 111 292 111 211 133 156 7
selanjutnya, kita ingin menghitung mean, variansi dan standar deviasi data tersebut.
Berikut adalah penulisan perintah R
> mobilx = c(74, 122, 235, 111, 292, 111, 211, 133, 156, 79)
> mean(mobilx)
[1] 152.4
> var(mobilx)
[1] 5113.378
> std(mobilx)
Error: couldn't find function "std"
> sqrt(var(mobilx))
[1] 71.50789
> sqrt(sum((mobilx - mean(mobilx))^2/(length(mobilx )-1)))
[1] 71.50789
96
Pada proses penghitungan nilai standar deviasi (std), tertulis pesan error, dimana tidak
dikenali fungsi/perintah std, namun error tersebut dapat kita tangani, mengingat
standar deviasi adalah kuadrat variansi sehingga baris terakhir merupakan
rumus/fungsi menghitung standar deviasi dari data mobil X yang ada. Dimana rumus
matematis standar deviasi adalah:
SD(X) =
1 n
( xi x )2
n 1 i =1
R juga menyediakan fungsi untuk mengitung standar deviasi untuk data yang
sederhana yaitu:
> std = function(x) sqrt(var(x))
> std(variabel random)
Yes
3
# mencetak nilai X
97
> factor(x)
# mencetak nilai dalam factor(x)
[1] Yes No No Yes Yes
Levels: No Yes
# notice levels are printed.
Data tersebut akan dibuat bar chart untuk proporsi dan frekuensi berdasarkan
kategori. Pertama, kita menggunakan fungsi scan() untuk menuliskan dan
membaca data tersebut:
> sabun = scan()
1: 3 4 1 1 3 4 3 3 1 3 2 1 2 1 2 3 2 3 1 1 1 1 4 3 1
26:
Read 25 items
> barplot(sabun)
# masih salah
> barplot(table(sabun)) # Benar, gunakan summarized data.
> barplot(table(sabun)/length(sabun))
# dibagi dengan n untuk
proporsi
99
100
101
Catatan: Fungsi cut() dapat digunakan untuk menjawab pertanyaan pada interval
yang mana suatu bilangan/data termasuk, dimana outputnya adalah interval (sebagai
suatu faktor). Dengan demikian perlu menggunakan fungsi table() untuk
mensumarize hasil dari fungsi cut
B. Contoh kasus lanjut
B.1. Distribusi binomial
Misalkan untuk 500 sampel berdistribusi binomial dari 20 kali percobaan, dengan
probabilitas sukses sebesar 40%.
Pertama-tama anda menggunakan metode rbinom dan melihat summarynya dengan
fungsi summary():
> x <- rbinom(500,20,.4)
> summary(x)
Min. 1st Qu. Median Mean
3.000 6.000
8.000 8.066
3d Qu. Max.
10.000 14.000
4 11
0 12
9 38
5 12
# dalam bentuk
matrik baris
2
> dim(M)
NULL
Pada penulisan di atas, M tidak mempunyai dimensi, untuk itu kita perlu
menambahkan dengan metode dim:
> dim(M) <- c(4, 4)
> M
[,1] [,2] [,3] [,4]
[1,]
35
4
12
2
[2,]
14
11
9
5
[3,]
11
3
38
12
[4,]
1
0
4
2
> dim(M)
[1] 4 4
102
[1,]
[2,]
[3,]
[4,]
> M%*%M
[,1] [,2] [,3] [,4]
[1,] 1415 220 920 238
[2,] 748 204 629 201
[3,] 857 191 1651 517
[4,]
81
16 172
54
Untuk mencari solusi dari matrik M , kita memerlukan fungsi solve() dengan
penulisan sebagai berikut:
> solve(M)
[,1]
[,2]
[,3]
[,4]
[1,] 0.034811530 -0.007095344 -0.02039911 0.1053215
[2,] -0.036807095 0.096674058 0.02793792 -0.3725055
[3,] -0.004545455 -0.018181818 0.07272727 -0.3863636
[4,] -0.008314856 0.039911308 -0.13525499 1.2200665
> solve(M)%*%M
[,1]
[,2]
[,3]
[,4]
[1,] 1.000000e+00 -1.734723e-17 1.665335e-16 8.326673e-17
[2,] 1.665335e-16 1.000000e+00 0.000000e+00 0.000000e+00
[3,] -2.220446e-16 -2.775558e-17 1.000000e+00 -2.220446e-16
[4,] 2.220446e-16 5.551115e-17 8.881784e-16 1.000000e+00
Untuk memecahkan persamaan linear, misal untuk matrik A dan vector kolom B
sedemikian hingga, b = Ax, adalah:
> b <- c(1, 2, 3, 4)
> (x <- solve(M, b))
[1] 0.3807095 -1.2496674 -1.3681818
4.5460089
103
1
2
3
4
5
6
7
8
9
10
Y
T
T
Y
T
Y
Y
Y
T
Y
< 5 jam
5 10 jam
5 10 jam
> 10 jam
> 10 jam
< 5 jam
5 10 jam
< 5 jam
> 10 jam
5 10 jam
Untuk menulis data Tabel 6.1 di atas, kita buat menjadi dua vektor, kemudian
gunakan fungsi table.Penulisannya adalah:
> merokok = c("Y", "T", "T", "Y", "T", "Y", "Y", "Y", "T","Y")
> waktubel = c(1,2,2,3,3,1,2,1,3,2)
> table(merokok,waktubel)
waktubel
merokok 1 2 3
T
0 2 2
Y
3 2 1
104
105
c(), scan(),
106
4. Data mammals yang terintegrasi (built-in) dalam R terdiri dari variabel body
weight vs. brain weight. Gunakan perintah cor untuk mendapatkan koefisien
korelasi Pearson-Spearman. Apakah kedua variabel tersebut similar? Buatlah plot
data menggunakan perintah plot , dan lihatlah apakah kedua variabel tersebut
terlihat similar?. Jika anda tidak yakin dan terjawab dengan plot tersebut, maka
lakukan plot logaritma (log) setiap variabel dan perhatikan apakah sudah terjadi
perbedaan!
5. Data ToothGrowth yang built-in dalam R adalah hasil studi yang mengukur
pertumbuhan gigi sebagai suatu fungsi dari jumlah konsumsi Vitamin C. Sumber
Vitamin C berasal dari jus jeruk (orange juice) atau suplemen vitamin (vitamin
supplement). Scatterplot dari variabel dosage vs length adalah sebagai berikut:
> data(ToothGrowth)
> attach(ToothGrowth)
> plot(len ~ dose, pch=as.numeric(aupp)) ## klik mouse untuk
menambahkan legend
> tmp = levels(aupp) # menyimpan untuk sementara
> legend(locator(1), legend=tmp, pch=1:length(tmp))
> detach(ToothGrowth)
Dari plot yang dihasilkan, apakah yang dapat anda simpulkan dari kedua variabel
tersebut?
107