data <- read_excel("Concrete_Data.xls")
colnames(data) <- c(
  "Cement",
  "BlastFurnaceSlag",
  "FlyAsh",
  "Water",
  "Superplasticizer",
  "CoarseAggregate",
  "FineAggregate",
  "Age",
  "CompressiveStrength"
)
head(data)
## # A tibble: 6 × 9
##   Cement BlastFurnaceSlag FlyAsh Water Superplasticizer CoarseAggregate
##    <dbl>            <dbl>  <dbl> <dbl>            <dbl>           <dbl>
## 1   540                0       0   162              2.5           1040 
## 2   540                0       0   162              2.5           1055 
## 3   332.             142.      0   228              0              932 
## 4   332.             142.      0   228              0              932 
## 5   199.             132.      0   192              0              978.
## 6   266              114       0   228              0              932 
## # ℹ 3 more variables: FineAggregate <dbl>, Age <dbl>, CompressiveStrength <dbl>
str(data)
## tibble [1,030 × 9] (S3: tbl_df/tbl/data.frame)
##  $ Cement             : num [1:1030] 540 540 332 332 199 ...
##  $ BlastFurnaceSlag   : num [1:1030] 0 0 142 142 132 ...
##  $ FlyAsh             : num [1:1030] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Water              : num [1:1030] 162 162 228 228 192 228 228 228 228 228 ...
##  $ Superplasticizer   : num [1:1030] 2.5 2.5 0 0 0 0 0 0 0 0 ...
##  $ CoarseAggregate    : num [1:1030] 1040 1055 932 932 978 ...
##  $ FineAggregate      : num [1:1030] 676 676 594 594 826 ...
##  $ Age                : num [1:1030] 28 28 270 365 360 90 365 28 28 28 ...
##  $ CompressiveStrength: num [1:1030] 80 61.9 40.3 41.1 44.3 ...

Penjelasan Data berisi 1030 baris dan 9 kolom numerik terkait komposisi bahan beton dan kuat tekan beton CompressiveStrength. Semua variabel sudah dalam format numerik. —

Correlation Matrix

cor_matrix <- cor(data)
round(cor_matrix, 3)
##                     Cement BlastFurnaceSlag FlyAsh  Water Superplasticizer
## Cement               1.000           -0.275 -0.397 -0.082            0.093
## BlastFurnaceSlag    -0.275            1.000 -0.324  0.107            0.043
## FlyAsh              -0.397           -0.324  1.000 -0.257            0.377
## Water               -0.082            0.107 -0.257  1.000           -0.657
## Superplasticizer     0.093            0.043  0.377 -0.657            1.000
## CoarseAggregate     -0.109           -0.284 -0.010 -0.182           -0.266
## FineAggregate       -0.223           -0.282  0.079 -0.451            0.223
## Age                  0.082           -0.044 -0.154  0.278           -0.193
## CompressiveStrength  0.498            0.135 -0.106 -0.290            0.366
##                     CoarseAggregate FineAggregate    Age CompressiveStrength
## Cement                       -0.109        -0.223  0.082               0.498
## BlastFurnaceSlag             -0.284        -0.282 -0.044               0.135
## FlyAsh                       -0.010         0.079 -0.154              -0.106
## Water                        -0.182        -0.451  0.278              -0.290
## Superplasticizer             -0.266         0.223 -0.193               0.366
## CoarseAggregate               1.000        -0.179 -0.003              -0.165
## FineAggregate                -0.179         1.000 -0.156              -0.167
## Age                          -0.003        -0.156  1.000               0.329
## CompressiveStrength          -0.165        -0.167  0.329               1.000

Penjelasan: Matriks korelasi menunjukkan kekuatan dan arah hubungan linear antar variabel. Nilai mendekati 1 berarti hubungan positif kuat, mendekati -1 berarti hubungan negatif kuat, dan mendekati 0 berarti hubungan lemah.

Correlation Plot

corrplot(
  cor_matrix,
  method = "color",
  type = "upper",
  tl.col = "black",
  tl.cex = 0.8
)

