You are on page 1of 8

TUGAS KOMPUTASI STATISTIKA

Nama : Sella Aji Oktarin


Nim : 111810101023
Soal A :
1. a. Tulislah ekspresi sederhana dengan menghasilkan vektor barisan sebagai
berikut:
i) 50 bilangan pertama yang berpangkat 3, dimulai dengan 3
Skrip : 3^(1:50)
ii) 1, 22, 3, 42, 5, 62, ..., 9, 1002
Skrip : (1:100)^(1:2)
iii) 1, -1, 2, -1, 3, -1, ..., 10, -1.
Skrip :
b. Cara yang digunakan pada subset x[i] tergantung pada vektor i yang
digunakan
i)
i adalah logika
ketika i yang digunakan adalah logika , jika x[i] terdapat pada vektor
maka akan didapatkan nilai TRUE. Sebaliknya, jika x[i] tidak terdapat
ii)

pada vektor makan akan didapatkan nilai False


i adalah numerik
ketika i yang dimasukkan lebih besar dari panjang vektor x, maka yang
dihasilkan adalah NA, namun jika i yang dimasukkan kurang dari atau
sama dengan panjang vektor x, maka hasil yang didapatkan adalah

elemen ke-i pada sebuah vektor.


i adalah karakter
ketika i adalah karakter, maka elemen di x akan menjadi karakter.
c. Andaikan bahwa x adalah vektor numerik. Jelaskan hasil dari setiap ekspresi

iii)

berikut ini:
i)

sum(!is.na(x))

Jawab: sum() digunakan untuk menjumlahkan nilai dari argumen ().


is.na() digunakan untuk menguji kebenaran setiap elemen yang bernilai
NA atau NAN. Sehingga skrip diatas digunakan untuk menjumlahkan
nilai pada fungsi is.na() yang berbentuk 0 dan 1. Seperti dibawah ini
> !is.na(x)

[1] TRUE TRUE TRUE TRUE TRUE TRUE


> sum(!is.na(x))
[1] 6

ii)
c(x, x[-(1:length(x))])
iii) x[length(x) + 1] / length(x)
jawab
> x[length(x) + 1] / length(x)
[1] NA

hasil dari x[length(x) + 1] adalah NA karena melebihi dari panjang


x itu sendiri. Jika kemudia dibagi dengan length(x) maka hasilnya
akan tetap menjadi NA.
iv)

sum(x > mean(x))

jawab:

> x > mean(x)


[1] FALSE
> sum(x > mean(x))
[1] 0
X > mean (x) menghasilkan

nilai FALSE, jika kemudian dijumlahkan

menggunakan fungsi sum() maka akan menghasilkan 0 karena FALSE


bernilai 0.
2. Fungsi pada R
a. Tulis kode R yang digunkan untuk menghitung jumlah dari fungsi
i)
ii)

iii)

berikut:
Elemen maksimum di setiap baris x
Skrip : apply(x, 1, max)
Rata rata dari bilangan positif pada baris x
Skrip : apply(x, 1, function(x) mean(x[x>0], na.rm=TRUE))
Elemen pertama dari setiap baris yang lebih besar dari nilai sebelumnya
berturut-turut itu, atau NA jika elemen tidak ada
b. Tabel Hari pada sebuah bulan :
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
31 28 31
30 31 30 31 31
30 31 30
31

i)

Diasumsikan nilai tabel hari disimpan dalam vektor month.days.


Skript pada R yang dapat menampilkan bulan dan hari yaitu :
Kita gunakan fungsi rep() untuk mengulang 12 bulan sebanyak
month.days. Sehingga didapatkan banyaknya bulan :
> bulan = rep(1:12, month.days)

Selanjutnya untuk menampilkan hari, dengan menggunakan fungsi


sapply() yang digunakan untuk menerapkan suatu fungsi untuk elemen

yang ada dalam daftar dan mengembalikan hasilnya dalam suatu


vektor atau daftar. Sehingga didapatkan banyaknya bulan :
> hari = sapply(month.days, seq)

ii)

Hari pertama pada tahun 2011 adalah hari Sabtu. Skrip R yang
menghasilkan sebuah variabel yang disebut yang berisi (MingguSabtu) yang terdapat 365 hari pada tahun 2011.
> day = rep(c("Sa", "Mi", "Se", "Sel", "Ra", "Ka",
"Jum"),
length = 365)

