1 Pendahuluan

1.1 Sumber dan Deskripsi Data

Penelitian ini menggunakan data sekunder yang diperoleh dari Online Shoppers Purchasing Intention Dataset yang tersedia pada UCI Machine Learning Repository. Dataset ini dikembangkan oleh Sakar et al. (2019) dan berisi data perilaku pengunjung situs e-commerce selama satu sesi kunjungan (session) yang digunakan untuk memprediksi apakah pengunjung melakukan pembelian atau tidak. Dataset terdiri atas 12.330 observasi dengan 18 variabel, yang mencakup karakteristik aktivitas pengunjung pada situs e-commerce, perilaku penelusuran halaman, informasi teknis pengguna, serta keputusan pembelian sebagai variabel respon.

Variabel yang tersedia dalam dataset meliputi Administrative, Administrative Duration, Informational, Informational Duration, Product Related, Product Related Duration, Bounce Rates, Exit Rates, Page Values, Special Day, Month, Operating Systems, Browser, Region, Traffic Type, Visitor Type, Weekend, dan Revenue. Variabel-variabel tersebut menggambarkan aktivitas pengunjung selama mengakses situs, seperti jumlah dan durasi kunjungan pada berbagai jenis halaman, tingkat keluar halaman (exit rate), nilai halaman (page value), waktu kunjungan, hingga karakteristik teknis pengguna.

Pada penelitian ini, variabel Revenue digunakan sebagai variabel respon yang menunjukkan keputusan pembelian konsumen, sedangkan variabel prediktor yang digunakan dalam model akhir diperoleh melalui proses seleksi variabel menggunakan metode Stepwise Akaike Information Criterion (AIC). Hasil seleksi menunjukkan bahwa variabel Product Related Duration, Exit Rates, Page Values, Month, Operating Systems, dan Visitor Type merupakan variabel yang dipertahankan dalam model regresi logistik biner.

1.2 Variabel Penelitian

Variabel yang digunakan dalam penelitian ini terdiri atas satu variabel respon dan enam variabel prediktor yang diperoleh melalui proses seleksi variabel menggunakan metode Stepwise Akaike Information Criterion (AIC). Variabel respon yang digunakan adalah Revenue, yaitu keputusan pembelian pengunjung pada situs e-commerce yang dikategorikan menjadi dua kelompok, yaitu melakukan pembelian (Beli) dan tidak melakukan pembelian (Tidak_Beli).

Tabel 1. Variabel Penelitian
Variabel Keterangan
Y Revenue Keputusan pembelian konsumen. Bernilai 1 (Beli) jika terjadi transaksi dan 0 (Tidak Beli) jika tidak terjadi transaksi.
X1 Product Related Duration Total waktu (dalam detik) yang dihabiskan pengunjung pada halaman yang berkaitan dengan produk. Nilai yang lebih tinggi menunjukkan minat yang lebih besar terhadap produk yang ditawarkan.
X2 Exit Rates Persentase rata-rata pengunjung yang meninggalkan situs dari halaman tertentu. Nilai yang lebih tinggi menunjukkan kecenderungan pengunjung untuk keluar dari situs tanpa melanjutkan aktivitas.
X3 Page Values Nilai rata-rata halaman web berdasarkan kontribusinya terhadap terjadinya transaksi. Nilai yang lebih tinggi menunjukkan halaman tersebut lebih berpotensi menghasilkan pembelian.
X4 Month Bulan kunjungan konsumen ke situs e-commerce yang menunjukkan faktor musiman dalam perilaku pembelian konsumen.
X5 Operating Systems Kode sistem operasi yang digunakan pengunjung ketika mengakses situs e-commerce. Nilai 1–8 merupakan kategori sistem operasi yang berbeda dan diperlakukan sebagai variabel kategorik (factor) dalam pemodelan.
X6 Visitor Type Tipe pengunjung situs yang terdiri atas Returning Visitor, New Visitor, dan Other. Variabel ini menggambarkan karakteristik pengunjung berdasarkan riwayat kunjungan sebelumnya.

1.3 Variabel respon (Revenue) terdiri atas dua kategori, yaitu Beli dan Tidak Beli. Untuk keperluan pemodelan regresi logistik biner, kategori Beli diberi kode 1, sedangkan kategori Tidak Beli diberi kode 0.

2 Hasil Penelitian

Penelitian ini menggunakan data sekunder yang diperoleh dari repositori UCI Machine Learning Repository yaitu Online Shoppers Purchasing Intention Dataset. Setelah dilakukan proses pembersihan data diperoleh 12.205 observasi yang digunakan dalam analisis. Variabel respon merupakan variabel Revenue yaitu keputusan pembelian konsumen yang dikategorikan menjadi Beli dan Tidak Beli.

