<- matrix(c(1,2,4,1,1,0,1,1,2), nrow=3, ncol=3, byrow=TRUE) # byrow=TRUE -> disusun per baris
A A
[,1] [,2] [,3]
[1,] 1 2 4
[2,] 1 1 0
[3,] 1 1 2
Pengantar Multivariat
September 24, 2024
Untuk membuat suatu matrix di R, gunakan fungsi
matrix(<values>, nrow=<jumlah baris>, ncol=<jumlah kolom>, byrow=TRUE/FALSE)
Argumen byrow
digunakan untuk mengatur apakah matrix disusun per baris atau per kolom.
[,1] [,2] [,3]
[1,] 1 2 4
[2,] 1 1 0
[3,] 1 1 2
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 2 1 1
[3,] 4 0 2
Tiap baris dan kolom dapat diberikan nama dengan argumen dimnames=list(rownames, colnames)
# Matriks disusun per baris diberikan nama
rownames = c("row1", "row2", "row3")
colnames = c("col1", "col2", "col3")
A <- matrix(c(1,2,4,1,1,0,1,1,2), nrow=3, ncol=3, byrow=TRUE, dimnames=list(rownames, colnames))
A
col1 col2 col3
row1 1 2 4
row2 1 1 0
row3 1 1 2
Untuk mengubah suat dataframe menjadi matrix, dapat digunakan fungsi as.matrix()
data(iris)
data <- head(iris[, c('Sepal.Length', 'Sepal.Width')])
mat_data <- as.matrix(data)
mat_data
Sepal.Length Sepal.Width
1 5.1 3.5
2 4.9 3.0
3 4.7 3.2
4 4.6 3.1
5 5.0 3.6
6 5.4 3.9
'data.frame': 6 obs. of 2 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9
num [1:6, 1:2] 5.1 4.9 4.7 4.6 5 5.4 3.5 3 3.2 3.1 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:6] "1" "2" "3" "4" ...
..$ : chr [1:2] "Sepal.Length" "Sepal.Width"
Operasi penjumlahan dan pengurangan pada matriks dapat dilakukan layaknya operasi penjumlahan dan pengurangan pada skalar di R
Operasi perkalian pada matriks dapat dilakukan layaknya operasi perkalian pada skalar di R
Operasi perkalian matriks dengan matriks harus menggunakan tanda %*%
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 2 1
[,1] [,2]
[1,] 2 1
[2,] 1 2
[3,] 3 1
[,1] [,2]
[1,] 6 4
[2,] 7 6
Melakukan perkalian matriks dengan matriks tanpa menggunakan tanda %
akan melakukan operator lain, yaitu Hadamard Product
[,1] [,2] [,3]
[1,] 2 0 -1
[2,] 4 1 3
[,1] [,2] [,3]
[1,] 1 3 7
[2,] 2 0 6
Transpose matriks dapat dilakukan dengan fungsi t()
[,1] [,2] [,3] [,4]
[1,] 1 1 3 5
[2,] 2 1 1 0
[3,] 1 2 3 5
Untuk penghitungan trace, diperlukan library matlib
dengan fungsi tr()
Determinan matriks dapat dihitung dengan fungsi det()
Invers matriks A dapat dihitung dengan fungsi solve(A)
Matriks A^n dapat dihitung dengan operator A %^% n
[,1] [,2] [,3]
[1,] 1 1 2
[2,] 3 1 1
[3,] 4 1 3
[,1] [,2] [,3]
[1,] 60 25 55
[2,] 65 25 55
[3,] 115 45 100
Power matrix dalam fungsi dari library expm
ini mengasumsikan nilai n adalah bilangan bulat positif. Jika ingin menggunakan nilai n non bilangan bulat positif.
Dari library expm
, dapat dicari akar kuadrat dari suatu matrix dengan fungsi sqrtm
[,1] [,2] [,3]
[1,] 0.7996281+0.7653010i 0.3420350-0.1942727i 0.6718684-0.3063164i
[2,] 1.0505083-0.7472764i 0.8850394+0.1896972i 0.2688254+0.2991019i
[3,] 1.3315353-0.5304036i 0.2932286+0.1346437i 1.5081014+0.2122973i
Bukti:
Matriks identitas n x n dapat dengan mudah dibuat menggunakan fungsi diag(n)
Notasi vektor sama dengan membuat suatu matriks dengan ncol=1
[,1]
[1,] 1
[2,] 0
[3,] 2
[,1]
[1,] 2
[2,] 2
[3,] 1
Untuk menghitung rank matriks, dibutuhkan library Matrix
dengan fungsi rankMatrix()
Untuk membuat bentuk eselon baris suatu matriks, dibutuhkan library matlib
dengan fungsi echelon()
Untuk mencari nilai eigen, gunakan fungsi eigen()
dan akses nilainya dengan $values
[,1] [,2] [,3]
[1,] 4 2 2
[2,] 2 4 2
[3,] 2 2 4
[1] 8 2 2
Untuk mencari vektor eigen dari nilai eigen yang bersesuaian, gunakan $vectors
Dari eigenvalues dan eigenvector, dapat dibentuk suatu dekomposisi spektral dari suatu matriks.
Dekomposisi cholesky dari suatu matriks A dapat dilakukan dengan fungsi chol(A)
[,1] [,2] [,3]
[1,] 3 0 -3
[2,] 0 6 3
[3,] -3 3 6
[,1] [,2] [,3]
[1,] 1.732051 0.00000 -1.732051
[2,] 0.000000 2.44949 1.224745
[3,] 0.000000 0.00000 1.224745
Sehingga dapat dibuktikan A = U`U dengan U matriks segitiga atas dari dekomposisi cholesky matriks A
[,1] [,2] [,3]
[1,] 1 0 1
[2,] 0 1 0
Nilai diagonal matriks D dapat diakses dengan $d
Matriks U dapat diakses dengan $u
Matriks V dapat diakses dengan $v
Sehingga dapat dibuktikan A = UDV`
Ortogonalisasi matrix dengan proses Gram-Schmidt dapat dilakukan dengan fungsi GramSchmidt()
dari library matlib
.
[,1] [,2] [,3]
[1,] 1 3 1
[2,] 2 2 0
[3,] 3 1 -2
[,1] [,2] [,3]
[1,] 0.2672612 0.8728716 -0.4082483
[2,] 0.5345225 0.2182179 0.8164966
[3,] 0.8017837 -0.4364358 -0.4082483
Bukti:
Diberikan matriks berikut
Carilah nilai:
2.576 x (A + B)
Bx
y`B
x`Ay
Inner product dari x dan x
Inner product dari x dan y
Outer product dari y dan y
Nilai eigen dari A menggunakan eigen()$values
dan hitung tanpa bantuan kode. Apakah nilainya sama?
Vektor eigen dari A menggunakan fungsi eigen()$vectors
dan hitung tanpa bantuan kode. Apakah nilainya sama?
Matriks U, D dan V dari singular value decomposition pada invers dari matriks B