iii)
Menulis fungsi pada R
3. Plot pada R
a) Peneliti Kimia terkadang membuat tiga cara pengukuran dari proses yang
dilakukan yaitu :
Menghitung rata rata dari 3 pengamatan
Membuang pengamatan yang jauh berbeda dari rata rata.
Melaporkan hasil dari 2 pengamatan.
Fungsi R chem3 mengambil satu argumen, x, yang berisi tiga nilai
numerik dan mengembalikan nilai tersebut seperti yang telah dijelaskan
diatas :
chem3 =
function(x) {
hasil = abs(x - mean(x))
mean(x[-which(hasil == max(hasil))[1]])
}

b) Fungsi yang digunakan pada interval [0:16],


atas = c(2, 4, 8, 11, 14)
bawah = c(0, 2, 5, 8, 11)

c) Untuk n > 2, fungsi chi-square density memiliki nilai maksimum tunggal.


Script R yang mengoptimalkan fungsi secara akurat untuk mendapatkan
nilai kepadatan maksimum untuk n > 2 yaitu :
5. Data disimpan pada file countdata.txt
a) Script R untuk membaca file dataframe yang disebut countdata.txt, yang
mengandung 3 variabel, date, count, weather. Variabel tersebut
masing masing bertipe karakter, numerik dan faktor yaitu :
countdata = read.table("countdata.txt",

colNames = c("date", "count", "weather"),

colClasses = c("character", "numeric", "factor"))

b) Script R untuk mengatur dataframe, sehingga variabel count brada dalam


urutan ascending.
c)

countdata[with(countdata, order(count))]
Script R untuk menghitung jumlah wet dan dry dalam data.
with(countdata, c(wet = sum(weather == "wet"),
dry = sum(weather == "dry")))

d) Script R untuk menghitung median untuk wet dan dry dalam data.
with(countdata, tapply(count, weather, median))

e) Script R untuk menambahkan variabel month dan day pada dataframe.

Soal B :
1. Jelaskan secara detail tujuan dari blok kode R yang ditunjukan oleh gambar 1
dibawah ini:

Jawab:
-

month <- 1:12


menampilkan bulan yang terdiri dari 12 bulan. Untuk itu mengunakan 1:12
yaitu membuat vektor yang berisi bilangan dari 1 sampai 12. Seperti di bawah
ini:
> month <- 1:12
> month
[1] 1 2 3 4

9 10 11 12

monthString <- sprintf("%02d", month)


mendefinisikan monthString dengan mencetak hasil keluaran berupa
tampilan karakter month. Karena fungsi dari sprintf adalah
memformat percetakan pada objek R. Dengan format yang ditampilkan
adalah "%02d" yang berarti bahawa hasil keluaran akan berupa 2 karakter
dengan awalan 0, namun jika tidak ingin menampilkan nya maka hilangkan
angka 0. Hasil kelurannya seperti dibawah ini

> monthString <- sprintf("%02d", month)


