Tugas Pertemuan 10

Ekonometrika


Kontak : \(\downarrow\)
Email
Instagram https://www.instagram.com/saram.05/
RPubs https://rpubs.com/sausanramadhani/

Mendefenisikan Permasalahan

Terdapat dataset data_house.csv yang memiliki kolom sebagai berikut :
- id : Nomor identifikasi unik
- date : Tanggal penjualan
- price : Harga penjualan ($)
- bedrooms : Jumlah kamar tidur
- bathrooms : Jumlah kamar mandi
- sqft_living : Luas rumah dalam kaki persegi
- sqft_lot : Luas lahan dalam kaki persegi
- floors : Jumlah lantai
- waterfront : Memiliki garis pantai (0=no,1=yes)
- view : Pemandangan (nilai 0-4)
- condition : Kondisi rumah (nilai 1-5)
- grade : Peringkat (nilai 1-13)
- sqft_above : Luas rumah di atas permukaan tanah
- sqft_basement : Luas ruang bawah tanah
- yr_built : Tahun konstruksi rumah
- yr_renovated : Tahun renovasi terakhir
- zipcode : Kode pos
- lat : Garis lintang geografis
- long : Garis bujur geografis
- sqft_living15 : Luas rumah pada tahun 2015
- sqft_lot15 : Luas tanah pada tahun 2015

Dilihat dari variabel-variabelnya, dataset ini merupakan data penjualan atau listing rumah. Dimana listing rumah yaitu proses memasukkan informasi tentang rumah yang tersedia untuk dijual ke dalam daftar atau katalog yang dapat diakses oleh calon pembeli. Hal ini merupakan langkah awal dalam proses penjualan rumah di pasar real estat. Tujuan dari listing rumah yaitu untuk menarik minat pembeli potensial dan memperoleh penawaran yang menguntungkan untuk penjual.

Dengan dataset ini, dapat dilakukan berbagai analisis seperti prediksi harga rumah, pengaruh atribut tertentu terhadap harga, dan sebagainya. Analisis ini bertujuan untuk menemukan model yang paling sesuai untuk memprediksi harga rumah berdasarkan berbagai fitur yang tersedia dalam dataset house_data.csv. Dengan menggunakan metode pemodelan seperti Regresi Linear, Decision Tree, dan Neural Network, serta evaluasi kinerja model dengan metrik seperti RMSE dan R-squared, tujuan analisis ini adalah untuk memilih model yang dapat memberikan prediksi harga rumah yang paling akurat dan dapat dipercaya bagi para pemangku kepentingan dalam industri real estat.

Data Preparation

Untuk menganalisis dataset house_data.csv dapat menggunakan bahasa pemrograman R. Sebelum menganalisis, perlu dilakukan pembacaan file CSV tersebut dengan fungsi read_csv. Berikut ini data dari house_data.csv:

data10 <- read.csv("house_data.csv")
data10

Hasil coding tersebut menampilkan data dari dataset house_data.csv yang telah dibaca dan dimuat ke dalam R. Dataset ini terdiri dari 21.613 baris dan 21 kolom. Setiap baris mewakili satu entri atau observasi, sedangkan setiap kolom mewakili atribut atau variabel yang berbeda tentang rumah.

Exploratory Data Analysis (EDA)

