Import Data
library(readxl)
library(corrplot)
library(ggplot2)
library(knitr)
library(dplyr)
data_raw <- read_excel("Concrete_Data.xls")
data <- data_raw %>% select(where(is.numeric))
data <- na.omit(data)
head(data)
## # A tibble: 6 × 9
## Cement (component 1)(kg in a m…¹ Blast Furnace Slag (…² Fly Ash (component 3…³
## <dbl> <dbl> <dbl>
## 1 540 0 0
## 2 540 0 0
## 3 332. 142. 0
## 4 332. 142. 0
## 5 199. 132. 0
## 6 266 114 0
## # ℹ abbreviated names: ¹​`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)`
## # ℹ 6 more variables: `Water (component 4)(kg in a m^3 mixture)` <dbl>,
## # `Superplasticizer (component 5)(kg in a m^3 mixture)` <dbl>,
## # `Coarse Aggregate (component 6)(kg in a m^3 mixture)` <dbl>,
## # `Fine Aggregate (component 7)(kg in a m^3 mixture)` <dbl>, …
Correlation Matrix
corr_matrix <- cor(data)
kable(round(corr_matrix, 4))
| Cement (component 1)(kg in a m^3 mixture) |
1.0000 |
-0.2752 |
-0.3975 |
-0.0815 |
0.0928 |
-0.1094 |
-0.2227 |
0.0819 |
0.4978 |
| Blast Furnace Slag (component 2)(kg in a m^3
mixture) |
-0.2752 |
1.0000 |
-0.3236 |
0.1073 |
0.0434 |
-0.2840 |
-0.2816 |
-0.0442 |
0.1348 |
| Fly Ash (component 3)(kg in a m^3 mixture) |
-0.3975 |
-0.3236 |
1.0000 |
-0.2570 |
0.3773 |
-0.0100 |
0.0791 |
-0.1544 |
-0.1058 |
| Water (component 4)(kg in a m^3 mixture) |
-0.0815 |
0.1073 |
-0.2570 |
1.0000 |
-0.6575 |
-0.1823 |
-0.4506 |
0.2776 |
-0.2896 |
| Superplasticizer (component 5)(kg in a m^3
mixture) |
0.0928 |
0.0434 |
0.3773 |
-0.6575 |
1.0000 |
-0.2663 |
0.2225 |
-0.1927 |
0.3661 |
| Coarse Aggregate (component 6)(kg in a m^3
mixture) |
-0.1094 |
-0.2840 |
-0.0100 |
-0.1823 |
-0.2663 |
1.0000 |
-0.1785 |
-0.0030 |
-0.1649 |
| Fine Aggregate (component 7)(kg in a m^3 mixture) |
-0.2227 |
-0.2816 |
0.0791 |
-0.4506 |
0.2225 |
-0.1785 |
1.0000 |
-0.1561 |
-0.1672 |
| Age (day) |
0.0819 |
-0.0442 |
-0.1544 |
0.2776 |
-0.1927 |
-0.0030 |
-0.1561 |
1.0000 |
0.3289 |
| Concrete compressive strength(MPa, megapascals) |
0.4978 |
0.1348 |
-0.1058 |
-0.2896 |
0.3661 |
-0.1649 |
-0.1672 |
0.3289 |
1.0000 |
corrplot(corr_matrix, method = "color", addCoef.col = "black", number.cex = 0.6, tl.cex = 0.7)

