Pendahuluan

Analisis ini menggunakan Housing Prices Dataset (https://www.kaggle.com/datasets/yasserh/housing-prices-dataset), yang mencakup detail properti seperti luas, jumlah kamar, perabotan, dan akses jalan. Tujuannya adalah untuk memahami hubungan antar variabel melalui analisis varians, kovarians, eigen values, eigen vectors dan korelasi. Hasil dari analisis ini akan memberikan wawasan untuk memprediksi harga rumah dengan lebih akurat.

Load Dataset

# Load dataset dari file csv
housing_data <- read.csv("Housing.csv", header = TRUE)
head(housing_data)
##      price area bedrooms bathrooms stories mainroad guestroom basement
## 1 13300000 7420        4         2       3      yes        no       no
## 2 12250000 8960        4         4       4      yes        no       no
## 3 12250000 9960        3         2       2      yes        no      yes
## 4 12215000 7500        4         2       2      yes        no      yes
## 5 11410000 7420        4         1       2      yes       yes      yes
## 6 10850000 7500        3         3       1      yes        no      yes
##   hotwaterheating airconditioning parking prefarea furnishingstatus
## 1              no             yes       2      yes        furnished
## 2              no             yes       3       no        furnished
## 3              no              no       2      yes   semi-furnished
## 4              no             yes       3      yes        furnished
## 5              no             yes       2       no        furnished
## 6              no             yes       2      yes   semi-furnished

Dataset ini terdiri dari 545 baris dan 13 variabel yang mencakup berbagai aspek properti, termasuk harga rumah, luas area, jumlah kamar tidur dan kamar mandi. Selain itu, dataset ini juga memuat fitur tambahan seperti akses ke jalan utama, kamar tamu, ruang bawah tanah, pemanas air, sistem pendingin udara, dan status perabotan rumah.

# Memeriksa nilai yang hilang dalam setiap kolom
colSums(is.na(housing_data))
##            price             area         bedrooms        bathrooms 
##                0                0                0                0 
##          stories         mainroad        guestroom         basement 
##                0                0                0                0 
##  hotwaterheating  airconditioning          parking         prefarea 
##                0                0                0                0 
## furnishingstatus 
##                0

Memilih Data untuk Analisis

# Memilih kolom numerik
numeric_data <- housing_data[sapply(housing_data, is.numeric)]
head(numeric_data)
##      price area bedrooms bathrooms stories parking
## 1 13300000 7420        4         2       3       2
## 2 12250000 8960        4         4       4       3
## 3 12250000 9960        3         2       2       2
## 4 12215000 7500        4         2       2       3
## 5 11410000 7420        4         1       2       2
## 6 10850000 7500        3         3       1       2

Dalam dataset Housing Prices, variabel-variabel numerik memiliki rentang nilai yang sangat bervariasi. Harga rumah mencapai nilai jutaan, luas area dalam ribuan, sedangkan jumlah bedrooms dan bathrooms relatif kecil. Perbedaan skala ini dapat menimbulkan masalah dalam analisis statistik, di mana variabel berskala besar berpotensi mendominasi perhitungan varians, kovarians, dan kinerja model machine learning. Oleh karena itu, standarisasi data menjadi langkah yang sangat penting untuk memastikan setiap variabel memberikan kontribusi yang proporsional dan menghindari bias dalam analisis.

numeric_data_scaled <- scale(numeric_data)
summary(numeric_data_scaled)
##      price              area            bedrooms          bathrooms      
##  Min.   :-1.6128   Min.   :-1.6130   Min.   :-2.66256   Min.   :-0.5697  
##  1st Qu.:-0.7147   1st Qu.:-0.7145   1st Qu.:-1.30766   1st Qu.:-0.5697  
##  Median :-0.2281   Median :-0.2537   Median : 0.04723   Median :-0.5697  
##  Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.00000   Mean   : 0.0000  
##  3rd Qu.: 0.5203   3rd Qu.: 0.5573   3rd Qu.: 0.04723   3rd Qu.: 1.4205  
##  Max.   : 4.5622   Max.   : 5.0916   Max.   : 4.11192   Max.   : 5.4008  
##     stories           parking       
##  Min.   :-0.9285   Min.   :-0.8050  
##  1st Qu.:-0.9285   1st Qu.:-0.8050  
##  Median : 0.2242   Median :-0.8050  
##  Mean   : 0.0000   Mean   : 0.0000  
##  3rd Qu.: 0.2242   3rd Qu.: 0.3556  
##  Max.   : 2.5297   Max.   : 2.6770

Menghitung Variance Covariance Matrix

# Menghitung Variance-Covariance Matrix
var_cov_matrix <- cov(numeric_data_scaled)

print("Variance-Covariance Matrix:")
## [1] "Variance-Covariance Matrix:"
print(var_cov_matrix)
##               price       area  bedrooms bathrooms    stories    parking
## price     1.0000000 0.53599735 0.3664940 0.5175453 0.42071237 0.38439365
## area      0.5359973 1.00000000 0.1518585 0.1938195 0.08399605 0.35298048
## bedrooms  0.3664940 0.15185849 1.0000000 0.3739302 0.40856424 0.13926990
## bathrooms 0.5175453 0.19381953 0.3739302 1.0000000 0.32616471 0.17749582
## stories   0.4207124 0.08399605 0.4085642 0.3261647 1.00000000 0.04554709
## parking   0.3843936 0.35298048 0.1392699 0.1774958 0.04554709 1.00000000

Menghitung Eigenvalues dan Eigenvectors

# Menghitung Eigenvalues dan Eigenvectors
eigen_result <- eigen(var_cov_matrix)
# Menampilkan Eigenvalues
eigen_values <- eigen_result$values

print("Eigenvalues:")
## [1] "Eigenvalues:"
print(eigen_values)  
## [1] 2.5561051 1.2171486 0.6771415 0.6566698 0.5908395 0.3020955
# Menampilkan Eigenvectors
eigen_vectors <- eigen_result$vectors

print("Eigenvectors:")
## [1] "Eigenvectors:"
print(eigen_vectors)  
##            [,1]       [,2]        [,3]        [,4]        [,5]        [,6]
## [1,] -0.5395439  0.1203486  0.24279104  0.04162299 -0.14135501  0.78342034
## [2,] -0.3685384  0.5178529  0.51575760 -0.22455991  0.31542421 -0.42436114
## [3,] -0.3915181 -0.3822393 -0.38949056 -0.24634216  0.69703170  0.04864311
## [4,] -0.4322131 -0.2116685  0.01788812  0.81460710 -0.03855905 -0.32093105
## [5,] -0.3682862 -0.4917297  0.12475034 -0.46684594 -0.55146176 -0.29146070
## [6,] -0.3119977  0.5335130 -0.71236303 -0.07500705 -0.29845646 -0.12592842

Menghitung Correlation Matrix

# Menghitung correlation matrix
cor_matrix <- cor(numeric_data)
print("Correlation Matrix:")
## [1] "Correlation Matrix:"
print(cor_matrix)
##               price       area  bedrooms bathrooms    stories    parking
## price     1.0000000 0.53599735 0.3664940 0.5175453 0.42071237 0.38439365
## area      0.5359973 1.00000000 0.1518585 0.1938195 0.08399605 0.35298048
## bedrooms  0.3664940 0.15185849 1.0000000 0.3739302 0.40856424 0.13926990
## bathrooms 0.5175453 0.19381953 0.3739302 1.0000000 0.32616471 0.17749582
## stories   0.4207124 0.08399605 0.4085642 0.3261647 1.00000000 0.04554709
## parking   0.3843936 0.35298048 0.1392699 0.1774958 0.04554709 1.00000000
# Mengatasi error repositori CRAN sebelum menginstal paket
options(repos = c(CRAN = "http://cran.us.r-project.org"))

# Instal dan muat paket corrplot jika belum terinstal
if (!require(corrplot)) {
    install.packages("corrplot")
    library(corrplot)
} else {
    library(corrplot)
}
## Loading required package: corrplot
## corrplot 0.95 loaded
corrplot(cor_matrix, method="color", type="full", 
         tl.col="black", tl.srt=45, addCoef.col="black")

Analisis Korelasi dan Kesimpulan

Analisis Korelasi : - area (0.54) dan bathrooms (0.52) memiliki korelasi cukup kuat dengan price, menunjukkan bahwa luas dan jumlah kamar mandi berpengaruh besar terhadap harga rumah. - bedrooms (0.37) dan parking (0.38) memiliki korelasi lebih lemah terhadap price. - stories (0.42) menunjukkan jumlah lantai memiliki korelasi sedang dengan harga rumah (price).

Kesimpulan : - Price memiliki varians tertinggi, menunjukkan variasi besar dalam harga rumah. - Kovarians positif antara area dan price menunjukkan bahwa rumah dengan area lebih luas cenderung lebih mahal. - Correlation Matrix memvisualisasikan hubungan variabel, dengan biru tua untuk korelasi positif kuat dan merah untuk negatif.