Membuat matrik dengan dimensi sebesar 10x3 berdasarkan data lulusan mahasiswa dengan sampling 10 orang dengan 3 variabel (1, 2, 3) dimana 1 merupakan data IPK, 2 merupakan data Masa Studi Mahasiswa dan 3 merupakan Kredit Skor yang diperoleh. Disini saya memasukkan manual datanya 1 per 1, sebenarnya ada alternatif lain dengan menggunakan data berupa file CSV

library("scatterplot3d") # load
DataLulusan <- matrix(c(3.26,3.96,3.55,3.73,3.66,3.61,4.00,3.71,3.72,3.73,100,100,85,100,90,89,105,99,80,90,165,162.1,163.4,161,169,165,168.5,164.7,167.5,169.5), 
            10,              #Jumlah baris
            3)               #Jumlah kolom
DataLulusan
##       [,1] [,2]  [,3]
##  [1,] 3.26  100 165.0
##  [2,] 3.96  100 162.1
##  [3,] 3.55   85 163.4
##  [4,] 3.73  100 161.0
##  [5,] 3.66   90 169.0
##  [6,] 3.61   89 165.0
##  [7,] 4.00  105 168.5
##  [8,] 3.71   99 164.7
##  [9,] 3.72   80 167.5
## [10,] 3.73   90 169.5
scatterplot3d(DataLulusan, pch = 20, color="brown")

Dari data tersebut akan dicari nilai mean dari matriks DataLulusan

#membuat fungsi untuk mencari nilai mean dari matrik
vectorMean <- function(DataLulusan){ 
    n <- dim(DataLulusan)[1] 
    Xbar <- rep(1,n) %*% DataLulusan / n 
    return(Xbar)
}
print(vectorMean(DataLulusan))
##       [,1] [,2]   [,3]
## [1,] 3.693 93.8 165.57
scatterplot3d(vectorMean(DataLulusan), pch = 20, color="brown")

Sekarang akan dihitung nilai kovarian dari data matrik DataLulusan dengan cara seperti dibawah ini

# Fungsi untuk perhitungan matriks kovarian
matrixCov <- function(DataLulusan){ 
    n <- dim(DataLulusan)[1] # jumlah baris 
    ones <- rep(1,n) # vektor satuan 
    C <- diag(1,n) - ones %*% t(ones) / n 
    Xc <- C %*% DataLulusan 
    matCov <- t(Xc) %*% Xc / (n-1) 
    return(matCov)
}

# Hasil akhir menampilkan nilai kovarian
print(matrixCov(DataLulusan))
##            [,1]      [,2]      [,3]
## [1,] 0.04280111  0.444000  0.053100
## [2,] 0.44400000 65.288889 -6.428889
## [3,] 0.05310000 -6.428889  8.729000

Bisa juga dengan menggunakan perintah dibawah ini sebagai pembanding dari hasil diatas

print(cov(DataLulusan))
##            [,1]      [,2]      [,3]
## [1,] 0.04280111  0.444000  0.053100
## [2,] 0.44400000 65.288889 -6.428889
## [3,] 0.05310000 -6.428889  8.729000
scatterplot3d(matrixCov(DataLulusan), pch = 20, color="red")

Sekarang kita akan mencari nilai Matrik Korelasi berdasarkan data dari DataLulusan

matrixCor <- function(DataLulusan){ 
    n <- dim(DataLulusan)[1] # jumlah baris 
    p <- dim(DataLulusan)[2] # jumlah kolom 
    ones <- rep(1,n) # vektor satuan 
    C <- diag(1,n) - ones %*% t(ones) / n 
    D <- c() 
    for (j in 1:p) D <- c(D, sd(DataLulusan[,j])) 
    Xs <- C %*% DataLulusan %*% solve(diag(D)) 
    matCor <- t(Xs) %*% Xs / (n-1)
    
    # penamaan baris dan kolom 
    rownames(matCor) <- colnames(matCor) <- colnames(DataLulusan)  
return(matCor)
}

# print out function matriks korelasi X
print(matrixCor(DataLulusan))
##            [,1]       [,2]        [,3]
## [1,] 1.00000000  0.2656047  0.08687299
## [2,] 0.26560473  1.0000000 -0.26929856
## [3,] 0.08687299 -0.2692986  1.00000000

Cara yang lain bisa juga dengan langsung menggunakan fungsi dibawah cor(nama matrik)

print(cor(DataLulusan))
##            [,1]       [,2]        [,3]
## [1,] 1.00000000  0.2656047  0.08687299
## [2,] 0.26560473  1.0000000 -0.26929856
## [3,] 0.08687299 -0.2692986  1.00000000

Menampilkan data dari hasil perhitungan korelasi matrik dalam 3D dengan menggunakan Scatterplot

scatterplot3d(matrixCor(DataLulusan), pch = 20, color="red")