Pendahuluan

Analisis multivariat pada dataset Housing untuk menghitung eigenvalue, eigenvector, variance-covariance matrix, dan correlation matrix. Dibuat untuk memenuhi tugas Analisis Multivariat

Load and Show Data

# Memuat dataset
housing <- read.csv("Housing.csv")
head(housing)
# Memeriksa struktur data
str(housing)
## 'data.frame':    545 obs. of  13 variables:
##  $ price           : int  13300000 12250000 12250000 12215000 11410000 10850000 10150000 10150000 9870000 9800000 ...
##  $ area            : int  7420 8960 9960 7500 7420 7500 8580 16200 8100 5750 ...
##  $ bedrooms        : int  4 4 3 4 4 3 4 5 4 3 ...
##  $ bathrooms       : int  2 4 2 2 1 3 3 3 1 2 ...
##  $ stories         : int  3 4 2 2 2 1 4 2 2 4 ...
##  $ mainroad        : chr  "yes" "yes" "yes" "yes" ...
##  $ guestroom       : chr  "no" "no" "no" "no" ...
##  $ basement        : chr  "no" "no" "yes" "yes" ...
##  $ hotwaterheating : chr  "no" "no" "no" "no" ...
##  $ airconditioning : chr  "yes" "yes" "no" "yes" ...
##  $ parking         : int  2 3 2 3 2 2 2 0 2 1 ...
##  $ prefarea        : chr  "yes" "no" "yes" "yes" ...
##  $ furnishingstatus: chr  "furnished" "furnished" "semi-furnished" "furnished" ...
# Ringkasan statistik
summary(housing)
##      price               area          bedrooms       bathrooms    
##  Min.   : 1750000   Min.   : 1650   Min.   :1.000   Min.   :1.000  
##  1st Qu.: 3430000   1st Qu.: 3600   1st Qu.:2.000   1st Qu.:1.000  
##  Median : 4340000   Median : 4600   Median :3.000   Median :1.000  
##  Mean   : 4766729   Mean   : 5151   Mean   :2.965   Mean   :1.286  
##  3rd Qu.: 5740000   3rd Qu.: 6360   3rd Qu.:3.000   3rd Qu.:2.000  
##  Max.   :13300000   Max.   :16200   Max.   :6.000   Max.   :4.000  
##     stories        mainroad          guestroom           basement        
##  Min.   :1.000   Length:545         Length:545         Length:545        
##  1st Qu.:1.000   Class :character   Class :character   Class :character  
##  Median :2.000   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :1.806                                                           
##  3rd Qu.:2.000                                                           
##  Max.   :4.000                                                           
##  hotwaterheating    airconditioning       parking         prefarea        
##  Length:545         Length:545         Min.   :0.0000   Length:545        
##  Class :character   Class :character   1st Qu.:0.0000   Class :character  
##  Mode  :character   Mode  :character   Median :0.0000   Mode  :character  
##                                        Mean   :0.6936                     
##                                        3rd Qu.:1.0000                     
##                                        Max.   :3.0000                     
##  furnishingstatus  
##  Length:545        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 

Data Preparation

# Mengubah variabel kategorikal menjadi factor
housing$mainroad <- as.factor(housing$mainroad)
housing$guestroom <- as.factor(housing$guestroom)
housing$basement <- as.factor(housing$basement)
housing$hotwaterheating <- as.factor(housing$hotwaterheating)
housing$airconditioning <- as.factor(housing$airconditioning)
housing$prefarea <- as.factor(housing$prefarea)
housing$furnishingstatus <- as.factor(housing$furnishingstatus)

# Memilih variabel numerik untuk analisis multivariat
housing_numeric <- housing[, c("price", "area", "bedrooms", "bathrooms", "stories", "parking")]
head(housing_numeric)

Analisis Multivariat

a) Variance-Covariance Matrix

# Menghitung Variance-Covariance Matrix
var_cov_matrix <- cov(housing_numeric)
round(var_cov_matrix, 2)
##                  price         area  bedrooms bathrooms   stories   parking
## price     3.498544e+12 2.175676e+09 505946.43 486409.33 682644.63 619467.32
## area      2.175676e+09 4.709512e+06    243.23    211.35    158.13    659.99
## bedrooms  5.059464e+05 2.432300e+02      0.54      0.14      0.26      0.09
## bathrooms 4.864093e+05 2.113500e+02      0.14      0.25      0.14      0.08
## stories   6.826446e+05 1.581300e+02      0.26      0.14      0.75      0.03
## parking   6.194673e+05 6.599900e+02      0.09      0.08      0.03      0.74

b) Eigenvalue dan Eigenvector