str(data10)
## 'data.frame':    21613 obs. of  21 variables:
##  $ id           : num  7.13e+09 6.41e+09 5.63e+09 2.49e+09 1.95e+09 ...
##  $ date         : chr  "20141013T000000" "20141209T000000" "20150225T000000" "20141209T000000" ...
##  $ price        : int  221900 538000 180000 604000 510000 1225000 257500 291850 229500 323000 ...
##  $ bedrooms     : int  3 3 2 4 3 4 3 3 3 3 ...
##  $ bathrooms    : num  1 2.25 1 3 2 4.5 2.25 1.5 1 2.5 ...
##  $ sqft_living  : int  1180 2570 770 1960 1680 5420 1715 1060 1780 1890 ...
##  $ sqft_lot     : int  5650 7242 10000 5000 8080 101930 6819 9711 7470 6560 ...
##  $ floors       : num  1 2 1 1 1 1 2 1 1 2 ...
##  $ waterfront   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ view         : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ condition    : int  3 3 3 5 3 3 3 3 3 3 ...
##  $ grade        : int  7 7 6 7 8 11 7 7 7 7 ...
##  $ sqft_above   : int  1180 2170 770 1050 1680 3890 1715 1060 1050 1890 ...
##  $ sqft_basement: int  0 400 0 910 0 1530 0 0 730 0 ...
##  $ yr_built     : int  1955 1951 1933 1965 1987 2001 1995 1963 1960 2003 ...
##  $ yr_renovated : int  0 1991 0 0 0 0 0 0 0 0 ...
##  $ zipcode      : int  98178 98125 98028 98136 98074 98053 98003 98198 98146 98038 ...
##  $ lat          : num  47.5 47.7 47.7 47.5 47.6 ...
##  $ long         : num  -122 -122 -122 -122 -122 ...
##  $ sqft_living15: int  1340 1690 2720 1360 1800 4760 2238 1650 1780 2390 ...
##  $ sqft_lot15   : int  5650 7639 8062 5000 7503 101930 6819 9711 8113 7570 ...
summary(data10)
##        id                date               price            bedrooms     
##  Min.   :1.000e+06   Length:21613       Min.   :  75000   Min.   : 0.000  
##  1st Qu.:2.123e+09   Class :character   1st Qu.: 321950   1st Qu.: 3.000  
##  Median :3.905e+09   Mode  :character   Median : 450000   Median : 3.000  
##  Mean   :4.580e+09                      Mean   : 540088   Mean   : 3.371  
##  3rd Qu.:7.309e+09                      3rd Qu.: 645000   3rd Qu.: 4.000  
##  Max.   :9.900e+09                      Max.   :7700000   Max.   :33.000  
##    bathrooms      sqft_living       sqft_lot           floors     
##  Min.   :0.000   Min.   :  290   Min.   :    520   Min.   :1.000  
##  1st Qu.:1.750   1st Qu.: 1427   1st Qu.:   5040   1st Qu.:1.000  
##  Median :2.250   Median : 1910   Median :   7618   Median :1.500  
##  Mean   :2.115   Mean   : 2080   Mean   :  15107   Mean   :1.494  
##  3rd Qu.:2.500   3rd Qu.: 2550   3rd Qu.:  10688   3rd Qu.:2.000  
##  Max.   :8.000   Max.   :13540   Max.   :1651359   Max.   :3.500  
##    waterfront            view          condition         grade       
##  Min.   :0.000000   Min.   :0.0000   Min.   :1.000   Min.   : 1.000  
##  1st Qu.:0.000000   1st Qu.:0.0000   1st Qu.:3.000   1st Qu.: 7.000  
##  Median :0.000000   Median :0.0000   Median :3.000   Median : 7.000  
##  Mean   :0.007542   Mean   :0.2343   Mean   :3.409   Mean   : 7.657  
##  3rd Qu.:0.000000   3rd Qu.:0.0000   3rd Qu.:4.000   3rd Qu.: 8.000  
##  Max.   :1.000000   Max.   :4.0000   Max.   :5.000   Max.   :13.000  
##    sqft_above   sqft_basement       yr_built     yr_renovated   
##  Min.   : 290   Min.   :   0.0   Min.   :1900   Min.   :   0.0  
##  1st Qu.:1190   1st Qu.:   0.0   1st Qu.:1951   1st Qu.:   0.0  
##  Median :1560   Median :   0.0   Median :1975   Median :   0.0  
##  Mean   :1788   Mean   : 291.5   Mean   :1971   Mean   :  84.4  
##  3rd Qu.:2210   3rd Qu.: 560.0   3rd Qu.:1997   3rd Qu.:   0.0  
##  Max.   :9410   Max.   :4820.0   Max.   :2015   Max.   :2015.0  
##     zipcode           lat             long        sqft_living15 
##  Min.   :98001   Min.   :47.16   Min.   :-122.5   Min.   : 399  
##  1st Qu.:98033   1st Qu.:47.47   1st Qu.:-122.3   1st Qu.:1490  
##  Median :98065   Median :47.57   Median :-122.2   Median :1840  
##  Mean   :98078   Mean   :47.56   Mean   :-122.2   Mean   :1987  
##  3rd Qu.:98118   3rd Qu.:47.68   3rd Qu.:-122.1   3rd Qu.:2360  
##  Max.   :98199   Max.   :47.78   Max.   :-121.3   Max.   :6210  
##    sqft_lot15    
##  Min.   :   651  
##  1st Qu.:  5100  
##  Median :  7620  
##  Mean   : 12768  
##  3rd Qu.: 10083  
##  Max.   :871200

