Saya menggunakan dataset Ajwa or Medjool Dates. Dataset ini berisi informasi tentang dua jenis kurma, yaitu Ajwa dan Medjool. Dataset terdiri dari 20 observasi dengan 5 variabel numerik dan 2 variabel kategorik. Analisis multivariat dilakukan hanya pada variabel numerik, karena correlation, covariance, dan eigen analysis tidak dapat diterapkan pada data kategorik. Berikut variabel numerik:
Date Length (cm)
Date Diameter (cm)
Date Weight (g)
Pit Length (cm)
Calories (Kcal)
Tujuan analisis ini adalah untuk:
Mengeksplorasi hubungan antar variabel numerik
Memahami struktur variance-covariance data
Melakukan analisis komponen principal (PCA)
Import Data
# Set working directory (sesuaikan dengan lokasi file anda)
setwd("C:/Users/ILMIN/Documents/R/Anmul/data week 1/ajwa+or+medjool/Data")
# Import & head data
data <- read.csv("AjwaOrMejdool.csv", sep = ";", header = TRUE)
head(data)
## Date.Length..cm. Date.Diameter..cm. Date.Weight..g. Pit.Length..cm.
## 1 3.2 2.0 12 2.2
## 2 3.5 1.8 11 1.9
## 3 3.0 1.7 9 2.0
## 4 3.1 2.0 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.40 Black Ajwa
## 5 30.96 Black Ajwa
## 6 41.28 Black Ajwa
Memeriksa Struktur Data & Summary statistik
str(data)
## '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. : int 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" ...
summary(data)
## 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. Color Class..Ajwa.or.Medjool.
## Min. :30.96 Length:20 Length:20
## 1st Qu.:36.98 Class :character Class :character
## Median :42.76 Mode :character Mode :character
## Mean :43.05
## 3rd Qu.:48.19
## Max. :60.04
Memilih Variabel Numerik
data_numeric <- data[, 1:5]
head(data_numeric)
## Date.Length..cm. Date.Diameter..cm. Date.Weight..g. Pit.Length..cm.
## 1 3.2 2.0 12 2.2
## 2 3.5 1.8 11 1.9
## 3 3.0 1.7 9 2.0
## 4 3.1 2.0 10 1.9
## 5 2.8 1.8 9 1.9
## 6 3.1 1.9 12 2.2
## Calories..Kcal.
## 1 41.28
## 2 37.84
## 3 30.96
## 4 34.40
## 5 30.96
## 6 41.28
Interpretasi Eksplorasi Data:
Dataset memiliki 20 observasi dan 7 variabel
Variabel numerik: 5 variabel (Date Length, Date Diameter, Date Weight, Pit Length, Calories)
Variabel kategorikal: 2 variabel (Color, Class)
Rata-rata panjang kurma: 4.005 cm
Rata-rata berat kurma: 13.15 gram
Rata-rata kalori kurma: 43.05 Kcal
Rata-rata diameter kurma: 1.875 cm
Rata-rata panjang biji kurma: 2.280 cm
cor_matrix <- cor(data_numeric, use = "complete.obs")
print(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
library(corrplot)
## corrplot 0.95 loaded
# Visualisasi
corrplot(cor_matrix, method = "color", type = "upper",
tl.col = "black", tl.srt = 45,
addCoef.col = "black", number.cex = 0.7)
title("Correlation Matrix - Dataset Kurma")
Correlation matrix menunjukkan hubungan linear antar variabel dengan nilai berkisar antara -1 hingga 1. Diperoleh temuan utama sebagai berikut:
Date Length dan Date Weight memiliki korelasi sangat kuat positif sebesar 0,84, yang menunjukkan bahwa semakin panjang ukuran kurma, beratnya cenderung meningkat.
Date Weight dan Calories menunjukkan korelasi sangat kuat positif sebesar 0,99, artinya kandungan kalori sangat dipengaruhi oleh berat kurma. Kurma yang lebih berat cenderung memiliki kandungan kalori yang lebih tinggi.
Date Length dan Calories juga memiliki korelasi kuat positif sebesar 0,78, yang mengindikasikan bahwa ukuran panjang kurma berkontribusi terhadap jumlah kalori.
Pit Length memiliki korelasi sedang dengan Date Length (0,61) dan Date Weight (0,49), menunjukkan bahwa ukuran biji juga cenderung membesar seiring ukuran dan berat kurma.
Date Diameter menunjukkan korelasi yang lemah atau hampir tidak ada dengan variabel lain, termasuk dengan Calories (-0,01), sehingga diameter bukan faktor utama yang memengaruhi berat maupun kalori.
cov_matrix <- cov(data_numeric, use = "complete.obs")
print(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
Variance–Covariance Matrix menggambarkan tingkat penyebaran data (varians) serta arah hubungan antar variabel (kovarians):
Calories memiliki varians terbesar (68,48), yang menunjukkan bahwa kandungan kalori memiliki penyebaran data paling besar dibandingkan variabel lainnya.
Date Weight memiliki varians cukup besar (8,87), menandakan adanya perbedaan berat kurma yang cukup signifikan antar sampel.
Date Length memiliki varians sebesar 0,73, yang menunjukkan bahwa panjang kurma memiliki variasi sedang antar sampel.
Pit Length memiliki varians sebesar 0,12, yang menunjukkan bahwa panjang biji kurma relatif homogen antar sampel.
Varians Date Diameter relatif kecil (0,08), menunjukkan bahwa diameter kurma cenderung homogen.
Date Length memiliki kovarians positif dengan Date Weight (2,14), Pit Length (0,18), dan Calories (5,54), yang menunjukkan bahwa peningkatan panjang kurma cenderung diikuti oleh peningkatan berat, ukuran biji, dan kandungan kalori, sementara kovarians negatif dengan Date Diameter (-0,04) menunjukkan hubungan yang sangat lemah dan berlawanan arah.
Date Diameter memiliki kovarians yang sangat kecil dan mendekati nol dengan variabel lain, termasuk Date Weight (-0,04), Pit Length (0,02), dan Calories (-0,02), yang menunjukkan bahwa diameter kurma tidak memiliki hubungan yang signifikan terhadap variasi ukuran, berat, maupun kandungan kalori.
Date Weight memiliki kovarians positif yang kuat dengan Calories (24,47) serta kovarians positif dengan Date Length (2,14) dan Pit Length (0,51), yang menunjukkan bahwa berat kurma meningkat seiring bertambahnya ukuran fisik dan secara langsung memengaruhi kandungan energi.
Pit Length memiliki kovarians positif dengan Date Length (0,18), Date Weight (0,51), dan Calories (1,27), yang menunjukkan bahwa panjang biji cenderung bertambah pada kurma yang lebih besar dan lebih berat.
Calories memiliki kovarians positif yang sangat kuat dengan Date Weight (24,47) serta kovarians positif dengan Date Length (5,54) dan Pit Length (1,27), yang menunjukkan bahwa kandungan kalori terutama dipengaruhi oleh berat kurma dan didukung oleh ukuran fisiknya.
eigen_cor <- eigen(cor_matrix)
print("EIGENVALUES (dari Correlation Matrix):")
## [1] "EIGENVALUES (dari Correlation Matrix):"
print(eigen_cor$values)
## [1] 3.118615764 1.101132880 0.609692142 0.168194037 0.002365176
print("EIGENVECTORS (dari Correlation Matrix):")
## [1] "EIGENVECTORS (dari Correlation Matrix):"
print(eigen_cor$vectors)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.52346445 0.12059066 -0.1597299 0.8227842 0.09463318
## [2,] -0.01791544 -0.91337498 0.3451835 0.2143541 -0.01805303
## [3,] 0.54523965 0.07143079 0.3095586 -0.2114152 -0.74638358
## [4,] 0.38481409 -0.37873637 -0.7691170 -0.3412161 0.02252717
## [5,] 0.52942974 0.05157955 0.4098381 -0.3405198 0.65812060
eigen_cov <- eigen(cov_matrix)
print("EIGENVALUES (dari Covariance Matrix):")
## [1] "EIGENVALUES (dari Covariance Matrix):"
print(eigen_cov$values)
## [1] 77.72132186 0.38961316 0.10460410 0.04614707 0.02495171
print("EIGENVECTORS (dari Covariance Matrix):")
## [1] "EIGENVECTORS (dari Covariance Matrix):"
print(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
# Scree plot dari correlation matrix
plot(eigen_cor$values, type = "b",
main = "Scree Plot - Eigenvalues from Correlation Matrix",
xlab = "Component Number",
ylab = "Eigenvalue",
col = "blue", pch = 16, lwd = 2)
abline(h = 1, col = "red", lty = 2, lwd = 2)
legend("topright", legend = "Kaiser Criterion (eigenvalue = 1)",
col = "red", lty = 2, lwd = 2)
# Scree plot dari covariance matrix
plot(eigen_cov$values, type = "b",
main = "Scree Plot - Eigenvalues from Covariance Matrix",
xlab = "Component Number",
ylab = "Eigenvalue",
col = "red", pch = 16, lwd = 2)
# Hitung proporsi variance
prop_var <- eigen_cor$values / sum(eigen_cor$values) * 100
cumsum_var <- cumsum(prop_var)
# Membuat tabel
variance_table <- data.frame(
Component = paste0("PC", 1:5),
Eigenvalue = round(eigen_cor$values, 3),
Proportion = round(prop_var, 2),
Cumulative = round(cumsum_var, 2)
)
print(variance_table)
## Component Eigenvalue Proportion Cumulative
## 1 PC1 3.119 62.37 62.37
## 2 PC2 1.101 22.02 84.39
## 3 PC3 0.610 12.19 96.59
## 4 PC4 0.168 3.36 99.95
## 5 PC5 0.002 0.05 100.00
Nilai eigen yang diperoleh adalah:
Interpretasi Eigenvalue:
PC1 menjelaskan 62.4% dari total variasi, yang artinya PC1 Sangat dominan dalam menjelaskan variasi data
PC2 menjelaskan 22.0% dari total variasi, yang artinya PC2 memiliki peran cukup penting
PC1 + PC2 menjelaskan 84.4% total variasi, artinya 2 komponen ini sudah menjelaskan sebagian besar variasi dalam data
Berdasarkan scree plot, terlihat penurunan eigenvalue yang sangat tajam dari PC1 ke PC2, kemudian penurunan menjadi lebih landai pada komponen berikutnya. Hal ini menunjukkan bahwa elbow terjadi setelah PC1, sehingga PC1 merupakan komponen utama yang paling dominan dalam menjelaskan variasi data.
Berdasarkan Kaiser Criterion (eigenvalue > 1) cukup PC1 dan PC2 yang perlu dipertahankan untuk merepresentasikan data
Eigenvector (PC1):`
Date.Length: 0.523
Date.Diameter: -0.018
Date.Weight: 0.545 (paling dominan)
Pit.Length: 0.385
Calories: 0.529
Interpretasi Eigenvector(PC1):
PC1 adalah kombinasi linear dari semua variabel
Date.Weight (0.545), Calories (0.529), dan Date.Length (0.523) memiliki loading tertinggi
PC1 dapat digambarkan kurma yang besar, berat, dan tinggi kalori
Date Diameter hampir tidak berkontribusi (-0.018)
Nilai eigen yang diperoleh adalah:
PC1: 77.72 (99.5% variance explained!)
PC2: 0.389 (0.5%)
PC3: 0.105
PC4: 0.046
PC5: 0.025
Interpretasi Eigenvalue:
PC1 mendominasi hampir seluruh variance (99.5%), ini terjadi karena variabel Calories memiliki variance yang sangat besar dibanding variabel lain
Distribusi yang tidak seimbang ini menunjukkan mengapa PCA biasanya menggunakan correlation matrix bukan covariance matrix, covariance matrix lebih sensitif terhadap perbedaan skala/unit antar variabel
Eigenvector (PC1): - Date.Length: 0.077
Date.Diameter: 0.000
Date.Weight: 0.336
Pit.Length: 0.018
Calories: 0.939 (paling dominan)
Interpretasi Eigenvector(PC1):
PC1 dari covariance matrix hampir sepenuhnya merepresentasikan variabel Calories (0.939), dengan kontribusi kecil dari Date.Weight (0.336), sementara variabel lain hampir tidak berkontribusi karena variance mereka jauh lebih kecil.
Dari analisis multivariat terhadap dataset kurma Ajwa dan Medjool, dapat disimpulkan:
Variabel Date Weight, Date Length, dan Calories merupakan variabel utama yang saling berkaitan kuat.
Diameter kurma bukan faktor dominan dalam membedakan karakteristik kurma Ajwa dan Medjool
Kalori memiliki variabilitas tertinggi antar sampel, sedangkan diameter kurma paling konsisten/homogen
Dua komponen utama dari correlation matrix (PC1 dan PC2) sudah cukup untuk mewakili 84.4% variasi data
PC1 dapat merepresentasikan “ukuran/size” kurma secara keseluruhan Analisis berbasis correlation matrix lebih stabil dan representatif dibandingkan covariance matrix untuk dataset ini.