Regresi Logistik Multinomial
Pendahuluan
Pengertian Regresi Logistik Multinomial
Regresi Logistik Multinomial adalah metode statistik yang digunakan untuk memprediksi variabel dependen kategorik dengan lebih dari dua kelas, seperti Success_Level (Low, Medium, High), berdasarkan beberapa variabel independen seperti advertising, salespeople, satisfaction, dan competition. Model ini memperkirakan probabilitas setiap kategori dan menunjukkan bagaimana perubahan pada faktor-faktor tersebut memengaruhi kemungkinan keberhasilan perusahaan pada tingkat tertentu. Metode ini banyak digunakan untuk analisis pengambilan keputusan di bidang bisnis, pemasaran, dan manajemen.
Rumus Regresi Logistik Multinomial
Secara umum, persamaan untuk kategori ke-j ditulis sebagai:
\[ \log\left(\frac{P(Y=j)}{P(Y=\text{base})}\right) = \beta_{0j} + \beta_{1j}X_1 + \beta_{2j}X_2 + ... + \beta_{pj}X_p \]
Keterangan:
- \(( P(Y=j) )\) = peluang suatu observasi termasuk ke dalam kategori j
- \(( P(Y=\text{base}) )\) = peluang kategori acuan (misalnya “Low”)
- \(( \beta_{0j}, \beta_{1j}, ..., \beta_{pj} )\) = parameter model untuk kategori j
Model ini akan menghasilkan \(((k - 1))\) set koefisien, karena satu kategori dijadikan pembanding (kategori dasar).
Fungsi dari Regresi Logistik Multinomial
Regresi logistik multinomial digunakan untuk memprediksi hasil dengan lebih dari dua kategori yang tidak berurutan serta melihat pengaruh tiap variabel independen terhadap peluang masuk ke suatu kategori. Model ini umum diterapkan untuk menganalisis kepuasan pelanggan, preferensi produk, status pekerjaan, atau tingkat keberhasilan bisnis.
Tahapan Proses
##Import dan Eksplorasi Dataset
library(readr)
library(dplyr)
library(DT)
library(knitr)
# Membaca dataset dari file CSV dengan pemisah titik koma (;)
data_multi <- read_delim("multinomial_logistik_data.csv", delim = ";", show_col_types = FALSE)
# Membersihkan kolom numerik dengan menghapus tanda titik (.) yang berfungsi sebagai pemisah ribuan
data_multi <- data_multi %>%
mutate(
Advertising = as.numeric(gsub("\\.", "", Advertising)),
Salespeople = as.numeric(gsub("\\.", "", Salespeople)),
Satisfaction = as.numeric(gsub("\\.", "", Satisfaction)),
Competition = as.numeric(gsub("\\.", "", Competition)),
Success_Level = factor(Success_Level, levels = c("Low", "Medium", "High"))
)
# Menampilkan struktur data untuk melihat tipe variabel tiap kolom
cat("Struktur Dataset:\n")## Struktur Dataset:
## tibble [200 × 5] (S3: tbl_df/tbl/data.frame)
## $ Advertising : num [1:200] 1.22e+15 2.47e+15 1.52e+14 2.71e+15 2.85e+15 ...
## $ Salespeople : num [1:200] 1.60e+15 3.41e+15 2.50e+15 2.29e+15 2.01e+15 ...
## $ Satisfaction : num [1:200] 9.87e+15 2.23e+15 9.15e+15 6.19e+15 4.56e+15 ...
## $ Competition : num [1:200] 3.14e+15 7.18e+15 3.03e+15 3.87e+15 2.57e+14 ...
## $ Success_Level: Factor w/ 3 levels "Low","Medium",..: 1 3 2 3 3 1 2 2 1 1 ...
##
## Ringkasan Statistik Dataset:
## Advertising Salespeople Satisfaction
## Min. :1.667e+13 Min. :1.599e+12 Min. :9.721e+13
## 1st Qu.:1.329e+15 1st Qu.:1.263e+15 1st Qu.:2.352e+15
## Median :1.975e+15 Median :1.991e+15 Median :4.640e+15
## Mean :2.522e+15 Mean :1.950e+15 Mean :4.872e+15
## 3rd Qu.:2.710e+15 3rd Qu.:2.812e+15 3rd Qu.:7.364e+15
## Max. :9.692e+15 Max. :3.478e+15 Max. :9.970e+15
## Competition Success_Level
## Min. :2.485e+13 Low :66
## 1st Qu.:2.315e+15 Medium:66
## Median :4.764e+15 High :68
## Mean :4.807e+15
## 3rd Qu.:7.419e+15
## Max. :9.930e+15
# Menampilkan 10 baris pertama dari dataset
kable(
head(data_multi, 10),
caption = " Tabel 1. Tabel Dataset Regresi Logistik Multinomial",
align = "c"
)| Advertising | Salespeople | Satisfaction | Competition | Success_Level |
|---|---|---|---|---|
| 1.218944e+15 | 1.596815e+15 | 9.874489e+15 | 3.135067e+15 | Low |
| 2.470763e+15 | 3.405897e+15 | 2.233607e+15 | 7.178413e+15 | High |
| 1.522442e+14 | 2.503414e+15 | 9.147786e+15 | 3.032366e+15 | Medium |
| 2.707544e+15 | 2.287574e+15 | 6.186717e+15 | 3.866451e+15 | High |
| 2.851168e+15 | 2.006433e+15 | 4.559040e+15 | 2.565854e+14 | High |
| 6.138912e+15 | 3.200616e+14 | 5.048222e+15 | 8.212866e+15 | Low |
| 1.820264e+15 | 1.910230e+15 | 7.358517e+15 | 2.316539e+15 | Medium |
| 2.731048e+15 | 1.720598e+15 | 1.742525e+15 | 8.404457e+15 | Medium |
| 1.878588e+15 | 1.426613e+15 | 4.053813e+15 | 3.978980e+15 | Low |
| 1.641537e+15 | 1.430429e+15 | 7.127088e+14 | 4.367524e+15 | Low |
# Membuat tabel interaktif agar data dapat dieksplorasi secara dinamis
datatable(
data_multi,
options = list(pageLength = 10, scrollX = TRUE),
caption = htmltools::tags$caption(
style = 'caption-side: top; text-align: center; font-weight: bold;',
'Tabel 2. Tabel Interaktif Dataset Multinomial Logistic Regression'
)
)Pembangunan Model Regresi Logistik Multinomial
library(nnet) # memanggil paket nnet yang berisi fungsi multinom()
# Membuat model regresi logistik multinomial dengan variabel Success_Level sebagai target
model_multi <- multinom(Success_Level ~ Advertising + Salespeople + Satisfaction + Competition,
data = data_multi)## # weights: 18 (10 variable)
## initial value 219.722458
## final value 219.722458
## converged
## Call:
## multinom(formula = Success_Level ~ Advertising + Salespeople +
## Satisfaction + Competition, data = data_multi)
##
## Coefficients:
## (Intercept) Advertising Salespeople Satisfaction Competition
## Medium -2.345625e-32 -6.294079e-16 2.166003e-16 -5.775766e-16 -1.128020e-16
## High 4.691250e-32 -7.918943e-16 8.561553e-16 4.864593e-16 -3.219946e-16
##
## Std. Errors:
## (Intercept) Advertising Salespeople Satisfaction Competition
## Medium NaN 4.226550e-16 4.748291e-16 3.951824e-16 1.757905e-16
## High 1.273623e-31 1.316661e-16 1.807983e-16 8.430739e-17 6.919014e-17
##
## Residual Deviance: 439.4449
## AIC: 459.4449
Keterangan
Nilai koefisien positif menunjukkan peningkatan peluang masuk ke kategori tertentu dibanding kategori referensi, sedangkan koefisien negatif menandakan penurunan peluangnya.
Gabungan Hasil Koefisien dan p-value
## Coefficients..Intercept. Coefficients.Advertising
## Medium -2.345625e-32 -6.294079e-16
## High 4.691250e-32 -7.918943e-16
## Coefficients.Salespeople Coefficients.Satisfaction
## Medium 2.166003e-16 -5.775766e-16
## High 8.561553e-16 4.864593e-16
## Coefficients.Competition p_value..Intercept. p_value.Advertising
## Medium -1.128020e-16 NaN 1.364409e-01
## High -3.219946e-16 0.7126205 1.805389e-09
## p_value.Salespeople p_value.Satisfaction p_value.Competition
## Medium 6.482714e-01 1.438661e-01 5.210782e-01
## High 2.186055e-06 7.924006e-09 3.259297e-06
Interpretasi Koefisien
# Mengubah koefisien model menjadi nilai odds ratio
odds_ratio <- exp(coef(model_multi))
# Menampilkan hasil odds ratio dalam bentuk tabel
kable(
odds_ratio,
caption = "Tabel 3. Odds Ratio dari Model Regresi Logistik Multinomial"
)| (Intercept) | Advertising | Salespeople | Satisfaction | Competition | |
|---|---|---|---|---|---|
| Medium | 1 | 1 | 1 | 1 | 1 |
| High | 1 | 1 | 1 | 1 | 1 |
Keterangan
Model logistik menggunakan log-odds, sehingga koefisien dikonversi menjadi odds ratio dengan exp(coef()) agar lebih mudah dipahami. Odds ratio menunjukkan perubahan peluang saat variabel independen naik satu satuan. Contohnya, jika Satisfaction memiliki nilai 2, maka setiap kenaikan satu tingkat kepuasan menggandakan peluang perusahaan masuk ke kategori High dibanding Low.
Evaluasi Model
# Melakukan prediksi kategori menggunakan model yang telah dibangun
prediksi <- predict(model_multi, newdata = data_multi)
# Membuat confusion matrix untuk membandingkan hasil prediksi dengan data sebenarnya
conf_matrix <- table(Prediksi = prediksi, Aktual = data_multi$Success_Level)
kable(conf_matrix, caption = "Tabel 4. Confusion Matrix Model Regresi Logistik Multinomial")| Low | Medium | High | |
|---|---|---|---|
| Low | 35 | 23 | 22 |
| Medium | 0 | 0 | 0 |
| High | 31 | 43 | 46 |
Hitung Akurasi
# Menghitung tingkat akurasi model berdasarkan kesesuaian prediksi dan data aktual
akurasi <- mean(prediksi == data_multi$Success_Level)
cat("\nAkurasi Model:", round(akurasi * 100, 2), "%\n")##
## Akurasi Model: 40.5 %
Keterangan
Nilai akurasi (%): menunjukkan tingkat performa model secara keseluruhan. Semakin besar nilai akurasi, semakin baik kemampuan model dalam mengklasifikasikan kategori dengan tepat.
Visualisasi Hasil
# Memuat library yang diperlukan
library(ggplot2)
library(plotly)
library(tidyr)
library(dplyr)
# Mengambil nilai probabilitas prediksi untuk setiap kategori hasil
prob_pred <- as.data.frame(predict(model_multi, type = "probs"))
prob_pred$Advertising <- data_multi$Advertising
prob_pred$Kategori <- data_multi$Success_Level
# Mengubah data ke format long agar mudah divisualisasikan
prob_long <- prob_pred %>%
pivot_longer(cols = c("Low", "Medium", "High"),
names_to = "Success_Level",
values_to = "Probabilitas")
# Membuat plot dasar menggunakan ggplot untuk menampilkan hubungan variabel
p <- ggplot(prob_long, aes(x = Advertising, y = Probabilitas, color = Success_Level)) +
geom_point(alpha = 0.5) +
geom_smooth(method = "loess", se = FALSE, size = 1) +
theme_minimal(base_size = 12) +
labs(
title = "Regresi Logistik Multinomial: Probabilitas Setiap Kategori Keberhasilan",
subtitle = "Keterkaitan antara Advertising Budget dan Probabilitas Success_Level",
x = "Advertising Budget",
y = "Probabilitas Prediksi",
color = "Kategori"
) +
scale_color_manual(values = c("High" = "pink", "Low" = "violet", "Medium" = "lightblue"))
# Mengubah visualisasi menjadi grafik interaktif
ggplotly(p, tooltip = c("x", "y", "color"))Keterangan
Grafik menunjukkan pengaruh Advertising Budget terhadap peluang tiap kategori keberhasilan. Jika garis “High” meningkat, berarti semakin besar iklan → peluang sukses tinggi naik.
Makna Visualisasi Kurva LOESS
Visualisasi kurva LOESS menunjukkan bahwa garis ungu (Low) menurun seiring peningkatan Advertising, garis biru muda (Medium) sedikit naik di kisaran tengah, dan garis merah muda (High) meningkat tajam pada anggaran di atas 1500. Hal ini menandakan bahwa semakin besar anggaran iklan, semakin tinggi peluang perusahaan mencapai kategori keberhasilan High.
Kesimpulan
Model regresi logistik multinomial menghitung probabilitas tiap kategori keberhasilan berdasarkan faktor seperti Advertising, Satisfaction, dan Competition. Hasilnya menunjukkan bahwa Advertising dan Satisfaction meningkatkan peluang sukses (Medium dan High), sedangkan Competition tinggi menurunkannya. Model ini berguna untuk menganalisis faktor-faktor bisnis dan mendukung keputusan strategis berbasis probabilitas.
Referensi
Liang, J., Bi, G., & Zhan, C. (2019). Multinomial and ordinal logistic regression analyses with multi-categorical variables using R. Frontiers in Public Health.
Pullman, A., Chen, M., Zou, D., Hives, B., & Liu, Y. (2018). Researching multiple publics through latent profile analysis: Similarities and differences in science and technology attitudes in China, Japan, South Korea and the United States.
Williams, R. (2015). Multinomial Logit Models – Overview. University of Notre Dame. Retrieved from https://www3.nd.edu/~rwilliam/stats3/mlogit1.pdf
Upton, G. J. G. (2017). Multinomial Logistic Regression. In Categorical Data Analysis by Example. Retrieved from https://www.researchgate.net/publication/318457701_Multinomial_Logistic_Regression
Zeng, Y., & Wu, L. (2020). Multinomial and Ordinal Logistic Regression Analyses with Multi‐Categorical Variables in R. Frontiers in Psychology, 11, 1547. Retrieved from https://pmc.ncbi.nlm.nih.gov/articles/PMC7475459/