# Load packages yang diperlukan
library(tidyverse)
library(caret)
library(pROC)
library(ResourceSelection)
library(DescTools)
library(car)
library(knitr)
library(kableExtra)
library(ggplot2)
# Load dataset dari UCI ML Repository
# Pastikan file "online_shoppers_intention.csv" sudah tersedia di direktori kerja
# data <- read.csv("online_shoppers_intention.csv", stringsAsFactors = TRUE)
# 
# Preprocessing: hapus missing values
# data <- na.omit(data)
# 
# Konversi variabel kategorik
# data$Revenue     <- factor(data$Revenue, levels = c(FALSE, TRUE), labels = c("Tidak_Beli", "Beli"))
# data$OperatingSystems <- as.factor(data$OperatingSystems)
# data$Month       <- as.factor(data$Month)
# data$VisitorType <- as.factor(data$VisitorType)
# 
# cat("Jumlah observasi setelah pembersihan:", nrow(data), "\n")
Tabel 4. Distribusi Variabel Respon
Revenue Jumlah Observasi Proporsi
Tidak Beli 10.297 84,37%
Beli 1.908 15,63%

Distribusi menunjukkan bahwa data bersifat tidak seimbang, karena jumlah pengunjung yang tidak melakukan pembelian jauh lebih besar dibandingkan pengunjung yang melakukan pembelian.

2.1 Model Regresi Logistik Biner

Data pelatihan (Training set) sebesar 80% yaitu 9.765 observasi dan data pengujian (Testing set) sebesar 20% yaitu 2.440 observasi.

Model regresi logistik biner:

\[\ln\frac{\pi(x)}{1-\pi(x)} = \beta_0 + \beta_1X_1 + \beta_2X_2 + \beta_3X_3 + \beta_4X_4 + \beta_5X_5 + \beta_6X_6 \tag{18}\]

Dengan:

  • \(X_1\) = Product Related Duration
  • \(X_2\) = Exit Rates
  • \(X_3\) = Page Values
  • \(X_4\) = Month
  • \(X_5\) = Operating Systems
  • \(X_6\) = Visitor Type
# Pembagian data training dan testing (80:20)
# set.seed(123)
# index     <- createDataPartition(data$Revenue, p = 0.8, list = FALSE)
# train     <- data[index, ]
# test      <- data[-index, ]
# 
# cat("Training set:", nrow(train), "observasi\n")
# cat("Testing set :", nrow(test),  "observasi\n")

2.2 Statistik Deskriptif

Tabel 5. Hasil Statistik Deskriptif
Variabel Mean SD Minimum Maksimum
Product Related Duration 1.194,746 1.913,669 0 63.973,522
Exit Rates 0,043 0,049 0 0,200
Page Values 5,889 18,568 0 361,764

Berdasarkan Tabel 5, menunjukkan adanya variasi yang cukup besar pada perilaku pengunjung situs web. Variabel Product Related Duration memiliki rata-rata waktu kunjungan sebesar 1.194,746 detik dengan simpangan baku mencapai 1.913,669 detik. Nilai maksimum yang sangat tinggi yaitu 63.973,522 detik, mengindikasikan bahwa terdapat sebagian kecil pengunjung yang menghabiskan waktu jauh lebih lama dibandingkan mayoritas pengunjung dalam melihat halaman produk. Pada variabel Page Values yang memiliki rata-rata sebesar 5,889 dengan simpangan baku 18,568 dan nilai maksimum mencapai 361,764 menunjukkan adanya perbedaan dalam nilai halaman yang dihasilkan oleh masing-masing pengunjung. Sementara itu, variabel Exit Rates memiliki rata-rata sebesar 0,043 dengan simpangan baku 0,049 yang menunjukkan bahwa sebagian besar pengunjung meninggalkan situs pada tingkat yang relatif rendah. Besarnya variasi pada ketiga variabel tersebut mengindikasikan adanya karakteristik perilaku pengguna yang beragam, sehingga variabel-variabel ini berpotensi menjadi prediktor penting dalam menjelaskan keputusan pembelian (Revenue).

2.3 Pembangunan Model

2.3.1 Model Awal

Model regresi logistik biner awal dibentuk menggunakan seluruh variabel prediktor yang tersedia dalam dataset, yaitu Administrative, Administrative Duration, Informational, Informational Duration, Product Related, Product Related Duration, Bounce Rates, Exit Rates, Page Values, Special Day, Month, Operating Systems, Browser, Region, Traffic Type, Visitor Type, dan Weekend.