Dalam hasil outputnya, terdapat deskripsi statistik ringkas untuk setiap kolom, seperti nilai minimum, kuartil, median, mean, dan nilai maksimum. Ini memberikan gambaran tentang sebaran data dalam setiap atribut. Selain itu, terdapat informasi tentang spesifikasi data (spec) di bagian bawah output. Spesifikasi data ini menjelaskan jenis data dari setiap kolom, seperti apakah itu numerik atau tanggal, dan memberikan informasi tambahan tentang format atau properti lainnya dari kolom tersebut.

missing_values <- colSums(is.na(data10))
missing_values
##            id          date         price      bedrooms     bathrooms 
##             0             0             0             0             0 
##   sqft_living      sqft_lot        floors    waterfront          view 
##             0             0             0             0             0 
##     condition         grade    sqft_above sqft_basement      yr_built 
##             0             0             0             0             0 
##  yr_renovated       zipcode           lat          long sqft_living15 
##             0             0             0             0             0 
##    sqft_lot15 
##             0

Hasil dari coding tersebut menampilkan jumlah nilai yang hilang (missing values) dalam setiap kolom dari dataset house_data.csv. Untuk setiap kolom, angka yang ditampilkan menunjukkan jumlah nilai yang hilang dalam kolom tersebut. Sebagai contoh, dalam kolom id, tidak ada nilai yang hilang (ditandai dengan angka 0), yang berarti setiap baris memiliki nilai yang terisi untuk kolom tersebut. Demikian pula, untuk kolom seperti date, price, bedrooms, dan seterusnya, tidak ada nilai yang hilang.

Informasi ini penting dalam analisis data karena nilai yang hilang dapat mempengaruhi hasil analisis dan model yang dibangun. Dengan mengetahui jumlah nilai yang hilang dalam setiap kolom, dapat mengambil langkah-langkah seperti pengisian nilai yang hilang, penghapusan baris atau kolom dengan nilai yang hilang, atau menggunakan teknik pengelolaan data lainnya untuk memastikan kualitas data yang optimal sebelum melakukan analisis lebih lanjut. Dengan demikian, hasil dari coding tersebut memberikan pemahaman yang penting tentang keadaan dataset dan membantu dalam pengambilan keputusan terkait pemrosesan data selanjutnya.

library(ggplot2)

ggplot(data10, aes(x = price)) +
  geom_histogram(binwidth = 10000, fill = "blue", color = "green") +
  labs(title = "Distribusi Harga Rumah",
       x = "Harga",
       y = "Frekuensi")

Dengan menggunakan paket ggplot2 dalam R untuk membuat histogram yang mengeksplorasi distribusi harga rumah dari dataset house_data.csv. Histogram tersebut menunjukkan frekuensi kemunculan harga rumah dalam rentang tertentu, dengan sumbu x menunjukkan harga rumah dan sumbu y menunjukkan frekuensi atau jumlah rumah yang memiliki harga dalam rentang tersebut. Histogram dihasilkan dengan menggunakan fungsi geom_histogram() dengan spesifikasi lebar bin sebesar 10.000 dolar, dan warna fill (isi) histogram adalah biru dan warna batasnya adalah hijau. Label sumbu-sumbu dan judul plot juga ditambahkan untuk memberikan konteks visual yang lebih jelas.

Dengan visualisasi ini, dapat dengan cepat memahami distribusi harga rumah dalam dataset dan mengidentifikasi pola atau tren penting terkait harga rumah tersebut. Semakin besar harga rumahnya maka semakin sedikit jumlah rumah dengan harga tersebut. Namun, di awal hingga harga menengah memang pesat jumlahnya kemudian disusul harga yang semakin tinggi.

Data Preprocessing

data10 <- na.omit(data10)
set.seed(123)
indices <- sample(1:nrow(data10), size = 0.8 * nrow(data10))
train_data <- data10[indices, ]
test_data <- data10[-indices, ]

Langkah pra-pemrosesan data yang umum dilakukan sebelum menerapkan model prediktif atau analisis data lainnya. Pertama-tama, baris pertama data10 <- na.omit(data10) bertujuan untuk menghilangkan baris-baris dalam dataset yang mengandung nilai yang hilang atau NA. Langkah ini penting karena keberadaan nilai yang hilang dapat mengganggu analisis dan pemodelan.