Matriks korelasi menunjukkan hubungan linear antar variabel.
- Korelasi positif antara Cement dan Age dengan CompressiveStrength menunjukkan bahwa semakin banyak semen dan semakin tua umur beton, kuat tekan cenderung meningkat.
- Korelasi negatif antara Water dan CompressiveStrength menunjukkan bahwa semakin banyak air, kuat tekan beton cenderung menurun.


Variance–Covariance Matrix

cov_matrix <- cov(data)
round(cov_matrix, 2)
##                       Cement BlastFurnaceSlag   FlyAsh   Water Superplasticizer
## Cement              10921.74         -2481.36 -2658.35 -181.99            57.91
## BlastFurnaceSlag    -2481.36          7444.08 -1786.61  197.68            22.36
## FlyAsh              -2658.35         -1786.61  4095.55 -351.30           144.25
## Water                -181.99           197.68  -351.30  456.06           -83.87
## Superplasticizer       57.91            22.36   144.25  -83.87            35.68
## CoarseAggregate      -888.61         -1905.21   -49.64 -302.72          -123.69
## FineAggregate       -1866.15         -1947.91   405.74 -771.57           106.56
## Age                   540.99          -241.15  -624.06  374.50           -72.72
## CompressiveStrength   869.15           194.33  -113.06 -103.32            36.53
##                     CoarseAggregate FineAggregate     Age CompressiveStrength
## Cement                      -888.61      -1866.15  540.99              869.15
## BlastFurnaceSlag           -1905.21      -1947.91 -241.15              194.33
## FlyAsh                       -49.64        405.74 -624.06             -113.06
## Water                       -302.72       -771.57  374.50             -103.32
## Superplasticizer            -123.69        106.56  -72.72               36.53
## CoarseAggregate             6045.66      -1112.80  -14.81             -214.23
## FineAggregate              -1112.80       6428.10 -790.57             -224.01
## Age                          -14.81       -790.57 3990.44              347.06
## CompressiveStrength         -214.23       -224.01  347.06              279.08

Penjelasan: Elemen diagonal menunjukkan varians tiap variabel, sedangkan elemen di luar diagonal menunjukkan kovarians antar variabel. Nilai kovarians besar menunjukkan perubahan dua variabel yang saling berkaitan. # Eigen Value dan Eigen Vector

eigen_result <- eigen(cov_matrix)

# Eigen values
round(eigen_result$values, 3)
## [1] 12897.943  9825.434  7287.263  4247.634  3986.922  1268.122   102.073
## [8]    69.746    11.253
# Eigen vectors
round(eigen_result$vectors, 3)
##         [,1]   [,2]   [,3]   [,4]   [,5]   [,6]   [,7]   [,8]   [,9]
##  [1,]  0.904 -0.023  0.152  0.013  0.154 -0.277 -0.184  0.155 -0.011
##  [2,] -0.255 -0.789  0.071  0.201  0.101 -0.434 -0.183  0.188 -0.012
##  [3,] -0.239  0.299 -0.049 -0.686  0.188 -0.495 -0.194  0.248  0.003
##  [4,]  0.005 -0.075 -0.042 -0.076 -0.094  0.468 -0.071  0.833 -0.247
##  [5,] -0.001  0.005  0.024 -0.020  0.023 -0.101  0.056 -0.222 -0.967
##  [6,] -0.013  0.276 -0.760  0.479  0.062 -0.275 -0.076  0.173 -0.042
##  [7,] -0.212  0.446  0.613  0.481 -0.146 -0.256 -0.102  0.227 -0.027
##  [8,]  0.100 -0.070 -0.118 -0.147 -0.946 -0.204 -0.113 -0.028 -0.001
##  [9,]  0.067 -0.040  0.020 -0.032 -0.045 -0.279  0.926  0.233  0.029

Penjelasan: Eigen values menunjukkan seberapa besar variasi data yang dijelaskan oleh masing-masing komponen utama. Eigen vectors menunjukkan kontribusi setiap variabel terhadap komponen tersebut.