getwd()
## [1] "D:/fiaa folder/UNESA/Semester 4/Analisis Multivariat"
list.files()
## [1] "__MACOSX"                                    
## [2] "ajwa+or+medjool"                             
## [3] "AjwaOrMejdool.csv"                           
## [4] "Anmul - Materi 01 - Introduction.pdf"        
## [5] "Anmul - Materi 02- Review Matrix Algebra.pdf"
## [6] "rsconnect"                                   
## [7] "tugas_anmul.html"                            
## [8] "tugas_anmul.R"                               
## [9] "tugas_anmul.Rmd"
## import data
data <- read.csv2("AjwaOrMejdool.csv")
str(data)
## 'data.frame':    20 obs. of  7 variables:
##  $ Date.Length..cm.       : chr  "3.2" "3.5" "3" "3.1" ...
##  $ Date.Diameter..cm.     : chr  "2" "1.8" "1.7" "2" ...
##  $ Date.Weight..g.        : int  12 11 9 10 9 12 13 12 9 10 ...
##  $ Pit.Length..cm.        : chr  "2.2" "1.9" "2" "1.9" ...
##  $ Calories..Kcal.        : chr  "41.28" "37.84" "30.96" "34.4" ...
##  $ Color                  : chr  "Black" "Black" "Black" "Black" ...
##  $ Class..Ajwa.or.Medjool.: chr  "Ajwa" "Ajwa" "Ajwa" "Ajwa" ...
head(data)
##   Date.Length..cm. Date.Diameter..cm. Date.Weight..g. Pit.Length..cm.
## 1              3.2                  2              12             2.2
## 2              3.5                1.8              11             1.9
## 3                3                1.7               9               2
## 4              3.1                  2              10             1.9
## 5              2.8                1.8               9             1.9
## 6              3.1                1.9              12             2.2
##   Calories..Kcal. Color Class..Ajwa.or.Medjool.
## 1           41.28 Black                    Ajwa
## 2           37.84 Black                    Ajwa
## 3           30.96 Black                    Ajwa
## 4            34.4 Black                    Ajwa
## 5           30.96 Black                    Ajwa
## 6           41.28 Black                    Ajwa
## ubah variabel numerik
data_num <- data
data_num[, 1:5] <- lapply(data_num[, 1:5], as.numeric)

str(data_num)
## 'data.frame':    20 obs. of  7 variables:
##  $ Date.Length..cm.       : num  3.2 3.5 3 3.1 2.8 3.1 3.2 3.1 3.6 3.8 ...
##  $ Date.Diameter..cm.     : num  2 1.8 1.7 2 1.8 1.9 2.2 1.7 2.5 1.8 ...
##  $ Date.Weight..g.        : num  12 11 9 10 9 12 13 12 9 10 ...
##  $ Pit.Length..cm.        : num  2.2 1.9 2 1.9 1.9 2.2 1.9 2.1 2.7 1.9 ...
##  $ Calories..Kcal.        : num  41.3 37.8 31 34.4 31 ...
##  $ Color                  : chr  "Black" "Black" "Black" "Black" ...
##  $ Class..Ajwa.or.Medjool.: chr  "Ajwa" "Ajwa" "Ajwa" "Ajwa" ...
## hanya ambil variabel numerik
data_feature <- data_num[, 1:5]
summary(data_feature)
##  Date.Length..cm. Date.Diameter..cm. Date.Weight..g. Pit.Length..cm.
##  Min.   :2.800    Min.   :1.400      Min.   : 9.00   Min.   :1.900  
##  1st Qu.:3.175    1st Qu.:1.700      1st Qu.:10.75   1st Qu.:1.975  
##  Median :4.000    Median :1.800      Median :13.00   Median :2.200  
##  Mean   :4.005    Mean   :1.875      Mean   :13.15   Mean   :2.280  
##  3rd Qu.:5.000    3rd Qu.:2.000      3rd Qu.:15.25   3rd Qu.:2.625  
##  Max.   :5.200    Max.   :2.500      Max.   :19.00   Max.   :2.900  
##  Calories..Kcal.
##  Min.   :30.96  
##  1st Qu.:36.98  
##  Median :42.76  
##  Mean   :43.05  
##  3rd Qu.:48.19  
##  Max.   :60.04
## 1.Correlation Matrix
cor_matrix <- cor(data_feature)
cor_matrix
##                    Date.Length..cm. Date.Diameter..cm. Date.Weight..g.
## Date.Length..cm.          1.0000000       -0.154486605      0.84000936
## Date.Diameter..cm.       -0.1544866        1.000000000     -0.04474655
## Date.Weight..g.           0.8400094       -0.044746555      1.00000000
## Pit.Length..cm.           0.6055983        0.185245092      0.49147954
## Calories..Kcal.           0.7842460       -0.007508119      0.99259322
##                    Pit.Length..cm. Calories..Kcal.
## Date.Length..cm.         0.6055983     0.784246036
## Date.Diameter..cm.       0.1852451    -0.007508119
## Date.Weight..g.          0.4914795     0.992593220
## Pit.Length..cm.          1.0000000     0.441245734
## Calories..Kcal.          0.4412457     1.000000000