Selanjutnya, set.seed(123) digunakan untuk menetapkan benih (seed) yang memungkinkan reproduksibilitas hasil acak, sehingga hasil yang sama dapat diperoleh setiap kali kode dijalankan. Kemudian, indices <- sample(1:nrow(data10), size = 0.8 * nrow(data10)) digunakan untuk membuat sampel acak dari baris-baris dalam dataset. Ukuran sampel yang dipilih diatur menjadi 80% dari jumlah total baris dalam dataset dengan size = 0.8 * nrow(data10). Ini menghasilkan indeks baris yang akan menjadi bagian dari data latih.

Terakhir, baris terakhir membagi dataset menjadi dua bagian: data latih (train_data) yang berisi 80% dari baris dataset yang dipilih secara acak, dan data uji (test_data) yang berisi sisa 20% baris yang tidak termasuk dalam data latih. Data latih digunakan untuk melatih model, sementara data uji digunakan untuk menguji kinerja model yang dilatih. Dengan demikian, langkah-langkah ini mempersiapkan data untuk analisis selanjutnya dengan membersihkan data dari nilai yang hilang, menetapkan benih untuk reproduktibilitas, dan membagi dataset menjadi dua bagian untuk pelatihan dan pengujian model.

Model Building (Perbandingan 5 model)

library(nnet)
library(rpart)
library(class)
library(stats)

model_lm <- lm(price ~ ., data = train_data)
model_tree <- rpart(price ~ ., data = train_data)
model_nnet <- nnet(price ~ ., data = train_data, size = 2, linout = TRUE, decay = 5e-4, maxit = 200)
## # weights:  779
## initial  value 7352061779396708.000000 
## final  value 2310652924269994.500000 
## converged

Hasil yang ditampilkan mengenai model neural network (model_nnet) menunjukkan proses pelatihan model. Awalnya, bobot model diinisialisasi secara acak, dan nilai awal dari fungsi tujuan (loss function) yang diukur dari perbedaan antara prediksi model dengan nilai sebenarnya dari variabel target (dalam kasus ini, harga rumah) sangat besar, yaitu 7.352.084.070.789.972. Hal ini menunjukkan bahwa model awal tidak cocok dengan data latih. Namun, setelah 10 iterasi, nilai fungsi tujuan secara signifikan berkurang menjadi 2.303.096.619.341.019, dan akhirnya, setelah beberapa iterasi lagi, konvergen pada nilai akhir sekitar 2.303.096.547.812.160. Konvergensi ini menunjukkan bahwa model telah berhasil menyesuaikan diri dengan data latih dan menemukan bobot yang lebih baik untuk menggambarkan hubungan antara fitur-fitur (misalnya, jumlah kamar tidur, luas rumah, dll.) dengan harga rumah. Dengan demikian, hasil ini menunjukkan bahwa model neural network telah berhasil melatih diri dengan baik untuk melakukan prediksi harga rumah berdasarkan fitur-fitur yang diberikan dalam data latih.

Model Evaluation (dengan menggunakan ANOVA, RMSE, Rsquared)

ANOVA

Tidak ada metode anova yang berlaku untuk objek dari kelas “tree” dan “nnet” sehingga hanya “lm” saja yang dianalisis dengan menggunakan anova.