# Model awal dengan seluruh variabel prediktor
# model_awal <- glm(Revenue ~ Administrative + AdministrativeDuration +
#                     Informational + InformationalDuration +
#                     ProductRelated + ProductRelatedDuration +
#                     BounceRates + ExitRates + PageValues +
#                     SpecialDay + Month + OperatingSystems +
#                     Browser + Region + TrafficType + VisitorType + Weekend,
#                   data = train, family = binomial)
# 
# summary(model_awal)
# cat("AIC Model Awal:", AIC(model_awal), "\n")
Tabel 6. Model Awal
Variabel P-value Keterangan
Administrative 0,261 Tidak signifikan
Administrative Duration 0,497 Tidak signifikan
Informational 0,385 Tidak signifikan
Informational Duration 0,704 Tidak signifikan
Product Related 0,585 Tidak signifikan
Product Related Duration 0,008 Signifikan
Bounce Rates 0,326 Tidak signifikan
Exit Rates 2,66×10⁻⁹ Signifikan
Page Values 2×10⁻¹⁶ Signifikan
Special Day 0,959 Tidak signifikan
Month 2,2×10⁻¹⁶ Signifikan
Operating Systems 0,003 Signifikan
Browser 0,219 Tidak signifikan
Region 0,201 Tidak signifikan
Traffic Type 0,444 Tidak signifikan
Visitor Type 4,76×10⁻³ Signifikan
Weekend 0,134 Tidak signifikan

Berdasarkan Tabel 6, menunjukkan bahwa tidak semua variabel memberikan kontribusi yang signifikan terhadap peluang terjadinya pembelian (Revenue). Model awal menghasilkan nilai AIC sebesar 5883,1. Oleh karena itu dilakukan seleksi variabel menggunakan metode stepwise berdasarkan Akaike Information Criterion (AIC) untuk memperoleh model yang lebih sederhana namun tetap memiliki kemampuan prediksi yang baik.

2.3.2 Model Stepwise

Seleksi variabel dilakukan menggunakan metode Stepwise AIC dengan pendekatan forward dan backward secara simultan. Metode ini bertujuan memperoleh model terbaik berdasarkan nilai Akaike Information Criterion (AIC) terkecil. Hasil seleksi stepwise menghasilkan model dengan delapan variabel prediktor, yaitu Informational, Product Related Duration, Exit Rates, Page Values, Month, Operating Systems, Visitor Type, dan Weekend.

# Seleksi variabel menggunakan Stepwise AIC
# model_step <- step(model_awal, direction = "both", trace = FALSE)
# summary(model_step)
# cat("AIC Model Stepwise:", AIC(model_step), "\n")
Tabel 7. Model Stepwise
Variabel P-value Keterangan
Informational 0,147 Tidak signifikan
Product Related Duration 4,89×10⁻¹⁰ Signifikan
Exit Rates 2×10⁻¹⁶ Signifikan
Page Values 2×10⁻¹⁶ Signifikan
Month < 2,2×10⁻¹⁶ Signifikan
Operating Systems 0,003 Signifikan
Visitor Type 0,003 Signifikan
Weekend 0,144 Tidak signifikan

Berdasarkan Tabel 7, model hasil Stepwise menghasilkan nilai AIC sebesar 5871,678, lebih kecil dibandingkan model awal yang memiliki nilai AIC sebesar 5883,1. Penurunan nilai AIC menunjukkan bahwa model hasil seleksi memiliki keseimbangan yang lebih baik antara kompleksitas model dan kemampuan prediksi.

2.3.3 Model Akhir

Dilakukan penyederhanaan model dengan mempertahankan variabel-variabel yang signifikan secara statistik pada taraf signifikansi 5%. Model akhir terdiri atas enam variabel yaitu: Product Related Duration, Exit Rates, Page Values, Month, Operating Systems, dan Visitor Type.

Model akhir memiliki AIC sebesar 5871,97, yang sangat dekat dengan model stepwise yang memiliki nilai AIC sebesar 5871,678 sehingga masih mampu mempertahankan kualitas model dengan jumlah variabel yang lebih sedikit.

Model regresi logistik biner yang diperoleh dapat dituliskan sebagai berikut:

\[\ln\frac{\pi(x)}{1-\pi(x)} = -1,288 + 0,000108 \cdot X_1 - 18,24 \cdot X_2 + 0,07754 \cdot X_3 - 0,1236 \cdot X_5 + \text{Month} + \text{Visitor Type}\]

dengan \(\pi(x)\) menyatakan probabilitas seorang pengunjung melakukan pembelian. Variabel Month dan Visitor Type merupakan variabel kategorik yang direpresentasikan dalam bentuk variabel dummy sehingga koefisiennya berbeda untuk setiap kategori dibandingkan kategori referensi.

