Tugas Pengantar Analisis Multivariat (Correlation Matrix, Variance-Covariance Matrix, Eigen value dan eigen vector)

Disusun untuk memenuhi tugas mata kuliah Analisis Multivariat dengan menggunakan Raisin Dataset yang diperoleh dari UCI Machine Learning Repository. Dataset terdiri dari 8, yang masing-masing dijelaskan sebagai berikut:

Adapun tahapan analisis yang dilakukan antara lain meliputi:

  1. Load dataset (memuat data dan memastikan hanya kolom numerik yang akan digunakan)
  2. Menghitung Correlation Matrix
  3. Menghitung Variance-Covariance Matrix
  4. Menghitung Eigen Value dan Eigen Vector

Load Dataset

Memuat data dari file Excel

library(readxl)
data <- read_excel("D:/SEMESTER 4/Materi Sofia/AnMul/Tugas Week 1/Raisin_Dataset/Raisin_Dataset/Raisin_Dataset.xlsx")
cat("dimensi dataset:", nrow(data), "baris x", ncol(data), "kolom\n")
## dimensi dataset: 900 baris x 8 kolom
cat("variabel:\n")
## variabel:
print(names(data))
## [1] "Area"            "MajorAxisLength" "MinorAxisLength" "Eccentricity"   
## [5] "ConvexArea"      "Extent"          "Perimeter"       "Class"
head(data)
## # A tibble: 6 × 8
##    Area MajorAxisLength MinorAxisLength Eccentricity ConvexArea Extent Perimeter
##   <dbl>           <dbl>           <dbl>        <dbl>      <dbl>  <dbl>     <dbl>
## 1 87524            442.            253.        0.820      90546  0.759     1184.
## 2 75166            407.            243.        0.802      78789  0.684     1122.
## 3 90856            442.            266.        0.798      93717  0.638     1209.
## 4 45928            287.            209.        0.685      47336  0.700      844.
## 5 79408            352.            291.        0.564      81463  0.793     1073.
## 6 49242            318.            200.        0.777      51368  0.658      882.
## # ℹ 1 more variable: Class <chr>

Memastikan hanya kolom numeric saja yang digunakan

data1 <- data[, sapply(data, is.numeric)]
head(data1)
## # A tibble: 6 × 7
##    Area MajorAxisLength MinorAxisLength Eccentricity ConvexArea Extent Perimeter
##   <dbl>           <dbl>           <dbl>        <dbl>      <dbl>  <dbl>     <dbl>
## 1 87524            442.            253.        0.820      90546  0.759     1184.
## 2 75166            407.            243.        0.802      78789  0.684     1122.
## 3 90856            442.            266.        0.798      93717  0.638     1209.
## 4 45928            287.            209.        0.685      47336  0.700      844.
## 5 79408            352.            291.        0.564      81463  0.793     1073.
## 6 49242            318.            200.        0.777      51368  0.658      882.

Correlation Matrix

Melihat hubungan linear setiap variabel menggunakan correlation matrix

corr_matrix <- cor(data1)
corr_matrix
##                        Area MajorAxisLength MinorAxisLength Eccentricity
## Area             1.00000000       0.9327744       0.9066499    0.3361066
## MajorAxisLength  0.93277443       1.0000000       0.7280302    0.5836084
## MinorAxisLength  0.90664987       0.7280302       1.0000000   -0.0276835
## Eccentricity     0.33610660       0.5836084      -0.0276835    1.0000000
## ConvexArea       0.99591967       0.9450309       0.8956513    0.3482103
## Extent          -0.01349934      -0.2038656       0.1453215   -0.3610615
## Perimeter        0.96135172       0.9779780       0.8274170    0.4478452
##                  ConvexArea      Extent  Perimeter
## Area             0.99591967 -0.01349934  0.9613517
## MajorAxisLength  0.94503093 -0.20386556  0.9779780
## MinorAxisLength  0.89565132  0.14532153  0.8274170
## Eccentricity     0.34821030 -0.36106149  0.4478452
## ConvexArea       1.00000000 -0.05480247  0.9766122
## Extent          -0.05480247  1.00000000 -0.1734489
## Perimeter        0.97661223 -0.17344893  1.0000000