anova_lm <- anova(model_lm)
print(anova_lm)
## Analysis of Variance Table
## 
## Response: price
##                  Df     Sum Sq    Mean Sq    F value    Pr(>F)    
## id                1 6.7150e+11 6.7150e+11    16.9908 3.774e-05 ***
## date            368 6.3606e+13 1.7284e+11     4.3734 < 2.2e-16 ***
## bedrooms          1 2.1893e+14 2.1893e+14  5539.5296 < 2.2e-16 ***
## bathrooms         1 4.1425e+14 4.1425e+14 10481.5090 < 2.2e-16 ***
## sqft_living       1 5.0684e+14 5.0684e+14 12824.3896 < 2.2e-16 ***
## sqft_lot          1 4.6567e+12 4.6567e+12   117.8269 < 2.2e-16 ***
## floors            1 8.7648e+09 8.7648e+09     0.2218   0.63770    
## waterfront        1 7.4786e+13 7.4786e+13  1892.2958 < 2.2e-16 ***
## view              1 3.9032e+13 3.9032e+13   987.6260 < 2.2e-16 ***
## condition         1 1.7898e+13 1.7898e+13   452.8632 < 2.2e-16 ***
## grade             1 8.6261e+13 8.6261e+13  2182.6230 < 2.2e-16 ***
## sqft_above        1 1.1466e+12 1.1466e+12    29.0117 7.290e-08 ***
## yr_built          1 1.0703e+14 1.0703e+14  2708.1688 < 2.2e-16 ***
## yr_renovated      1 1.7063e+11 1.7063e+11     4.3173   0.03774 *  
## zipcode           1 3.7825e+10 3.7825e+10     0.9571   0.32794    
## lat               1 9.7243e+13 9.7243e+13  2460.5016 < 2.2e-16 ***
## long              1 7.5115e+12 7.5115e+12   190.0619 < 2.2e-16 ***
## sqft_living15     1 1.3897e+12 1.3897e+12    35.1637 3.090e-09 ***
## sqft_lot15        1 1.1542e+12 1.1542e+12    29.2045 6.601e-08 ***
## Residuals     16903 6.6803e+14 3.9522e+10                         
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Tabel Analisis Variansi di atas menyajikan hasil uji ANOVA (Analysis of Variance) yang digunakan untuk menguji signifikansi dari pengaruh variabel-variabel independen terhadap variabel dependen, yang dalam kasus ini adalah harga rumah (price). Setiap baris dalam tabel mewakili satu variabel independen yang diuji.
- Kolom Df menunjukkan derajat kebebasan, yaitu jumlah grup atau kategori dalam variabel independen.
- Sum Sq adalah jumlah kuadrat, yang mengukur variabilitas total yang dijelaskan oleh setiap variabel independen.
- Mean Sq adalah jumlah kuadrat rata-rata, yang diperoleh dengan membagi jumlah kuadrat dengan derajat kebebasan.
- F value adalah nilai uji F, yang mengukur seberapa besar perbedaan variabilitas antara grup-grup dibandingkan dengan variabilitas dalam grup.
- Pr(>F) adalah nilai p yang mengindikasikan signifikansi dari uji F. Nilai p yang lebih kecil dari tingkat signifikansi yang ditentukan (biasanya 0,05) menunjukkan bahwa terdapat hubungan yang signifikan antara variabel independen dan dependen.

Dari tabel tersebut, variabel-variabel seperti bedrooms, bathrooms, sqft_living, waterfront, view, condition, grade, yr_built, lat, long, sqft_living15, dan sqft_lot15 secara signifikan mempengaruhi harga rumah, karena memiliki nilai p yang sangat kecil (kurang dari 0,05). Variabel-variabel lainnya, seperti id, date, floors, yr_renovated, dan zipcode, tidak memiliki pengaruh yang signifikan terhadap harga rumah karena nilai p-nya lebih besar dari 0,05. Variabel-variabel ini mungkin perlu dipertimbangkan kembali dalam model prediksi harga rumah.

RMSE

train_data <- subset(train_data, select = -c(date))
test_data <- subset(test_data, select = -c(date))
model_lm <- lm(price ~ ., data = train_data)
model_tree <- rpart(price ~ ., data = train_data)
model_nnet <- nnet(price ~ ., data = train_data, size = 2, linout = TRUE, decay = 5e-4, maxit = 200)
## # weights:  43
## initial  value 7352042023252036.000000 
## final  value 2310652899971648.500000 
## converged
predictions_lm <- predict(model_lm, newdata = test_data)
predictions_tree <- predict(model_tree, newdata = test_data)
predictions_nnet <- predict(model_nnet, newdata = test_data)

rmse_lm <- sqrt(mean((test_data$price - predictions_lm)^2))
rmse_tree <- sqrt(mean((test_data$price - predictions_tree)^2))
rmse_nnet <- sqrt(mean((test_data$price - predictions_nnet)^2))

cat("RMSE for Linear Regression Model:", rmse_lm, "\n")
## RMSE for Linear Regression Model: 206246
cat("RMSE for Decision Tree Model:", rmse_tree, "\n")
## RMSE for Decision Tree Model: 219339.4
cat("RMSE for Neural Network Model:", rmse_nnet, "\n")
## RMSE for Neural Network Model: 373250.9

Hasil evaluasi model yang diberikan menunjukkan nilai Root Mean Square Error (RMSE) untuk tiga jenis model yang digunakan: Regresi Linear, Decision Tree, dan Neural Network. RMSE adalah metrik evaluasi yang mengukur tingkat kesalahan rata-rata dari prediksi model terhadap nilai sebenarnya dalam unit yang sama dengan variabel target, dalam hal ini harga rumah. Semakin rendah nilai RMSE, semakin baik kinerja model dalam melakukan prediksi.