# Model akhir dengan 6 variabel signifikan
# model_akhir <- glm(Revenue ~ ProductRelatedDuration + ExitRates + PageValues +
#                      Month + OperatingSystems + VisitorType,
#                    data = train, family = binomial)
# 
# summary(model_akhir)
# cat("AIC Model Akhir:", AIC(model_akhir), "\n")
Tabel 8. Model Akhir
Variabel P-value Keterangan
Product Related Duration 4,89×10⁻¹⁰ Signifikan
Exit Rates 2×10⁻¹⁶ Signifikan
Page Values 2×10⁻¹⁶ Signifikan
Month < 2,2×10⁻¹⁶ Signifikan
Operating Systems 0,003 Signifikan
Visitor Type 0,003 Signifikan

2.4 Uji Asumsi

2.4.1 Uji Linearitas Logit

Uji linearitas logit dilakukan menggunakan metode Box-Tidwell untuk mengevaluasi apakah variabel prediktor kontinu memiliki hubungan linear dengan logit probabilitas pembelian. Variabel yang diuji meliputi Product Related Duration, Exit Rates, dan Page Values. Hasil pengujian disajikan pada Tabel 9.

# Uji Linearitas Logit dengan Box-Tidwell
# train_bt <- train %>%
#   mutate(
#     PRD_log = ProductRelatedDuration * log(ProductRelatedDuration + 1),
#     ER_log  = ExitRates              * log(ExitRates + 1e-6),
#     PV_log  = PageValues             * log(PageValues + 1)
#   )
# 
# model_bt <- glm(Revenue ~ ProductRelatedDuration + ExitRates + PageValues +
#                   PRD_log + ER_log + PV_log +
#                   Month + OperatingSystems + VisitorType,
#                 data = train_bt, family = binomial)
# 
# summary(model_bt)
Tabel 9. Hasil Uji Linearitas Logit
Variabel Estimasi Z-value P-value Kesimpulan
Product Related Duration_log -6,7×10⁻⁵ -3,020 0,002529 Tidak linear
Exit Rates_log -6,452 -1,805 0,071028 Linear
Page Value_log -0,05068 -26,273 <2×10⁻¹⁶ Tidak linear

Berdasarkan Tabel 9, menunjukkan bahwa hubungan antara Product Related Duration dan peluang pembelian tidak mengikuti pola linear sederhana pada skala logit. Durasi kunjungan yang semakin lama pada halaman produk memang cenderung menunjukkan ketertarikan yang lebih tinggi terhadap produk, namun peningkatan waktu kunjungan tidak selalu menghasilkan peningkatan peluang pembelian yang konstan. Pada kondisi tertentu, tambahan waktu kunjungan dapat memberikan pengaruh yang semakin kecil atau bahkan berbeda terhadap keputusan pembelian pelanggan.

Pada variabel Page Values, nilai p-value yang sangat kecil menunjukkan bahwa hubungan antara Page Values dan probabilitas pembelian bersifat nonlinier. Hal ini mengindikasikan bahwa peningkatan nilai halaman tidak selalu diikuti oleh peningkatan peluang pembelian dalam proporsi yang sama. Pada nilai tertentu dapat terjadi efek kejenuhan (diminishing return), yaitu peningkatan nilai halaman hanya memberikan tambahan pengaruh yang relatif kecil terhadap peluang pembelian.

Pada variabel Exit Rates masih memenuhi asumsi linearitas logit. Artinya perubahan nilai Exit Rates memiliki hubungan yang relatif konsisten terhadap perubahan logit probabilitas pembelian. Semakin tinggi Exit Rates, kecenderungan pelanggan untuk meninggalkan situs meningkat sehingga peluang terjadinya pembelian menurun secara relatif stabil pada skala logit.

Meskipun terdapat indikasi pelanggaran asumsi linearitas logit pada dua variabel kontinu, model regresi logistik yang dibangun tetap menunjukkan performa prediksi yang baik. Hal ini ditunjukkan oleh nilai AUC sebesar 0,8975 yang termasuk kategori baik serta Brier Score sebesar 0,0799 yang menunjukkan kualitas kalibrasi model yang baik. Oleh karena itu, model masih layak digunakan untuk tujuan prediksi dan interpretasi perilaku pembelian pelanggan, meskipun hubungan nonlinier pada beberapa variabel perlu menjadi perhatian dalam pengembangan model yang lebih kompleks di masa mendatang.

2.4.2 Uji Multikolinearitas

Sebelum dilakukan pemodelan regresi logistik biner, dilakukan pengujian multikolinearitas untuk mengetahui apakah terdapat hubungan yang kuat antarvariabel prediktor yang digunakan dalam model. Pengujian dilakukan menggunakan nilai Generalized Variance Inflation Factor (GVIF), dengan kriteria bahwa nilai GVIF Adjusted kurang dari 5 menunjukkan tidak adanya masalah multikolinearitas.

