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 |
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 |
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 |
Mengubah numeric_data yang masih dalam bentuk data frame menjadi data dalam bentuk matriks untuk mempermudah perhitungan.
data_matrix <- as.matrix(numeric_data)
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.
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.
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.