Informasi Dataset

Dataset yang digunakan adalah “Housing Prices Dataset” yang terdiri dari 545 data dengan 13 variabel. Untuk melihat dataset lebih lanjut klik disini

Variabel Deskripsi Tipe_Data
price Harga properti dalam US dollar Numerik
area Luas rumah dalam square feet Numerik
bedrooms Jumlah kamar tidur Numerik
bathrooms Jumlah kamar mandi Numerik
stories Jumlah lantai dalam rumah Numerik
mainroad Apakah rumah terletak di jalan utama (yes/no) Kategorikal
guestroom Apakah ada kamar tamu (yes/no) Kategorikal
basement Apakah rumah memiliki basement (yes/no) Kategorikal
hotwaterheating Apakah rumah memiliki pemanas air (yes/no) Kategorikal
airconditioning Apakah rumah memiliki AC (yes/no) Kategorikal
parking Jumlah tempat parkir yang tersedia Numerik
prefarea Apakah rumah berada di area yang diinginkan (yes/no) Kategorikal
furnishingstatus Status perabotan rumah (furnished/semi-furnished/unfurnished) Kategorikal

Load dataset

data <- read.csv("Housing.csv")
# Show the first few rows
knitr::kable(head(data))
price area bedrooms bathrooms stories mainroad guestroom basement hotwaterheating airconditioning parking prefarea furnishingstatus
13300000 7420 4 2 3 yes no no no yes 2 yes furnished
12250000 8960 4 4 4 yes no no no yes 3 no furnished
12250000 9960 3 2 2 yes no yes no no 2 yes semi-furnished
12215000 7500 4 2 2 yes no yes no yes 3 yes furnished
11410000 7420 4 1 2 yes yes yes no yes 2 no furnished
10850000 7500 3 3 1 yes no yes no yes 2 yes semi-furnished

Filter Dataset

Mengambil kolom variabel yang bertipe data numerik untuk mempermudah analisis data seperti mengetahui variance dan covariance data, matriks korelasi, serta nilai eigen dan vektor eigen.

# 2. Menggunakan kolom numerik
numeric_data <- data[sapply(data, is.numeric)]
# Show the first few rows
knitr::kable(head(numeric_data))
price area bedrooms bathrooms stories parking
13300000 7420 4 2 3 2
12250000 8960 4 4 4 3
12250000 9960 3 2 2 2
12215000 7500 4 2 2 3
11410000 7420 4 1 2 2
10850000 7500 3 3 1 2

Mengkonversi data ke bentuk matriks

Mengubah numeric_data yang masih dalam bentuk data frame menjadi data dalam bentuk matriks untuk mempermudah perhitungan.

data_matrix <- as.matrix(numeric_data)

Menghitung variance dan covariance

Nilai variance dan covariance berfungsi berfungsi untuk mengetahui penyebaran data. Variance menghitung persebaran didalam suatu variabel itu sendiri (seberapa jauh nilai dari rata-rata). Semakin besar variance, maka semakin besar jarak nilai dalam suatu variabel

var(data_matrix)
##                  price         area     bedrooms    bathrooms      stories
## price     3.498544e+12 2.175676e+09 5.059464e+05 4.864093e+05 6.826446e+05
## area      2.175676e+09 4.709512e+06 2.432321e+02 2.113466e+02 1.581294e+02
## bedrooms  5.059464e+05 2.432321e+02 5.447383e-01 1.386738e-01 2.615893e-01
## bathrooms 4.864093e+05 2.113466e+02 1.386738e-01 2.524757e-01 1.421715e-01
## stories   6.826446e+05 1.581294e+02 2.615893e-01 1.421715e-01 7.525432e-01
## parking   6.194673e+05 6.599897e+02 8.856247e-02 7.684161e-02 3.404277e-02
##                parking
## price     6.194673e+05
## area      6.599897e+02
## bedrooms  8.856247e-02
## bathrooms 7.684161e-02
## stories   3.404277e-02
## parking   7.423300e-01

Dari hasil ini, variabel area memiliki varians yang sangat besar (4.709512e+06), menunjukkan bahwa jarak antar nilai-nilai dalam variabel area tersebar lebih luas dibandingkan variabel lain seperti variabel parking (7.423300e-02) yang memiliki varians sangat kecil.

Kovarians antara variabel price dan variabel area adalah 2.175676e+09, menunjukkan hubungan positif yang kuat (ketika luas area bertambah, harga juga meningkat). Hubungan antara price dan area sangat kuat, yang masuk akal karena harga properti biasanya berkorelasi positif dengan luas tanah atau bangunan.

Variabel seperti parking memiliki varians dan kovarians yang kecil, menunjukkan bahwa nilai-nilainya tidak terlalu bervariasi atau tidak terlalu berhubungan dengan variabel lain.

Correlation Matrix

library(corrplot)
## corrplot 0.95 loaded
cor_matrix <- cor(data_matrix)
corrplot(cor_matrix, method="color", type="lower", col=colorRampPalette(c("blue","white","red"))(200), addCoef.col = "black", tl.col = "black", tl.srt = 45, number.cex = 0.7)

Dari hasil ini, terlihat bahwa harga (price) memiliki korelasi tertinggi dengan luas area (0.54) dan jumlah kamar mandi (0.52), yang berarti semakin besar luas tanah atau semakin banyak kamar mandi, semakin tinggi harga rumah.

Selain itu, terdapat beberapa hubungan positif lainnya dalam data ini, seperti antara jumlah kamar tidur dan jumlah lantai (0.41), serta jumlah kamar tidur dan kamar mandi (0.37), yang menunjukkan bahwa rumah dengan lebih banyak kamar tidur cenderung memiliki lebih banyak lantai dan kamar mandi.

Secara keseluruhan, matriks ini mengindikasikan bahwa harga rumah lebih dipengaruhi oleh luas tanah dan jumlah kamar mandi dibandingkan fitur lainnya, sementara fitur seperti jumlah lantai dan tempat parkir memiliki pengaruh yang lebih kecil.

Eigen Matrix dan Eigen Value

Nilai eigen menunjukkan berapa banyak informasi (varians) yang dijelaskan oleh masing-masing komponen utama. Setiap kolom pada matriks eigenvectors menunjukkan bobot kontribusi masing-masing variabel dalam membentuk komponen utama.

eigen(cor(data_matrix))
## eigen() decomposition
## $values
## [1] 2.5561051 1.2171486 0.6771415 0.6566698 0.5908395 0.3020955
## 
## $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

Nilai eigen terbesar, 2.5561, menunjukkan bahwa komponen pertama menjelaskan bagian terbesar dari variasi dalam data, diikuti oleh komponen kedua dengan nilai 1.2171 dan seterusnya hingga komponen keenam dengan nilai 0.3021, yang memiliki kontribusi paling kecil. Nilai-nilai ini membantu dalam menentukan jumlah komponen utama yang optimal jika digunakan dalam Principal Component Analysis (PCA). komponen dengan nilai eigen yang sangat kecil dapat diabaikan untuk menyederhanakan data tanpa kehilangan terlalu banyak informasi.