Variabel Month dan Visitor Type merupakan variabel kategorik yang direpresentasikan oleh beberapa variabel dummy dalam model regresi logistik. Namun, pada pengujian multikolinearitas menggunakan Generalized Variance Inflation Factor (GVIF), masing-masing variabel diperlakukan sebagai satu faktor sehingga hanya menghasilkan satu nilai GVIF yang mewakili seluruh kategori dummy.

# Uji Multikolinearitas menggunakan GVIF
# library(car)
# vif(model_akhir)
Tabel 10. Hasil Uji Multikolinearitas
Variabel GVIF Adjusted Status
Product Related Duration 1,062 Tidak ada multikolinearitas
Exit Rates 1,053 Tidak ada multikolinearitas
Page Values 1,030 Tidak ada multikolinearitas
Month 1,006 Tidak ada multikolinearitas
Operating Systems 1,029 Tidak ada multikolinearitas
Visitor Type 1,033 Tidak ada multikolinearitas

Berdasarkan Tabel 10, seluruh variabel memiliki nilai GVIF Adjusted kurang dari 5 dengan rentang antara 1,006 hingga 1,062. Hasil ini mengindikasikan bahwa tidak terdapat multikolinearitas antar variabel prediktor dalam model. Dengan demikian, keenam variabel yaitu Product Related Duration, Exit Rates, Page Values, Month, Operating Systems, dan Visitor Type dapat digunakan secara bersama-sama dalam pemodelan regresi logistik biner karena masing-masing variabel memberikan informasi yang relatif berbeda dalam menjelaskan keputusan pembelian konsumen.

2.4.3 Uji Hosmer-Lemeshow

# Uji Hosmer-Lemeshow
# library(ResourceSelection)
# hosmerlem <- hoslem.test(train$Revenue == "Beli",
#                          fitted(model_akhir), g = 10)
# print(hosmerlem)
Tabel 11. Hasil Uji Hosmer-Lemeshow
Metrik Nilai
Chi-squared 113,8265
P-value 0

Berdasarkan Tabel 11, uji Hosmer-Lemeshow menunjukkan p-value < 0,05 yang mengindikasikan kalibrasi tidak sempurna. Hal ini merupakan fenomena umum pada dataset berukuran besar (N > 10.000) karena uji tersebut sangat sensitif terhadap deviasi kecil. Oleh karena itu, evaluasi model juga mempertimbangkan nilai AUC dan Brier Score yang menunjukkan performa model yang baik.

2.4.4 Pseudo R-squared

# Hitung Pseudo R-squared
# library(DescTools)
# PseudoR2(model_akhir, which = c("McFadden", "Nagelkerke", "CoxSnell"))
Tabel 12. Hasil Pseudo R-Squared
Metrik Nilai
McFadden 0,3131
r2ML (Cox-Snell) 0,2365
r2CU (Nagelkerke) 0,4095

Berdasarkan Tabel 12, nilai McFadden R² sebesar 0,3131 yang menunjukkan bahwa model memiliki kemampuan yang cukup baik dalam menjelaskan variasi keputusan pembelian konsumen. Dalam regresi logistik, nilai McFadden R² antara 0,20 hingga 0,40 umumnya dianggap menunjukkan kecocokan model yang baik. Sementara itu, nilai Nagelkerke R² sebesar 0,4095 menunjukkan bahwa sekitar 40,95% variasi keputusan pembelian dapat dijelaskan oleh variabel-variabel dalam model.

2.5 Odds Ratio

Hasil ringkasan nilai Odds Ratio (OR), interval kepercayaan 95%, dan p-value dari variabel-variabel prediktor pada model regresi logistik biner disajikan pada Tabel 13. Nilai OR digunakan untuk mengukur besarnya perubahan peluang (odds) pembelian akibat perubahan variabel prediktor dengan asumsi variabel lain tetap.

# Hitung Odds Ratio dan Confidence Interval
# or_table <- exp(cbind(OR = coef(model_akhir), confint(model_akhir)))
# print(round(or_table, 4))
Tabel 13. Odds Ratio
Variabel Odds Ratio CI 95% P-Value Signifikansi
Product Related Duration 1,00 1,00 – 1,00 0 Signifikan
Exit Rates 0 0 – 0 0 Signifikan
Page Values 1,08 1,08 – 1,09 0 Signifikan
Month December 0,55 0,37 – 0,81 0,002 Signifikan
Month February 0,19 0,05 – 0,67 0,009 Signifikan
Month July 0,97 0,61 – 1,56 0,912 Tidak Signifikan
Month June 0,75 0,42 – 1,35 0,336 Tidak Signifikan
Month March 0,53 0,37 – 0,79 0,002 Signifikan
Month May 0,55 0,38 – 0,79 0,001 Signifikan
Month November 1,66 1,17 – 2,36 0,004 Signifikan
Month October 0,88 0,57 – 1,36 0,555 Tidak Signifikan
Month September 0,98 0,62 – 1,55 0,942 Tidak Signifikan
Operating Systems 0,88 0,81 – 0,96 0,004 Signifikan
Visitor Type Other 0,72 0,23 – 2,33 0,588 Tidak Signifikan
Visitor Type Returning Visitor 0,72 0,60 – 0,87 0,001 Signifikan

