Dari dataset Concrete Compressive Strength Dataset yang berasal dari UCI Machine Learning Repository akan dilakukan analisis correlation matrix, variance–covariance matrix, serta perhitungan eigen value dan eigen vector.

https://archive.ics.uci.edu/dataset/165/concrete+compressive+strength

Load Dataset

library(readxl)
library(ggplot2)
library(corrplot)
## corrplot 0.95 loaded
library(knitr)
getwd()
## [1] "C:/Users/lenovo loq/OneDrive/Dokumen/Tugas1_Anmul_199"
concrete <- read_excel("Concrete_Data.xls")
concrete <- as.data.frame(concrete)

kable(
  head(concrete, 10),
)
Cement (component 1)(kg in a m^3 mixture) Blast Furnace Slag (component 2)(kg in a m^3 mixture) Fly Ash (component 3)(kg in a m^3 mixture) Water (component 4)(kg in a m^3 mixture) Superplasticizer (component 5)(kg in a m^3 mixture) Coarse Aggregate (component 6)(kg in a m^3 mixture) Fine Aggregate (component 7)(kg in a m^3 mixture) Age (day) Concrete compressive strength(MPa, megapascals)
540.0 0.0 0 162 2.5 1040.0 676.0 28 79.98611
540.0 0.0 0 162 2.5 1055.0 676.0 28 61.88737
332.5 142.5 0 228 0.0 932.0 594.0 270 40.26954
332.5 142.5 0 228 0.0 932.0 594.0 365 41.05278
198.6 132.4 0 192 0.0 978.4 825.5 360 44.29608
266.0 114.0 0 228 0.0 932.0 670.0 90 47.02985
380.0 95.0 0 228 0.0 932.0 594.0 365 43.69830
380.0 95.0 0 228 0.0 932.0 594.0 28 36.44777
266.0 114.0 0 228 0.0 932.0 670.0 28 45.85429
475.0 0.0 0 228 0.0 932.0 594.0 28 39.28979

Pada tahap Load Dataset memerlukan beberapa library yang digunakan. Pada dataset ini berisi data komposisi bahan penyusun beton, umur beton, dan nilai kuat tekan beton. Setiap baris mewakili satu sampel beton, sedangkan setiap kolom menunjukkan variabel yang berbeda.

Struktur Dataset

struktur_df <- data.frame(
  Nama_Variabel = names(concrete),
  Tipe_Data = sapply(concrete, class),
  row.names = NULL
)

kable(
  struktur_df,
  caption = "Struktur Dataset Concrete"
)
Struktur Dataset Concrete
Nama_Variabel Tipe_Data
Cement (component 1)(kg in a m^3 mixture) numeric
Blast Furnace Slag (component 2)(kg in a m^3 mixture) numeric
Fly Ash (component 3)(kg in a m^3 mixture) numeric
Water (component 4)(kg in a m^3 mixture) numeric
Superplasticizer (component 5)(kg in a m^3 mixture) numeric
Coarse Aggregate (component 6)(kg in a m^3 mixture) numeric
Fine Aggregate (component 7)(kg in a m^3 mixture) numeric
Age (day) numeric
Concrete compressive strength(MPa, megapascals) numeric

Struktur dataset menunjukkan bahwa terdapat sembilan variabel pada dataset ini dan seluruh variabel pada dataset bertipe numerik.

Fitur Tanpa Target

fitur <- concrete[, -9]

kable(
  head(fitur, 10),
)
Cement (component 1)(kg in a m^3 mixture) Blast Furnace Slag (component 2)(kg in a m^3 mixture) Fly Ash (component 3)(kg in a m^3 mixture) Water (component 4)(kg in a m^3 mixture) Superplasticizer (component 5)(kg in a m^3 mixture) Coarse Aggregate (component 6)(kg in a m^3 mixture) Fine Aggregate (component 7)(kg in a m^3 mixture) Age (day)
540.0 0.0 0 162 2.5 1040.0 676.0 28
540.0 0.0 0 162 2.5 1055.0 676.0 28
332.5 142.5 0 228 0.0 932.0 594.0 270
332.5 142.5 0 228 0.0 932.0 594.0 365
198.6 132.4 0 192 0.0 978.4 825.5 360
266.0 114.0 0 228 0.0 932.0 670.0 90
380.0 95.0 0 228 0.0 932.0 594.0 365
380.0 95.0 0 228 0.0 932.0 594.0 28
266.0 114.0 0 228 0.0 932.0 670.0 28
475.0 0.0 0 228 0.0 932.0 594.0 28

