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) 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)
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) 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)
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)))
Komponen Eigenvalue
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.