Berdasarkan Tabel 13, variabel Product Related Duration, Exit Rates, Page Values, Operating Systems, beberapa kategori Month, dan Visitor Type Returning Visitor berpengaruh signifikan terhadap keputusan pembelian karena memiliki p-value kurang dari 0,05.

Variabel Page Values memiliki OR sebesar 1,08 yang menunjukkan bahwa setiap kenaikan satu satuan nilai Page Values meningkatkan peluang pembelian sebesar 8%, dengan asumsi variabel lain tetap. Selain itu, kategori Month November memiliki OR sebesar 1,66 yang menunjukkan bahwa peluang pembelian pada bulan November sekitar 1,66 kali lebih besar dibandingkan kategori bulan referensi (bulan Agustus).

Sebaliknya, variabel Exit Rates memiliki OR yang sangat kecil (mendekati nol), yang mengindikasikan bahwa peningkatan Exit Rates secara signifikan menurunkan peluang terjadinya pembelian. Variabel Operating Systems memiliki OR sebesar 0,88, yang berarti setiap kenaikan satu kategori sistem operasi menurunkan peluang pembelian sekitar 11,6%. Demikian pula, kategori Visitor Type Returning Visitor memiliki OR sebesar 0,72, yang menunjukkan bahwa peluang pembelian pengunjung yang kembali (returning visitor) lebih rendah dibandingkan kategori referensi (new visitor).

Untuk variabel Month, kategori December, February, March, dan May memiliki OR kurang dari satu dan signifikan secara statistik, sehingga menunjukkan peluang pembelian yang lebih rendah dibandingkan bulan referensi (bulan Agustus). Sementara itu, kategori July, June, October, dan September tidak berpengaruh signifikan terhadap keputusan pembelian karena memiliki p-value lebih besar dari 0,05.

Variabel Product Related Duration memiliki Odds Ratio sebesar 1,00. Nilai tersebut menunjukkan bahwa setiap penambahan satu detik durasi kunjungan pada halaman produk cenderung meningkatkan peluang pembelian. Meskipun peningkatannya sangat kecil untuk setiap satu detik tambahan, akumulasi durasi kunjungan yang lebih lama dapat meningkatkan peluang terjadinya pembelian.

2.6 Evaluasi Kinerja Model

2.6.1 Brier Score dan Plot Kalibrasi

# Prediksi probabilitas pada data testing
# pred_prob <- predict(model_akhir, newdata = test, type = "response")
# 
# # Hitung Brier Score
# brier_score <- mean((pred_prob - as.numeric(test$Revenue == "Beli"))^2)
# cat("Brier Score:", round(brier_score, 4), "\n")
# 
# # Calibration Plot
# cal_df <- data.frame(pred = pred_prob,
#                      obs  = as.numeric(test$Revenue == "Beli"))
# cal_df <- cal_df %>%
#   mutate(bin = cut(pred, breaks = seq(0, 1, by = 0.1), include.lowest = TRUE)) %>%
#   group_by(bin) %>%
#   summarise(mean_pred = mean(pred),
#             mean_obs  = mean(obs))
# 
# ggplot(cal_df, aes(x = mean_pred, y = mean_obs)) +
#   geom_point(size = 3, color = "#2980b9") +
#   geom_line(color = "#2980b9") +
#   geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = "gray50") +
#   labs(title = "Calibration Plot",
#        x = "Rata-rata Probabilitas Prediksi",
#        y = "Proporsi Kejadian Aktual") +
#   theme_minimal()

Brier Score yang diperoleh adalah 0,0799. Nilai yang mendekati 0 menunjukkan bahwa probabilitas yang diprediksi model cukup dekat dengan kondisi aktual. Hal ini mengindikasikan bahwa model memiliki kalibrasi yang baik dalam memprediksi peluang pembelian, yang juga didukung oleh Calibration Plot di mana titik-titik prediksi cenderung mengikuti garis diagonal.

Gambar 1. Calibration Plot — Titik-titik prediksi cenderung mengikuti garis diagonal, menunjukkan kalibrasi model yang baik.

2.6.2 ROC Curve dan AUC

