library(readr)
## Warning: package 'readr' was built under R version 4.4.3
raisin <- read_delim(
  "raisin.csv",
  delim = ";"
)
## Rows: 900 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (3): Eccentricity, Extent, Class
## dbl (2): Area, ConvexArea
## num (3): MajorAxisLength, MinorAxisLength, Perimeter
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Langkah 1 – Cek Struktur Data

# Cek struktur data
str(raisin)
## spc_tbl_ [900 × 8] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ Area           : num [1:900] 87524 75166 90856 45928 79408 ...
##  $ MajorAxisLength: num [1:900] 4.42e+09 4.07e+08 4.42e+09 2.87e+09 3.52e+09 ...
##  $ MinorAxisLength: num [1:900] 2.53e+08 2.43e+09 2.66e+09 2.09e+09 2.91e+09 ...
##  $ Eccentricity   : chr [1:900] "0,819738392" "0,801805234" "0,798353619" "0,684989217" ...
##  $ ConvexArea     : num [1:900] 90546 78789 93717 47336 81463 ...
##  $ Extent         : chr [1:900] "0,758650579" "0,68412957" "0,637612812" "0,699599385" ...
##  $ Perimeter      : num [1:900] 118404 1121786 1208575 844162 1073251 ...
##  $ Class          : chr [1:900] "Kecimen" "Kecimen" "Kecimen" "Kecimen" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   Area = col_double(),
##   ..   MajorAxisLength = col_number(),
##   ..   MinorAxisLength = col_number(),
##   ..   Eccentricity = col_character(),
##   ..   ConvexArea = col_double(),
##   ..   Extent = col_character(),
##   ..   Perimeter = col_number(),
##   ..   Class = col_character()
##   .. )
##  - attr(*, "problems")=<externalptr>

Penjelasan: Dari output str(), dataset Raisin terdiri dari 900 observasi dan 8 variabel. Variabel bertipe numerik, kecuali satu variabel yaitu Class merupakan variabel kategorik.

Langkah 2 – Mengambil Variabel Numerik

# Mengambil hanya variabel numerik
data_numerik <- raisin[, sapply(raisin, is.numeric)]

Penjelasan: Pada tahap ini melakukan pemilihan variabel numerik saja karena analisis korelasi, kovarians, dan eigen hanya dapat diterapkan pada data numerik.

Langkah 3 – Correlation Matrix

# Correlation Matrix
correlation_matrix <- cor(data_numerik)
correlation_matrix
##                      Area MajorAxisLength MinorAxisLength ConvexArea Perimeter
## Area            1.0000000       0.6129967       0.4599893  0.9959197 0.5585666
## MajorAxisLength 0.6129967       1.0000000       0.2224467  0.6195309 0.3832257
## MinorAxisLength 0.4599893       0.2224467       1.0000000  0.4535930 0.2244359
## ConvexArea      0.9959197       0.6195309       0.4535930  1.0000000 0.5643685
## Perimeter       0.5585666       0.3832257       0.2244359  0.5643685 1.0000000

Penjelasan: Dari output matriks korelasi dapat dilihat bahwa beberapa variabel numerik memiliki hubungan yang cukup kuat, terutama antara Area, ConvexArea, dan Perimeter.

Langkah 4 – Variance–Covariance Matrix

# Variance-Covariance Matrix
covariance_matrix <- cov(data_numerik)
covariance_matrix
##                         Area MajorAxisLength MinorAxisLength   ConvexArea
## Area            1.521165e+09    3.881818e+13    1.545500e+13 1.583600e+09
## MajorAxisLength 3.881818e+13    2.636196e+18    3.111345e+17 4.100955e+13
## MinorAxisLength 1.545500e+13    3.111345e+17    7.421071e+17 1.593062e+13
## ConvexArea      1.583600e+09    4.100955e+13    1.593062e+13 1.662135e+09
## Perimeter       8.928608e+09    2.550141e+14    7.924035e+13 9.430105e+09
##                    Perimeter
## Area            8.928608e+09
## MajorAxisLength 2.550141e+14
## MinorAxisLength 7.924035e+13
## ConvexArea      9.430105e+09
## Perimeter       1.679737e+11

Penjelasan: Matriks varians-kovarians menunjukkan besarnya penyebaran data dan hubungan antar variabel numerik. Nilai yang besar menunjukkan variasi data yang cukup besar.

Langkah 5 – Eigen Value dan Eigen Vector

# Eigen value dan Eigen vector
eigen_result <- eigen(covariance_matrix)

# Eigen value
eigen_result$values
## [1] 2.685996e+18 6.923076e+17 1.401806e+11 1.325868e+09 6.363562e+06
# Eigen vector
eigen_result$vectors
##               [,1]          [,2]          [,3]          [,4]          [,5]
## [1,] -1.517981e-05 -1.318157e-05 -3.184073e-02  6.928805e-01  7.203491e-01
## [2,] -9.874317e-01  1.580461e-01  8.929182e-05 -1.468984e-05  1.606032e-07
## [3,] -1.580461e-01 -9.874317e-01  7.061491e-05 -1.875858e-05 -2.347821e-07
## [4,] -1.601339e-05 -1.335967e-05 -3.381205e-02  7.195553e-01 -6.936115e-01
## [5,] -9.841141e-05 -5.480289e-05 -9.989209e-01 -4.644158e-02  5.165489e-04

Penjelasan: Eigen value menunjukkan besarnya variasi data yang dijelaskan oleh masing-masing komponen utama, sedangkan eigen vector menunjukkan arah pembentukan komponen tersebut dari variabel-variabel yang ada.