Analisis dan Pemodelan Prediktif

Multinomial Logistic Regression

Logo

1 Logistics Regression

1.1 Multinomial Logistics

Regresi logistik multinomial (MLR) adalah metode statistik yang digunakan untuk memprediksi kemungkinan hasil dari sebuah variabel yang memiliki lebih dari dua kategori. MLR membantu kita dalam menentukan kelas mana yang paling mungkin terjadi berdasarkan beberapa faktor atau variabel lain. Misalnya, kategori produk: Advertising, Salespeople, Satisfaction, dan Competition. Model ini memprediksi probabilitas untuk setiap kategori.

Persamaan Regresi Logistik Multinomial:

Untuk kategori k dibandingkan dengan kategori baseline K (referensi):

\[ \log\big(P(Y = k \mid X)\big) = \beta_{0k} + \beta_{1k} X_1 + \beta_{2k} X_2 + \cdots + \beta_{pk} X_p \] atau setara dengan:

\[ P(Y = k \mid X) = \frac{\exp\big(\beta_{0k} + \beta_{1k} X_1 + \beta_{2k} X_2 + \cdots + \beta_{pk} X_p\big)} {1 + \sum_{j=1}^{K-1} \exp\big(\beta_{0j} + \beta_{1j} X_1 + \beta_{2j} X_2 + \cdots + \beta_{pj} X_p\big)} \]

Untuk kategori baseline K:

\[ P(Y = K \mid X) = \frac{1}{1 + \sum_{j=1}^{K-1} \exp\big(\beta_{0j} + \beta_{1j} X_1 + \beta_{2j} X_2 + \cdots + \beta_{pj} X_p\big)} \]

Keterangan :

  • \(P(Y = k \mid X)\) : probabilitas observasi termasuk kategori \((k)\) given prediktor \(X\)

  • \(X_1,X_2,…,X_p\): variabel independen (prediktor)

  • \((\beta_{0k},\beta_{1k}, \beta_{2k}, \dots, \beta_{pk})\) : koefisien model untuk kategori \((k)\)

  • \((K)\) : kategori baseline/referensi

  • \(k\)=1,2,…,\(K\) − 1: kategori yang dibandingkan dengan baseline

  • \(\log \left( \frac{P(Y = k \mid X)}{P(Y = K \mid X)} \right)\) : log-odds kategori \(k\) relatif terhadap baseline \(K\)

1.1.1 Interpretasi Koefisien

Koefisien \((\beta_{j})\) mewakili perubahan log-odds untuk perubahan satu unit dalam \((X_{j})\) dengan menganggap semua variabel lainnya konstan.

Untuk interpretasi yang lebih intuitif dalam hal probabilitas, gunakan rasio peluang (odds ratio):

\[ OR_j = e^{\beta_j} \] - OR > 1 : meningkatkan kemungkinan terjadinya kategori \(k\) (dibanding baseline)

  • OR = 1 : tidak ada efek

  • OR < 1 : menurunkan kemungkinan terjadinya kategori \(k\) (dibanding baseline)

1.1.2 Karakteristik Multinomial Logistic Regression

  1. Variabel dependen kategorikal dengan lebih dari dua kategori (≥3)
  • Kategori bersifat nominal (tidak berurutan)

  • Mutually exclusive (hanya bisa pilih satu kategori)

  1. Menggunakan baseline/reference category
  • Satu kategori dijadikan referensi

  • Kategori lain dibandingkan terhadap referensi

  • Model membuat K-1 persamaan untuk K kategori

  1. Variabel independen bisa numerik atau kategorikal
  • Numerik: digunakan langsung

  • Kategorikal: perlu dummy coding (K-1 dummy variables untuk K kategori)

  • Bisa kombinasi keduanya

  1. Menggunakan fungsi Softmax
  • Menghasilkan probabilitas untuk setiap kategori

  • Σ P(semua kategori) = 1 (100%)

  • Semua probabilitas positif (0 < P < 1)

  1. Koefisien β menunjukkan pengaruh terhadap LOG-ODDS
  • β mempengaruhi log-odds (logit) bukan probabilitas langsung

  • log(P(k)/P(baseline)) = β₀ + β₁X₁ + …

  • Untuk interpretasi lebih mudah: konversi ke Odds Ratio (OR = e^β)

  • Hubungan β dengan probabilitas bersifat non-linear

Studi Kasus: Regresi Logistik

Kita akan Memodelkan hubungan antara faktor-faktor pemasaran dan tingkat keberhasilan penjualan (Success_Level), serta memprediksi probabilitas kategori keberhasilan penjualan berdasarkan faktor-faktor tersebut.

