Dalam analisis data, sering kali kita menemukan banyak variabel yang saling berhubungan sehingga cukup sulit untuk melihat pola utamanya secara langsung. Kondisi ini juga terjadi pada data Concrete Compressive Strength yang terdiri dari beberapa variabel seperti cement, water, aggregate, superplasticizer, dan age yang bersama-sama mempengaruhi kuat tekan beton. Untuk menyederhanakan data tanpa menghilangkan informasi penting di dalamnya, digunakan metode Principal Component Analysis (PCA). Metode ini membantu mereduksi jumlah variabel menjadi beberapa komponen utama yang mampu mewakili sebagian besar variasi dalam data. Dengan menggunakan PCA, diharapkan pola utama dalam data dapat terlihat dengan lebih jelas dan mudah untuk dianalisis.
library(readxl)
library(reshape2)
library(ggplot2)
Kode diatas digunakan untuk mengaktifkan beberapa library yaitu readxl, artinya mengimpor atau membaca data dari file excel, xls, ataupun xlsx. Adapun library reshape2 dan ggplot 2 untuk membuat sebuah diagram dalam mengimplementasikan hasil data yang sesuai.
data <- read_excel("Concrete_Data.xls")
data <- as.data.frame(data)
Kode diatas digunakan untuk membaca dataset Concrete_Data.xls dari file Excel ke dalam R menggunakan fungsi read_excel(). Data yang sudah dibaca dikonversi menjadi bentuk data frame dengan fungsi as.data.frame(), sehingga data lebih mudah diolah dan dianalisis menggunakan fungsi-fungsi statistik pada pemprograman R. # 4. Mengecek Missing Value
colSums(is.na(data))
## Cement (component 1)(kg in a m^3 mixture)
## 0
## Blast Furnace Slag (component 2)(kg in a m^3 mixture)
## 0
## Fly Ash (component 3)(kg in a m^3 mixture)
## 0
## Water (component 4)(kg in a m^3 mixture)
## 0
## Superplasticizer (component 5)(kg in a m^3 mixture)
## 0
## Coarse Aggregate (component 6)(kg in a m^3 mixture)
## 0
## Fine Aggregate (component 7)(kg in a m^3 mixture)
## 0
## Age (day)
## 0
## Concrete compressive strength(MPa, megapascals)
## 0
kode diatas digunakan untuk mengecek apakah terdapat missing value atau tidak. Setelah dilakukan pengecekan, ternyata tidak memiliki missing value apapun pada semua variabel atau dinyatakan data bersih dari missing value.
head(data)
## Cement (component 1)(kg in a m^3 mixture)
## 1 540.0
## 2 540.0
## 3 332.5
## 4 332.5
## 5 198.6
## 6 266.0
## Blast Furnace Slag (component 2)(kg in a m^3 mixture)
## 1 0.0
## 2 0.0
## 3 142.5
## 4 142.5
## 5 132.4
## 6 114.0
## Fly Ash (component 3)(kg in a m^3 mixture)
## 1 0
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
## Water (component 4)(kg in a m^3 mixture)
## 1 162
## 2 162
## 3 228
## 4 228
## 5 192
## 6 228
## Superplasticizer (component 5)(kg in a m^3 mixture)
## 1 2.5
## 2 2.5
## 3 0.0
## 4 0.0
## 5 0.0
## 6 0.0
## Coarse Aggregate (component 6)(kg in a m^3 mixture)
## 1 1040.0
## 2 1055.0
## 3 932.0
## 4 932.0
## 5 978.4
## 6 932.0
## Fine Aggregate (component 7)(kg in a m^3 mixture) Age (day)
## 1 676.0 28
## 2 676.0 28
## 3 594.0 270
## 4 594.0 365
## 5 825.5 360
## 6 670.0 90
## Concrete compressive strength(MPa, megapascals)
## 1 79.98611
## 2 61.88737
## 3 40.26954
## 4 41.05278
## 5 44.29608
## 6 47.02985
str(data)
## 'data.frame': 1030 obs. of 9 variables:
## $ Cement (component 1)(kg in a m^3 mixture) : num 540 540 332 332 199 ...
## $ Blast Furnace Slag (component 2)(kg in a m^3 mixture): num 0 0 142 142 132 ...
## $ Fly Ash (component 3)(kg in a m^3 mixture) : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Water (component 4)(kg in a m^3 mixture) : num 162 162 228 228 192 228 228 228 228 228 ...
## $ Superplasticizer (component 5)(kg in a m^3 mixture) : num 2.5 2.5 0 0 0 0 0 0 0 0 ...
## $ Coarse Aggregate (component 6)(kg in a m^3 mixture) : num 1040 1055 932 932 978 ...
## $ Fine Aggregate (component 7)(kg in a m^3 mixture) : num 676 676 594 594 826 ...
## $ Age (day) : num 28 28 270 365 360 90 365 28 28 28 ...
## $ Concrete compressive strength(MPa, megapascals) : num 80 61.9 40.3 41.1 44.3 ...
kode diatas digunakan untuk menampilkan isi dataset concrete_data yang dapat memberikan gambaran awal mengenai niai pada data dan melihat struktur data sehingga membantu memahami karateristik data.
summary(data)
## Cement (component 1)(kg in a m^3 mixture)
## Min. :102.0
## 1st Qu.:192.4
## Median :272.9
## Mean :281.2
## 3rd Qu.:350.0
## Max. :540.0
## Blast Furnace Slag (component 2)(kg in a m^3 mixture)
## Min. : 0.0
## 1st Qu.: 0.0
## Median : 22.0
## Mean : 73.9
## 3rd Qu.:142.9
## Max. :359.4
## Fly Ash (component 3)(kg in a m^3 mixture)
## Min. : 0.00
## 1st Qu.: 0.00
## Median : 0.00
## Mean : 54.19
## 3rd Qu.:118.27
## Max. :200.10
## Water (component 4)(kg in a m^3 mixture)
## Min. :121.8
## 1st Qu.:164.9
## Median :185.0
## Mean :181.6
## 3rd Qu.:192.0
## Max. :247.0
## Superplasticizer (component 5)(kg in a m^3 mixture)
## Min. : 0.000
## 1st Qu.: 0.000
## Median : 6.350
## Mean : 6.203
## 3rd Qu.:10.160
## Max. :32.200
## Coarse Aggregate (component 6)(kg in a m^3 mixture)
## Min. : 801.0
## 1st Qu.: 932.0
## Median : 968.0
## Mean : 972.9
## 3rd Qu.:1029.4
## Max. :1145.0
## Fine Aggregate (component 7)(kg in a m^3 mixture) Age (day)
## Min. :594.0 Min. : 1.00
## 1st Qu.:731.0 1st Qu.: 7.00
## Median :779.5 Median : 28.00
## Mean :773.6 Mean : 45.66
## 3rd Qu.:824.0 3rd Qu.: 56.00
## Max. :992.6 Max. :365.00
## Concrete compressive strength(MPa, megapascals)
## Min. : 2.332
## 1st Qu.:23.707
## Median :34.443
## Mean :35.818
## 3rd Qu.:46.136
## Max. :82.599
kode diatas digunakan sebagai fungsi dasar untuk menampilkan ringkasan statistik deskriptif dari suatu dataset, vektor, atau objek model secara cepat. Fungsi ini memberikan gambaran umum data berupa nilai minimum, kuartil ke-1, median, mean (rata-rata), kuartil ke-3, dan maksimum untuk variabel numerik.
par(mfrow = c(2, 4), mar = c(4, 4, 2, 1))
for (i in 1:ncol(data)) {
hist(data[, i],
col = "skyblue",
border = "white",
main = colnames(data)[i],
xlab = "",
ylab = "")
}
par(mfrow = c(1, 1))
kode diatas digunakan untuk menampilkan histogram pada setiap variabel, dimana memiliki tujuan untuk memberikan gambaran mengenai penyebaran data, bentuk distribusi dan kemungkinan adanya outlier pada setiap variabel.
X <- data[, -which(colnames(data) ==
"Concrete compressive strength(MPa, megapascals)")]
kode diatas digunakan untuk membuat dataset baru berisi fitur dan kolom serta mengecualikan fitur target untuk dilakukan tahap scaled.
data_scaled <- scale(X)
head(data_scaled)
## Cement (component 1)(kg in a m^3 mixture)
## [1,] 2.4767147
## [2,] 2.4767147
## [3,] 0.4912044
## [4,] 0.4912044
## [5,] -0.7900477
## [6,] -0.1451157
## Blast Furnace Slag (component 2)(kg in a m^3 mixture)
## [1,] -0.8564702
## [2,] -0.8564702
## [3,] 0.7951464
## [4,] 0.7951464
## [5,] 0.6780844
## [6,] 0.4648230
## Fly Ash (component 3)(kg in a m^3 mixture)
## [1,] -0.8467207
## [2,] -0.8467207
## [3,] -0.8467207
## [4,] -0.8467207
## [5,] -0.8467207
## [6,] -0.8467207
## Water (component 4)(kg in a m^3 mixture)
## [1,] -0.9162182
## [2,] -0.9162182
## [3,] 2.1743108
## [4,] 2.1743108
## [5,] 0.4885677
## [6,] 2.1743108
## Superplasticizer (component 5)(kg in a m^3 mixture)
## [1,] -0.6199241
## [2,] -0.6199241
## [3,] -1.0384398
## [4,] -1.0384398
## [5,] -1.0384398
## [6,] -1.0384398
## Coarse Aggregate (component 6)(kg in a m^3 mixture)
## [1,] 0.86274101
## [2,] 1.05565758
## [3,] -0.52625830
## [4,] -0.52625830
## [5,] 0.07049696
## [6,] -0.52625830
## Fine Aggregate (component 7)(kg in a m^3 mixture) Age (day)
## [1,] -1.2170672 -0.2795973
## [2,] -1.2170672 -0.2795973
## [3,] -2.2398245 3.5513405
## [4,] -2.2398245 5.0552210
## [5,] 0.6475939 4.9760694
## [6,] -1.2919031 0.7018826
kode diatas digunakan untuk melakukan standarisasi karena variabel memiliki satuan yang berbeda.Proses ini bertujuan agar tidak ada variabel yang mendominasi pembentukan komponen utama.
dim(data_scaled)
## [1] 1030 8
kode diatas digunakan untuk melihat kembali jumlah dan kolom data yang digunakan.
par(mfrow = c(2, 4), mar = c(4, 4, 2, 1))
for (i in 1:ncol(data_scaled)) {
hist(data_scaled[, i],
col = "lightgreen",
border = "white",
main = colnames(data_scaled)[i],
xlab = "",
ylab = "Frekuensi")
}
par(mfrow = c(1, 1))
kode ini digunakan untuk menampilkan histogram setiap variabel setelah dilakukan standarisasi, dimana memiliki tujuan untuk melihat adanya perubahan distribusi data setelah dilakukan distandarisasi dan memastikan setiap variabel memiliki skala yang sebanding sebelum dilakukan analisis PCA.
cor_matrix <- cor(data_scaled)
cor_df <- as.data.frame(round(cor_matrix, 3))
cor_df
## Cement (component 1)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) 1.000
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.275
## Fly Ash (component 3)(kg in a m^3 mixture) -0.397
## Water (component 4)(kg in a m^3 mixture) -0.082
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.093
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.109
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.223
## Age (day) 0.082
## Blast Furnace Slag (component 2)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.275
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) 1.000
## Fly Ash (component 3)(kg in a m^3 mixture) -0.324
## Water (component 4)(kg in a m^3 mixture) 0.107
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.043
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.284
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.282
## Age (day) -0.044
## Fly Ash (component 3)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.397
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.324
## Fly Ash (component 3)(kg in a m^3 mixture) 1.000
## Water (component 4)(kg in a m^3 mixture) -0.257
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.377
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.010
## Fine Aggregate (component 7)(kg in a m^3 mixture) 0.079
## Age (day) -0.154
## Water (component 4)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.082
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) 0.107
## Fly Ash (component 3)(kg in a m^3 mixture) -0.257
## Water (component 4)(kg in a m^3 mixture) 1.000
## Superplasticizer (component 5)(kg in a m^3 mixture) -0.657
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.182
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.451
## Age (day) 0.278
## Superplasticizer (component 5)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) 0.093
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) 0.043
## Fly Ash (component 3)(kg in a m^3 mixture) 0.377
## Water (component 4)(kg in a m^3 mixture) -0.657
## Superplasticizer (component 5)(kg in a m^3 mixture) 1.000
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.266
## Fine Aggregate (component 7)(kg in a m^3 mixture) 0.223
## Age (day) -0.193
## Coarse Aggregate (component 6)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.109
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.284
## Fly Ash (component 3)(kg in a m^3 mixture) -0.010
## Water (component 4)(kg in a m^3 mixture) -0.182
## Superplasticizer (component 5)(kg in a m^3 mixture) -0.266
## Coarse Aggregate (component 6)(kg in a m^3 mixture) 1.000
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.179
## Age (day) -0.003
## Fine Aggregate (component 7)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.223
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.282
## Fly Ash (component 3)(kg in a m^3 mixture) 0.079
## Water (component 4)(kg in a m^3 mixture) -0.451
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.223
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.179
## Fine Aggregate (component 7)(kg in a m^3 mixture) 1.000
## Age (day) -0.156
## Age (day)
## Cement (component 1)(kg in a m^3 mixture) 0.082
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.044
## Fly Ash (component 3)(kg in a m^3 mixture) -0.154
## Water (component 4)(kg in a m^3 mixture) 0.278
## Superplasticizer (component 5)(kg in a m^3 mixture) -0.193
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.003
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.156
## Age (day) 1.000
Kode ini digunakan untuk melakukan proses mendalam terhadap struktur data dan melihat seberapa kuat hubungan linear antar variabel dalam dataset yang sudah distandarisasi. Pada korelasi ini terdapat rentan mulai dari -1 sampai +1 untuk mengartikan hubungan sebuah variabel satu dengan yang lain. Jika nilai -1 itu artinya korelasi negatif sempurna, dimana kedua variabel berubah arah ke arah yang berlawanan. Jika variabel satu naik, maka yang lain turun dengan proporsi yang sama. Nilai 0, artinya tidak memiliki korelasi linear antara kedua variabel yang dimana satu variabel tidak dapat memberikan koneksi mengenai variabel lainnya. Sebaliknya dengan nilai +1, artinya kedua variabel berubah secara searah dengan proporsi yang sama, dimana jika ada satu variabel yang baik, maka variabel naik juga.Hal ini dilakukan untuk memastikan bahwa dataset memang memiliki keterkaitan antara variabel satu dengan yang lain sehingga mudah untuk dianalisis lebih lanjut.
cov_matrix <- cov(data_scaled)
eigen_result <- eigen(cov_matrix)
cov_matrix <- cov(data_scaled)
cov_df <- as.data.frame(round(cov_matrix, 3))
cov_df
## Cement (component 1)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) 1.000
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.275
## Fly Ash (component 3)(kg in a m^3 mixture) -0.397
## Water (component 4)(kg in a m^3 mixture) -0.082
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.093
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.109
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.223
## Age (day) 0.082
## Blast Furnace Slag (component 2)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.275
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) 1.000
## Fly Ash (component 3)(kg in a m^3 mixture) -0.324
## Water (component 4)(kg in a m^3 mixture) 0.107
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.043
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.284
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.282
## Age (day) -0.044
## Fly Ash (component 3)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.397
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.324
## Fly Ash (component 3)(kg in a m^3 mixture) 1.000
## Water (component 4)(kg in a m^3 mixture) -0.257
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.377
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.010
## Fine Aggregate (component 7)(kg in a m^3 mixture) 0.079
## Age (day) -0.154
## Water (component 4)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.082
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) 0.107
## Fly Ash (component 3)(kg in a m^3 mixture) -0.257
## Water (component 4)(kg in a m^3 mixture) 1.000
## Superplasticizer (component 5)(kg in a m^3 mixture) -0.657
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.182
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.451
## Age (day) 0.278
## Superplasticizer (component 5)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) 0.093
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) 0.043
## Fly Ash (component 3)(kg in a m^3 mixture) 0.377
## Water (component 4)(kg in a m^3 mixture) -0.657
## Superplasticizer (component 5)(kg in a m^3 mixture) 1.000
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.266
## Fine Aggregate (component 7)(kg in a m^3 mixture) 0.223
## Age (day) -0.193
## Coarse Aggregate (component 6)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.109
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.284
## Fly Ash (component 3)(kg in a m^3 mixture) -0.010
## Water (component 4)(kg in a m^3 mixture) -0.182
## Superplasticizer (component 5)(kg in a m^3 mixture) -0.266
## Coarse Aggregate (component 6)(kg in a m^3 mixture) 1.000
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.179
## Age (day) -0.003
## Fine Aggregate (component 7)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.223
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.282
## Fly Ash (component 3)(kg in a m^3 mixture) 0.079
## Water (component 4)(kg in a m^3 mixture) -0.451
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.223
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.179
## Fine Aggregate (component 7)(kg in a m^3 mixture) 1.000
## Age (day) -0.156
## Age (day)
## Cement (component 1)(kg in a m^3 mixture) 0.082
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.044
## Fly Ash (component 3)(kg in a m^3 mixture) -0.154
## Water (component 4)(kg in a m^3 mixture) 0.278
## Superplasticizer (component 5)(kg in a m^3 mixture) -0.193
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.003
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.156
## Age (day) 1.000
kovarian merupakan ukuran statistik yang digunakan untuk mengetahui hubungan linear antara dua variabel, yang dimana kedua variabel ini bergerak bersama atau tidak. Kovarian dipengaruhi oleh satuan dan skala data sehingga besarnya nilai kovarian tidak dapat langsung dibandingkan dengan variabel yang memiliki skala yang berbeda. Meskipun kovarians bergantung pada satuan dan data telah distandarisasi ke dalam skala yang seragam, nilai kovarians yang Anda hasilkan kini menjadi terstandarisasi, sehingga besarnya hubungan antar variabel dapat dibandingkan secara langsung tanpa bias skala.
eigen_value <- eigen_result$values
round(eigen_value, 3)
## [1] 2.280 1.416 1.340 1.014 0.952 0.790 0.178 0.030
prop_var <- eigen_value / sum(eigen_value)
cum_var <- cumsum(prop_var)
kode ini digunakan untuk menampilkan hasil dari eigen value terhadap 8 fitur yang ada pada data yang sudah di scaled. Eigenvalues menunjukkan berapa banyak varian atau informasi yang dijelaskan oleh masing-masing principal component (PC). Pada hasil diatas terdapat PC1 bernilai 2.280, dimana PC pertama menangkap varians paling besar dan terlihat mampu merangkum informasi dengan baik. PC2 bernilai 1.416, PC lumayan dapat merangkum informasi sampai PC8 bernilai 0.030, dimana PC menangkap sisa varians yang tidak terangkut oleh komponen sebelumnya. Jadi jika dilihat bahwa hanya 4 PC saja yang bisa dijadikan komponen utama karena masing-masing mampu menjelaskan informasi lebih banyak daripada satu variabel tunggal.Sedangkan sisanya hampir tidak menangkap informasi yang baru sehingga dapat dibuang atau diabaikan.
pca_table <- data.frame(
PC = paste0("PC", 1:length(eigen_value)),
Eigen_Value = round(eigen_value, 3),
Proporsi_Varians = round(prop_var, 4),
Kumulatif_Varians = round(cum_var, 4)
)
pca_table
## PC Eigen_Value Proporsi_Varians Kumulatif_Varians
## 1 PC1 2.280 0.2850 0.2850
## 2 PC2 1.416 0.1770 0.4620
## 3 PC3 1.340 0.1675 0.6295
## 4 PC4 1.014 0.1268 0.7563
## 5 PC5 0.952 0.1190 0.8753
## 6 PC6 0.790 0.0988 0.9740
## 7 PC7 0.178 0.0222 0.9962
## 8 PC8 0.030 0.0038 1.0000
kode ini digunakan untuk membuat tabel nama PC, eigenvalues, proporsi varian, dan kumulatif varian. Tabel ini memberikan gambaran kuantitatid yang lebih detail sebagai berikut. 1. Proporsi Varians: Pada PC1 ini bernilai 0.2850, artinya hanya komponen ini saja sudah berhasil menangkap sekitar 28,5% informasi dari seluruh variabel aslinya dan PC8 merupakan komponen terakhir yang hampir tidak mendapatkan kontribusi informasi sehingga aman untuk dibuang. 2. Kumulatif Varians: Jumlah total persentase varians yang terkumpul seiring bertambahnya jumlah PC, sehingga dapat digunakan untuk menentukan ambang batas. Mulai dari PC1 jumlahnya hanya 0.2850, tetapi semakin bertambahnya PC akan bertambah juga informasi yang ditangkap. Terlihat hingga PC5 sudah mempertahankan informasi yang cukup tinggi sebesar 0.8753 dan PC8 sudah menangkap sebesar 100% informasi yang ada dari dataset asli. Maka dari 8 fitur tersebut, kita sudah cukup untuk merangkum 75,63% informasi dari total keseluruhan data dengan mengambil 4 PC yang dimana memiliki eigen value > 1 dan sisanya dapat dibuang.
pca <- prcomp(data_scaled)
eigen_value <- pca$sdev^2
plot(eigen_value,
type = "b",
pch = 19,
lwd = 2,
col = "black",
main = "Scree Plot Eigen Value",
xlab = "Principal Component",
ylab = "Eigen Value")
abline(h = 1, lty = 2, col = "red")
grid()
kode diatas digunakan untuk menampilkan scree plot, bagaimana setiap PC dapat mempertahankan informasinya dengan baik. Mulai dari eigen value nya tinggi sebesar 2.280 sampai 0.030.
eigen_vector <- eigen_result$vectors
eigen_vector
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.09827295 -0.11181022 0.814495336 -0.05437612 0.14788131 -0.20312941
## [2,] 0.17725317 0.68562442 -0.173400934 -0.36269994 -0.02121136 0.30495397
## [3,] -0.39464178 -0.14379962 -0.407775045 0.22654071 0.54994390 -0.18309239
## [4,] 0.54705427 0.05292130 -0.213084327 0.29601729 0.07046483 -0.36612798
## [5,] -0.50591697 0.28360405 0.234191279 -0.03741495 0.35441099 0.19324298
## [6,] 0.03805569 -0.63034067 -0.172563917 -0.54574680 -0.03310011 0.31451971
## [7,] -0.40190575 -0.01956876 -0.004845761 0.38554226 -0.70110560 0.09236092
## [8,] 0.29152151 -0.12567848 0.100978731 0.52788520 0.22809163 0.74389043
## [,7] [,8]
## [1,] 0.22208449 -0.44612725
## [2,] 0.22837173 -0.43735666
## [3,] 0.35236521 -0.38191098
## [4,] -0.52417861 -0.38874361
## [5,] -0.66463655 -0.05176469
## [6,] -0.22701428 -0.34935768
## [7,] -0.03908382 -0.43337671
## [8,] 0.06925024 -0.01289534
kode ini digunakan untuk melihat bobot kontribusi yang menunjukkan seberapa besar pengaruh setiap variabel asli dalam membentuk masing-masing Komponen Utama (PC).Setiap kolom 1 sampai 8 mewakili satu PC. Semakin jauh nilai sebuah variabel dari angka 0, semakin kuat peran variabel tersebut dalam mendefinisikan PC tersebut. Untuk arahnya sendiri memiliki 2 tanda yaitu tanda positif (+), artinya variabel bergerak searah dengan komponen utamanya dan tanda negatif(-) memiliki hubungan terbalik dengan komponen utama. Biasanya eigen vector ini memiliki ambang batas untuk menjelaskan seberapa pengaruh variabel terhadap PC sebesar > 0.5. Contoh kita dapat lihat pada hasil eigen vector sebagai berikut. 1. kolom 1/PC1: water(-0.547), Superplasticizer(-0.505), dan Fine Aggregate(-0.401). 2. kolom 2/PC2: Blast Furnace Slag(0.685) dan Coarse Aggregate(-0.630). 3. kolom 3/PC3: Cement (0.814) dan Fly Ash (-0.407). 4. kolom 4/PC4: Coarse Aggregate (-0.545), Age (0.527), dan Fine Aggregate (0.385). 5. Kolom 5/PC5: Fine Aggregate (-0.701), Fly Ash (0.549), dan Superplasticizer (0.354). 6. Kolom 6/PC6: Age (0.743) dan Water (-0.366). 7. Kolom 7/PC7: Superplasticizer (-0.664) dan Water (-0.524). 8. kOLOM 8/PC8: Cement (-0.446), Slag (-0.437), dan Fine Aggregate (-0.433).
Berdasarkan hasil Principal Component Analysis (PCA), diperoleh bahwa komponen utama pertama (PC1) memiliki nilai eigen sebesar 2,280 dan mampu menjelaskan 28,50% variasi data. Komponen kedua (PC2) menjelaskan 17,70%, dan komponen ketiga (PC3) sebesar 16,75%. Jika ketiga komponen tersebut digabungkan, maka total variasi yang dapat dijelaskan mencapai 62,95% dari keseluruhan informasi dalam data.
Selain itu, hingga komponen keempat (PC4), variasi kumulatif yang mampu dipertahankan mencapai 75,63%, yang menunjukkan bahwa sebagian besar informasi data sudah dapat direpresentasikan hanya dengan empat komponen utama. Sementara itu, komponen berikutnya memiliki kontribusi variasi yang relatif kecil. Dengan demikian, PCA berhasil mereduksi delapan variabel awal menjadi beberapa komponen utama yang lebih ringkas tanpa kehilangan informasi yang signifikan.