Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Mata Kuliah : Kalkulus
Prodi : Teknik Informatika
Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
\(Pengertian\)
Menurut statistics consultant (2018) Vector (Vektor) merupakan kumpulan data atau biasa dikatakan struktur data yang paling sederhana. Dalam 1 vektor hanya dapat memuat 1 jenis tipe data. Nah yang belum paham tentang tipe data silahkan baca dulu bab tentang tipe data. Untuk membuat sebuah vector ada beberapa cara.
Menurut Agung Septa Pratama (2018) Vektor adalah matriks satu dimensi yang dapat menyimpan data numerik, data karakter, atau data logis. Dengan kata lain, vektor adalah tool sederhana untuk menyimpan data. Misalnya, Anda dapat menyimpan keuntungan dan kerugian harian perusahaan Anda.
Pada bookdown (Moh. Rosidi) Vektor merupakan kombinasi berbagai nilai (numerik, karakter, logical, dan sebagainya berdasarkan jenis input data) pada objek yang sama.
dari beberapa pengertian diatas memang terlihat berbeda satu sama lain namun, 3 pengertian vektor tersebuut bisa saling berkaitan atau berhubungan yang memudahkan kita menyelesaikan persoalan vektor.
Vektor dapat dibuat dengan beberapa cara yaitu:
c()
seq(), 1:10
rep()
paste()
kasus khusus
Vektor dibuat dengan menggunakan fungsi c()(concatenate) seperti yang disajikan pada sintaks berikut:
# membuat vektor numerik
x <- c(3,3.5,4,7)
x # print vektor
## [1] 3.0 3.5 4.0 7.0
# membuat vektor karakter
y <- c("Apel", "Jeruk", "Rambutan", "Salak")
y # print vektor
## [1] "Apel" "Jeruk" "Rambutan" "Salak"
# membuat vektor logical
t <- c("TRUE", "FALSE", "TRUE")
t # print vektor
## [1] "TRUE" "FALSE" "TRUE"
x1<-c(1,1,2,3,5,8,13,21);x1
## [1] 1 1 2 3 5 8 13 21
Misalkan kita membuat sebuah variabel pada sintaks dengan memberikan nama variabel x1<- c(1,1,2,3,5,8,13,21);x1. Tanda ‘;’ dapat digunakan untuk melakukan perintah dalam waktu bersamaan.
Untuk membuat vektor dengan type data numeric dengan cepat dan berurutan kita bisa menggunakan fungsi seq() , seq berarti sequence yang berarti mengurutkan data.
x4<-1:10
x4
## [1] 1 2 3 4 5 6 7 8 9 10
x5<-2.5:19
x5
## [1] 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5 15.5 16.5
## [16] 17.5 18.5
x6<-seq(from=0, to=20)
x6
## [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
pada pembuatan vektor menggunakan sintaks x5<-2.5:19, akan tetap dilakukan dengan langkah 1, sehingga angka 19 tidak akan muncul, yang muncul data terakhiradalah 18.5.
Jika kita menginginkan interval antar angka selain 1, kita dapat menggunakan fungsi seq(). Format sintaks tersebut adalah sebagai berikut:
seq(from, to, by)
Catatan:
from, to: angka awal dan akhir atau nilai maksimum dan minimum deret bilangan yang diinginkan.
by: interval antar nilai
Misalkan kita akan membuat deret bilangan dari 3 sampai 8 dengan interval antar deret sebesar 0,5. Berikut adalah sintaks yang digunakan:
seq(from=3,to=8,by=0.5)
Untuk membuat vektor dengan type data numeric ataupun character bisa menggunakan fungsi rep() , rep berarti replicaton yang berarti dapat melakukan replikasi data.
x9<-rep(2,3)
x9
## [1] 2 2 2
x10<-rep(1:2,2)
x10
## [1] 1 2 1 2
x11<-rep(1:2,times=2)
x11
## [1] 1 2 1 2
x12<-rep(1:2,each=2)
x12
## [1] 1 1 2 2
Pada sintaks x10<-rep(1:2,2) samadengan perintah times. Perintah times menduplikasi langsung keseluruhan data, misal 1,2 times=2, akan menjadi 1,2,1,2. Sedangkan menggunakan each langsung menduplikasi masing-masing. misal 1,2 each=2, akanmenjadi 1,1,2,2.
Catatan:
x: nilai yang hendak dibuat berulang.
times: jumlah pengulangan.
each: argumen tambahan yang menentukan jumlah masing-masing elemen vektor akan dicetak.
Untuk membuat vektor dengan type data character bisa menggunakan fungsi paste(). Fungsi paste dapat dikombinasikan juga dengan fungsi yang lain.
x13<-paste(1:12)
x13
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12"
x14<-paste("A",rep(1:4,each=2))
x14
## [1] "A 1" "A 1" "A 2" "A 2" "A 3" "A 3" "A 4" "A 4"
Fungsi paste sering juga digunakan dalam pembuatan nama variabel.
Dalam kasus khusus kita dapat membangkitkan membangkitkan angka acak berdasarkan distribusi tertentu. Kita juga bisa membuat vektor menggunakan huruf alphabet secara berurutan.
set.seed(123)
m1<-rnorm(5)
m1
## [1] -0.56047565 -0.23017749 1.55870831 0.07050839 0.12928774
set.seed(225)
n1<-rnorm(50)
n1
## [1] -1.61102914 0.36800783 -0.91330542 0.19981138 -0.88825666 0.80857845
## [7] 1.25960358 0.74435697 -0.59712442 -0.62458663 -0.04119631 0.01240603
## [13] -0.38068985 -0.21955228 -0.60540950 0.55203151 0.08414507 1.92445918
## [19] -0.65374544 1.42059484 -0.74896861 1.94439217 0.02043050 -0.28992954
## [25] 1.09395697 1.25174073 0.25130280 0.52990323 1.36525229 -1.10647926
## [31] -1.39158108 0.34841317 1.43284035 0.01372161 0.37096590 0.34012171
## [37] -0.26160670 2.30112183 -1.25736142 -1.33185391 -0.08686523 0.78202056
## [43] -2.70685417 -0.29774641 2.75212868 1.63723491 -0.08035953 1.39663213
## [49] 0.06453300 -0.44036681
Untuk membangkitkan angka acak dengan distribusi normal bisa menggunakan fungsi rnorm() angka yang didalm kurung menunjukkan jumlah data yang ingin dibangkitkan. Untuk distribusi lain atau aturan lain dari pembangkitan data akan dibahas pada artikel selanjutnya. Untuk membuat vektor khusus huruf bisa menggunakan fungsi letters.
HURUF <-LETTERS[c(1,4,3,7,4:10)]
HURUF
## [1] "A" "D" "C" "G" "D" "E" "F" "G" "H" "I" "J"
huruf <-letters[c(13,21,20,9,1,18,1:26)]
huruf
## [1] "m" "u" "t" "i" "a" "r" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"
## [20] "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
Jika fungsinya LETTERS() maka akan menghasilkan huruf besar, sedangkan menggunakan letters() menghasilkan huruf kecil.
selain menginput nilai pada vektor, kita juga dapat memberi nama nilai setiap vektor menggunakan fungsi names().
# Membuat vektor jumlah buah yang dibeli
Jumlah <- c(5,5,6,7)
names(Jumlah) <- c("Apel", "Jeruk", "Rambutan", "Salak")
# Atau
Jumlah <- c(Apel=5, Jeruk=5, Rambutan=6, Salak=7)
# Print
Jumlah
## Apel Jeruk Rambutan Salak
## 5 5 6 7
Penting!!!
Vektor hanya dapat memuat satu buah jenis data. Vektor hanya dapat mengandung jenis data numerik saja, karakter saja, dll.
Untuk menentukan panjang sebuah vektor kita dapat menggunakan fungsi lenght().
length(Jumlah)
## [1] 4
Seringkali nilai pada vektor kita tidak lengkap atau terdapat nilai yang hilang (missing value) pada vektor. Missing value pada R dilambangkan oleh NA(not available). Berikut adalah contoh vektor dengan missing value.
Jumlah <- c(Apel=5, Jeruk=NA, Rambutan=6, Salak=7)
Untuk mengecek apakah dalam objek terdapat missing value dapat menggunakan fungsi is.na(). ouput dari fungsi tersebut adalah nilai Boolean. Jika terdapat Missing value, maka output yang dihasilkan akan memberikan nilai TRUE.
is.na(Jumlah)
## Apel Jeruk Rambutan Salak
## FALSE TRUE FALSE FALSE
Penting!!!
Selain `NA` terdapat NaN (not a number) sebagai missing value8. Nilai tersebut muncul ketika fungsi matematika yang digunakan pada proses perhitungan tidak bekerja sebagaimana mestinya. Contoh: `0/0 = NaN`
`is.na()` juga akan menghasilkan nilai `TRUE` pada NaN. Untuk membedakannya dengan NA dapat digunakan fungsi `is.nan()`.
Subseting vector terdiri atas tiga jenis, yaitu: positive indexing, Negative Indexing, dan .
# Subset vektor pada urutan kedua
Jumlah[2]
## Jeruk
## NA
# Subset vektor pada urutan 2 dan 4
Jumlah[c(2, 4)]
## Jeruk Salak
## NA 7
Selain melalui urutan (indeks), kita juga dapat melakukan subset (membuat himpunan bagian) berdasarkan nama elemen vektornya.
Jumlah["Jeruk"]
## Jeruk
## NA
Penting!!!
Indeks pada `R` dimulai dari 1. Sehingga kolom atau elemen pertama vektor dimulai dari [1]
# mengecualikan elemen vektor 2 dan 4
Jumlah[-c(2,4)]
## Apel Rambutan
## 5 6
# mengecualikan elemen vektor 1 sampai 3
Jumlah[-c(1:3)]
## Salak
## 7
Penting!!!
panjang vektor yang digunakan untuk subset harus sama.
Jumlah <- c(Apel=5, Jeruk=NA, Rambutan=6, Salak=7)
# selecting vector
merah <- c(TRUE, FALSE, TRUE, FALSE)
# Subset
Jumlah[merah==TRUE]
## Apel Rambutan
## 5 6
Jumlah[c(2, 4)]
## Jeruk Salak
## NA 7
Jika pembaca melakukan operasi dengan vektor, operasi akan diterapkan ke setiap elemen vektor. Contoh disediakan pada sintaks di bawah ini:
pendapatan <- c(2000, 1800, 2500, 3000)
names(pendapatan) <- c("Taehyung", "Joni", "Lisa", "Rose")
pendapatan
## Taehyung Joni Lisa Rose
## 2000 1800 2500 3000
pendapatan <- c(2000, 1800, 2500, 3000)
names(pendapatan) <- c("Taehyung", "Joni", "Lisa", "Rose")
# Kalikan pendapatan dengan 3
pendapatan*3
## Taehyung Joni Lisa Rose
## 6000 5400 7500 9000
Seperti yang dapat dilihat, R mengalikan setiap elemen dengan bilangan pengali.
Kita juga dapat mengalikan vektor dengan vektor lainnya.Contohnya disajikan pada sintaks berikut:
# membuat vektor dengan panjang
# sama dengan dengan vektor pendapatan
coefs <- c(2, 1.5, 1, 3)
# Mengalikan pendapatan dengan vektor coefs
pendapatan*coefs
## Taehyung Joni Lisa Rose
## 4000 2700 2500 9000
Berdasarkan sintaks tersebut dapat terlihat bahwa operasi matematik terhadap masing-masing vektor dapat berlangsung jika panjang vektornya sama.
Berikut adalah fungsi lain yang dapat digunakan pada operasi matematika vektor.
max(x) # memperoleh nilai maksimum x
min(x) # memperoleh nilai minimum x
range(x) # memperoleh range vektor x
length(x) # memperoleh jumlah vektor x
sum(x) # memperoleh total penjumlahan vektor x
prod(x) # memeperoleh produk elemen vektor x
mean(x) # memperoleh nilai mean vektor x
sd(x) # standar deviasi vektor x
var(x) # varian vektor x
sort(x) # mengurutkan elemen vektor x dari yang terbesar
Secara sederhana vektor merupakan deret angka. Vektor bisa jadi berupa data yang kita miliki atau sengaja kita buat untuk tujuan simulasi matematika. Urutan angka-angka ini bisa memiliki interval konstan, contoh: titik waktu pada analisis reaksi kimia, atau dapat pula intervalnya bersifat acak seperti pada simulasi Monte Carlo.
\(Regular Sequences\)
Operator colon (“:”) dapat digunakan untuk membuat sequence vector. Operator tersebut berfungsi sebagai pemisah antara nilai awal dan akhir deret bilangan. Interval nilai sequence yang terbentuk adalah `. Berikut adalah contoh bagaimana cara membuat sequence vector menggunakan operator colon:
# vektor bernilai 10 s/d -1
10:-1
## [1] 10 9 8 7 6 5 4 3 2 1 0 -1
Perlu diperhatikan bahwa dalam aplikasinya operator colon memiliki prioritas tinggi untuk dilakukan komputasi terlebih dahulu dibandingkan operator matematika. Perhatikan sintaks berikut:
n = 10
# membuat vektor bernilai 0 s/d 9
1:n-1
## [1] 0 1 2 3 4 5 6 7 8 9
Deret bilangan acak biasanya banyak digunakan dalam sebuah simulasi. R menyediakan fungsi untuk memproduksi bilangan-bilangan acak tersebut berdasarkan distribusi tertentu. Berikut adalah tabel rangkuman nama distribusi, fungsi, dan argumen yang digunakan:
| Distribusi | Second Header | Second Header |
|---|---|---|
| Beta | rbeta(n, shape1, shape2, ncp = 0) |
n = jumlah observasi; shape1,shape2 = parameter non-negatif distribusi beta; ncp = non-centrality parameter |
| Binomial | rbinom(n, size, prob) | n = jumlah observasi; prob = probabilitas sukses; size = jumlah percobaan |
| Cauchy | rcauchy(n, location = 0, scale = 1) |
n = jumlah observasi; location, scale = parameter lokasi dan skala distribusi Cauchy |
| Chi-Square | rchisq(n, df, ncp = 0) | n = jumlah observasi; df = derajat kebebasan; ncp = non-centrality parameter |
| Exponensial | rexp(n, rate = 1) |
n = jumlah observasi; rate = vektor parameter rate |
| F | rf(n, df1, df2, ncp) | n = jumlah observasi; df1, df2 = derajat kebebasan; ncp = non-centrality parameter |
| Gamma | rgamma(n, shape, rate = 1, scale = 1/rate) |
n = jumlah observasi; shape, scale = parameter shape dan scale; rate = alternatif lain argumen rate |
| Geometri | rgeom(n, prob) | n = jumlah observasi; prob = probabilitas sukses |
| Hipergeometri | rhyper(nn, m, n, k) |
nn = jumlah observasi; m = jumlah bola putih dalam wadah; n = jumlah bola hitam dalam wadah; k = jumlah pengambilan |
| Log-normal | rlnorm(n, meanlog = 0, sdlog = 1) | n = jumlah observasi; meanlog, sdlog = nilai mean dan simpangan baku dalam skala logaritmik |
| Negatif Binomial | rnbinom(n, size, prob, mu) |
n = jumlah observasi; size = target jumlah percobaan sukses pertama kali; prob = probabilitas sukses; mu = parameterisasi alternatif melalui mean |
| Normal | rnorm(n, mean = 0, sd = 1) | n = jumlah observasi; mead, sd = nilai mean dan simpangan baku |
| Poisson | rpois(n, lambda) |
n = jumlah observasi; lambda = vektor nilai mean |
| Student t | rt(n, df, ncp) | n = jumlah observasi; df = derajat kebebasan; ncp = non-centrality parameter |
| Uniform | runif(n, min = 0, max = 1) |
n = jumlah observasi; min, max = nilai maksimum dan minimum distribusi |
| Weibull | rweibull(n, shape, scale = 1) | n = jumlah observasi; shape, scale = parameter shape dan scale |
Referensi
https://bookdown.org/moh_rosidi2610/Metode_Numerik/calculation.html#vector
https://agungspratama.wordpress.com/2018/07/08/operasi-vektor-dengan-r/