Variabel Dependen (Target): Success_Level — Tingkat keberhasilan penjualan, dengan tiga kategori:

Low : Penjualan berada di level rendah

Medium : Penjualan berada di level menengah

High : Penjualan berada di level tinggi

Variabel independen (Prediktor):

Advertising : anggaran iklan (ribu dolar)

Salespeople : jumlah tenaga penjualan

Satisfaction : skor kepuasan pelanggan (1–10)

Competition : tingkat kompetisi pasar (1–10)

Metode Analisis:

  • Digunakan Multinomial Logistic Regression karena target memiliki lebih dari dua kategori.
  • Model ini memprediksi probabilitas setiap kategori Success_Level berdasarkan faktor-faktor pemasaran.
  • Kategori referensi biasanya dipilih sebagai salah satu level target, misalnya High, agar koefisien untuk kategori lain (Low dan Medium) bisa dibandingkan terhadap kategori referensi.
library(DT)
library(readr)

# Baca CSV
data <- read_csv("C:/Users/Dwi Manullang/Downloads/2 Regression Models – Analysis and Predictive Modeling.csv")

# Tampilkan tabel interaktif
datatable(data, 
          options = list(pageLength = 10,  # Jumlah baris per halaman
                         scrollX = TRUE)) # Scroll horizontal jika banyak kolom

Solusi: Multinomial Logistic Regression

Untuk Mengembangkan model regresi logistik yang mampu memprediksi tiga tingkat keberhasilan (Low, Medium, High) berdasarkan empat variabel utama: Advertising, Salespeople, Satisfaction, dan Competition. kita menerapkan model Regresi Logistik Multinomial menggunakan semua variabel prediktor.

# =========================================================
# 1. Import Library
# =========================================================
library(readr)
library(dplyr)
library(nnet)
library(ggplot2)
library(caret)

# =========================================================
# 2. Baca Dataset Asli
# =========================================================
data_multi <- read_csv("C:/Users/Dwi Manullang/Downloads/2 Regression Models – Analysis and Predictive Modeling.csv")

# Lihat struktur awal dataset
glimpse(data_multi)
## Rows: 200
## Columns: 6
## $ ...1         <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17…
## $ Advertising  <dbl> 12.189438, 24.707628, 15.224423, 27.075435, 28.511682, 6.…
## $ Salespeople  <dbl> 15.96815, 34.05897, 25.03414, 22.87574, 20.06433, 32.0061…
## $ Satisfaction <dbl> 9.874489, 2.233607, 9.147786, 6.186717, 4.559040, 5.04822…
## $ Competition  <dbl> 3.135067, 7.178413, 3.032366, 3.866451, 2.565854, 8.21286…
## $ Success      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, …
summary(data_multi)
##       ...1         Advertising      Salespeople     Satisfaction  
##  Min.   :  1.00   Min.   : 5.016   Min.   :10.16   Min.   :1.004  
##  1st Qu.: 50.75   1st Qu.:11.803   1st Qu.:15.89   1st Qu.:3.462  
##  Median :100.50   Median :17.052   Median :21.73   Median :5.555  
##  Mean   :100.50   Mean   :17.660   Mean   :22.23   Mean   :5.520  
##  3rd Qu.:150.25   3rd Qu.:23.334   3rd Qu.:28.55   3rd Qu.:7.813  
##  Max.   :200.00   Max.   :29.857   Max.   :34.99   Max.   :9.970  
##   Competition       Success    
##  Min.   :1.011   Min.   :0.00  
##  1st Qu.:3.217   1st Qu.:1.00  
##  Median :5.429   Median :1.00  
##  Mean   :5.442   Mean   :0.92  
##  3rd Qu.:7.797   3rd Qu.:1.00  
##  Max.   :9.954   Max.   :1.00
# =========================================================
# 3. Buat Variabel Success_Level dari Binary Success
# =========================================================
# Misal: berdasarkan Satisfaction untuk membentuk Low, Medium, High
data_multi <- data_multi %>%
  mutate(
    Success_Level = case_when(
      Success == 0 ~ "Low",
      Satisfaction < median(Satisfaction, na.rm = TRUE) ~ "Medium",
      TRUE ~ "High"
    ),
    Success_Level = factor(Success_Level, levels = c("Low", "Medium", "High"))
  )