# Menghitung eigenvalue dan eigenvector dari matriks varians-kovarians
eigen_result <- eigen(var_cov_matrix)

# Eigenvalues
eigenvalues <- eigen_result$values
eigenvalues
## [1] 3.498546e+12 3.356500e+06 7.345801e-01 5.958731e-01 3.626262e-01
## [6] 1.677009e-01
# Eigenvectors (kolom) 
eigenvectors <- eigen_result$vectors
eigenvectors
##              [,1]          [,2]          [,3]          [,4]          [,5]
## [1,] 9.999998e-01  6.218809e-04  2.350022e-07  2.360030e-07 -1.896406e-08
## [2,] 6.218809e-04 -9.999998e-01 -1.068146e-04  4.693651e-05  1.227917e-05
## [3,] 1.446162e-07  2.127405e-05 -4.831235e-01 -3.524835e-01 -7.742078e-01
## [4,] 1.390319e-07  2.715391e-05 -1.156247e-01 -7.418855e-02 -1.559105e-01
## [5,] 1.951224e-07  7.936672e-05 -7.760615e-01 -2.230034e-01  5.897316e-01
## [6,] 1.770643e-07 -8.185750e-05  3.885243e-01 -9.058261e-01  1.688515e-01
##               [,6]
## [1,]  1.167426e-07
## [2,] -2.065080e-05
## [3,]  2.072422e-01
## [4,] -9.781712e-01
## [5,]  1.465063e-02
## [6,] -4.137110e-03
# Membuat tabel untuk memperjelas eigenvector
eigenvector_df <- as.data.frame(eigenvectors)
colnames(eigenvector_df) <- paste0("EV", 1:ncol(eigenvector_df))
rownames(eigenvector_df) <- colnames(housing_numeric)
eigenvector_df

c) Correlation Matrix

# Menghitung Correlation Matrix
corr_matrix <- cor(housing_numeric)
round(corr_matrix, 4)
##            price   area bedrooms bathrooms stories parking
## price     1.0000 0.5360   0.3665    0.5175  0.4207  0.3844
## area      0.5360 1.0000   0.1519    0.1938  0.0840  0.3530
## bedrooms  0.3665 0.1519   1.0000    0.3739  0.4086  0.1393
## bathrooms 0.5175 0.1938   0.3739    1.0000  0.3262  0.1775
## stories   0.4207 0.0840   0.4086    0.3262  1.0000  0.0455
## parking   0.3844 0.3530   0.1393    0.1775  0.0455  1.0000
# Visualisasi correlation matrix
library(corrplot)
corrplot(corr_matrix, method = "color", type = "upper", 
         order = "hclust", tl.col = "black", tl.srt = 45,
         title = "Correlation Matrix of Housing Dataset")

# Eigenvalue dan Eigenvector dari matriks korelasi
eigen_corr <- eigen(corr_matrix)
cat("Eigenvalues dari Matriks Korelasi:")
## Eigenvalues dari Matriks Korelasi:
eigen_corr$values
## [1] 2.5561051 1.2171486 0.6771415 0.6566698 0.5908395 0.3020955

Interpretasi Hasil

Berdasarkan hasil analisis di atas, kita dapat menarik beberapa kesimpulan:

  1. Variance-Covariance Matrix:
    • Matriks ini menunjukkan varians (diagonal) untuk setiap variabel dan kovarians (elemen non-diagonal) antara pasangan variabel.
    • Varians yang tinggi mengindikasikan sebaran data yang lebar untuk variabel tersebut.
    • Kovarians positif menunjukkan bahwa dua variabel cenderung bergerak bersama, sementara kovarians negatif menunjukkan arah yang berlawanan.
  2. Eigenvalue dan Eigenvector:
    • Eigenvalue menunjukkan besarnya varians dalam arah yang ditentukan oleh eigenvector terkait.
    • Eigenvalue terbesar menunjukkan arah dengan variabilitas tertinggi dalam data.
    • Eigenvector memberikan informasi tentang arah variasi dalam data multidimensi kita.
  3. Correlation Matrix:
    • Korelasi berkisar antara -1 hingga 1, dengan 1 menunjukkan korelasi positif sempurna, -1 menunjukkan korelasi negatif sempurna, dan 0 menunjukkan tidak ada korelasi linear.
    • Dari matriks korelasi, kita dapat melihat kekuatan hubungan linear antara pasangan variabel.

Kesimpulan

Analisis multivariat pada dataset Housing memberikan wawasan tentang struktur dan hubungan antara variabel numerik. Eigenvalue dan eigenvector membantu kita memahami arah utama variasi dalam data, sementara matriks varians-kovarians dan korelasi menunjukkan hubungan antara pasangan variabel.