Correlation matrix menunjukkan hubungan linear antar variabel (-1
sampai +1).
Variance-Covariance Matrix
cov_matrix <- cov(data)
kable(round(cov_matrix, 4))
| Cement (component 1)(kg in a m^3 mixture) |
10921.7427 |
-2481.3594 |
-2658.3508 |
-181.9898 |
57.9146 |
-888.6085 |
-1866.1511 |
540.9918 |
869.1476 |
| Blast Furnace Slag (component 2)(kg in a m^3
mixture) |
-2481.3594 |
7444.0837 |
-1786.6076 |
197.6786 |
22.3553 |
-1905.2106 |
-1947.9113 |
-241.1504 |
194.3294 |
| Fly Ash (component 3)(kg in a m^3 mixture) |
-2658.3508 |
-1786.6076 |
4095.5481 |
-351.2971 |
144.2503 |
-49.6442 |
405.7364 |
-624.0647 |
-113.0614 |
| Water (component 4)(kg in a m^3 mixture) |
-181.9898 |
197.6786 |
-351.2971 |
456.0602 |
-83.8710 |
-302.7243 |
-771.5735 |
374.4965 |
-103.3223 |
| Superplasticizer (component 5)(kg in a m^3
mixture) |
57.9146 |
22.3553 |
144.2503 |
-83.8710 |
35.6826 |
-123.6875 |
106.5620 |
-72.7206 |
36.5338 |
| Coarse Aggregate (component 6)(kg in a m^3
mixture) |
-888.6085 |
-1905.2106 |
-49.6442 |
-302.7243 |
-123.6875 |
6045.6562 |
-1112.7952 |
-14.8113 |
-214.2298 |
| Fine Aggregate (component 7)(kg in a m^3 mixture) |
-1866.1511 |
-1947.9113 |
405.7364 |
-771.5735 |
106.5620 |
-1112.7952 |
6428.0992 |
-790.5656 |
-224.0107 |
| Age (day) |
540.9918 |
-241.1504 |
-624.0647 |
374.4965 |
-72.7206 |
-14.8113 |
-790.5656 |
3990.4377 |
347.0626 |
| Concrete compressive strength(MPa, megapascals) |
869.1476 |
194.3294 |
-113.0614 |
-103.3223 |
36.5338 |
-214.2298 |
-224.0107 |
347.0626 |
279.0797 |
Diagonal = variance tiap variabel. Off-diagonal = covariance antar
variabel.
Eigen Values dan Vectors
eigen_result <- eigen(corr_matrix)
kable(data.frame(Komponen = 1:length(eigen_result$values),
Eigenvalue = round(eigen_result$values, 4)))
| 1 |
2.2877 |
| 2 |
1.9365 |
| 3 |
1.4089 |
| 4 |
1.0428 |
| 5 |
1.0142 |
| 6 |
0.8474 |
| 7 |
0.2870 |
| 8 |
0.1468 |
| 9 |
0.0288 |
plot(eigen_result$values, type = "b", main = "Scree Plot",
xlab = "Komponen", ylab = "Eigenvalue")
abline(h = 1, col = "red", lty = 2)

kable(round(eigen_result$vectors, 4))
| -0.0411 |
0.5365 |
0.3597 |
-0.3098 |
-0.0547 |
-0.3899 |
-0.1338 |
-0.2984 |
-0.4725 |
| -0.1630 |
0.1363 |
-0.6990 |
0.0763 |
-0.3626 |
0.2703 |
0.0048 |
-0.2288 |
-0.4512 |
| 0.3698 |
-0.2684 |
0.0198 |
0.6007 |
0.2276 |
-0.3202 |
0.2472 |
-0.2553 |
-0.3865 |
| -0.5641 |
-0.1181 |
-0.1203 |
0.0469 |
0.2961 |
-0.3062 |
-0.0098 |
0.5856 |
-0.3560 |
| 0.5361 |
0.2482 |
-0.1880 |
0.1659 |
-0.0370 |
-0.0828 |
-0.6139 |
0.4476 |
-0.0528 |
| -0.0605 |
-0.2248 |
0.5495 |
0.2216 |
-0.5455 |
0.3476 |
-0.0598 |
0.2431 |
-0.3372 |
| 0.3817 |
-0.1871 |
0.0012 |
-0.5278 |
0.3845 |
0.4091 |
0.1747 |
0.1403 |
-0.4187 |
| -0.2619 |
0.2518 |
0.1696 |
0.3595 |
0.5285 |
0.5098 |
-0.3436 |
-0.2260 |
-0.0397 |
| 0.1072 |
0.6301 |
0.0335 |
0.2253 |
0.0003 |
0.1540 |
0.6260 |
0.3469 |
0.0606 |
Eigenvalue menunjukkan varians yang dijelaskan tiap principal
component. Eigenvector menunjukkan arah/bobot variabel pada setiap
komponen.