# Cek distribusi kategorinya
table(data_multi$Success_Level)
## 
##    Low Medium   High 
##     16     87     97
# =========================================================
# 4. Bangun Model Multinomial Logistic Regression
# =========================================================
model_multi <- multinom(Success_Level ~ Advertising + Salespeople + Satisfaction + Competition,
                        data = data_multi)
## # weights:  18 (10 variable)
## initial  value 219.722458 
## iter  10 value 83.266689
## iter  20 value 47.973789
## iter  30 value 47.879952
## final  value 47.874833 
## converged
# =========================================================
# 5. Ringkasan Model
# =========================================================
summary(model_multi)
## Call:
## multinom(formula = Success_Level ~ Advertising + Salespeople + 
##     Satisfaction + Competition, data = data_multi)
## 
## Coefficients:
##        (Intercept) Advertising Salespeople Satisfaction Competition
## Medium   -4.871081   0.2381164   0.3501024   -0.4528636  -0.3211557
## High    -19.148419   0.2505982   0.3300009    2.3153378  -0.4462556
## 
## Std. Errors:
##        (Intercept) Advertising Salespeople Satisfaction Competition
## Medium    1.964124  0.06575758  0.09278041    0.2629275   0.1768685
## High      3.877467  0.08047526  0.10130048    0.4963220   0.2122703
## 
## Residual Deviance: 95.74967 
## AIC: 115.7497
# =========================================================
# 6. Hitung Odds Ratio
# =========================================================
odds_ratio <- exp(coef(model_multi))
odds_ratio
##         (Intercept) Advertising Salespeople Satisfaction Competition
## Medium 7.665073e-03    1.268857    1.419213    0.6358049   0.7253103
## High   4.830003e-09    1.284794    1.390969   10.1283440   0.6400202
# =========================================================
# 7. Evaluasi Model
# =========================================================
# Prediksi kelas
pred <- predict(model_multi, data_multi)

# Confusion Matrix
confusionMatrix(factor(pred), data_multi$Success_Level)
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction Low Medium High
##     Low      7      5    2
##     Medium   6     82    1
##     High     3      0   94
## 
## Overall Statistics
##                                           
##                Accuracy : 0.915           
##                  95% CI : (0.8674, 0.9497)
##     No Information Rate : 0.485           
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.8497          
##                                           
##  Mcnemar's Test P-Value : 0.7313          
## 
## Statistics by Class:
## 
##                      Class: Low Class: Medium Class: High
## Sensitivity              0.4375        0.9425      0.9691
## Specificity              0.9620        0.9381      0.9709
## Pos Pred Value           0.5000        0.9213      0.9691
## Neg Pred Value           0.9516        0.9550      0.9709
## Prevalence               0.0800        0.4350      0.4850
## Detection Rate           0.0350        0.4100      0.4700
## Detection Prevalence     0.0700        0.4450      0.4850
## Balanced Accuracy        0.6997        0.9403      0.9700
# AIC & deviance
cat("Residual Deviance:", deviance(model_multi), "\n")
## Residual Deviance: 95.74967
cat("AIC:", AIC(model_multi), "\n")
## AIC: 115.7497

*Estimasi Model**:

\[Kategori\] \[(Intercept)\] \[Advertising\] \[Salespeople\] \[Satisfaction\] \[Competition\]
\(\text{Medium}\) \[-4.871\] \[+0.238\] \[+0.350\] \[-0.453\] \[-0.321\]
\(\text{High}\) \[-19.148\] \[+0.251\] \[+0.330\] \[+2.315\] \[-0.446\]

Residual Deviance = 95.75

AIC = 115.75

Model konvergen setelah 30 iterasi.

Interpretasi Koefisien

\[Variabel\] \[Arah\] \[Interpretasi\]
\(\text{Advertising}\) \[+\] \(\text{Setiap kenaikan 1 unit anggaran iklan meningkatkan peluang berada pada kategori Medium dan High dibanding Low.}\)
\(\text{Sales people}\) \[+\] \(\text{Lebih banyak tenaga penjualan → peluang keberhasilan lebih tinggi.)\)
\(\text{Satisfaction}\) \(\text{+ (kuat pada High)}\) \(\text{Kepuasan pelanggan adalah faktor dominan. Kenaikan satu unit meningkatkan peluang High Success lebih dari 10x lipat.}\)
$ \[−\] \(\text{Persaingan yang tinggi menurunkan peluang keberhasilan tinggi.}\)

Odds Ratio (exp(β))

\[Kategori\] \[Advertising\] \[Salespeople\] \[Satisfaction\] \[Competition\]
\(\text{Medium vs Low}\) \[1.27\] \[1.42\] \[0.64\] \[0.73\]
\(\text{High vs Low}\) \[1.28\] \[1.39\] \[10.13\] \[0.64\]