Pada tahap ini analisis dilakukan hanya menggunakan variabel fitur (prediktor) tanpa menyertakan variabel kuat tekan beton target . Fitur yang digunakan terdiri dari delapan variabel yang merepresentasikan komposisi bahan penyusun beton serta umur beton. Pemisahan ini dilakukan agar analisis hubungan antar variabel tidak dipengaruhi oleh variabel sasaran.

Missing Value

missing_df <- data.frame(
  Variabel = colnames(fitur),
  Jumlah_Missing = colSums(is.na(fitur))
)

kable(
  missing_df,
  caption = "Jumlah Missing Value pada Setiap Variabel"
)
Jumlah Missing Value pada Setiap Variabel
Variabel Jumlah_Missing
Cement (component 1)(kg in a m^3 mixture) Cement (component 1)(kg in a m^3 mixture) 0
Blast Furnace Slag (component 2)(kg in a m^3 mixture) Blast Furnace Slag (component 2)(kg in a m^3 mixture) 0
Fly Ash (component 3)(kg in a m^3 mixture) Fly Ash (component 3)(kg in a m^3 mixture) 0
Water (component 4)(kg in a m^3 mixture) Water (component 4)(kg in a m^3 mixture) 0
Superplasticizer (component 5)(kg in a m^3 mixture) Superplasticizer (component 5)(kg in a m^3 mixture) 0
Coarse Aggregate (component 6)(kg in a m^3 mixture) Coarse Aggregate (component 6)(kg in a m^3 mixture) 0
Fine Aggregate (component 7)(kg in a m^3 mixture) Fine Aggregate (component 7)(kg in a m^3 mixture) 0
Age (day) Age (day) 0

Seluruh variabel fitur tidak memiliki nilai yang hilang.

Correlation Matrix

cor_matrix <- cor(fitur)

kable(
  round(cor_matrix, 2),
  caption = "Correlation Matrix"
)
Correlation Matrix
Cement (component 1)(kg in a m^3 mixture) Blast Furnace Slag (component 2)(kg in a m^3 mixture) Fly Ash (component 3)(kg in a m^3 mixture) Water (component 4)(kg in a m^3 mixture) Superplasticizer (component 5)(kg in a m^3 mixture) Coarse Aggregate (component 6)(kg in a m^3 mixture) Fine Aggregate (component 7)(kg in a m^3 mixture) Age (day)
Cement (component 1)(kg in a m^3 mixture) 1.00 -0.28 -0.40 -0.08 0.09 -0.11 -0.22 0.08
Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.28 1.00 -0.32 0.11 0.04 -0.28 -0.28 -0.04
Fly Ash (component 3)(kg in a m^3 mixture) -0.40 -0.32 1.00 -0.26 0.38 -0.01 0.08 -0.15
Water (component 4)(kg in a m^3 mixture) -0.08 0.11 -0.26 1.00 -0.66 -0.18 -0.45 0.28
Superplasticizer (component 5)(kg in a m^3 mixture) 0.09 0.04 0.38 -0.66 1.00 -0.27 0.22 -0.19
Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.11 -0.28 -0.01 -0.18 -0.27 1.00 -0.18 0.00
Fine Aggregate (component 7)(kg in a m^3 mixture) -0.22 -0.28 0.08 -0.45 0.22 -0.18 1.00 -0.16
Age (day) 0.08 -0.04 -0.15 0.28 -0.19 0.00 -0.16 1.00

Sebagian besar fitur variabel memiliki nilai korelasi yang rendah hingga sedang, baik positif maupun negatif. Korelasi negatif yang cukup kuat terlihat antara Water dan Superplasticizer , yang menunjukkan bahwa peningkatan penggunaan superplasticizer cenderung diikuti oleh penurunan jumlah udara dalam campuran beton. Selain itu, Semen memiliki korelasi negatif dengan Fly Ash , yang mengindikasikan adanya kecenderungan penggunaan bahan pengganti semen. Secara umum, tidak ditemukan korelasi yang sangat tinggi antar variabel, sehingga tidak terdapat indikasi multikolinearitas yang kuat pada fitur data.

Visusalisasi Correlation Matrix

