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 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 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
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
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
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 : - 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.