Interpretasi numerik:

  • Peningkatan Advertising sebesar 1 unit → peluang High Success naik 28%.

  • Tambahan satu Salesperson → peluang High Success naik 39%.

  • Peningkatan Satisfaction → peluang High Success naik lebih dari 10 kali lipat.

  • Meningkatnya Competition justru menurunkan peluang keberhasilan tinggi.

Odds Ratio (exp(β))

\[Low\] \[Medium\] \[High\]
\(\text{Pred Low}\) \[7\] \[5\] \[2\]
\(\text{Pred Medium}\) \[6\] \[82\] \[1\]
\(\text{Pred High}\) \[3\] \[0\] \[94\]

Accuracy = 91.5%, Kappa = 0.85 , menunjukkan tingkat prediksi yang sangat baik dan reliabel.

  1. Probabilitas Prediksi (High Success vs Advertising)

Interpretasi:

  • Model sangat akurat memprediksi kategori Medium dan High.

  • Kelas Low relatif kecil sehingga lebih sulit dikenali.

  • Balanced Accuracy tinggi (sekitar 0.94–0.97).

Visualisasi

# ======================================================
# Visualisasi Interaktif Gabungan - Multinomial Logistic Regression
# ======================================================

library(plotly)
library(dplyr)

# Buat data probabilitas prediksi
prob_df <- data.frame(
  Advertising = data$Advertising,
  predict(model_multi, type = "probs")
)

# Tambahkan versi fit line dengan loess
fit_low <- loess(Low ~ Advertising, data = prob_df)
fit_med <- loess(Medium ~ Advertising, data = prob_df)
fit_high <- loess(High ~ Advertising, data = prob_df)

prob_df_fit <- data.frame(
  Advertising = seq(min(prob_df$Advertising), max(prob_df$Advertising), length.out = 200)
)
prob_df_fit$Low <- predict(fit_low, newdata = prob_df_fit)
prob_df_fit$Medium <- predict(fit_med, newdata = prob_df_fit)
prob_df_fit$High <- predict(fit_high, newdata = prob_df_fit)

# Plot interaktif gabungan
fig <- plot_ly()

# Low
fig <- fig %>%
  add_trace(data = prob_df,
            x = ~Advertising, y = ~Low,
            type = "scatter", mode = "markers",
            name = "Low (data)", marker = list(color = "red", opacity = 0.4)) %>%
  add_trace(data = prob_df_fit,
            x = ~Advertising, y = ~Low,
            type = "scatter", mode = "lines",
            name = "Low (fit)", line = list(color = "red", width = 2))

# Medium
fig <- fig %>%
  add_trace(data = prob_df,
            x = ~Advertising, y = ~Medium,
            type = "scatter", mode = "markers",
            name = "Medium (data)", marker = list(color = "orange", opacity = 0.4)) %>%
  add_trace(data = prob_df_fit,
            x = ~Advertising, y = ~Medium,
            type = "scatter", mode = "lines",
            name = "Medium (fit)", line = list(color = "orange", width = 2))

# High
fig <- fig %>%
  add_trace(data = prob_df,
            x = ~Advertising, y = ~High,
            type = "scatter", mode = "markers",
            name = "High (data)", marker = list(color = "green", opacity = 0.4)) %>%
  add_trace(data = prob_df_fit,
            x = ~Advertising, y = ~High,
            type = "scatter", mode = "lines",
            name = "High (fit)", line = list(color = "green", width = 2))

# Layout gabungan
fig <- fig %>%
  layout(
    title = "Predicted Probability by Advertising (Multinomial Logistic Regression)",
    xaxis = list(title = "Advertising Budget"),
    yaxis = list(title = "Predicted Probability", range = c(0, 1)),
    legend = list(orientation = 'h', y = -0.2),
    annotations = list(
      list(
        text = paste0(
          "<b>Logit Models:</b><br>",
          "Medium: logit(p) = ", round(coef(model_multi)[1,1], 2),
          " + ", round(coef(model_multi)[1,2], 2), "(Ad) + ",
          round(coef(model_multi)[1,3], 2), "(Sales) + ",
          round(coef(model_multi)[1,4], 2), "(Satis) + ",
          round(coef(model_multi)[1,5], 2), "(Comp)<br>",
          "High: logit(p) = ", round(coef(model_multi)[2,1], 2),
          " + ", round(coef(model_multi)[2,2], 2), "(Ad) + ",
          round(coef(model_multi)[2,3], 2), "(Sales) + ",
          round(coef(model_multi)[2,4], 2), "(Satis) + ",
          round(coef(model_multi)[2,5], 2), "(Comp)<br><br>",
          "Residual Deviance = ", round(deviance(model_multi), 2),
          "<br>AIC = ", round(AIC(model_multi), 2)
        ),
        xref = "paper", yref = "paper",
        x = 1, y = 0, showarrow = FALSE,
        xanchor = "right", yanchor = "bottom",
        font = list(color = "red", size = 10)
      )
    )
  )

