Dataset yang digunakan adalah Dry Bean Dataset yang diperoleh dari Kaggle. Dataset ini berisi karakteristik morfologi biji kacang kering (dry bean) yang diperoleh melalui sistem computer vision. Tujuan utama dataset ini adalah untuk mengidentifikasi dan membedakan jenis kacang berdasarkan ukuran, bentuk, dan karakteristik geometrinya. Dataset ini sering digunakan untuk analisis klasifikasi, clustering, maupun reduksi dimensi seperti Principal Component Analysis (PCA).
Sumber dataset Kaggle: https://share.google/Tge5cCAcevB6G5HLq
Dataset yang digunakan memiliki 1000 observasi (baris) dan 17 variabel (kolom). Dari 17 variabel tersebut terdapat 16 variabel numerik dan 1 variabel kategorik yaitu Variabel Class menunjukkan jenis kacang yang diamati. Pada data yang digunakan, seluruh observasi termasuk ke dalam kelas SEKER, sehingga variabel kategorik hanya memiliki satu kategori.
Adapun tujuan dari analisis ini adalah:
Instal package yang digunakan
library(readxl)
library(dplyr)
library(psych)
library(car)
library(tidyr)
library(ggplot2)
library(corrplot)
library(caret)
library(MASS)
Import Data yang digunakan
bean <- read_excel("C:/Users/nfald/Documents/statistika/project evd/Dry_Bean_Dataset.xlsx")
str(bean) # Melihat struktur data
## tibble [1,000 × 17] (S3: tbl_df/tbl/data.frame)
## $ Area : num [1:1000] 28395 28734 29380 30008 30140 ...
## $ Perimeter : num [1:1000] 610 638 624 646 620 ...
## $ MajorAxisLength: num [1:1000] 208 201 213 211 202 ...
## $ MinorAxisLength: num [1:1000] 174 183 176 183 190 ...
## $ AspectRation : num [1:1000] 1.2 1.1 1.21 1.15 1.06 ...
## $ Eccentricity : num [1:1000] 0.55 0.412 0.563 0.499 0.334 ...
## $ ConvexArea : num [1:1000] 28715 29172 29690 30724 30417 ...
## $ EquivDiameter : num [1:1000] 190 191 193 195 196 ...
## $ Extent : num [1:1000] 0.764 0.784 0.778 0.783 0.773 ...
## $ Solidity : num [1:1000] 0.989 0.985 0.99 0.977 0.991 ...
## $ roundness : num [1:1000] 0.958 0.887 0.948 0.904 0.985 ...
## $ Compactness : num [1:1000] 0.913 0.954 0.909 0.928 0.971 ...
## $ ShapeFactor1 : num [1:1000] 0.00733 0.00698 0.00724 0.00702 0.0067 ...
## $ ShapeFactor2 : num [1:1000] 0.00315 0.00356 0.00305 0.00321 0.00366 ...
## $ ShapeFactor3 : num [1:1000] 0.834 0.91 0.826 0.862 0.942 ...
## $ ShapeFactor4 : num [1:1000] 0.999 0.998 0.999 0.994 0.999 ...
## $ Class : chr [1:1000] "SEKER" "SEKER" "SEKER" "SEKER" ...
dim(bean) # Ukuran data
## [1] 1000 17
names(bean) # Nama variabel
## [1] "Area" "Perimeter" "MajorAxisLength" "MinorAxisLength"
## [5] "AspectRation" "Eccentricity" "ConvexArea" "EquivDiameter"
## [9] "Extent" "Solidity" "roundness" "Compactness"
## [13] "ShapeFactor1" "ShapeFactor2" "ShapeFactor3" "ShapeFactor4"
## [17] "Class"
Boxplot semua variabel
ggplot(bean_long, aes(x = Variabel, y = Nilai)) +
geom_boxplot(fill = "lightblue", color = "black",
outlier.color = "red",
outlier.shape = 16) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 90, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")
) +
labs(
title = "Boxplot Seluruh Variabel Numerik pada Dataset Dry Bean",
x = "Variabel",
y = "Nilai"
)
Dataset Dry Bean yang digunakan terdiri dari 1000 observasi dan 17 variabel, yang terdiri atas 16 variabel numerik dan 1 variabel kategorik (Class). Variabel numerik meliputi Area, Perimeter, MajorAxisLength, MinorAxisLength, AspectRation, Eccentricity, ConvexArea, EquivDiameter, Extent, Solidity, roundness, Compactness, ShapeFactor1, ShapeFactor2, ShapeFactor3, dan ShapeFactor4.
Variabel-variabel tersebut menggambarkan karakteristik ukuran dan bentuk biji kacang yang diperoleh melalui pengolahan citra digital. Sementara itu, variabel kategorik Class menunjukkan jenis kacang yang diamati. Pada dataset yang digunakan, seluruh observasi termasuk ke dalam kelas SEKER.
Secara umum, data numerik menunjukkan adanya variasi ukuran dan bentuk antar biji kacang. Variasi tersebut penting untuk dianalisis lebih lanjut karena dapat mempengaruhi pembentukan komponen utama pada analisis PCA.
Cek Missing Value dan Duplikat
colSums(is.na(bean)) # cek missing value
## Area Perimeter MajorAxisLength MinorAxisLength AspectRation
## 0 0 0 0 0
## Eccentricity ConvexArea EquivDiameter Extent Solidity
## 0 0 0 0 0
## roundness Compactness ShapeFactor1 ShapeFactor2 ShapeFactor3
## 0 0 0 0 0
## ShapeFactor4 Class
## 0 0
sum(duplicated(bean)) # cek duplikat
## [1] 0
# Ubah class menjadi faktor
bean$Class <- as.factor(bean$Class)
str(bean)
## tibble [1,000 × 17] (S3: tbl_df/tbl/data.frame)
## $ Area : num [1:1000] 28395 28734 29380 30008 30140 ...
## $ Perimeter : num [1:1000] 610 638 624 646 620 ...
## $ MajorAxisLength: num [1:1000] 208 201 213 211 202 ...
## $ MinorAxisLength: num [1:1000] 174 183 176 183 190 ...
## $ AspectRation : num [1:1000] 1.2 1.1 1.21 1.15 1.06 ...
## $ Eccentricity : num [1:1000] 0.55 0.412 0.563 0.499 0.334 ...
## $ ConvexArea : num [1:1000] 28715 29172 29690 30724 30417 ...
## $ EquivDiameter : num [1:1000] 190 191 193 195 196 ...
## $ Extent : num [1:1000] 0.764 0.784 0.778 0.783 0.773 ...
## $ Solidity : num [1:1000] 0.989 0.985 0.99 0.977 0.991 ...
## $ roundness : num [1:1000] 0.958 0.887 0.948 0.904 0.985 ...
## $ Compactness : num [1:1000] 0.913 0.954 0.909 0.928 0.971 ...
## $ ShapeFactor1 : num [1:1000] 0.00733 0.00698 0.00724 0.00702 0.0067 ...
## $ ShapeFactor2 : num [1:1000] 0.00315 0.00356 0.00305 0.00321 0.00366 ...
## $ ShapeFactor3 : num [1:1000] 0.834 0.91 0.826 0.862 0.942 ...
## $ ShapeFactor4 : num [1:1000] 0.999 0.998 0.999 0.994 0.999 ...
## $ Class : Factor w/ 1 level "SEKER": 1 1 1 1 1 1 1 1 1 1 ...
# Memilih Data Numerik
bean_num <- bean %>% dplyr::select(where(is.numeric))
str(bean_num)
## tibble [1,000 × 16] (S3: tbl_df/tbl/data.frame)
## $ Area : num [1:1000] 28395 28734 29380 30008 30140 ...
## $ Perimeter : num [1:1000] 610 638 624 646 620 ...
## $ MajorAxisLength: num [1:1000] 208 201 213 211 202 ...
## $ MinorAxisLength: num [1:1000] 174 183 176 183 190 ...
## $ AspectRation : num [1:1000] 1.2 1.1 1.21 1.15 1.06 ...
## $ Eccentricity : num [1:1000] 0.55 0.412 0.563 0.499 0.334 ...
## $ ConvexArea : num [1:1000] 28715 29172 29690 30724 30417 ...
## $ EquivDiameter : num [1:1000] 190 191 193 195 196 ...
## $ Extent : num [1:1000] 0.764 0.784 0.778 0.783 0.773 ...
## $ Solidity : num [1:1000] 0.989 0.985 0.99 0.977 0.991 ...
## $ roundness : num [1:1000] 0.958 0.887 0.948 0.904 0.985 ...
## $ Compactness : num [1:1000] 0.913 0.954 0.909 0.928 0.971 ...
## $ ShapeFactor1 : num [1:1000] 0.00733 0.00698 0.00724 0.00702 0.0067 ...
## $ ShapeFactor2 : num [1:1000] 0.00315 0.00356 0.00305 0.00321 0.00366 ...
## $ ShapeFactor3 : num [1:1000] 0.834 0.91 0.826 0.862 0.942 ...
## $ ShapeFactor4 : num [1:1000] 0.999 0.998 0.999 0.994 0.999 ...
describe(bean_num)
## vars n mean sd median trimmed mad min
## Area 1 1000 36113.14 2065.70 36363.00 36275.09 2275.05 28395.00
## Perimeter 2 1000 691.37 23.01 692.51 691.96 22.32 610.29
## MajorAxisLength 3 1000 236.72 10.40 237.16 237.05 10.94 200.52
## MinorAxisLength 4 1000 194.49 6.28 194.41 194.49 6.11 171.21
## AspectRation 5 1000 1.22 0.06 1.22 1.22 0.06 1.02
## Eccentricity 6 1000 0.56 0.06 0.57 0.57 0.06 0.22
## ConvexArea 7 1000 36469.60 2074.68 36716.50 36631.71 2268.38 28715.00
## EquivDiameter 8 1000 214.34 6.20 215.17 214.87 6.73 190.14
## Extent 9 1000 0.77 0.02 0.78 0.77 0.02 0.71
## Solidity 10 1000 0.99 0.00 0.99 0.99 0.00 0.92
## roundness 11 1000 0.95 0.03 0.95 0.95 0.02 0.66
## Compactness 12 1000 0.91 0.02 0.91 0.91 0.02 0.82
## ShapeFactor1 13 1000 0.01 0.00 0.01 0.01 0.00 0.01
## ShapeFactor2 14 1000 0.00 0.00 0.00 0.00 0.00 0.00
## ShapeFactor3 15 1000 0.82 0.04 0.82 0.82 0.04 0.67
## ShapeFactor4 16 1000 1.00 0.00 1.00 1.00 0.00 0.95
## max range skew kurtosis se
## Area 39108.00 10713.00 -0.62 -0.17 65.32
## Perimeter 816.64 206.35 0.18 2.01 0.73
## MajorAxisLength 263.89 63.36 -0.28 -0.24 0.33
## MinorAxisLength 214.51 43.30 -0.02 0.32 0.20
## AspectRation 1.46 0.44 0.18 0.30 0.00
## Eccentricity 0.73 0.51 -0.83 1.66 0.00
## ConvexArea 39744.00 11029.00 -0.62 -0.19 65.61
## EquivDiameter 223.15 33.00 -0.69 0.00 0.20
## Extent 0.83 0.11 -0.36 0.06 0.00
## Solidity 0.99 0.07 -11.51 233.59 0.00
## roundness 0.99 0.33 -3.46 22.56 0.00
## Compactness 0.99 0.17 0.04 0.34 0.00
## ShapeFactor1 0.01 0.00 0.30 0.71 0.00
## ShapeFactor2 0.00 0.00 0.34 0.10 0.00
## ShapeFactor3 0.97 0.31 0.13 0.34 0.00
## ShapeFactor4 1.00 0.05 -21.59 586.14 0.00
# Mengubah data menjadi format long
bean_long <- bean_num %>%
pivot_longer(
cols = everything(),
names_to = "Variabel",
values_to = "Nilai"
)
Pemeriksaan missing value dilakukan menggunakan fungsi colSums(is.na(bean)). Hasil menunjukkan bahwa seluruh variabel memiliki nilai missing sebanyak 0, sehingga dapat disimpulkan bahwa tidak terdapat data yang hilang pada dataset. Selain itu, pemeriksaan data duplikat menggunakan fungsi sum(duplicated(bean)) menghasilkan nilai 0, yang berarti tidak terdapat observasi yang terduplikasi. Dengan demikian, dataset memiliki kualitas data yang baik karena seluruh observasi lengkap dan unik sehingga dapat langsung digunakan untuk analisis lanjutan tanpa memerlukan proses imputasi maupun penghapusan data.
# Identifikasi Outlier
outlier_count <- function(x){
Q1 <- quantile(x,0.25)
Q3 <- quantile(x,0.75)
IQR <- Q3-Q1
lower <- Q1-1.5*IQR
upper <- Q3+1.5*IQR
sum(x < lower | x > upper)
}
sapply(bean_num,outlier_count)
## Area Perimeter MajorAxisLength MinorAxisLength AspectRation
## 5 12 2 15 15
## Eccentricity ConvexArea EquivDiameter Extent Solidity
## 25 4 6 8 46
## roundness Compactness ShapeFactor1 ShapeFactor2 ShapeFactor3
## 46 16 15 9 17
## ShapeFactor4
## 54
Deteksi outlier dilakukan menggunakan metode Interquartile Range (IQR). Hasil identifikasi outlier menunjukkan bahwa beberapa variabel memiliki observasi yang berada di luar rentang normal data.
| Variabel | Jumlah Outlier |
|---|---|
| Area | 5 |
| Perimeter | 12 |
| MajorAxisLength | 2 |
| MinorAxisLength | 15 |
| AspectRation | 15 |
| Eccentricity | 25 |
| ConvexArea | 4 |
| EquivDiameter | 6 |
| Extent | 8 |
| Solidity | 46 |
| roundness | 46 |
| Compactness | 16 |
| ShapeFactor1 | 15 |
| ShapeFactor2 | 9 |
| ShapeFactor3 | 17 |
| ShapeFactor4 | 54 |
Berdasarkan hasil tersebut, variabel ShapeFactor4 memiliki jumlah outlier terbanyak yaitu sebanyak 54 observasi, diikuti oleh variabel Solidity dan roundness yang masing-masing memiliki 46 observasi outlier. Sebaliknya, variabel MajorAxisLength memiliki jumlah outlier paling sedikit yaitu hanya 2 observasi.
Keberadaan outlier pada dataset ini menunjukkan bahwa terdapat beberapa biji kacang yang memiliki karakteristik ukuran maupun bentuk yang berbeda secara ekstrem dibandingkan mayoritas data. Namun karena data berasal dari hasil pengukuran objek nyata, outlier tersebut masih dapat dianggap sebagai variasi alami sehingga tidak langsung dihapus dari analisis.
# Matriks korelasi
cor_matrix <- cor(bean_num)
corrplot(
cor_matrix,
method = "circle",
type = "upper",
tl.col = "black",
tl.srt = 45
)
Analisis korelasi dilakukan untuk melihat hubungan antar variabel numerik dalam dataset. Hasil menunjukkan terdapat beberapa pasangan variabel yang memiliki korelasi sangat tinggi (|r| > 0,90), yaitu:
Kelompok ukuran biji kacang
Hal ini menunjukkan bahwa variabel-variabel tersebut sama-sama merepresentasikan ukuran fisik biji kacang sehingga memiliki hubungan yang sangat kuat.
Kelompok bentuk biji kacang
Hubungan tersebut menunjukkan bahwa variabel-variabel tersebut menggambarkan karakteristik bentuk atau tingkat kelonjongan biji kacang.
Kelompok ukuran sumbu
Korelasi yang tinggi menunjukkan bahwa variabel ShapeFactor merupakan turunan matematis dari ukuran sumbu utama maupun sumbu minor biji kacang.
Secara keseluruhan, hasil analisis korelasi menunjukkan bahwa banyak variabel mengandung informasi yang saling tumpang tindih (redundan).
# Identifikasi Mulitkolinearitas
cor_mat <- cor(bean_num)
high_cor <- which(
abs(cor_mat) > 0.9 &
abs(cor_mat) < 1,
arr.ind = TRUE
)
high_cor
## row col
## ConvexArea 7 1
## EquivDiameter 8 1
## ConvexArea 7 2
## ShapeFactor2 14 3
## ShapeFactor1 13 4
## Eccentricity 6 5
## Compactness 12 5
## ShapeFactor2 14 5
## ShapeFactor3 15 5
## AspectRation 5 6
## Compactness 12 6
## ShapeFactor2 14 6
## ShapeFactor3 15 6
## Area 1 7
## Perimeter 2 7
## EquivDiameter 8 7
## Area 1 8
## ConvexArea 7 8
## AspectRation 5 12
## Eccentricity 6 12
## ShapeFactor2 14 12
## ShapeFactor3 15 12
## MinorAxisLength 4 13
## MajorAxisLength 3 14
## AspectRation 5 14
## Eccentricity 6 14
## Compactness 12 14
## ShapeFactor3 15 14
## AspectRation 5 15
## Eccentricity 6 15
## Compactness 12 15
## ShapeFactor2 14 15
## Menggunakan VIF
model <- lm(Area ~ .,data = bean_num)
vif(model)
## Perimeter MajorAxisLength MinorAxisLength AspectRation Eccentricity
## 1.129851e+03 1.671609e+06 1.159574e+06 3.925769e+05 1.742245e+03
## ConvexArea EquivDiameter Extent Solidity roundness
## 2.356073e+05 2.306799e+06 1.107912e+00 7.771522e+02 2.566686e+02
## Compactness ShapeFactor1 ShapeFactor2 ShapeFactor3 ShapeFactor4
## 4.569707e+06 6.903280e+04 2.091008e+05 1.503159e+06 6.561488e+03
Multikolinearitas dianalisis menggunakan nilai Variance Inflation Factor (VIF). Kriteria umum yang digunakan adalah:
Hasil perhitungan menunjukkan nilai VIF sebagai berikut:
| Variabel | VIF |
|---|---|
| Compactness | 4.569.707 |
| EquivDiameter | 2.306.799 |
| MajorAxisLength | 1.671.609 |
| ShapeFactor3 | 1.503.159 |
| MinorAxisLength | 1.159.574 |
| AspectRation | 392.576 |
| ConvexArea | 235.607 |
| ShapeFactor2 | 209.101 |
| ShapeFactor1 | 69.033 |
| ShapeFactor4 | 6.561 |
| Extent | 1.108 |
Berdasarkan hasil tersebut, hampir seluruh variabel memiliki nilai VIF yang jauh melebihi batas 10. Variabel dengan tingkat multikolinearitas tertinggi adalah:
Sementara itu, hanya variabel Extent yang memiliki nilai VIF mendekati 1 sehingga relatif bebas dari masalah multikolinearitas. Nilai VIF yang sangat besar menunjukkan bahwa sebagian besar variabel saling berkorelasi kuat dan mengandung informasi yang hampir sama. Kondisi ini menyebabkan redundansi informasi dalam dataset.
Berdasarkan hasil eksplorasi data, dapat disimpulkan bahwa dataset Dry Bean memiliki kualitas data yang sangat baik karena tidak ditemukan missing value maupun data duplikat. Hasil identifikasi outlier menunjukkan adanya beberapa observasi ekstrem, terutama pada variabel ShapeFactor4, Solidity, dan roundness, namun masih dapat dianggap sebagai variasi alami dari karakteristik biji kacang.
Analisis korelasi menunjukkan adanya hubungan yang sangat kuat antar banyak variabel, terutama pada variabel yang menggambarkan ukuran dan bentuk biji kacang. Temuan ini diperkuat oleh hasil VIF yang menunjukkan adanya multikolinearitas sangat tinggi pada sebagian besar variabel.
Oleh karena itu, penggunaan Principal Component Analysis (PCA) sangat relevan pada dataset ini karena PCA dapat mereduksi jumlah variabel, mengurangi masalah multikolinearitas, serta mempertahankan sebagian besar informasi penting yang terkandung dalam data.
# FEATURE ENGINEERING
bean_fe <- bean
# 1. Rasio Luas terhadap Keliling
bean_fe$Area_Perimeter_Ratio <- bean_fe$Area / bean_fe$Perimeter
# 2. Tingkat Kelonjongan Biji
bean_fe$Elongation_Index <- bean_fe$MajorAxisLength / bean_fe$MinorAxisLength
# 3. Tingkat Kekompakan Bentuk
bean_fe$Shape_Quality <- bean_fe$roundness * bean_fe$Solidity
# Melihat hasil
head(bean_fe[, c("Area_Perimeter_Ratio",
"Elongation_Index",
"Shape_Quality")])
## # A tibble: 6 × 3
## Area_Perimeter_Ratio Elongation_Index Shape_Quality
## <dbl> <dbl> <dbl>
## 1 46.5 1.20 0.947
## 2 45.0 1.10 0.874
## 3 47.1 1.21 0.938
## 4 46.5 1.15 0.883
## 5 48.6 1.06 0.976
## 6 47.7 1.17 0.934
Rumus: Area_Perimeter_Ratio = Perimeter / Area
Alasan Pembuatan karena Variabel Area menunjukkan luas biji kacang sedangkan Perimeter menunjukkan panjang kelilingnya. Rasio ini dibuat untuk mengetahui seberapa besar luas yang dimiliki biji kacang dibandingkan dengan panjang batas luarnya. Dengan kata lain, fitur ini dapat menggambarkan efisiensi bentuk suatu biji.
Interpretasinya jika:
Pada outputnya dihasilkan: Nilai Area_Perimeter_Ratio pada enam observasi pertama berada pada rentang 45,04 hingga 48,60. Nilai ini menunjukkan perbandingan antara luas biji kacang dengan panjang kelilingnya.
Sebagai contoh, observasi kelima memiliki nilai 48,60, yang merupakan nilai tertinggi di antara enam observasi tersebut. Hal ini menunjukkan bahwa biji kacang tersebut memiliki luas yang relatif besar dibandingkan kelilingnya, sehingga bentuknya cenderung lebih efisien dan kompak. Sebaliknya, observasi kedua memiliki nilai 45,04, yang menunjukkan bahwa luas biji relatif lebih kecil dibandingkan panjang kelilingnya. Dengan demikian, bentuk biji tersebut cenderung kurang kompak dibandingkan observasi lainnya. Secara umum, semakin tinggi nilai Area_Perimeter_Ratio maka semakin besar luas yang dimiliki biji kacang untuk setiap satuan kelilingnya.
Rumus: Elongation_Index = Minor Axis Length / Major Axis Length
Alasan Pembuatan karena MajorAxisLength menunjukkan panjang sumbu utama biji sedangkan MinorAxisLength menunjukkan panjang sumbu pendek. Rasio ini digunakan untuk mengukur tingkat kelonjongan (elongation) biji kacang. Meskipun dataset sudah memiliki AspectRation, fitur ini dibuat untuk memberikan ukuran yang lebih mudah dipahami secara geometris.
Interpretasinya Jika:
Pada outputnya dihasilkan: Nilai Elongation_Index pada enam observasi pertama berkisar antara 1,06 hingga 1,21. Fitur ini menunjukkan tingkat kelonjongan bentuk biji kacang yang diperoleh dari perbandingan panjang sumbu utama (MajorAxisLength) terhadap panjang sumbu minor (MinorAxisLength).
Sebagai contoh, observasi ketiga memiliki nilai 1,21, yang merupakan nilai tertinggi pada sampel tersebut. Hal ini menunjukkan bahwa biji kacang tersebut memiliki bentuk yang lebih memanjang atau lonjong dibandingkan observasi lainnya. Sementara itu, observasi kelima memiliki nilai 1,06, yang paling mendekati angka 1. Kondisi ini menunjukkan bahwa bentuk biji kacang tersebut relatif lebih bulat atau mendekati simetris. Secara umum, semakin besar nilai Elongation_Index maka semakin lonjong bentuk biji kacang yang diamati.
Rumus: Shape_Quality = Roundness × Solidity
Alasan Pembuatan karena Roundness mengukur tingkat kebulatan objek sedangkan Solidity mengukur tingkat kepadatan bentuk objek terhadap convex hull-nya. Kedua variabel tersebut sama-sama berkaitan dengan kualitas bentuk geometris suatu biji. Dengan menggabungkannya, diperoleh ukuran komposit yang menggambarkan kualitas bentuk secara keseluruhan.
Interpretasinya jika:
Pada outputnya dihasilkan: Nilai Shape_Quality pada enam observasi pertama berada pada rentang 0,87 hingga 0,98. Fitur ini merupakan hasil perkalian antara roundness dan solidity, sehingga menggambarkan kualitas bentuk geometris biji kacang secara keseluruhan.
Observasi kelima memiliki nilai 0,9759, yang merupakan nilai tertinggi. Hal ini menunjukkan bahwa biji kacang tersebut memiliki bentuk yang sangat bulat dan padat sehingga dapat dikatakan memiliki kualitas bentuk geometris yang baik. Sebaliknya, observasi kedua memiliki nilai 0,8737, yang merupakan nilai terendah pada sampel tersebut. Nilai yang lebih rendah menunjukkan bahwa bentuk biji tersebut relatif kurang bulat atau memiliki ketidakteraturan bentuk yang lebih besar dibandingkan observasi lainnya. Secara umum, semakin mendekati nilai 1 maka bentuk biji kacang semakin bulat, padat, dan teratur.
berdasarkan hasil feature engineering, diperoleh tiga fitur baru yang mampu memberikan informasi tambahan mengenai karakteristik biji kacang. Fitur Area_Perimeter_Ratio menggambarkan efisiensi ukuran biji, Elongation_Index menggambarkan tingkat kelonjongan bentuk biji, sedangkan Shape_Quality menggambarkan kualitas bentuk geometris secara keseluruhan. Ketiga fitur tersebut dapat digunakan sebagai variabel tambahan pada tahap feature selection dan Principal Component Analysis (PCA) untuk membantu mengidentifikasi karakteristik utama yang membedakan bentuk dan ukuran biji kacang.
Feature selection dilakukan untuk memilih variabel yang paling relevan serta mengurangi redundansi informasi akibat korelasi yang sangat tinggi antar variabel.
Tujuannya untuk Mengidentifikasi variabel yang memiliki korelasi sangat tinggi (|r| > 0,90). Jika dua variabel memiliki korelasi sangat tinggi, salah satunya dapat dieliminasi karena mengandung informasi yang hampir sama.
# FILTER METHOD
# KORELASI
cor_mat <- cor(bean_fe %>%
dplyr::select(where(is.numeric)))
round(cor_mat,3)
## Area Perimeter MajorAxisLength MinorAxisLength
## Area 1.000 0.879 0.831 0.662
## Perimeter 0.879 1.000 0.794 0.512
## MajorAxisLength 0.831 0.794 1.000 0.134
## MinorAxisLength 0.662 0.512 0.134 1.000
## AspectRation 0.303 0.370 0.782 -0.511
## Eccentricity 0.297 0.339 0.765 -0.509
## ConvexArea 0.998 0.900 0.832 0.660
## EquivDiameter 1.000 0.879 0.831 0.662
## Extent -0.091 -0.164 -0.192 0.088
## Solidity 0.131 -0.274 0.066 0.095
## roundness -0.021 -0.492 -0.154 0.140
## Compactness -0.304 -0.372 -0.782 0.510
## ShapeFactor1 -0.662 -0.495 -0.135 -0.997
## ShapeFactor2 -0.589 -0.601 -0.936 0.211
## ShapeFactor3 -0.305 -0.369 -0.782 0.510
## ShapeFactor4 -0.042 -0.274 -0.130 0.039
## Area_Perimeter_Ratio 0.886 0.559 0.674 0.656
## Elongation_Index 0.303 0.370 0.782 -0.511
## Shape_Quality -0.006 -0.479 -0.134 0.139
## AspectRation Eccentricity ConvexArea EquivDiameter Extent
## Area 0.303 0.297 0.998 1.000 -0.091
## Perimeter 0.370 0.339 0.900 0.879 -0.164
## MajorAxisLength 0.782 0.765 0.832 0.831 -0.192
## MinorAxisLength -0.511 -0.509 0.660 0.662 0.088
## AspectRation 1.000 0.977 0.306 0.304 -0.222
## Eccentricity 0.977 1.000 0.297 0.297 -0.210
## ConvexArea 0.306 0.297 1.000 0.998 -0.102
## EquivDiameter 0.304 0.297 0.998 1.000 -0.090
## Extent -0.222 -0.210 -0.102 -0.090 1.000
## Solidity -0.011 0.034 0.073 0.131 0.172
## roundness -0.230 -0.177 -0.067 -0.020 0.182
## Compactness -0.998 -0.986 -0.308 -0.305 0.225
## ShapeFactor1 0.511 0.502 -0.657 -0.663 -0.098
## ShapeFactor2 -0.943 -0.939 -0.591 -0.590 0.217
## ShapeFactor3 -0.997 -0.989 -0.308 -0.305 0.224
## ShapeFactor4 -0.144 -0.110 -0.087 -0.042 0.185
## Area_Perimeter_Ratio 0.167 0.185 0.863 0.887 0.003
## Elongation_Index 1.000 0.977 0.306 0.304 -0.222
## Shape_Quality -0.212 -0.159 -0.054 -0.005 0.184
## Solidity roundness Compactness ShapeFactor1 ShapeFactor2
## Area 0.131 -0.021 -0.304 -0.662 -0.589
## Perimeter -0.274 -0.492 -0.372 -0.495 -0.601
## MajorAxisLength 0.066 -0.154 -0.782 -0.135 -0.936
## MinorAxisLength 0.095 0.140 0.510 -0.997 0.211
## AspectRation -0.011 -0.230 -0.998 0.511 -0.943
## Eccentricity 0.034 -0.177 -0.986 0.502 -0.939
## ConvexArea 0.073 -0.067 -0.308 -0.657 -0.591
## EquivDiameter 0.131 -0.020 -0.305 -0.663 -0.590
## Extent 0.172 0.182 0.225 -0.098 0.217
## Solidity 1.000 0.795 0.023 -0.149 -0.033
## roundness 0.795 1.000 0.230 -0.174 0.191
## Compactness 0.023 0.230 1.000 -0.510 0.947
## ShapeFactor1 -0.149 -0.174 -0.510 1.000 -0.210
## ShapeFactor2 -0.033 0.191 0.947 -0.210 1.000
## ShapeFactor3 0.017 0.224 1.000 -0.509 0.948
## ShapeFactor4 0.749 0.451 0.167 -0.105 0.148
## Area_Perimeter_Ratio 0.487 0.444 -0.168 -0.673 -0.441
## Elongation_Index -0.011 -0.230 -0.998 0.511 -0.943
## Shape_Quality 0.823 0.999 0.213 -0.174 0.171
## ShapeFactor3 ShapeFactor4 Area_Perimeter_Ratio
## Area -0.305 -0.042 0.886
## Perimeter -0.369 -0.274 0.559
## MajorAxisLength -0.782 -0.130 0.674
## MinorAxisLength 0.510 0.039 0.656
## AspectRation -0.997 -0.144 0.167
## Eccentricity -0.989 -0.110 0.185
## ConvexArea -0.308 -0.087 0.863
## EquivDiameter -0.305 -0.042 0.887
## Extent 0.224 0.185 0.003
## Solidity 0.017 0.749 0.487
## roundness 0.224 0.451 0.444
## Compactness 1.000 0.167 -0.168
## ShapeFactor1 -0.509 -0.105 -0.673
## ShapeFactor2 0.948 0.148 -0.441
## ShapeFactor3 1.000 0.161 -0.170
## ShapeFactor4 0.161 1.000 0.176
## Area_Perimeter_Ratio -0.170 0.176 1.000
## Elongation_Index -0.997 -0.144 0.167
## Shape_Quality 0.207 0.476 0.457
## Elongation_Index Shape_Quality
## Area 0.303 -0.006
## Perimeter 0.370 -0.479
## MajorAxisLength 0.782 -0.134
## MinorAxisLength -0.511 0.139
## AspectRation 1.000 -0.212
## Eccentricity 0.977 -0.159
## ConvexArea 0.306 -0.054
## EquivDiameter 0.304 -0.005
## Extent -0.222 0.184
## Solidity -0.011 0.823
## roundness -0.230 0.999
## Compactness -0.998 0.213
## ShapeFactor1 0.511 -0.174
## ShapeFactor2 -0.943 0.171
## ShapeFactor3 -0.997 0.207
## ShapeFactor4 -0.144 0.476
## Area_Perimeter_Ratio 0.167 0.457
## Elongation_Index 1.000 -0.212
## Shape_Quality -0.212 1.000
# Menampilkan pasangan korelasi > 0.90
high_cor <- which(
abs(cor_mat) > 0.90 &
abs(cor_mat) < 1,
arr.ind = TRUE
)
high_cor
## row col
## ConvexArea 7 1
## EquivDiameter 8 1
## ConvexArea 7 2
## ShapeFactor2 14 3
## ShapeFactor1 13 4
## Eccentricity 6 5
## Compactness 12 5
## ShapeFactor2 14 5
## ShapeFactor3 15 5
## Elongation_Index 18 5
## AspectRation 5 6
## Compactness 12 6
## ShapeFactor2 14 6
## ShapeFactor3 15 6
## Elongation_Index 18 6
## Area 1 7
## Perimeter 2 7
## EquivDiameter 8 7
## Area 1 8
## ConvexArea 7 8
## Shape_Quality 19 11
## AspectRation 5 12
## Eccentricity 6 12
## ShapeFactor2 14 12
## ShapeFactor3 15 12
## Elongation_Index 18 12
## MinorAxisLength 4 13
## MajorAxisLength 3 14
## AspectRation 5 14
## Eccentricity 6 14
## Compactness 12 14
## ShapeFactor3 15 14
## Elongation_Index 18 14
## AspectRation 5 15
## Eccentricity 6 15
## Compactness 12 15
## ShapeFactor2 14 15
## Elongation_Index 18 15
## AspectRation 5 18
## Eccentricity 6 18
## Compactness 12 18
## ShapeFactor2 14 18
## ShapeFactor3 15 18
## roundness 11 19
# Menghapus variabel yang redundan
highCorrelation <- findCorrelation(
cor_mat,
cutoff = 0.90
)
names(bean_fe)[highCorrelation]
## [1] "MajorAxisLength" "ShapeFactor2" "Perimeter" "Compactness"
## [5] "ShapeFactor3" "AspectRation" "Eccentricity" "ConvexArea"
## [9] "Area" "ShapeFactor1" "roundness"
# Menampilkan variabel terpilih
selected_filter <- bean_fe[,-highCorrelation]
names(selected_filter)
## [1] "MinorAxisLength" "EquivDiameter" "Extent"
## [4] "Solidity" "ShapeFactor4" "Class"
## [7] "Area_Perimeter_Ratio" "Elongation_Index" "Shape_Quality"
Feature Selection dilakukan menggunakan Filter Method dengan pendekatan Correlation Matrix. Pada metode ini, variabel yang memiliki korelasi sangat tinggi (|r| > 0,90) dianggap mengandung informasi yang redundan sehingga sebagian variabel dapat dieliminasi untuk mengurangi multikolinearitas dan menyederhanakan model.
Berdasarkan matriks korelasi, ditemukan beberapa pasangan variabel yang memiliki korelasi sangat tinggi, di antaranya:
| Variabel | Korelasi |
|---|---|
| Area – EquivDiameter | 1,000 |
| Area – ConvexArea | 0,998 |
| AspectRation – Elongation_Index | 1,000 |
| AspectRation – Compactness | -0,998 |
| AspectRation – ShapeFactor3 | -0,997 |
| Eccentricity – AspectRation | 0,977 |
| Shape_Quality – roundness | 0,999 |
| MajorAxisLength – ShapeFactor2 | -0,936 |
| Compactness – ShapeFactor3 | 1,000 |
Nilai korelasi yang sangat tinggi menunjukkan bahwa variabel-variabel tersebut menyimpan informasi yang hampir sama sehingga tidak semuanya perlu dipertahankan dalam analisis lanjutan.
Berdasarkan fungsi findCorrelation() dengan batas korelasi 0,90, diperoleh 11 variabel yang dieliminasi:
Alasan eliminasi berdasarkan 3 faktor, diantaranya:
Kelompok Ukuran Biji
Seperti Area, ConvexArea, Perimeter, dan MajorAxisLength dihapus karena memiliki hubungan yang sangat kuat dengan EquivDiameter.
Area – EquivDiameter = 1,000
Area – ConvexArea = 0,998
ConvexArea – EquivDiameter = 0,998
Karena EquivDiameter sudah mampu mewakili ukuran keseluruhan biji, maka variabel ukuran lainnya dianggap redundan.
Kelompok Bentuk Geometris
Seperti AspectRation, Eccentricity, Compactness, ShapeFactor2, dan ShapeFactor3 dieliminasi karena saling berkorelasi sangat tinggi.
AspectRation – Elongation_Index = 1,000
Compactness – ShapeFactor3 = 1,000
AspectRation – Compactness = -0,998
Karena telah dibuat fitur baru Elongation_Index, fitur tersebut dipilih sebagai representasi tingkat kelonjongan biji sehingga variabel lama tidak lagi diperlukan.
Kelompok Kebulatan Bentuk
roundness dieliminasi karena hampir identik dengan fitur baru Shape_Quality. dengan nilai korelasi r=0.999.
Karena Shape_Quality menggabungkan informasi roundness dan solidity, maka fitur baru ini dianggap lebih informatif dibandingkan roundness saja.
Variabel yang terpilih
Setelah proses seleksi, diperoleh 9 variabel yang dipertahankan:
| Variabel Terpilih | Keterangan |
|---|---|
| MinorAxisLength | Panjang sumbu minor biji |
| EquivDiameter | Diameter ekuivalen biji |
| Extent | Rasio luas objek terhadap bounding box |
| Solidity | Tingkat kepadatan objek |
| ShapeFactor4 | Faktor bentuk ke-4 |
| Class | Label kelas biji |
| Area_Perimeter_Ratio | Fitur baru efisiensi bentuk |
| Elongation_Index | Fitur baru tingkat kelonjongan |
| Shape_Quality | Fitur baru kualitas bentuk |
Hasil seleksi menunjukkan bahwa sebagian besar variabel yang dieliminasi merupakan variabel yang sangat berkorelasi dengan variabel lain sehingga mengandung informasi yang berulang. Variabel yang dipertahankan mampu mewakili tiga karakteristik utama biji kacang, yaitu:
Metode stepwise regression melakukan seleksi variabel secara otomatis dengan mempertimbangkan nilai Akaike Information Criterion (AIC).
Variabel yang memberikan kontribusi besar terhadap model dipertahankan, sedangkan variabel yang kontribusinya kecil atau redundan dieliminasi.
Variabel yang dipilih oleh model dianggap memiliki kemampuan terbaik dalam menjelaskan variasi pada variabel Area.
# WRAPPER METHOD
# STEPWISE REGRESSION
full_model <- lm(
Area ~ .,
data = bean_fe %>%
dplyr::select(-Class)
)
step_model <- stepAIC(
full_model,
direction = "both",
trace = FALSE
)
summary(step_model)
##
## Call:
## lm(formula = Area ~ Perimeter + MajorAxisLength + MinorAxisLength +
## AspectRation + Eccentricity + ConvexArea + EquivDiameter +
## Solidity + roundness + Compactness + ShapeFactor1 + ShapeFactor2 +
## ShapeFactor3 + ShapeFactor4 + Area_Perimeter_Ratio + Shape_Quality,
## data = bean_fe %>% dplyr::select(-Class))
##
## Residuals:
## Min 1Q Median 3Q Max
## -16.1045 -0.6252 -0.0774 0.6045 13.7592
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.547e+05 2.819e+03 -54.893 < 2e-16 ***
## Perimeter 4.043e+00 2.933e-01 13.782 < 2e-16 ***
## MajorAxisLength 9.756e+01 5.376e+00 18.148 < 2e-16 ***
## MinorAxisLength 2.305e+01 7.382e+00 3.123 0.00184 **
## AspectRation -4.947e+03 4.961e+02 -9.971 < 2e-16 ***
## Eccentricity -2.915e+02 3.039e+01 -9.593 < 2e-16 ***
## ConvexArea 2.825e-01 1.514e-02 18.663 < 2e-16 ***
## EquivDiameter 1.859e+02 1.202e+01 15.469 < 2e-16 ***
## Solidity 1.703e+04 8.097e+02 21.027 < 2e-16 ***
## roundness 5.466e+03 4.736e+02 11.540 < 2e-16 ***
## Compactness 1.057e+05 4.522e+03 23.376 < 2e-16 ***
## ShapeFactor1 3.491e+06 7.110e+04 49.098 < 2e-16 ***
## ShapeFactor2 6.269e+05 8.742e+04 7.171 1.46e-12 ***
## ShapeFactor3 -4.393e+04 1.818e+03 -24.167 < 2e-16 ***
## ShapeFactor4 1.094e+04 1.893e+03 5.781 9.97e-09 ***
## Area_Perimeter_Ratio 1.152e+02 7.439e+00 15.487 < 2e-16 ***
## Shape_Quality -7.218e+03 5.133e+02 -14.064 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.335 on 983 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: 1
## F-statistic: 1.495e+08 on 16 and 983 DF, p-value: < 2.2e-16
names(coef(step_model)) #Variabel yang terpilih
## [1] "(Intercept)" "Perimeter" "MajorAxisLength"
## [4] "MinorAxisLength" "AspectRation" "Eccentricity"
## [7] "ConvexArea" "EquivDiameter" "Solidity"
## [10] "roundness" "Compactness" "ShapeFactor1"
## [13] "ShapeFactor2" "ShapeFactor3" "ShapeFactor4"
## [16] "Area_Perimeter_Ratio" "Shape_Quality"
formula(step_model)
## Area ~ Perimeter + MajorAxisLength + MinorAxisLength + AspectRation +
## Eccentricity + ConvexArea + EquivDiameter + Solidity + roundness +
## Compactness + ShapeFactor1 + ShapeFactor2 + ShapeFactor3 +
## ShapeFactor4 + Area_Perimeter_Ratio + Shape_Quality
selected_wrapper <- all.vars(formula(step_model))
selected_wrapper
## [1] "Area" "Perimeter" "MajorAxisLength"
## [4] "MinorAxisLength" "AspectRation" "Eccentricity"
## [7] "ConvexArea" "EquivDiameter" "Solidity"
## [10] "roundness" "Compactness" "ShapeFactor1"
## [13] "ShapeFactor2" "ShapeFactor3" "ShapeFactor4"
## [16] "Area_Perimeter_Ratio" "Shape_Quality"
# Membandingkan hasil kedua metode
names(selected_filter) #Filter methode
## [1] "MinorAxisLength" "EquivDiameter" "Extent"
## [4] "Solidity" "ShapeFactor4" "Class"
## [7] "Area_Perimeter_Ratio" "Elongation_Index" "Shape_Quality"
selected_wrapper #Wrapper methode
## [1] "Area" "Perimeter" "MajorAxisLength"
## [4] "MinorAxisLength" "AspectRation" "Eccentricity"
## [7] "ConvexArea" "EquivDiameter" "Solidity"
## [10] "roundness" "Compactness" "ShapeFactor1"
## [13] "ShapeFactor2" "ShapeFactor3" "ShapeFactor4"
## [16] "Area_Perimeter_Ratio" "Shape_Quality"
Metode Wrapper Method menggunakan algoritma Stepwise Regression (AIC) untuk memilih kombinasi variabel yang memberikan model terbaik dalam menjelaskan variasi pada variabel respon (Area). Variabel yang dipertahankan adalah variabel yang dianggap memberikan kontribusi signifikan terhadap model.
Hasil Seleksi Variabel
Berdasarkan output formula(step_model), variabel yang terpilih adalah:
| Variabel Terpilih |
|---|
| Perimeter |
| MajorAxisLength |
| MinorAxisLength |
| AspectRation |
| Eccentricity |
| ConvexArea |
| EquivDiameter |
| Solidity |
| roundness |
| Compactness |
| ShapeFactor1 |
| ShapeFactor2 |
| ShapeFactor3 |
| ShapeFactor4 |
| Area_Perimeter_Ratio |
| Shape_Quality |
Jumlah variabel yang dipilih = 16 variabel.
Variabel yang dieliminasi
Dari seluruh variabel numerik yang tersedia, hanya satu variabel yang tidak masuk ke model akhir yaitu variabel extent
Variabel Extent tidak dipilih oleh algoritma Stepwise karena kontribusinya dalam menjelaskan variasi Area relatif kecil dibandingkan variabel lainnya. Selain itu pada analisis korelasi sebelumnya diperoleh bahwa Extent memiliki korelasi yang sangat rendah terhadap Area: r = −0,091
Nilai tersebut menunjukkan hubungan yang sangat lemah sehingga informasi yang diberikan Extent tidak banyak membantu meningkatkan kualitas model regresi.
Oleh karena itu, Stepwise Regression secara otomatis menghapus variabel tersebut untuk memperoleh model yang lebih efisien.
Signifikansi Variabel yang terpilih
Berdasarkan output summary(step_model), seluruh variabel yang dipilih memiliki nilai p-value<0,05 bahkan sebagian besar memiliki p-value<0,001.
Hal ini menunjukkan bahwa seluruh variabel yang dipertahankan memiliki pengaruh yang signifikan terhadap Area.
Kualitas Model
Diperoleh nilai: R^2 = 1 dan Adjusted R^2 = 1 yang menunjukkan bahwa hampir seluruh variasi pada variabel Area dapat dijelaskan oleh variabel-variabel dalam model.
Namun perlu dicatat bahwa nilai yang sangat sempurna ini terjadi karena terdapat beberapa variabel yang secara matematis sangat berkaitan dengan Area, misalnya: EquivDiameter, ConvexArea, dan Area_Perimeter_Ratio. sehingga kemampuan prediksi model menjadi sangat tinggi.
Perbandingan kedua metode
| Variabel | Filter Method | Wrapper Method |
|---|---|---|
| MinorAxisLength | ✓ | ✓ |
| EquivDiameter | ✓ | ✓ |
| Solidity | ✓ | ✓ |
| ShapeFactor4 | ✓ | ✓ |
| Area_Perimeter_Ratio | ✓ | ✓ |
| Shape_Quality | ✓ | ✓ |
| Elongation_Index | ✓ | ✗ |
| Extent | ✓ | ✗ |
| Perimeter | ✗ | ✓ |
| MajorAxisLength | ✗ | ✓ |
| AspectRation | ✗ | ✓ |
| Eccentricity | ✗ | ✓ |
| ConvexArea | ✗ | ✓ |
| roundness | ✗ | ✓ |
| Compactness | ✗ | ✓ |
| ShapeFactor1 | ✗ | ✓ |
| ShapeFactor2 | ✗ | ✓ |
| ShapeFactor3 | ✗ | ✓ |
Metode Filter Method lebih ketat dalam menghapus variabel yang memiliki korelasi sangat tinggi sehingga hanya menyisakan 9 variabel yang dianggap tidak redundan.
Sebaliknya, Wrapper Method mempertahankan hampir seluruh variabel karena variabel-variabel tersebut masih memberikan kontribusi terhadap model regresi. Hanya variabel Extent yang dieliminasi karena tidak memberikan peningkatan kualitas model yang berarti.
Dengan demikian, Filter Method lebih cocok digunakan sebelum PCA karena berhasil mengurangi multikolinearitas dan redundansi informasi.Sedangkan, Wrapper Method lebih cocok digunakan ketika tujuan analisis adalah membangun model prediksi karena mempertahankan variabel yang masih memiliki kontribusi terhadap respon.
Kesimpulan Akhir
Berdasarkan kedua metode yang digunakan, terdapat enam variabel yang secara konsisten dipilih oleh kedua metode, yaitu:
Keenam variabel tersebut dapat dianggap sebagai variabel paling representatif karena mampu bertahan baik pada pendekatan korelasi maupun pendekatan regresi. Oleh karena itu, variabel-variabel tersebut sangat layak digunakan pada tahap Principal Component Analysis (PCA) sebagai representasi utama karakteristik ukuran dan bentuk biji kacang.
Standarisasi Data
PCA harus diawali dengan standardisasi Z-Score karena sensitif terhadap perbedaan skala variabel.
# Memilih variabel numerik
bean_num <- bean %>% dplyr::select(where(is.numeric))
# Standardisasi
bean_scaled <- scale(bean_num)
# PCA
pca_bean <- prcomp(bean_scaled, center = TRUE, scale. = TRUE)
summary(pca_bean)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 2.6907 2.1746 1.5605 0.94810 0.76575 0.28257 0.16333
## Proportion of Variance 0.4525 0.2955 0.1522 0.05618 0.03665 0.00499 0.00167
## Cumulative Proportion 0.4525 0.7480 0.9002 0.95641 0.99305 0.99804 0.99971
## PC8 PC9 PC10 PC11 PC12 PC13
## Standard deviation 0.04321 0.03771 0.03242 0.01617 0.001655 0.001441
## Proportion of Variance 0.00012 0.00009 0.00007 0.00002 0.000000 0.000000
## Cumulative Proportion 0.99983 0.99992 0.99998 1.00000 1.000000 1.000000
## PC14 PC15 PC16
## Standard deviation 0.0008397 0.0004507 0.0002432
## Proportion of Variance 0.0000000 0.0000000 0.0000000
## Cumulative Proportion 1.0000000 1.0000000 1.0000000
Eigenvalue, Proporsi Variansi, dan Cumulative Variance
| PC | Eigenvalue | Proporsi Variansi (%) | Kumulatif (%) |
|---|---|---|---|
| PC1 | 7.247 | 45.25 | 45.25 |
| PC2 | 4.733 | 29.55 | 74.80 |
| PC3 | 2.438 | 15.22 | 90.02 |
| PC4 | 0.900 | 5.62 | 95.64 |
| PC5 | 0.587 | 3.66 | 99.31 |
Menurut Kaiser Criterion, komponen dengan eigenvalue > 1 dipertahankan. Sehingga komponen yang dipertahankan adalah: - PC1 - PC2 - PC3 Karena ketiganya memiliki eigenvalue > 1.
Loading terbesar pada PC1
| Variabel | Loading |
|---|---|
| MajorAxisLength | 0.365 |
| ShapeFactor2 | -0.361 |
| Compactness | -0.319 |
| ShapeFactor3 | -0.319 |
| AspectRation | 0.318 |
| Eccentricity | 0.313 |
Loading terbesar pada PC2
| Variabel | Loading |
|---|---|
| ShapeFactor1 | 0.459 |
| MinorAxisLength | -0.458 |
| EquivDiameter | -0.309 |
| Area | -0.309 |
| ConvexArea | -0.307 |
fviz_eig(
pca_bean,
addlabels = TRUE,
ylim = c(0,50)
)
Interpretasi:
Terlihat penurunan eigenvalue yang sangat tajam dari PC1 ke PC3, kemudian mulai mendatar pada PC4 dan seterusnya. Hal ini menunjukkan bahwa sebagian besar informasi data telah dirangkum oleh tiga komponen utama pertama.
var_exp <- pca_bean$sdev^2 / sum(pca_bean$sdev^2)
plot(
cumsum(var_exp),
type = "b",
pch = 19,
xlab = "Jumlah Komponen",
ylab = "Cumulative Variance"
)
abline(h = 0.9, col = "red", lty = 2)
Interpretasi:
Tiga komponen pertama sudah menjelaskan:
90.02% variasi data
Sehingga target 70–90% cumulative variance pada materi sudah terpenuhi.
fviz_pca_biplot(
pca_bean,
repel = TRUE,
col.var = "red",
col.ind = "gray"
)
Interpretasi
PC1 (45.25%)
PC1 menjelaskan variasi terbesar dalam data yaitu 45.25%.
Variabel dominan:
PC1 dapat diinterpretasikan sebagai: “Karakteristik bentuk dan proporsi biji kacang”, karena variabel-variabel tersebut menggambarkan panjang, bentuk elips, dan tingkat kepadatan bentuk biji.
PC2 (29.55%)
Variabel dominan:
PC2 dapat diinterpretasikan sebagai: “Ukuran fisik biji kacang”, karena banyak dipengaruhi oleh luas area, diameter ekuivalen, dan panjang sumbu minor.
PC3 (15.22%)
Variabel dominan:
PC3 dapat diinterpretasikan sebagai: “Tingkat kebulatan dan kekompakan bentuk biji”
Berdasarkan loading absolut terbesar:
Variabel-variabel tersebut menjadi penyusun utama principal component.
Reduksi dimensi dapat dikatakan berhasil.
Sebelum PCA, dataset Dry Bean memiliki 16 variabel numerik yang digunakan untuk menggambarkan karakteristik fisik biji kacang. Setelah dilakukan PCA, informasi utama data dapat diringkas menjadi 3 principal components (PC1, PC2, dan PC3) yang mampu menjelaskan sekitar 90,02% total variasi data.
Menurut kriteria cumulative variance, PCA dianggap efektif apabila komponen yang dipertahankan mampu menjelaskan sekitar 70%–90% variasi data. Oleh karena itu, hasil sebesar 90,02% menunjukkan bahwa sebagian besar informasi pada data asli tetap dipertahankan meskipun jumlah dimensinya telah berkurang secara signifikan.
Dengan demikian, PCA berhasil menyederhanakan data dari 16 variabel menjadi 3 komponen utama tanpa kehilangan informasi yang berarti.
Insight
Analisis PCA menunjukkan bahwa karakteristik biji kacang terutama dipengaruhi oleh dimensi geometris dan bentuk fisiknya. Variabel seperti MajorAxisLength, AspectRation, Eccentricity, dan ShapeFactor memiliki kontribusi terbesar dalam menjelaskan variasi antar jenis biji kacang.
Komponen pertama menggambarkan variasi bentuk dan proporsi biji, sedangkan komponen kedua lebih merepresentasikan ukuran fisik biji. Komponen ketiga menjelaskan tingkat kebulatan dan kekompakan bentuk biji.
Kesimpulan
PCA berhasil mereduksi dimensi data dari 16 variabel numerik menjadi 3 principal components. Tiga komponen utama tersebut mampu menjelaskan 90.02% variasi data, sehingga sebagian besar informasi penting tetap dipertahankan.
Variabel yang paling berpengaruh dalam pembentukan principal component adalah:
PCA efektif digunakan pada dataset Dry Bean karena mampu mengurangi kompleksitas data tanpa kehilangan informasi yang signifikan.
Secara substantif, variasi antar biji kacang lebih banyak ditentukan oleh ukuran, bentuk geometris, dan tingkat kekompakan biji, dibandingkan karakteristik lainnya.