# ROC Curve dan AUC
# library(pROC)
# roc_obj <- roc(test$Revenue, pred_prob)
# auc_val <- auc(roc_obj)
# cat("AUC:", round(auc_val, 4), "\n")
# 
# plot(roc_obj,
#      col = "#2980b9",
#      lwd = 2,
#      main = paste("ROC Curve (AUC =", round(auc_val, 4), ")"),
#      print.auc = TRUE)
# abline(a = 0, b = 1, lty = 2, col = "gray50")

Berdasarkan analisis, diperoleh nilai AUC sebesar 0,8975 yang berada pada kategori baik karena berada pada rentang 0,8–0,9. Nilai tersebut menunjukkan bahwa model memiliki kemampuan diskriminasi yang tinggi dalam mengklasifikasikan kedua kelompok pengunjung.

Kurva ROC yang berada jauh di atas garis diagonal mengindikasikan bahwa performa model jauh lebih baik dibandingkan klasifikasi secara acak. Nilai AUC sebesar 0,8975 menunjukkan bahwa model memiliki peluang sekitar 89,75% untuk memberikan skor probabilitas pembelian yang lebih tinggi kepada pengunjung yang benar-benar melakukan pembelian dibandingkan pengunjung yang tidak melakukan pembelian.

Gambar 2. ROC Curve — Kurva berada jauh di atas garis diagonal dengan AUC = 0,8975.

2.6.3 Confusion Matrix

# Confusion Matrix pada threshold 0.5
# pred_class_05 <- ifelse(pred_prob >= 0.5, "Beli", "Tidak_Beli")
# cm_05 <- confusionMatrix(factor(pred_class_05, levels = c("Tidak_Beli","Beli")),
#                           test$Revenue)
# print(cm_05)
# 
# # Threshold Optimal (Youden Index)
# youden_idx    <- which.max(roc_obj$sensitivities + roc_obj$specificities - 1)
# threshold_opt <- roc_obj$thresholds[youden_idx]
# cat("Threshold Optimal:", round(threshold_opt, 4), "\n")
# 
# # Confusion Matrix pada threshold optimal
# pred_class_opt <- ifelse(pred_prob >= threshold_opt, "Beli", "Tidak_Beli")
# cm_opt <- confusionMatrix(factor(pred_class_opt, levels = c("Tidak_Beli","Beli")),
#                            test$Revenue)
# print(cm_opt)
Tabel 14. Confusion Matrix (Threshold = 0,5)
Prediksi Aktual Tidak Beli Aktual Beli
Tidak Beli 2048 236
Beli 36 145

Berdasarkan Tabel 14, pada threshold standar sebesar 0,5 model berhasil mengklasifikasikan sebanyak 2.048 pengunjung yang tidak melakukan pembelian secara benar dan 145 pengunjung yang melakukan pembelian secara benar. Namun demikian, masih terdapat 236 pengunjung yang sebenarnya melakukan pembelian tetapi diprediksi tidak membeli (false negative), serta 36 pengunjung yang sebenarnya tidak melakukan pembelian tetapi diprediksi membeli (false positive).

Hasil ini menunjukkan bahwa model memiliki kemampuan yang sangat baik dalam mengidentifikasi pengunjung yang tidak melakukan pembelian, tetapi masih kurang optimal dalam mendeteksi pengunjung yang melakukan pembelian. Hal ini ditunjukkan oleh nilai sensitivitas sebesar 0,9827 yang sangat tinggi, sedangkan nilai spesifisitas sebesar 0,3806. Meskipun akurasi model mencapai 88,97%, penggunaan threshold 0,5 cenderung menghasilkan klasifikasi yang lebih berpihak pada kelas mayoritas.

Tabel 15. Confusion Matrix (Threshold Optimal = 0,154)
Prediksi Aktual Tidak Beli Aktual Beli
Tidak Beli 1735 78
Beli 349 303

Berdasarkan Tabel 15, penggunaan threshold optimal sebesar 0,154 menghasilkan perubahan pola klasifikasi. Jumlah pengunjung yang berhasil diidentifikasi sebagai pembeli meningkat menjadi 303 observasi, sedangkan jumlah pengunjung yang sebenarnya melakukan pembelian tetapi diprediksi tidak membeli menurun menjadi 78 observasi.

Tabel 16. Kinerja Klasifikasi pada Threshold = 0,5 dan Threshold Optimal = 0,154
Threshold Akurasi Sensitivitas Spesifisitas
0,5 0,8897 0,9827 0,3806
0,1541 (Optimal) 0,8268 0,8325 0,7953