Nilai korelasi berada pada rentang antara -1 sampai 1. Semakin mendekati angka 1 atau -1, hubungan antar variabel tersebut semakin kuat, sedangkan jika mendekati 0, hubungannya semakin lemah

## 2.Variance-Covariance Matrix
cov_matrix <- cov(data_feature)
cov_matrix
##                    Date.Length..cm. Date.Diameter..cm. Date.Weight..g.
## Date.Length..cm.         0.72892105        -0.03776316      2.13605263
## Date.Diameter..cm.      -0.03776316         0.08197368     -0.03815789
## Date.Weight..g.          2.13605263        -0.03815789      8.87105263
## Pit.Length..cm.          0.17957895         0.01842105      0.50842105
## Calories..Kcal.          5.54098947        -0.01778947     24.46547368
##                    Pit.Length..cm. Calories..Kcal.
## Date.Length..cm.        0.17957895      5.54098947
## Date.Diameter..cm.      0.01842105     -0.01778947
## Date.Weight..g.         0.50842105     24.46547368
## Pit.Length..cm.         0.12063158      1.26825263
## Calories..Kcal.         1.26825263     68.48405895

Diagonal matriks ini menunjukkan variasi tiap variabel, sedangkan nilai lainnya menunjukkan hubungan (kovarians). Semakin besar nilai kovariansnya, semakin kuat variabel- variabel tersebut berubah secara bersamaan.

## 3.Eigen Value dan Eigen Vector
eigen_cov <- eigen(cov_matrix)
#eigen values
eigen_cov$values
## [1] 77.72132186  0.38961316  0.10460410  0.04614707  0.02495171
#eigen vector
eigen_cov$vectors
##               [,1]       [,2]        [,3]        [,4]       [,5]
## [1,]  0.0769089737  0.8098925 -0.07134208  0.47587185 -0.3265201
## [2,] -0.0004133983 -0.1240036  0.75061959  0.55474971  0.3368174
## [3,]  0.3360215174  0.4422197 -0.06769810 -0.28240806  0.7792265
## [4,]  0.0177182954  0.2831890  0.65312362 -0.61690177 -0.3351892
## [5,]  0.9385416564 -0.2300934  0.01808437  0.07400433 -0.2457497

Eigen value dan eigen vector diperoleh dari matriks varians-kovarians karena matriks data asli tidak berbentuk persegi. Eigen value mengukur seberapa besar variasi yang ditangkap suatu komponen (semakin besar nilainya, semakin penting), sedangkan eigenvector menentukan arah atau komposisi variabel dalam membentuk komponen tersebut