10 Korelasi tertinggi antar variabel:

library(tidyr)
library(dplyr)
library(tibble)

corr_1 <- pivot_longer(
  rownames_to_column(as.data.frame(corr_matrix), "Var1"),
  -Var1,
  names_to = "Var2",
  values_to = "value"
)
top_corr <- corr_1 %>%
  arrange(desc(value)) %>%
  head(10)
top_corr
## # A tibble: 10 × 3
##    Var1            Var2            value
##    <chr>           <chr>           <dbl>
##  1 Area            Area            1    
##  2 MajorAxisLength MajorAxisLength 1    
##  3 MinorAxisLength MinorAxisLength 1    
##  4 Eccentricity    Eccentricity    1    
##  5 ConvexArea      ConvexArea      1    
##  6 Extent          Extent          1    
##  7 Perimeter       Perimeter       1    
##  8 Area            ConvexArea      0.996
##  9 ConvexArea      Area            0.996
## 10 MajorAxisLength Perimeter       0.978
  • Variabel Area dan Variabel ConvexArea berkorelasi positif sangat kuat (0.9959197), semakin besar luas area kismis, maka luas area cembung (convex area) yang membungkus kismis tersebut juga semakin meningkat.
  • Variabel MajorAxisLength dan Variabel Perimeter juga berkorelasi positif sangat kuat (0.9779780), semakin panjang dimensi utama kismis, maka keliling kismis juga cenderung meningkat.

10 Korelasi terendah antar variabel:

low_corr <- corr_1 %>%
  arrange(value) %>%
  head(10)
low_corr
## # A tibble: 10 × 3
##    Var1            Var2              value
##    <chr>           <chr>             <dbl>
##  1 Eccentricity    Extent          -0.361 
##  2 Extent          Eccentricity    -0.361 
##  3 MajorAxisLength Extent          -0.204 
##  4 Extent          MajorAxisLength -0.204 
##  5 Extent          Perimeter       -0.173 
##  6 Perimeter       Extent          -0.173 
##  7 ConvexArea      Extent          -0.0548
##  8 Extent          ConvexArea      -0.0548
##  9 MinorAxisLength Eccentricity    -0.0277
## 10 Eccentricity    MinorAxisLength -0.0277
  • Variabel Eccentricity dan variabel Extent berkorelasi negatif lemah (-0.36106149), ketika nilai Eccentricity meningkat (objek semakin lonjong), nilai Extent cenderung menurun.
  • Variabel MajorAxisLength dan variabel Extent juga berkorelasi negatif lemah (-0.20386556), ketika nilai MajorAxisLength meningkat (kismis semakin memanjang), nilai Extent cenderung menurun
library(corrplot)
corrplot(
  corr_matrix,
  method = "color",
  type = "full",
  order = "hclust",
  addCoef.col = "black",
  tl.col = "black",
  tl.srt = 45,
  number.cex = 0.7
)

Variance-Covariance Matrix

varcov_matrix <- cov(data1)
varcov_matrix
##                          Area MajorAxisLength MinorAxisLength  Eccentricity
## Area             1.521165e+09    4.221378e+06    1.767671e+06  1.183972e+03
## MajorAxisLength  4.221378e+06    1.346415e+04    4.222916e+03  6.116279e+00
## MinorAxisLength  1.767671e+06    4.222916e+03    2.498890e+03 -1.249887e-01
## Eccentricity     1.183972e+03    6.116279e+00   -1.249887e-01  8.157415e-03
## ConvexArea       1.583600e+09    4.470629e+06    1.825348e+06  1.282186e+03
## Extent          -2.815116e+01   -1.264820e+00    3.884178e-01 -1.743625e-03
## Perimeter        1.026472e+07    3.106672e+04    1.132335e+04  1.107340e+01
##                    ConvexArea        Extent     Perimeter
## Area             1.583600e+09 -2.815116e+01  1.026472e+07
## MajorAxisLength  4.470629e+06 -1.264820e+00  3.106672e+04
## MinorAxisLength  1.825348e+06  3.884178e-01  1.132335e+04
## Eccentricity     1.282186e+03 -1.743625e-03  1.107340e+01
## ConvexArea       1.662135e+09 -1.194617e+02  1.090014e+07
## Extent          -1.194617e+02  2.858848e-03 -2.538891e+00
## Perimeter        1.090014e+07 -2.538891e+00  7.494690e+04

