library(readxl)
library(knitr)
library(corrplot)
## corrplot 0.95 loaded
Concrete_Data <- read_excel("Concrete_Data.xls")
View(Concrete_Data)
str(Concrete_Data)
## tibble [1,030 Ă— 9] (S3: tbl_df/tbl/data.frame)
## $ Cement (component 1)(kg in a m^3 mixture) : num [1:1030] 540 540 332 332 199 ...
## $ Blast Furnace Slag (component 2)(kg in a m^3 mixture): num [1:1030] 0 0 142 142 132 ...
## $ Fly Ash (component 3)(kg in a m^3 mixture) : num [1:1030] 0 0 0 0 0 0 0 0 0 0 ...
## $ Water (component 4)(kg in a m^3 mixture) : num [1:1030] 162 162 228 228 192 228 228 228 228 228 ...
## $ Superplasticizer (component 5)(kg in a m^3 mixture) : num [1:1030] 2.5 2.5 0 0 0 0 0 0 0 0 ...
## $ Coarse Aggregate (component 6)(kg in a m^3 mixture) : num [1:1030] 1040 1055 932 932 978 ...
## $ Fine Aggregate (component 7)(kg in a m^3 mixture) : num [1:1030] 676 676 594 594 826 ...
## $ Age (day) : num [1:1030] 28 28 270 365 360 90 365 28 28 28 ...
## $ Concrete compressive strength(MPa, megapascals) : num [1:1030] 80 61.9 40.3 41.1 44.3 ...
summary(Concrete_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
Pada tahap awal, data Concrete Compressive Strength diimpor ke dalam R menggunakan fungsi read_excel. Setelah data berhasil dimuat, dilakukan eksplorasi awal melalui fungsi str() dan summary() untuk mengetahui jumlah observasi, jumlah variabel, tipe data, serta gambaran umum nilai setiap variabel. Langkah ini penting untuk memastikan bahwa data telah terbaca dengan benar dan siap digunakan pada tahap analisis selanjutnya.
concrete_x <- Concrete_Data[, -ncol(Concrete_Data)]
str(concrete_x)
## tibble [1,030 Ă— 8] (S3: tbl_df/tbl/data.frame)
## $ Cement (component 1)(kg in a m^3 mixture) : num [1:1030] 540 540 332 332 199 ...
## $ Blast Furnace Slag (component 2)(kg in a m^3 mixture): num [1:1030] 0 0 142 142 132 ...
## $ Fly Ash (component 3)(kg in a m^3 mixture) : num [1:1030] 0 0 0 0 0 0 0 0 0 0 ...
## $ Water (component 4)(kg in a m^3 mixture) : num [1:1030] 162 162 228 228 192 228 228 228 228 228 ...
## $ Superplasticizer (component 5)(kg in a m^3 mixture) : num [1:1030] 2.5 2.5 0 0 0 0 0 0 0 0 ...
## $ Coarse Aggregate (component 6)(kg in a m^3 mixture) : num [1:1030] 1040 1055 932 932 978 ...
## $ Fine Aggregate (component 7)(kg in a m^3 mixture) : num [1:1030] 676 676 594 594 826 ...
## $ Age (day) : num [1:1030] 28 28 270 365 360 90 365 28 28 28 ...
Selanjutnya, data dipisahkan antara variabel fitur dan variabel target. Pada analisis ini, hanya variabel fitur yang digunakan, sehingga kolom terakhir yang merupakan nilai kuat tekan beton tidak disertakan. Pemisahan ini dilakukan agar analisis korelasi, kovarian, dan eigen hanya berfokus pada hubungan antar variabel input.
cor_matrix <- cor(concrete_x)
cor_matrix
## Cement (component 1)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) 1.00000000
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.27519344
## Fly Ash (component 3)(kg in a m^3 mixture) -0.39747544
## Water (component 4)(kg in a m^3 mixture) -0.08154361
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.09277137
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.10935604
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.22272017
## Age (day) 0.08194726
## Blast Furnace Slag (component 2)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.27519344
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) 1.00000000
## Fly Ash (component 3)(kg in a m^3 mixture) -0.32356947
## Water (component 4)(kg in a m^3 mixture) 0.10728594
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.04337574
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.28399823
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.28159326
## Age (day) -0.04424580
## Fly Ash (component 3)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.397475440
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.323569468
## Fly Ash (component 3)(kg in a m^3 mixture) 1.000000000
## Water (component 4)(kg in a m^3 mixture) -0.257043997
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.377339559
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.009976788
## Fine Aggregate (component 7)(kg in a m^3 mixture) 0.079076351
## Age (day) -0.154370165
## Water (component 4)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.08154361
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) 0.10728594
## Fly Ash (component 3)(kg in a m^3 mixture) -0.25704400
## Water (component 4)(kg in a m^3 mixture) 1.00000000
## Superplasticizer (component 5)(kg in a m^3 mixture) -0.65746444
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.18231167
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.45063498
## Age (day) 0.27760443
## Superplasticizer (component 5)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) 0.09277137
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) 0.04337574
## Fly Ash (component 3)(kg in a m^3 mixture) 0.37733956
## Water (component 4)(kg in a m^3 mixture) -0.65746444
## Superplasticizer (component 5)(kg in a m^3 mixture) 1.00000000
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.26630276
## Fine Aggregate (component 7)(kg in a m^3 mixture) 0.22250149
## Age (day) -0.19271652
## Coarse Aggregate (component 6)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.109356039
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.283998230
## Fly Ash (component 3)(kg in a m^3 mixture) -0.009976788
## Water (component 4)(kg in a m^3 mixture) -0.182311668
## Superplasticizer (component 5)(kg in a m^3 mixture) -0.266302755
## Coarse Aggregate (component 6)(kg in a m^3 mixture) 1.000000000
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.178505755
## Age (day) -0.003015507
## Fine Aggregate (component 7)(kg in a m^3 mixture)
## Cement (component 1)(kg in a m^3 mixture) -0.22272017
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.28159326
## Fly Ash (component 3)(kg in a m^3 mixture) 0.07907635
## Water (component 4)(kg in a m^3 mixture) -0.45063498
## Superplasticizer (component 5)(kg in a m^3 mixture) 0.22250149
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.17850575
## Fine Aggregate (component 7)(kg in a m^3 mixture) 1.00000000
## Age (day) -0.15609405
## Age (day)
## Cement (component 1)(kg in a m^3 mixture) 0.081947264
## Blast Furnace Slag (component 2)(kg in a m^3 mixture) -0.044245801
## Fly Ash (component 3)(kg in a m^3 mixture) -0.154370165
## Water (component 4)(kg in a m^3 mixture) 0.277604429
## Superplasticizer (component 5)(kg in a m^3 mixture) -0.192716518
## Coarse Aggregate (component 6)(kg in a m^3 mixture) -0.003015507
## Fine Aggregate (component 7)(kg in a m^3 mixture) -0.156094049
## Age (day) 1.000000000
Matriks korelasi digunakan untuk melihat hubungan linear antar variabel pada dataset. Nilai korelasi berkisar antara -1 hingga 1, di mana nilai mendekati 1 menunjukkan hubungan positif yang kuat, nilai mendekati -1 menunjukkan hubungan negatif yang kuat, dan nilai mendekati 0 menandakan hubungan yang lemah. Dari matriks ini dapat diketahui variabel mana yang memiliki keterkaitan lebih erat satu sama lain.
colnames(concrete_x) <- c(
"Cement",
"Slag",
"FlyAsh",
"Water",
"Superplasticizer",
"CoarseAgg",
"FineAgg",
"Age"
)
Kode tersebut digunakan untuk mengganti nama kolom pada data concrete_x agar lebih sederhana dan mudah dibaca. Penamaan variabel yang ringkas memudahkan proses analisis serta interpretasi hasil, terutama pada matriks korelasi, kovarian, dan visualisasi yang dihasilkan.
cov_matrix <- cov(concrete_x)
cor_matrix <- cor(concrete_x)
corrplot(
cor_matrix,
method = "color",
type = "upper",
tl.col = "black",
tl.srt = 45
)
Visualisasi matriks korelasi digunakan untuk memperjelas hubungan antar
variabel dalam bentuk warna. Warna yang semakin pekat menunjukkan
hubungan korelasi yang semakin kuat, baik positif maupun negatif,
sedangkan warna yang lebih pucat menandakan hubungan yang lemah. Dengan
visualisasi ini, keterkaitan antar komposisi bahan beton dapat diamati
dengan lebih mudah dibandingkan hanya melihat nilai korelasi dalam
bentuk angka.
cov_matrix <- cov(concrete_x)
cov_matrix
## Cement Slag FlyAsh Water Superplasticizer
## Cement 10921.74265 -2481.35943 -2658.3508 -181.98979 57.91462
## Slag -2481.35943 7444.08373 -1786.6076 197.67855 22.35531
## FlyAsh -2658.35075 -1786.60759 4095.5481 -351.29712 144.25026
## Water -181.98979 197.67855 -351.2971 456.06024 -83.87096
## Superplasticizer 57.91462 22.35531 144.2503 -83.87096 35.68260
## CoarseAgg -888.60851 -1905.21057 -49.6442 -302.72431 -123.68745
## FineAgg -1866.15111 -1947.91126 405.7364 -771.57347 106.56203
## Age 540.99182 -241.15038 -624.0647 374.49650 -72.72060
## CoarseAgg FineAgg Age
## Cement -888.60851 -1866.1511 540.99182
## Slag -1905.21057 -1947.9113 -241.15038
## FlyAsh -49.64420 405.7364 -624.06475
## Water -302.72431 -771.5735 374.49650
## Superplasticizer -123.68745 106.5620 -72.72060
## CoarseAgg 6045.65623 -1112.7952 -14.81127
## FineAgg -1112.79516 6428.0992 -790.56558
## Age -14.81127 -790.5656 3990.43773
Matriks kovarian menggambarkan bagaimana dua variabel berubah secara bersamaan. Nilai kovarian yang besar menunjukkan bahwa dua variabel memiliki variasi yang besar secara bersama-sama. Matriks ini menjadi dasar dalam perhitungan eigen value dan eigen vector yang digunakan untuk memahami struktur variansi data secara keseluruhan.
eigen_result <- eigen(cov_matrix)
# Eigen Value
eigen_result$values
## [1] 12840.97152 9809.73610 7284.34193 4243.67465 3979.16746 1176.42112
## [7] 71.66399 11.33366
# Eigen Vector
eigen_result$vectors
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.905642491 -0.032638607 0.15480715 -0.008242651 0.15137736 -0.3065154
## [2,] -0.262539831 -0.786053324 0.07291600 -0.199058277 0.10670802 -0.4534540
## [3,] -0.238615941 0.303014979 -0.05149092 0.687223886 0.17758357 -0.5123562
## [4,] 0.005566835 -0.076263559 -0.04145565 0.075552203 -0.09842420 0.4824817
## [5,] -0.001306160 0.005093971 0.02406543 0.020513644 0.02293166 -0.1044518
## [6,] -0.009104736 0.274574303 -0.76069849 -0.480046914 0.07636126 -0.2707187
## [7,] -0.210131322 0.450692923 0.61077597 -0.485145472 -0.13283562 -0.2571290
## [8,] 0.098367597 -0.069853972 -0.11857274 0.126850611 -0.94893247 -0.2341287
## [,7] [,8]
## [1,] -0.1943806101 -0.007910220
## [2,] -0.2261845864 -0.009246849
## [3,] -0.2867754410 0.005607725
## [4,] -0.8246302637 -0.253446680
## [5,] 0.2332324978 -0.965991173
## [6,] -0.1859495571 -0.041496031
## [7,] -0.2445950510 -0.026831816
## [8,] 0.0003334611 0.002108410
Eigen value menunjukkan besarnya variansi yang dijelaskan oleh masing-masing komponen utama, sedangkan eigen vector menunjukkan kontribusi setiap variabel terhadap komponen utama tersebut. Komponen dengan eigen value terbesar memiliki peran paling dominan dalam menjelaskan keragaman data.
plot(eigen_result$values,
type = "b",
xlab = "Komponen Utama",
ylab = "Eigen Value",
main = "Scree Plot Eigen Value")
Scree plot digunakan untuk memvisualisasikan distribusi eigen value dari
setiap komponen utama. Penurunan nilai eigen yang tajam pada komponen
awal menunjukkan bahwa sebagian besar informasi data dapat dijelaskan
oleh beberapa komponen pertama.
proporsi_var <- eigen_result$values / sum(eigen_result$values)
barplot(proporsi_var,
main = "Proporsi Variansi Tiap Komponen Utama",
xlab = "Komponen Utama",
ylab = "Proporsi Variansi")
Proporsi variansi menunjukkan persentase kontribusi masing-masing
komponen utama terhadap total variansi data. Komponen dengan proporsi
terbesar menunjukkan peran yang paling signifikan dalam
merepresentasikan informasi dari data awal.
eigen_table <- data.frame(
Komponen = paste("PC", 1:length(eigen_result$values)),
Eigen_Value = eigen_result$values,
Proporsi_Variansi = proporsi_var
)
kable(eigen_table, caption = "Eigen Value dan Proporsi Variansi")
| Komponen | Eigen_Value | Proporsi_Variansi |
|---|---|---|
| PC 1 | 12840.97152 | 0.3257699 |
| PC 2 | 9809.73610 | 0.2488687 |
| PC 3 | 7284.34193 | 0.1848006 |
| PC 4 | 4243.67465 | 0.1076602 |
| PC 5 | 3979.16746 | 0.1009497 |
| PC 6 | 1176.42112 | 0.0298453 |
| PC 7 | 71.66399 | 0.0018181 |
| PC 8 | 11.33366 | 0.0002875 |
Grafik proporsi variansi dan tabel eigen digunakan untuk melihat kontribusi relatif masing-masing komponen utama terhadap total variansi data. Dari hasil ini dapat diketahui berapa banyak komponen yang sudah cukup untuk merepresentasikan data secara efektif.
Berdasarkan hasil analisis multivariat yang telah dilakukan pada dataset Concrete Compressive Strength, dapat disimpulkan bahwa variabel-variabel penyusun beton memiliki karakteristik dan hubungan yang beragam satu sama lain. Tahap eksplorasi awal menunjukkan bahwa data terdiri dari beberapa variabel numerik yang merepresentasikan komposisi material beton serta umur beton, sehingga data layak untuk dianalisis menggunakan pendekatan korelasi, kovarian, dan analisis eigen.
Matriks korelasi menunjukkan adanya hubungan yang berbeda-beda antar variabel, baik hubungan yang cukup kuat maupun hubungan yang relatif lemah. Visualisasi korelasi dalam bentuk heatmap mempermudah dalam mengamati pola hubungan tersebut, sehingga keterkaitan antar komponen beton dapat dipahami secara lebih intuitif. Dari hasil ini terlihat bahwa tidak semua variabel saling berkorelasi kuat, yang menandakan bahwa masing-masing variabel memiliki kontribusi yang berbeda terhadap karakteristik beton.
Matriks varians–kovarians memberikan gambaran mengenai variasi dan perubahan bersama antar variabel. Variabel dengan nilai kovarian yang besar menunjukkan tingkat variasi yang lebih tinggi, sehingga memiliki pengaruh yang lebih besar dalam struktur data. Matriks ini menjadi dasar dalam perhitungan eigen value dan eigen vector untuk memahami distribusi variansi data secara lebih mendalam.
Hasil perhitungan eigen value menunjukkan bahwa sebagian besar variansi data dapat dijelaskan oleh beberapa komponen utama pertama. Hal ini diperkuat oleh scree plot dan grafik proporsi variansi, yang menunjukkan penurunan nilai eigen secara signifikan pada komponen awal. Temuan ini mengindikasikan bahwa dimensi data dapat direduksi tanpa kehilangan informasi yang terlalu besar, sehingga analisis lanjutan dapat dilakukan dengan lebih efisien.
Eigen vector menunjukkan kontribusi masing-masing variabel terhadap setiap komponen utama. Dari hasil tersebut dapat dipahami bahwa tidak semua variabel memiliki pengaruh yang sama dalam pembentukan komponen utama, melainkan terdapat variabel tertentu yang lebih dominan dalam menjelaskan keragaman data.
Secara keseluruhan, analisis multivariat pada dataset ini berhasil memberikan gambaran mengenai hubungan antar variabel, struktur variansi data, serta potensi reduksi dimensi melalui komponen utama. Hasil ini dapat menjadi dasar untuk analisis lanjutan, seperti pemodelan atau prediksi, dengan pemahaman yang lebih baik terhadap karakteristik data yang digunakan.