corrplot(
  cor_matrix,
  method = "color",
  type = "full",
  addCoef.col = "black",
  number.cex = 0.7,
  tl.cex = 0.8,
  tl.pos = "l",
  tl.srt = 45,
  mar = c(0,0,1,0)
)

Warna biru menandakan korelasi positif, sedangkan warna merah menunjukkan korelasi negatif, dengan intensitas warna yang semakin kuat menandakan hubungan yang semakin tinggi. Terlihat bahwa hubungan paling kuat negatif terjadi antara Water dan Superplasticizer , sedangkan sebagian besar pasangan variabel lainnya memiliki korelasi yang lemah hingga sedang. Secara keseluruhan, tidak terdapat korelasi yang sangat tinggi antar variabel fitur.

Variance–Covariance Matrix

cov_matrix <- cov(fitur)

kable(
  round(cov_matrix, 2),
  caption = "Variance–Covariance Matrixr"
)
Variance–Covariance Matrixr
Cement (component 1)(kg in a m^3 mixture) Blast Furnace Slag (component 2)(kg in a m^3 mixture) Fly Ash (component 3)(kg in a m^3 mixture) Water (component 4)(kg in a m^3 mixture) Superplasticizer (component 5)(kg in a m^3 mixture) Coarse Aggregate (component 6)(kg in a m^3 mixture) Fine Aggregate (component 7)(kg in a m^3 mixture) Age (day)
Cement (component 1)(kg in a m^3 mixture) 10921.74 -2481.36 -2658.35 -181.99 57.91 -888.61 -1866.15 540.99
Blast Furnace Slag (component 2)(kg in a m^3 mixture) -2481.36 7444.08 -1786.61 197.68 22.36 -1905.21 -1947.91 -241.15
Fly Ash (component 3)(kg in a m^3 mixture) -2658.35 -1786.61 4095.55 -351.30 144.25 -49.64 405.74 -624.06
Water (component 4)(kg in a m^3 mixture) -181.99 197.68 -351.30 456.06 -83.87 -302.72 -771.57 374.50
Superplasticizer (component 5)(kg in a m^3 mixture) 57.91 22.36 144.25 -83.87 35.68 -123.69 106.56 -72.72
Coarse Aggregate (component 6)(kg in a m^3 mixture) -888.61 -1905.21 -49.64 -302.72 -123.69 6045.66 -1112.80 -14.81
Fine Aggregate (component 7)(kg in a m^3 mixture) -1866.15 -1947.91 405.74 -771.57 106.56 -1112.80 6428.10 -790.57
Age (day) 540.99 -241.15 -624.06 374.50 -72.72 -14.81 -790.57 3990.44

Setiap fitur memiliki tingkat keragaman yang berbeda dan hubungan yang bervariasi antarfitur, nilai varians terbesar terdapat pada Cement, Coarse Aggregate, dan Fine Aggregate , menandakan fitur ketiga ini memiliki penyebaran data yang paling besar. Nilai kovarian negatif yang cukup besar antara Cement dengan Fly Ash, Blast Furnace Slag, dan Fine Aggregate menunjukkan hubungan yang berlawanan arah, artinya peningkatan salah satu variabel cenderung diikuti penurunan variabel lainnya. Sementara itu, kovarians positif seperti antara Fly Ash dengan Fine Aggregate dan Water dengan Age menunjukkan kecenderungan perubahan searah. Secara keseluruhan, hasil ini menunjukkan adanya keterkaitan antarfitur yang cukup kuat, sehingga penggunaan metode lanjutan seperti PCA relevan untuk mereduksi dimensi dan mengatasi potensi multikolinearitas.

Eigen Value

pca_result <- prcomp(fitur, scale. = TRUE)

eigenvalue_df <- data.frame(
  PC = paste0("PC", 1:length(pca_result$sdev)),
  Eigenvalue = pca_result$sdev^2,
  Proportion = (pca_result$sdev^2) / sum(pca_result$sdev^2) * 100,
  Cumulative = cumsum((pca_result$sdev^2) / sum(pca_result$sdev^2)) * 100
)

kable(
  eigenvalue_df,
  digits = 3,
)
PC Eigenvalue Proportion Cumulative
PC1 2.280 28.499 28.499
PC2 1.416 17.703 46.201
PC3 1.340 16.753 62.954
PC4 1.014 12.677 75.631
PC5 0.952 11.895 87.526
PC6 0.790 9.877 97.403
PC7 0.178 2.222 99.624
PC8 0.030 0.376 100.000