fig

Interpretasi:

Garis tren naik menunjukkan bahwa semakin besar Advertising Budget, semakin tinggi probabilitas perusahaan mencapai tingkat keberhasilan tinggi (High Success).

  1. Evaluasi Akurasi

Visualisasi heatmap confusion matrix dapat memperjelas proporsi prediksi benar/salah per kategori.

Kesimpulan

Berdasarkan hasil model multinomial logistik, variabel Advertising, Salespeople, dan Satisfaction terbukti berpengaruh positif terhadap tingkat keberhasilan perusahaan, sementara Competition memiliki pengaruh negatif. Faktor Satisfaction merupakan variabel paling dominan dengan odds ratio terbesar (≈10.13). Model menunjukkan good fit (AIC rendah, deviance kecil) dan akurasi tinggi (91.5%).

Tujuan Bagian Ini Menunjukkan perbedaan penerapan dan hasil antara Binary Logistic Regression dan Multinomial Logistic Regression menggunakan dataset yang sama, serta kapan masing-masing metode lebih tepat digunakan.

  1. Perbandingan Hasil Model
\(\text{Aspek}\) \(\text{Binary Logistic}\) \(\text{Multinomial Logistic}\) \(\text{Keterangan}\)
\(\text{Target}\) 2 kategori (0/1) 3 kategori (Low/Med/High) Multinomial lebih detail
\(\text{Fungsi Logit}\) 1 2 (vs baseline Low) Membedakan Medium & High
\(\text{AIC}\) 131.4 115.75 Multinomial lebih baik
\(\text{Akurasi}\) 88% 91.5% Multinomial lebih presisi
\(\text{Interpretasi}\) Sukses vs gagal Transisi tingkat keberhasilan Lebih informatif
\(\text{Visualisasi}\) Kurva sigmoid tunggal 3 kurva probabilitas Lebih kaya dan realistis
\(\text{Penggunaan}\) Jika outcome hanya dua kategori Jika outcome 3+ kategori nominal Sesuai karakter data kamu
  1. Interpretasi Bisnis
\[Faktor\] \(\text{Binary Model}\) \(\text{Multinomial Model}\) \(\text{Kesimpulan Praktis}\)
\(\text{Advertising}\) Meningkatkan peluang sukses Meningkatkan peluang High Success Efek positif stabil di kedua model
\(\text{Salespeople}\) Signifikan positif Konsisten positif Penambahan tenaga penjual → peluang meningkat
\(\text{Satisfaction}\) Positif Efek kuat ke High, lemah ke Medium Kepuasan tinggi krusial untuk sukses maksimal
\(\text{Competition}\) Negatif Negatif di semua kategori Persaingan tinggi menghambat peluang

Implikasi:

Jika perusahaan ingin naik dari MediumHigh Success, mereka harus fokus pada Satisfaction dan Advertising karena dua faktor itu paling besar efeknya dalam model multinomial.

  1. Kesimpulan Akhir
\[Aspek\] \(\text{Binary Logistic Regression}\) \(\text{Multinomial Logistic Regression}\)
\(\text{Kapan digunakan}\) Saat target hanya 2 kategori Saat target ≥ 3 kategori nominal
\(\text{Kelebihan}\) Sederhana, mudah ditafsirkan Lebih akurat, bisa membedakan tiap level keberhasilan
\(\text{Kelemahan}\) Informasi kategori lain hilang Perlu lebih banyak data dan interpretasi
\(\text{Pada dataset kamu}\) Cukup baik Sangat cocok & akurat (AIC lebih kecil, akurasi lebih tinggi)
  1. Kesimpulan umum:
  • Model Multinomial Logistic Regression lebih tepat untuk dataset keberhasilan perusahaan ini.

  • Ia menggambarkan hubungan variabel prediktor dengan tingkat keberhasilan secara bertahap.

  • Secara empiris, menghasilkan AIC lebih kecil, akurasi lebih tinggi, dan visualisasi yang merefleksikan dinamika bisnis lebih realistis daripada model biner.