> monthString
[1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10"
"11" "12"
> monthString <- sprintf("%2d", month)
> monthString
[1] " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10"
"11" "12"

year <- 2005:2009


membuat tahun yang terdiri dari tahun 2005 sampai dengan tahun 2009 dan
diberi nama year.

dateMatrix <- outer(year, monthString, paste, sep="-")

membuat keluaran dengan meletakkan strings bersamaan yaitu year dan


monthString dengan format "-". Seperti dibawah ini:
> dateMatrix
[,1]

[,2]

[,3]

[,4]

[,5]

[,6]

[,7]

[,8]
[,9]
[,10]
[,11]
[,12]
[1,] "2005_ 1" "2005_ 2" "2005_ 3" "2005_ 4" "2005_ 5" "2005_ 6"
"2005_ 7" "2005_ 8" "2005_ 9" "2005_10" "2005_11" "2005_12"
[2,] "2006_ 1" "2006_ 2" "2006_ 3" "2006_ 4" "2006_ 5" "2006_ 6"
"2006_ 7" "2006_ 8" "2006_ 9" "2006_10" "2006_11" "2006_12"
[3,] "2007_ 1" "2007_ 2" "2007_ 3" "2007_ 4" "2007_ 5" "2007_ 6"
"2007_ 7" "2007_ 8" "2007_ 9" "2007_10" "2007_11" "2007_12"
[4,] "2008_ 1" "2008_ 2" "2008_ 3" "2008_ 4" "2008_ 5" "2008_ 6"
"2008_ 7" "2008_ 8" "2008_ 9" "2008_10" "2008_11" "2008_12"
[5,] "2009_ 1" "2009_ 2" "2009_ 3" "2009_ 4" "2009_ 5" "2009_ 6"
"2009_ 7" "2009_ 8" "2009_ 9" "2009_10" "2009_11" "2009_12"
-

dateStrings <- as.character(t(dateMatrix))

mengubah dateMatrix kebentuk vektor karakter dan mentranposekannya


seperti dibawah ini.
> dateString
[1] "2005_01" "2005_02" "2005_03" "2005_04" "2005_05" "2005_06"
"2005_07" "2005_08" "2005_09" "2005_10" "2005_11" "2005_12" "2006_01"
"2006_02" "2006_03" "2006_04"
[17] "2006_05" "2006_06" "2006_07" "2006_08" "2006_09" "2006_10"
"2006_11" "2006_12" "2007_01" "2007_02" "2007_03" "2007_04" "2007_05"
"2007_06" "2007_07" "2007_08"
[33] "2007_09" "2007_10" "2007_11" "2007_12" "2008_01" "2008_02"
"2008_03" "2008_04" "2008_05" "2008_06" "2008_07" "2008_08" "2008_09"
"2008_10" "2008_11" "2008_12"
[49] "2009_01" "2009_02" "2009_03" "2009_04" "2009_05" "2009_06"
"2009_07" "2009_08" "2009_09" "2009_10" "2009_11" "2009_12"

dateStrings[1:54]

membuat vektor numerik dateString dari 1 sampai 54. seperti dibawah ini:
> dateString[1:54]
[1] "2005_01" "2005_02" "2005_03" "2005_04" "2005_05" "2005_06"
"2005_07" "2005_08" "2005_09" "2005_10" "2005_11" "2005_12" "2006_01"
"2006_02" "2006_03" "2006_04"
[17] "2006_05" "2006_06" "2006_07" "2006_08" "2006_09" "2006_10"
"2006_11" "2006_12" "2007_01" "2007_02" "2007_03" "2007_04" "2007_05"
"2007_06" "2007_07" "2007_08"
[33] "2007_09" "2007_10" "2007_11" "2007_12" "2008_01" "2008_02"
"2008_03" "2008_04" "2008_05" "2008_06" "2008_07" "2008_08" "2008_09"
"2008_10" "2008_11" "2008_12"
[49] "2009_01" "2009_02" "2009_03" "2009_04" "2009_05" "2009_06"

4. a. Membuat skrip ekspresi sederhana dari R yang menghasilkan vektor sebagai


berikut:
i) -10, -9, -8 , ..., -2, -1
Skrip : -(10:1)
ii) 1, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6, ..., 19, 20, 20, 21, 21, 21
Skrip :
iii) 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024
Skrip : 2^(0:10)
iv) 1, 2, 6, 24, 120, 720, 5040, 40320
Skrip : factorial(1:8)

b. apakah hasil dari -1%%3 positif atau negatif ? jelaskan jawabanmu


Jawab: Positif seperti hasil dibawah ini, karena %% merupakan modulo.
> -1%%3
[1] 2

c. jelaskan mengapa hasil dari perhitungan seperti dibawah ini


> 0.1 + 0.2 == 0.3
[1] FALSE

d. Tulislah fungsi nth() dengan x sebuah vektor logika dan n bilangan bulat
positif. Yang akan menghasilkan indeks ke-n pada vektor x. Sehingga fungsi
akan berjalan sebagai berikut :
> x = c(1, 2, 4, 2, 1, 3)

> nth(x > 2, 2)


[1] 6
> nth(x > 4, 2)
[1] NA

Skrip yang digunakan untuk membuat fungsi nth() adalah sebagai berikut:
nth= function(x, n) which(is.na(x))[n]

5. a. Bagaimana mengambil subset berikut dari vektor x (yang mungkin berisi


nilai NA)
i) Nilai Pertama
Skrip: > x[1]
ii) Yang kedua sampai nilai kelima
Skrip : x[2:5]
iii) Semua nilai kecuali 2 nilai terakhir
Skrip: x[-length(x) - 0:1]
iv) Nilai ke 2, 4, 6 dll.
v) Semua nilai positif dalam x
Skrip: x[!is.na(x) & x > 0]
b. Jelaskan aturan untuk mengubah ekspresi pada R
c. Apakah nilai yang dihailkan dari ekspresi:
1:6 * 1:2
Jawab : nilai yangdihasilkan sebagai berikut ini
> 1:6 * 1:2
[1] 1 4 3

5 12

Dengan mengalikan vektor 1:6 dengan vektor 1:2. Vektor pengali akan di
ubah sama panjang dengan vektor yang akan dikalikan maka menjadi c(1, 2,
3, 4, 5, 6) dikalikan dengan c(1, 2, 1, 2, 1, 2) dan menghasilkan keluaran
seperti diatas.
d. Fungsi :
> f = function(x, y) if (y > 0) y * sin(x) else x * sin(y)

Tidak mematuhi aturan daur ulang. Untuk membetulkannya kita gunakan


fungsi ifelse() seperti berikut ini :

f = function(x, y) ifelse(y > 0, y * sin(x), x * sin(y))

You might also like