Berikut adalah analysis mengenai harga kendaraan bekas. Data ini berisi tentang informasi tahun, fitur dan status kepemilikan mobil pada saat dijual.
Pada kesempatan kali ini akan dilakukan proses regression model untuk
memprediski harga mobil bekas berdasarkan beberapa prediktor seperti
tahun, km, jenis bensin, transmisi serta informasi pemilik dan penjual
mobil bekas.
#> 'data.frame': 4340 obs. of 8 variables:
#> $ name : Factor w/ 1491 levels "Ambassador CLASSIC 1500 DSL AC",..: 774 1040 566 120 278 811 605 1257 391 833 ...
#> $ year : int 2007 2007 2012 2017 2014 2007 2016 2014 2015 2017 ...
#> $ selling_price: int 60000 135000 600000 250000 450000 140000 550000 240000 850000 365000 ...
#> $ km_driven : int 70000 50000 100000 46000 141000 125000 25000 60000 25000 78000 ...
#> $ fuel : Factor w/ 5 levels "CNG","Diesel",..: 5 5 2 5 2 5 5 5 5 1 ...
#> $ seller_type : Factor w/ 3 levels "Dealer","Individual",..: 2 2 2 2 2 2 2 2 2 2 ...
#> $ transmission : Factor w/ 2 levels "Automatic","Manual": 2 2 2 2 2 2 2 2 2 2 ...
#> $ owner : Factor w/ 5 levels "First Owner",..: 1 1 1 1 3 1 1 3 1 1 ...
Berikut ini informasi dari setiap kolom : name : nama mobil tahun : tahun produksi mobil selling_price : harga jual bekas km_driven : jarak tempuh yang sudah dilalui mobil fuel : tipe bahan bakan mobil seller type : type penjual mobil transmisi : Jenis transmisi mobil owner : pemilik keberapa mobil pada saat dijual
#> name year selling_price km_driven fuel
#> 0 0 0 0 0
#> seller_type transmission owner
#> 0 0 0
Tidak terdapat missing value dari setiap kolom
#> name year selling_price km_driven
#> Length:4340 Min. :1992 Min. : 20000 Min. : 1
#> Class :character 1st Qu.:2011 1st Qu.: 208750 1st Qu.: 35000
#> Mode :character Median :2014 Median : 350000 Median : 60000
#> Mean :2013 Mean : 504127 Mean : 66216
#> 3rd Qu.:2016 3rd Qu.: 600000 3rd Qu.: 90000
#> Max. :2020 Max. :8900000 Max. :806599
#> fuel seller_type transmission
#> CNG : 40 Dealer : 994 Automatic: 448
#> Diesel :2153 Individual :3244 Manual :3892
#> Electric: 1 Trustmark Dealer: 102
#> LPG : 23
#> Petrol :2123
#>
#> owner
#> First Owner :2832
#> Fourth & Above Owner: 81
#> Second Owner :1106
#> Test Drive Car : 17
#> Third Owner : 304
#>
Dari hasil Summary dapat diinformasikan beberapa hal sebagai berikut : - Harga mobil termahal adalah 8900000, rata-rata harga mobil 504127 - year tertua adalah 1992 dengan rata-rata mobil bekas yang terjual adalah tahun 2014
dikarenakan terdapat banyak type mobil yg terjual, yang mana setiap type mobil memiliki pola koefisien tersendiri dalam menentukan harga mobil, maka akan dipilih hanya untuk mobil terlaris
mobil terlaris yang terjual adalah Maruti Swift Dzire VDI, mari kita lakukan subsetting
Terdapat kolom yang hanya memiliki 1 class, kita take out terlebih dahulu
Sekarang mari kita buat kolom dummy pada kolom dengan type kategori menggunakan fungsi dummy_cols dari library fastDummies
library(fastDummies)
Dzire_dum <- dummy_columns(Dzire,select_columns = c("seller_type","owner"), remove_selected_columns = T, remove_most_frequent_dummy = T)
head(Dzire_dum)
Pertama mari kita coba membuat model dengan hanya menggunakan prediktor year, yang biasa dijadikan sebagai indikator pertama dalam menentukan harga kendaraan
#>
#> Call:
#> lm(formula = selling_price ~ year, data = Dzire_dum)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -253869 -25933 5195 54067 169067
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -114245637 11936689 -9.571 3.67e-14 ***
#> year 56936 5922 9.614 3.08e-14 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 91590 on 67 degrees of freedom
#> Multiple R-squared: 0.5797, Adjusted R-squared: 0.5735
#> F-statistic: 92.43 on 1 and 67 DF, p-value: 3.083e-14
Kita coba buat model lainnya dengan menggunakan semua prediktor dan dilakukan step backward untuk mendapatkan model terbaik
#> Start: AIC=1572.92
#> selling_price ~ year + km_driven + seller_type_Dealer + `seller_type_Trustmark Dealer` +
#> `owner_Second Owner` + `owner_Third Owner`
#>
#> Df Sum of Sq RSS AIC
#> - km_driven 1 1.2911e+08 4.4775e+11 1570.9
#> - `seller_type_Trustmark Dealer` 1 6.3651e+08 4.4825e+11 1571.0
#> <none> 4.4762e+11 1572.9
#> - `owner_Second Owner` 1 1.7399e+10 4.6502e+11 1573.6
#> - `owner_Third Owner` 1 3.0032e+10 4.7765e+11 1575.4
#> - seller_type_Dealer 1 3.8407e+10 4.8603e+11 1576.6
#> - year 1 4.4565e+11 8.9327e+11 1618.6
#>
#> Step: AIC=1570.94
#> selling_price ~ year + seller_type_Dealer + `seller_type_Trustmark Dealer` +
#> `owner_Second Owner` + `owner_Third Owner`
#>
#> Df Sum of Sq RSS AIC
#> - `seller_type_Trustmark Dealer` 1 6.0369e+08 4.4835e+11 1569.0
#> <none> 4.4775e+11 1570.9
#> - `owner_Second Owner` 1 1.7435e+10 4.6518e+11 1571.6
#> - `owner_Third Owner` 1 3.0865e+10 4.7861e+11 1573.5
#> - seller_type_Dealer 1 3.9344e+10 4.8709e+11 1574.8
#> - year 1 5.6114e+11 1.0089e+12 1625.0
#>
#> Step: AIC=1569.04
#> selling_price ~ year + seller_type_Dealer + `owner_Second Owner` +
#> `owner_Third Owner`
#>
#> Df Sum of Sq RSS AIC
#> <none> 4.4835e+11 1569.0
#> - `owner_Second Owner` 1 1.8915e+10 4.6727e+11 1569.9
#> - `owner_Third Owner` 1 3.2038e+10 4.8039e+11 1571.8
#> - seller_type_Dealer 1 3.8871e+10 4.8722e+11 1572.8
#> - year 1 5.9867e+11 1.0470e+12 1625.6
#>
#> Call:
#> lm(formula = selling_price ~ year + seller_type_Dealer + `owner_Second Owner` +
#> `owner_Third Owner`, data = Dzire_dum)
#>
#> Coefficients:
#> (Intercept) year seller_type_Dealer
#> -113431966 56532 64125
#> `owner_Second Owner` `owner_Third Owner`
#> -48925 -109685
#>
#> Call:
#> lm(formula = selling_price ~ ., data = Dzire_dum)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -201774 -23806 0 52845 172065
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -1.135e+08 1.453e+07 -7.815 8.28e-11 ***
#> year 5.657e+04 7.201e+03 7.857 7.02e-11 ***
#> km_driven 4.281e-02 3.201e-01 0.134 0.8940
#> seller_type_Dealer 6.644e+04 2.881e+04 2.306 0.0244 *
#> `seller_type_Trustmark Dealer` 9.065e+03 3.053e+04 0.297 0.7675
#> `owner_Second Owner` -4.831e+04 3.112e+04 -1.552 0.1257
#> `owner_Third Owner` -1.074e+05 5.266e+04 -2.040 0.0457 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 84970 on 62 degrees of freedom
#> Multiple R-squared: 0.6653, Adjusted R-squared: 0.6329
#> F-statistic: 20.54 on 6 and 62 DF, p-value: 4.439e-13
Berdasarkan hasil step_backward sebelumnya didapatkan model terbaik
dengan prediktor year
+ seller_type_Dealer
+
owner_Second Owner
+ owner_Third Owner
, coba
kita buat model tersebut dan melihat hasil summarynya
model3 <- lm(formula = selling_price ~ year + seller_type_Dealer + `owner_Second Owner` +
`owner_Third Owner`, data = Dzire_dum)
#>
#> Call:
#> lm(formula = selling_price ~ year + seller_type_Dealer + `owner_Second Owner` +
#> `owner_Third Owner`, data = Dzire_dum)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -204314 -24175 6228 49696 169293
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -113431966 12329911 -9.200 2.54e-13 ***
#> year 56532 6115 9.244 2.12e-13 ***
#> seller_type_Dealer 64125 27223 2.356 0.0216 *
#> `owner_Second Owner` -48925 29774 -1.643 0.1052
#> `owner_Third Owner` -109685 51290 -2.139 0.0363 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 83700 on 64 degrees of freedom
#> Multiple R-squared: 0.6647, Adjusted R-squared: 0.6438
#> F-statistic: 31.72 on 4 and 64 DF, p-value: 1.446e-14
Berdasarkan 3 model yang telah kita buat sebelumnya didapatkan nilai adjusted R-squared sebagai berikut model : 0.5735 model2 : 0.6329 model3 : 0.6438
Dari ketiga model diatas model dengan adj R-squared terbaik adalah model3
Di antara ketiga model tersebut, mana yang performanya paling bagus jika dihitung RMSE-nya?
#> [1] 61887.78
#> [1] 56190.76
#> [1] 57066.29
#> [1] 185000 800000
Berdasarkan hasil evaluasi MAE model terbaik dengan MAE terkecil adalah model2, selanjutnya kita akan mengecek apakah model yang dibuat memenuhi asumsi Linearity dan no multicolarity
* Plot fitted values vs residual membentuk pola acak. * Garis merah yang
terbentuk hampir mendekati bentuk garis lurus. * Dengan demikian,
model2
memenuhi asumsi linearity.
#> year km_driven
#> 1.717669 1.494566
#> seller_type_Dealer `seller_type_Trustmark Dealer`
#> 1.282620 1.193799
#> `owner_Second Owner` `owner_Third Owner`
#> 1.240136 1.102115
VIF untuk semua prediktor < 10, maka model2
memenuhi
asumsi no multicolinearity.
Dalam melakukan prediksi data harga jual kendaraan bekas pada data ini masih dapat menggunakan model regresi linear dikarenakan masih memenuhi asumsi linearity dan no multicolinearity
Berdasarkan nilai Adjusted R-Squared model terbaik merupakan
model2 dengan prediktor year
+
seller_type_Dealer
+ owner_Second Owner
+
owner_Third Owner
Hasil Evaluasi terbaik berdasarkan perhitungan MAE adalah pada model3 yang menggunakan semua prediktor
Dalam membuat model untuk mendapatkan prediksi harga jual mobil yang lebih baik dapat menggunakan model lain yang lebih kompleks