Komponen utama pertama (PC1) memiliki kontribusi variasi terbesar yaitu sebesar 28,50%, sehingga PC1 paling dominan dalam menjelaskan keragaman data. Jika digabungkan hingga PC3, total variasi yang dapat dijelaskan mencapai sekitar 62,95%, yang menunjukkan bahwa tiga komponen informasi utama sudah mampu merepresentasikan sebagian besar dari fitur awal. Hingga PC4, proporsi kumulatif meningkat menjadi 75,63%, sehingga secara umum empat komponen utama sudah cukup baik untuk analisis lanjutan. Sementara itu, komponen dengan eigenvalue kecil seperti PC7 dan PC8 hanya menampung variasi yang sangat kecil, sehingga kurang signifikan dan dapat diabaikan dalam reduksi dimensi.

Scree Plot

pca_result <- prcomp(fitur, scale. = TRUE)
eigenvalues <- pca_result$sdev^2

plot(
  eigenvalues,
  type = "b",
  pch = 19,
  xlab = "Principal Component",
  ylab = "Eigenvalue",
  main = "Scree Plot"
)

Nilai eigen menurun secara tajam dari komponen utama pertama (PC1) hingga PC3, kemudian penurunannya menjadi lebih landai pada komponen berikutnya. Hal ini menunjukkan bahwa sebagian besar variasi data dijelaskan oleh beberapa komponen utama pertama. Titik tekuk ( siku ) terlihat sekitar PC3–PC4, sehingga komponen setelahnya memberikan informasi tambahan yang relatif kecil. Oleh karena itu, beberapa komponen utama awal sudah cukup untuk merepresentasikan data secara keseluruhan.

Eigen vectors

pca_result <- prcomp(fitur, scale. = TRUE)
eigenvector_df <- as.data.frame(pca_result$rotation)
eigenvector_df$Variabel <- rownames(eigenvector_df)
rownames(eigenvector_df) <- NULL
eigenvector_df <- eigenvector_df[, c("Variabel", setdiff(names(eigenvector_df), "Variabel"))]
eigenvector_df[, -1] <- round(eigenvector_df[, -1], 3)

kable(
  eigenvector_df,
  digits = 3
)
Variabel PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8
Cement (component 1)(kg in a m^3 mixture) 0.098 0.112 -0.814 -0.054 -0.148 0.203 -0.222 -0.446
Blast Furnace Slag (component 2)(kg in a m^3 mixture) 0.177 -0.686 0.173 -0.363 0.021 -0.305 -0.228 -0.437
Fly Ash (component 3)(kg in a m^3 mixture) -0.395 0.144 0.408 0.227 -0.550 0.183 -0.352 -0.382
Water (component 4)(kg in a m^3 mixture) 0.547 -0.053 0.213 0.296 -0.070 0.366 0.524 -0.389
Superplasticizer (component 5)(kg in a m^3 mixture) -0.506 -0.284 -0.234 -0.037 -0.354 -0.193 0.665 -0.052
Coarse Aggregate (component 6)(kg in a m^3 mixture) 0.038 0.630 0.173 -0.546 0.033 -0.315 0.227 -0.349
Fine Aggregate (component 7)(kg in a m^3 mixture) -0.402 0.020 0.005 0.386 0.701 -0.092 0.039 -0.433
Age (day) 0.292 0.126 -0.101 0.528 -0.228 -0.744 -0.069 -0.013

Kontribusi masing-masing variabel fitur dalam membentuk setiap komponen utama pada PCA. Pada PC1, variabel Water memiliki kontribusi positif terbesar, sedangkan Superplasticizer dan Fly Ash memiliki kontribusi negatif yang cukup kuat, sehingga komponen ini menggambarkan perbedaan penggunaan air dan bahan tambahan dalam campuran beton. PC2 didominasi oleh Blast Furnace Slag dan Coarse Aggregate, yang menunjukkan variasi komposisi material pengganti semen dan agregat kasar. Secara umum, variabel dengan nilai loading yang besar pada suatu komponen memiliki pengaruh yang lebih dominan, sehingga eigenvector membantu dalam memahami karakteristik utama dari setiap komponen yang terbentuk.