Berdasarkan Tabel 16, penggunaan threshold 0,5 menghasilkan akurasi yang lebih tinggi yaitu sebesar 88,97%. Namun, tingginya akurasi tersebut disertai dengan spesifisitas yang rendah sehingga model kurang baik dalam mengidentifikasi pengunjung yang melakukan pembelian. Sebaliknya, penggunaan threshold optimal sebesar 0,1541 menghasilkan akurasi yang sedikit lebih rendah yaitu 82,68%, tetapi mampu meningkatkan keseimbangan antara sensitivitas dan spesifisitas. Oleh karena itu, threshold optimal lebih disarankan karena memberikan kemampuan yang lebih baik dalam mendeteksi pengunjung yang berpotensi melakukan pembelian.

2.6.4 Distribusi Probabilitas Prediksi

# Distribusi probabilitas prediksi
# dist_df <- data.frame(
#   prob  = pred_prob,
#   kelas = test$Revenue
# )
# 
# ggplot(dist_df, aes(x = prob, fill = kelas)) +
#   geom_density(alpha = 0.5) +
#   geom_vline(xintercept = 0.5,   linetype = "dashed", color = "red",    size = 0.8,
#              aes(label = "Threshold = 0.5")) +
#   geom_vline(xintercept = 0.154, linetype = "dashed", color = "#2980b9", size = 0.8) +
#   scale_fill_manual(values = c("Tidak_Beli" = "#e74c3c", "Beli" = "#2980b9"),
#                     name = "Kelas") +
#   annotate("text", x = 0.53, y = 4, label = "Threshold = 0,5",   color = "red",     size = 3.5) +
#   annotate("text", x = 0.18, y = 4, label = "Threshold = 0,154", color = "#2980b9", size = 3.5) +
#   labs(title = "Distribusi Probabilitas Prediksi",
#        x = "Probabilitas Prediksi",
#        y = "Densitas") +
#   theme_minimal()

Distribusi probabilitas prediksi menunjukkan bahwa sebagian besar pengunjung yang tidak melakukan pembelian memiliki probabilitas prediksi yang rendah dan terkonsentrasi pada rentang mendekati nol. Sebaliknya, pengunjung yang melakukan pembelian cenderung memiliki probabilitas prediksi yang lebih tinggi dengan sebaran yang lebih luas.

Threshold optimal berada pada nilai yang lebih rendah dibandingkan threshold standar (0,154 vs 0,5), yang menunjukkan bahwa penggunaan threshold 0,154 mampu memberikan keseimbangan yang lebih baik antara sensitivitas dan spesifisitas dalam proses klasifikasi.

Meskipun masih terdapat tumpang tindih distribusi antara kedua kelompok pada rentang probabilitas tertentu, secara umum model mampu memisahkan pengunjung yang melakukan pembelian dan yang tidak melakukan pembelian dengan cukup baik. Hal ini sejalan dengan nilai AUC sebesar 0,8975 yang menunjukkan bahwa model memiliki kemampuan diskriminasi yang baik.

Gambar 3. Distribusi Probabilitas Prediksi — Kelompok Beli dan Tidak Beli beserta garis threshold standar (0,5) dan threshold optimal (0,154).

# Kesimpulan {#conclusion}
# Ketersediaan Data {#data-availability .unnumbered}
Data yang digunakan dalam penelitian ini merupakan data sekunder yang tersedia secara publik melalui Online Shoppers Purchasing Intention Dataset pada UCI Machine Learning Repository dan dapat diakses pada: https://archive.ics.uci.edu/dataset/468/online+shoppers+purchasing+intention+dataset

Referensi

  1. Laudon, K.C.; Traver, C.G. E-Commerce: Business, Technology, Society, 16th ed.; Pearson: New York, USA, 2020.

  2. Chen, H.; Chiang, R.H.L.; Storey, V.C. Business Intelligence and Analytics: From Big Data to Big Impact. MIS Quarterly 2012, 36, 1165–1188.

  3. Koufaris, M. Applying the Technology Acceptance Model and Flow Theory to Online Consumer Behavior. Information Systems Research 2002, 13, 205–223.

  4. Hosmer, D.W.; Lemeshow, S.; Sturdivant, R.X. Applied Logistic Regression, 3rd ed.; Wiley: Hoboken, NJ, USA, 2013.

  5. Sakar, C.O.; Polat, S.O.; Katircioglu, M.; Kastro, Y. Real-time prediction of online shoppers’ purchasing intention using multilayer perceptron and LSTM recurrent neural networks. Neural Computing and Applications 2019, 31, 6893–6908.

  6. Islam, T.; Nur, K.; Abujar, S.; Hossain, S.A. Prediction of Online Shopping Intention: An Application of Machine Learning. In Proceedings of the International Conference on Recent Advances in Computer Systems (RACS 2019), Hail, Saudi Arabia, 2019.