Nilai pada diagonal matriks menunjukkan varians masing-masing variabel, sedangkan nilai di luar diagonal menunjukkan kovarians.

  • Area dan ConvexArea memiliki varians yang sangat besar, menandakan bahwa ukuran luas kismis memiliki keragaman data yang tinggi.
  • Eccentricity dan Extent memiliki varians sangat kecil, yang berarti kedua variabel ini relatif stabil dan tidak banyak berfluktuasi.
  • Kovarians positif besar antara Area–ConvexArea, Area–Perimeter, dan MajorAxisLength–ConvexArea menunjukkan bahwa variabel-variabel tersebut cenderung meningkat bersama.
  • Kovarians negatif antara Extent dengan beberapa variabel ukuran (Area ConvexArea, Perimeter, Eccentricity, dan MajorAxisLength) menunjukkan bahwa ketika ukuran kismis meningkat, nilai Extent cenderung menurun.

Eigen Value dan Eigen Vector

eigen_result <- eigen(varcov_matrix)

# eigen values
eigen_result$values
## [1] 3.176903e+09 6.484070e+06 3.411647e+03 5.871721e+02 4.592383e+01
## [6] 1.781033e-03 1.565458e-03

Nilai eigen menunjukkan besarnya variasi data yang dijelaskan oleh masing-masing komponen utama. Eigen value pertama (3.176903e+09) memiliki nilai yang sangat besar dibandingkan yang lain, sehingga sebagian besar keragaman data dijelaskan oleh komponen utama pertama (PC1).

# eigen vectors
eigen_result$vectors
##               [,1]          [,2]          [,3]          [,4]         [,5]
## [1,] -6.911978e-01  7.225900e-01  0.0099167946  2.336904e-03 -0.002339507
## [2,] -1.935429e-03 -6.101735e-03  0.5800095074 -5.162209e-01  0.630129625
## [3,] -7.998219e-04  2.427483e-03 -0.2137523625  6.499835e-01  0.729259089
## [4,] -5.492743e-07 -4.737215e-06  0.0010540138 -1.661067e-03 -0.001299584
## [5,] -7.226472e-01 -6.910123e-01 -0.0159270484 -5.209011e-03  0.001481976
## [6,]  3.330314e-08  9.602308e-06 -0.0003483057  7.835626e-05  0.001134514
## [7,] -4.712872e-03 -1.795989e-02  0.7858407300  5.576756e-01 -0.266659316
##               [,6]          [,7]
## [1,]  1.174284e-06  6.537297e-06
## [2,]  4.904183e-04  6.364268e-04
## [3,]  8.891598e-04 -2.278570e-03
## [4,] -2.806809e-02 -9.996032e-01
## [5,] -1.815070e-08 -6.392384e-06
## [6,] -9.996054e-01  2.806617e-02
## [7,] -5.255305e-04  2.634392e-04

Vektor eigen menentukan variabel mana yang paling berpengaruh di Komponen utama (pada eigen value menunjukkan komponen utama pada PC1). Pada PC1, nilai koefisien terbesar (secara absolut) terdapat pada Area dan ConvexArea, yang menandakan bahwa komponen ini terutama merepresentasikan ukuran kismis.

Sumber Dataset: CINAR I., KOKLU M. dan TASDEMIR S., (2020), Klasifikasi Biji-bijian Kismis Menggunakan Metode Penglihatan Mesin dan Kecerdasan Buatan. Jurnal Ilmu Teknik Gazi, vol. 6, no. 3, hlm. 200-209, Desember, 2020.