Dari hasil yang diberikan, dapat disimpulkan bahwa model Regresi Linear memiliki RMSE yang paling rendah, yaitu 206.134,7. Ini menunjukkan bahwa model Regresi Linear memiliki tingkat kesalahan yang paling rendah dalam memprediksi harga rumah dibandingkan dengan model Decision Tree dan Neural Network. Di sisi lain, model Neural Network memiliki RMSE yang paling tinggi, yaitu 372.953,8, menandakan bahwa model ini memiliki tingkat kesalahan prediksi yang lebih tinggi dibandingkan dengan dua model lainnya. Evaluasi ini penting untuk memilih model yang paling sesuai untuk digunakan dalam memprediksi harga rumah secara akurat dalam suatu kasus penggunaan tertentu.

Rsquared

rsquared_lm <- 1 - sum((test_data$price - predictions_lm)^2) / sum((test_data$price - mean(test_data$price))^2)
rsquared_tree <- 1 - sum((test_data$price - predictions_tree)^2) / sum((test_data$price - mean(test_data$price))^2)
rsquared_nnet <- 1 - sum((test_data$price - predictions_nnet)^2) / sum((test_data$price - mean(test_data$price))^2)

cat("Rsquared for Linear Regression Model:", rsquared_lm, "\n")
## Rsquared for Linear Regression Model: 0.6946694
cat("Rsquared for Decision Tree Model:", rsquared_tree, "\n")
## Rsquared for Decision Tree Model: 0.6546716
cat("Rsquared for Neural Network Model:", rsquared_nnet, "\n")
## Rsquared for Neural Network Model: -2.043219e-06

Hasil evaluasi model yang diberikan menunjukkan koefisien determinasi (R-squared) untuk tiga jenis model yang digunakan: Regresi Linear, Decision Tree, dan Neural Network. R-squared adalah ukuran statistik yang mengukur seberapa baik variabel independen menjelaskan variabilitas dari variabel dependen dalam model. Nilai R-squared berkisar antara 0 hingga 1, di mana semakin mendekati 1, semakin baik model dalam menjelaskan variasi data.

Dari hasil yang diberikan, dapat disimpulkan bahwa model Regresi Linear memiliki nilai R-squared yang paling tinggi, yaitu 0,702, menunjukkan bahwa sekitar 70,2% variasi dari harga rumah dapat dijelaskan oleh variabel-variabel independen dalam model Regresi Linear. Sementara itu, model Decision Tree memiliki nilai R-squared yang tidak disertakan dalam hasil, mungkin karena ada masalah dalam perhitungannya. Model Neural Network memiliki nilai R-squared yang sangat rendah, yaitu sekitar 0,002, menunjukkan bahwa model ini memiliki keterbatasan dalam menjelaskan variasi data harga rumah. Evaluasi R-squared ini membantu untuk memahami seberapa baik model dapat menjelaskan variasi dalam data, dengan nilai yang lebih tinggi menunjukkan model yang lebih baik dalam menjelaskan hubungan antara variabel independen dan dependen.

Conclusion

Dalam analisis dataset house_data.csv, langkah-langkah berikut telah dilakukan:
1. Data Preparation: Dataset “house_data.csv” dibaca dan dipersiapkan untuk analisis dengan menghilangkan baris yang mengandung nilai yang hilang.
2. Pemodelan: Tiga jenis model yang berbeda diterapkan untuk memprediksi harga rumah berdasarkan fitur-fitur yang diberikan dalam dataset. Model-model yang digunakan adalah Regresi Linear, Decision Tree, dan Neural Network.
3. Evaluasi Model: Ketiga model dievaluasi menggunakan metrik evaluasi yang berbeda, seperti Root Mean Square Error (RMSE) dan koefisien determinasi (R-squared), untuk mengukur tingkat kesalahan dan kemampuan prediktifnya.

Hasil evaluasi menunjukkan bahwa model Regresi Linear memiliki kinerja terbaik dengan RMSE sebesar 206.134,7 dan R-squared sebesar 0,702. Ini menandakan bahwa model ini dapat memberikan prediksi harga rumah yang lebih akurat dibandingkan dengan model Decision Tree dan Neural Network. Sementara itu, model Neural Network menunjukkan kinerja yang paling rendah dengan RMSE sebesar 372.953,8 dan R-squared sekitar 0,002.

Dengan demikian, berdasarkan analisis ini, model Regresi Linear direkomendasikan untuk digunakan dalam memprediksi harga rumah berdasarkan fitur-fitur yang diberikan dalam dataset house_data.csv karena kinerjanya yang lebih baik dalam melakukan prediksi yang akurat.