ataset Car Evaluation digunakan untuk menilai kelayakan mobil berdasarkan enam atribut utama: harga beli (buying), biaya perawatan (maint), jumlah pintu (doors), kapasitas penumpang (persons), ukuran bagasi (lug_boot), dan tingkat keamanan (safety). Target dari dataset ini adalah variabel CAR, yang berisi kategori penilaian mobil: unacc, acc, good, dan vgood, sehingga cocok untuk multinomial yang lebih dari 2 kategori
colnames(dataset) <- c("buying", "maint", "doors", "persons", "lug_boot", "safety", "CAR")
str(dataset)
## 'data.frame': 1727 obs. of 7 variables:
## $ buying : chr "vhigh" "vhigh" "vhigh" "vhigh" ...
## $ maint : chr "vhigh" "vhigh" "vhigh" "vhigh" ...
## $ doors : chr "2" "2" "2" "2" ...
## $ persons : chr "2" "2" "2" "2" ...
## $ lug_boot: chr "small" "small" "med" "med" ...
## $ safety : chr "med" "high" "low" "med" ...
## $ CAR : chr "unacc" "unacc" "unacc" "unacc" ...
colSums(is.na(dataset))
## buying maint doors persons lug_boot safety CAR
## 0 0 0 0 0 0 0
dataset tidak mempunyai missing values
dataset$CAR <- factor(dataset$CAR, levels = c("unacc", "acc", "good", "vgood"))
str(dataset)
## 'data.frame': 1727 obs. of 7 variables:
## $ buying : chr "vhigh" "vhigh" "vhigh" "vhigh" ...
## $ maint : chr "vhigh" "vhigh" "vhigh" "vhigh" ...
## $ doors : chr "2" "2" "2" "2" ...
## $ persons : chr "2" "2" "2" "2" ...
## $ lug_boot: chr "small" "small" "med" "med" ...
## $ safety : chr "med" "high" "low" "med" ...
## $ CAR : Factor w/ 4 levels "unacc","acc",..: 1 1 1 1 1 1 1 1 1 1 ...
mengubah variabel target CAR menjadi faktor karena memungkinkan R untuk memperlakukan variabel sebagai kategori yang terpisah, bukan hanya teks biasa.
model <- multinom(CAR ~ buying + maint + doors + persons + lug_boot + safety, data = dataset)
## # weights: 68 (48 variable)
## initial value 2394.130362
## iter 10 value 568.455682
## iter 20 value 450.240685
## iter 30 value 343.177230
## iter 40 value 246.937343
## iter 50 value 225.309351
## iter 60 value 224.144728
## iter 70 value 224.102091
## iter 80 value 224.092496
## iter 90 value 224.087588
## final value 224.087526
## converged
summary(model)
## Call:
## multinom(formula = CAR ~ buying + maint + doors + persons + lug_boot +
## safety, data = dataset)
##
## Coefficients:
## (Intercept) buyinglow buyingmed buyingvhigh maintlow maintmed
## acc -305.7711 5.024339 3.907274 -2.059558 3.389334 3.395354
## good -457.8665 171.338619 164.662607 -2.754173 196.549714 191.755278
## vgood -373.5536 171.981405 163.437335 40.421815 19.453770 14.737051
## maintvhigh doors3 doors4 doors5more persons4 personsmore
## acc -2.815357 1.850861 2.474981 2.474996 307.3069 306.9265
## good 29.258227 4.327329 6.044847 6.044796 113.1644 112.8381
## vgood -251.140832 6.126150 10.067560 10.067279 207.6811 208.6735
## lug_bootmed lug_bootsmall safetylow safetymed
## acc -1.512646 -4.434163 -89.09286 -2.994238
## good -4.583422 -13.870460 -43.67140 -10.965389
## vgood -7.924898 -119.585473 -163.59912 -75.857686
##
## Std. Errors:
## (Intercept) buyinglow buyingmed buyingvhigh maintlow maintmed
## acc 0.3136028 0.5702229 0.4854522 3.744783e-01 0.4711143 0.4696733
## good 0.7804550 0.9209529 0.4556978 1.634331e-14 0.8866795 0.4648215
## vgood 0.6476458 0.7127675 0.8846135 8.028259e-42 2.7601285 2.0482202
## maintvhigh doors3 doors4 doors5more persons4 personsmore
## acc 4.147995e-01 0.4040394 0.4278627 0.4278633 0.2116389 0.2069227
## good 1.129969e-14 1.0399036 1.1516952 1.1516869 0.5094517 0.5137796
## vgood 4.341127e-103 1.4112655 1.6454728 1.6454375 0.5793296 0.5376364
## lug_bootmed lug_bootsmall safetylow safetymed
## acc 0.3755772 4.759457e-01 1.724780e-14 3.584130e-01
## good 1.0666805 2.018800e+00 1.494192e-04 1.641674e+00
## vgood 1.4243809 8.877345e-41 1.753216e-53 4.325583e-23
##
## Residual Deviance: 448.1751
## AIC: 544.1751
Variabel buying dan maint (harga beli dan harga pemeliharaan) memiliki pengaruh yang kuat dalam memprediksi kategori acc, good, dan vgood karena koefisien yang besar sehingga memberikan informasi yang cukup untuk memperkirakan parameter model dengan baik dan Standar error-nya juga relatif kecil (kecuali beberapa nilai ekstrem mendekati nol), menandakan bahwa estimasi model sangat stabil dan signifikan secara statistik.. bahwa model memiliki residual deviance sebesar 448.1751 sebagai pembanding model tetapi untuk Residual deviance yang lebih kecil menunjukkan bahwa model lebih baik dalam memprediksi hasil yang sebenarnya.
exp(coef(model))
## (Intercept) buyinglow buyingmed buyingvhigh maintlow
## acc 1.604350e-133 1.520697e+02 4.976310e+01 1.275104e-01 2.964620e+01
## good 1.416178e-199 2.578794e+74 3.251333e+71 6.366162e-02 2.293276e+85
## vgood 5.857500e-163 4.904280e+74 9.548447e+70 3.588982e+17 2.809732e+08
## maintmed maintvhigh doors3 doors4 doors5more persons4
## acc 2.982521e+01 5.988332e-02 6.3653 11.88149 11.88166 2.895184e+133
## good 1.897838e+83 5.089635e+12 75.7417 421.93333 421.91160 1.401743e+49
## vgood 2.513158e+06 8.529477e-110 457.6705 23566.00048 23559.36675 1.565868e+90
## personsmore lug_bootmed lug_bootsmall safetylow safetymed
## acc 1.979220e+133 0.2203262549 1.186500e-02 2.029847e-39 5.007479e-02
## good 1.011478e+49 0.0102198653 9.465328e-07 1.080818e-19 1.728988e-05
## vgood 4.224170e+90 0.0003616268 1.160617e-52 8.908487e-72 1.136124e-33
`dengan hasil relative risk rations untuk variabel buying dan maint memiliki pengaruh yang sangat besar dalam kemungkinan sebuah mobil masuk ke kategori good dan very good.
Faktor-faktor lain seperti jumlah pintu dan keamanan juga menunjukkan hubungan signifikan, dengan jumlah pintu yang lebih banyak cenderung meningkatkan peluang mobil untuk dikategorikan sebagai very good.
Variabel seperti tingkat keamanan rendah (safetylow) sangat mengurangi kemungkinan mobil masuk ke kategori good atau very good.`
library(marginaleffects)
## Warning: package 'marginaleffects' was built under R version 4.4.3
mfx_buying <- avg_comparisons(model, variables = "buying", type = "probs")
print(mfx_buying)
##
## Group Contrast Estimate Std. Error z Pr(>|z|) S 2.5 %
## unacc low - high -1.53e-01 1.16e-02 -13.219 <0.001 130.1 -1.76e-01
## unacc med - high -1.30e-01 1.22e-02 -10.619 <0.001 85.1 -1.54e-01
## unacc vhigh - high 8.34e-02 1.37e-02 6.103 <0.001 29.8 5.66e-02
## acc low - high -4.40e-02 1.28e-02 -3.427 <0.001 10.7 -6.92e-02
## acc med - high 1.62e-02 1.35e-02 1.202 0.229 2.1 -1.02e-02
## acc vhigh - high -8.34e-02 1.37e-02 -6.103 <0.001 29.8 -1.10e-01
## good low - high 1.07e-01 5.88e-03 18.124 <0.001 241.5 9.50e-02
## good med - high 5.33e-02 6.54e-03 8.141 <0.001 51.2 4.04e-02
## good vhigh - high -7.02e-68 1.71e-67 -0.410 0.682 0.6 -4.06e-67
## vgood low - high 9.03e-02 4.20e-03 21.511 <0.001 338.5 8.21e-02
## vgood med - high 6.02e-02 4.71e-03 12.792 <0.001 122.1 5.10e-02
## vgood vhigh - high 2.45e-46 8.28e-46 0.296 0.767 0.4 -1.38e-45
## 97.5 %
## -1.30e-01
## -1.06e-01
## 1.10e-01
## -1.88e-02
## 4.26e-02
## -5.66e-02
## 1.18e-01
## 6.61e-02
## 2.66e-67
## 9.86e-02
## 6.94e-02
## 1.87e-45
##
## Term: buying
## Type: probs
mfx_grplang <- avg_comparisons(model, variables = "maint", type = "probs")
mfx_grplang
##
## Group Contrast Estimate Std. Error z Pr(>|z|) S 2.5 %
## unacc low - high -1.07e-01 1.19e-02 -8.969 <0.001 61.5 -1.30e-01
## unacc med - high -1.07e-01 1.19e-02 -8.962 <0.001 61.4 -1.30e-01
## unacc vhigh - high 1.07e-01 1.31e-02 8.123 <0.001 51.0 8.08e-02
## acc low - high -3.01e-02 1.34e-02 -2.245 0.0248 5.3 -5.64e-02
## acc med - high 2.32e-02 1.34e-02 1.731 0.0834 3.6 -3.06e-03
## acc vhigh - high -7.64e-02 1.36e-02 -5.625 <0.001 25.7 -1.03e-01
## good low - high 1.07e-01 6.36e-03 16.746 <0.001 206.7 9.41e-02
## good med - high 5.33e-02 6.07e-03 8.770 <0.001 59.0 4.14e-02
## good vhigh - high 2.58e-65 6.34e-65 0.406 0.6846 0.5 -9.86e-65
## vgood low - high 3.01e-02 5.15e-03 5.844 <0.001 27.5 2.00e-02
## vgood med - high 3.01e-02 5.08e-03 5.925 <0.001 28.3 2.01e-02
## vgood vhigh - high -3.01e-02 3.55e-03 -8.491 <0.001 55.4 -3.71e-02
## 97.5 %
## -8.33e-02
## -8.32e-02
## 1.32e-01
## -3.82e-03
## 4.94e-02
## -4.98e-02
## 1.19e-01
## 6.52e-02
## 1.50e-64
## 4.02e-02
## 4.01e-02
## -2.32e-02
##
## Term: maint
## Type: probs
sehingga untuk varibel buying dan maint memiliki relative log odds dan risk rations gunakan margin effect untuk untuk setiap kategori target (misalnya, good, vgood, acc) untuk melihat bagaimana perubahan dalam satu variabel mempengaruhi probabilitas untuk setiap kategori target.
Variabel buying dan maint memiliki pengaruh yang sangat besar dalam memprediksi kategori acc, good, dan vgood. Hal ini tercermin dari koefisien yang besar dan standar error yang kecil, yang menunjukkan estimasi yang sangat tepat. Dengan kata lain, variabel ini memainkan peran kunci dalam menentukan apakah sebuah mobil akan dikategorikan sebagai acc (acceptable), good (baik), atau vgood (sangat baik). Model ini sangat bergantung pada faktor harga beli dan pemeliharaan dalam klasifikasi mobil. Rasio risiko relatif menunjukkan bahwa mobil dengan harga beli rendah atau biaya pemeliharaan rendah lebih cenderung untuk dikategorikan sebagai good atau vgood. Ini menunjukkan bahwa harga beli dan biaya pemeliharaan adalah faktor dominan dalam menentukan kualitas mobil.