1 Introduction

1.1 Background

Dalam industri modern fashion e-commerce yang kompetitif, mengoptimalkan user experience pada website sangat penting untuk meningkatkan user engagement dan mendorong purchase behavior. Salah satu aspek visual yang memengaruhi user experience saat menjelajahi website adalah tema website.

Untuk mendukung upaya perusahaan dalam meningkatkan penjualan melalui pengoptimalan user experience, product development team ingin menguji apakah terdapat perbedaan tema dapat memberikan dampak signifikan terhadap user engagement, conversion.

1.2 Business Questions

  1. Apakah user menghabiskan waktu yang berbeda saat menjelajahi website dengan tema terang dibandingkan tema gelap?
  2. Apakah perbedaan tema website memengaruhi banyaknya user yang akhirnya melakukan conversion (pembelian)?
  3. Jika tema website tertentu terbukti lebih efektif dalam mendorong pembelian, seberapa besar potensi peningkatan transaksi dan revenue yang akan diperoleh?

1.3 Objective

Analisis ini bertujuan untuk mengevaluasi apakah perbedaan tema website memengaruhi perilaku user (engagement and conversion) secara signifikan. Analisis dilakukan menggunakan pendekatan A/B Testing, di mana user secara acak dibagi ke dalam dua kelompok:
- Group A (Control) : Mengakses website dengan tema terang (light)
- Group B (Treatment): Mengakses website dengan tema gelap (dark)

Dengan memahami pengaruh website theme terhadap perilaku user (engagement and conversion), tim dapat menentukan website theme yang harus diterapkan untuk meningkatkan engagement dan conversion, sehingga mendukung pertumbuhan penjualan fashion mereka secara signifikan.

2 Dataset Overview

Dataset yang digunakan merupakan data dummy perilaku 5.000 user yang mengunjungi website e-commerce fashion milik Brand X.

Variable Description
User ID Unique identifier for each user
Group Experimental group (A = control / light theme, B = treatment / dark theme)
Time Spent Time in seconds that the user spent on the website during their session
Conversion Whether the user completed a purchase during their session (Yes/No)

3 Load Libraries and Import Data

3.1 Load Libraries

library(readxl)
library(nortest) #normality test
library(ggplot2)
library(ggpubr) #qqplot
library(car) #levene test
library(summarytools)
library(dplyr)
library(DT)

3.2 Import Data

ab_marketing<- read_excel("D:/Dita/Project/AB Testing/ab_testing_website.xlsx")
ab_marketing<- ab_marketing[,1:4]
datatable(ab_marketing)

4 Penentuan Jenis Analisis Statistika A/B Testing untuk Skala Data Rasio

Sebelum melakukan A/B testing analysis, terdapat 2 uji yang harus dilakukan untuk menentukan jenis analisis yang tepat antara lain:

4.1 Uji Normalitas

Oleh karena sampel berukuran besar (>30 data) maka akan digunakan uji normalitas Kolmogorov Smirnov.

  • Hipotesis Uji Normalitas
    \(H_0\): Data berdistribusi normal
    \(H_1\): Data tidak berdistribusi normal

  • Kriteria keputusan:
    Jika p-value > 0.05, maka gagal tolak \(H_0\) artinya data berdistribusi normal
    Jika p-value ≤ 0.05, maka tolak \(H_0\) artinya data tidak berdistribusi normal

4.2 Uji Homogenitas Ragam

Uji ini digunakan untuk mengetahui apakah ragam antara dua group (Group A dan B) adalah sama atau berbeda.

  • Hipotesis Uji Kehomogenan Ragam:
    \(H_0\): \(\sigma_1^2 = \sigma_2^2\) → Ragam kedua group sama (homogen)
    \(H_1\): \(\sigma_1^2 \ne \sigma_2^2\) → Ragam kedua group berbeda (heterogen)

  • Kriteria keputusan:
    Jika p-value > 0.05, maka gagal tolak \(H_0\) artinya ragam kedua group homogen
    Jika p-value ≤ 0.05, maka tolak \(H_0\) artinya ragam kedua group heterogen

5 Exploratory Data Analysis

5.1 Distribusi Jumlah User Per Group

ab_marketing %>% 
  count(Group)%>%
  ggplot(aes(x = Group, y = n, fill = Group))+
  geom_col()+
  geom_text(aes(label = n), vjust = -0.5)+
  labs(title = "Distribusi Jumlah User Per Group", x = "Group", y = "Jumlah")+
  theme_minimal()

Jumlah user yang melihat website dengan tema light (Group A) adalah 2519 orang, sedangkan user yang melihat tema dark (Group B) adalah 2481 orang. Distribusi user setiap group ini cukup seimbang sehingga memungkinkan analisis A/B Testing dilakukan.

5.2 Rata-rata Time Spent Per Group

datatable(data.frame(ab_marketing %>%
  group_by(Group) %>%
  summarise(Mean_TimeSpent = mean(`Time Spent`))), caption = "Rata-rata Time Spent per Group (s)")
# boxplot  
ggplot(ab_marketing, aes(x = Group, y = `Time Spent`, fill = Group))+
  geom_boxplot()+
  labs(title = "Boxplot time spent per Group",
       x = "Group", y = "Time Spent (s)",
      subtitle = "Tampilan tema gelap menunjukkan median dan rata-rata yang lebih tinggi") +
  theme_minimal()

Berdasarkan boxplot dan tabel rata-rata di atas, terlihat bahwa user yang mengakses website dengan tema dark cenderung menghabiskan waktu lebih lama 39 detik dibandingkan dengan user tema light.

5.3 Distribusi Conversion Status Per Group

# conversion per group
conv_plot <- ab_marketing %>%
  group_by(Group, Conversion) %>%
  summarise(Jumlah = n()) %>%
  mutate(Persentase = Jumlah / sum(Jumlah),
         label = paste0(round(Persentase * 100, 1), "%"))
# visualization
ggplot(conv_plot, aes(x = Group, y = Persentase, fill = Conversion)) +
  geom_bar(stat = "identity", position = "stack") +
  geom_text(aes(label = label), 
            position = position_stack(vjust = 0.4), 
            color = "white", size = 3.5) +
  scale_y_continuous(labels = scales::label_percent()) +
  labs(
    title = "Perbandingan Conversion Rate per Group",
    x = "Group",
    y = "Persentase",
    fill = "Conversion"
  ) +
  theme_minimal()

Berdasarkan plot di atas, terlihat bahwa user yang menjelajahi website dengan tema dark cenderung melakukan pembelian dibandingkan user tema light, ditunjukkan dengan persentase Conversion yes lebih besar untuk tema dark.

Secara eksploratif, terlihat perbedaan rata-rata time spent dan conversion berdasarkan website theme. Akan tetapi, EDA ini tidak cukup untuk menyimpulkan apakah perbedaan ini signifikan. Oleh karena itu, perlu dilakukan pendekatan statistika untuk memastikan apakah perbedaan ini memang karena perbedaan website theme atau hanya kebetulan saja.

6 A/B Testing terhadap Time Spent User dengan Analisis Welch’s T-Test

6.1 Uji Normalitas Kolmogorov Smirnov

Sebelum melakukan uji normalitas data Kolmogorov Smirnov, kita dapat melihat sebaran data terlebih dahulu dengan histogram atau QQ Plot

6.1.1 Histogram

ggplot(ab_marketing, aes(x = `Time Spent`)) +
  geom_histogram(bins = 10, fill = "darkcyan", color = "white") +
  facet_wrap(~ Group) +
  labs(title = "Histogram Time Spent per Group",
       x = "Page Views", y = "Count") +
  theme_minimal()

Berdasarkan plot di atas, histogram membentuk sebaran normal untuk kedua group, kita pastikan menggunakan Kolmogorov Smirnov test.

6.1.2 QQ Plot

ggqqplot(ab_marketing, x = "Time Spent", facet.by = "Group")

Berdasarkan QQ plot di atas, data menyebar di sekitar garis diagonal untuk kedua group sehingga bisa dikatakan bahwa data menyebar secara normal, tetapi kita perlu pastikan menggunakan Kolmogorov Smirnov test.

6.1.3 Kolmogorov Smirnov Normality Test

#membagi data untuk setiap group
timespent_a = ab_marketing$`Time Spent`[ab_marketing$Group == 'A']
timespent_b = ab_marketing$`Time Spent`[ab_marketing$Group == 'B']

#kolmogorov smirnov test
ks_spenttime_a = ks.test(timespent_a, "pnorm", mean(timespent_a), sd(timespent_a))
ks_spenttime_b = ks.test(timespent_b, "pnorm", mean(timespent_b), sd(timespent_b))


ks_pvalues <- datatable(data.frame(
   `Kolmogorov_Smirnov_Test` = "P-Value",
  `Group_A` = round(ks_spenttime_a$p.value,2),
  `Group_B` = round(ks_spenttime_b$p.value,2)
), caption = "P-Value Uji Normalitas Kolmogorov Smirnov")

ks_pvalues

Berdasarkan hasil uji Kolmogorov Smirnov, p-value group A dan B sebesar 0.08 dan 0.3 secara berturut-turut maka keputusannya gagal tolak \(H_0\) sehingga dapat disimpulkan bahwa data menyebar secara normal.

Oleh karena data menyebar secara normal, maka A/B Testing dapat dilakukan menggunakan statistika parametrik, yaitu antara t-test atau Welch’s t-test (tergantung dari kehomogenan ragam kedua group).

6.2 Uji Homogenitas Ragam (Levene Test)

levene_test = leveneTest(`Time Spent` ~ Group, data = ab_marketing)
levene_test
## Levene's Test for Homogeneity of Variance (center = median)
##         Df F value    Pr(>F)    
## group    1  23.122 1.565e-06 ***
##       4998                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
levene_pvalues <- datatable(data.frame(
  Test    = "Levene Test",
  P_Value = levene_test$`Pr(>F)`[1]
), caption = "P-Value Levene Test")

levene_pvalues

Berdasarkan hasil Levene test diperoleh p-value sebesar \(1{,}565 \times 10^{-6}\), yang lebih kecil dari 0,05 sehingga dapat disimpulkan bahwa ragam antar group tidak homogen, sehingga analisis A/B testing dilanjutkan menggunakan Welch’s t-test yang tidak mengasumsikan kesamaan varians.

6.3 Welch’s t-test

  • Hipotesis
    \(H_O: \mu_1 = \mu_2\) (Tidak terdapat perbedaan rata-rata time spent user Group A dan B)
    \(H_O: \mu_1 \ne \mu_2\) (Terdapat perbedaan rata-rata time spent user Group A dan B)
t_test = t.test(`Time Spent`~Group, data = ab_marketing, var.equal = FALSE)
t_test
## 
##  Welch Two Sample t-test
## 
## data:  Time Spent by Group
## t = -12.457, df = 4938.8, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group A and group B is not equal to 0
## 95 percent confidence interval:
##  -44.44418 -32.35777
## sample estimates:
## mean in group A mean in group B 
##        210.8975        249.2985
ttest_pvalues <- datatable(data.frame(
  Test    = "Welch's t-test",
  P_Value = t_test$p.value
), caption = "P-Value Welch's t-test")

ttest_pvalues
  • Berdasarkan hasil Welch’s t-test diperoleh p-value sebesar \(4{,}269 \times 10^{-35}\), sehingga dapat disimpulkan bahwa terdapat perbedaan rata-rata waktu yang dihabiskan user di website antara Group A dan Group B.
  • User yang melihat website dengan tema dark (Group B) menghabiskan waktu lebih lama di website yaitu sekitar 249 detik dibandingkan dengan user di tema light (Group A) dengan rata-rata waktu 210 detik.
  • Adapun Group B memiliki rata-rata waktu yang lebih tinggi (249 detik) dibandingkan Group A (210 detik)
  • Hal ini menunjukkan bahwa dark theme pada website secara signifikan lebih efektif dalam meningkatkan time spent user saat menjelajahi website

7 A/B Testing terhadap Conversion Status dengan Chi Square Analysis

Oleh karena data Conversion memiliki skala data nominal maka akan digunakan analisis non-parametrik yaitu antara Chi Square dan Fisher Test, tergantung apakah data memenuhi asumsi Chi Square atau tidak.

7.1 Asumsi Chi Square

Beberapa asumsi yang harus terpenuhi untuk melakukan analisis Chi Square antara lain.
1. Tidak ada sel dengan nilai observasi bernilai 0 (Nol).
2. Apabila bentuk tabel kontingensinya adalah 2 X 2, maka tidak boleh ada 1 sel pun dari frekuensi harapan (expected count) yang bernilai kurang dari 5.

7.1.1 Tabel Kontingensi

Hasil tabel kontingensi menunjukkan distribusi jumlah user yang berhasil melakukan konversi (Yes) dan tidak melakukan konversi (No) pada setiap group:

cont_conversion = table(ab_marketing$Group, ab_marketing$Conversion)
cont_conversion
##    
##       No  Yes
##   A 2383  136
##   B 2132  349

Berdasarkan tabel kontingensi 2 x 2 di atas, diketahui bahwa semua sel tidak ada yang bernilai nol sehingga asumsi analisis Chi Square yang pertama sudah terpenuhi.

7.1.2 Expected Count

expected_counts = chisq.test(cont_conversion)$expected
expected_counts
##    
##           No     Yes
##   A 2274.657 244.343
##   B 2240.343 240.657

Berdasarkan hasil expected count di atas, diketahui bahwa tiap sel memiliki expected count lebih dari 5 sehingga asumsi analisis Chi Square yang kedua sudah terpenuhi.

Oleh karena kedua asumsi analisis Chi Square sudah terpenuhi, kita dapat melanjutkannya analisis Chi Square.

7.2 Analisis Chi Square

  • Hipotesis
    \(H_0:\) Tidak terdapat hubungan antara group dengan conversion status
    \(H_1:\) Terdapat hubungan antara group dengan conversion status
chisq.test(cont_conversion)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  cont_conversion
## X-squared = 106.23, df = 1, p-value < 2.2e-16

Berdasarkan hasil analisis Chi Square di atas diperoleh p-value kurang dari 0.05 sehingga dapat disimpulkan bahwa terdapat hubungan antara group dengan conversion status.

Website theme terbukti berpengaruh terhadap keputusan user dalam melakukan pembelian di website fashion Brand X. Lalu user yang melihat theme mana yang lebih berpeluang untuk melakukan pembelian? Hal ini bisa dilihat dengan menghitung Odds Ratio.

7.3 Odds Ratio

Untuk mengetahui seberapa besar perbedaan peluang konversi antar group, dilakukan perhitungan Odds Ratio (OR).

OR = (cont_conversion[2,2]/cont_conversion[2,1])/(cont_conversion[1,2]/cont_conversion[1,1])
OR
## [1] 2.868292

User yang melihat website dengan tema gelap (dark) memiliki kemungkinan 2.87 kali lebih besar untuk melakukan pembelian dibandingkan dengan user tema terang (light).

7.4 Potensi Peningkatan Conversion Rate, Transaction Number dan Revenue

Apabila diasumsikan bahwa dalam seminggu terdapat 10000 user yang mengunjungi website serta rata-rata transaksi (AOV) user adalah Rp200.000 maka peningkatan conversion rate, transaction number, dan revenue sebagai berikut:

#Peningkatan conversion rate
conv_rate_light = cont_conversion[1,2]/sum(cont_conversion[1,])
conv_rate_light
## [1] 0.05398968
conv_rate_dark = cont_conversion[2,2]/sum(cont_conversion[2,])
conv_rate_dark
## [1] 0.1406691
increase_conv_perc = round(((conv_rate_dark - conv_rate_light) / conv_rate_light)*100,1)
increase_conv_perc
## [1] 160.5

Penerapan dark theme pada website dapat meningkatkan conversion rate hingga 161%.

#Peningkatan jumlah transaksi
conv_light = conv_rate_light * 10000
conv_dark = conv_rate_dark * 10000

increase_conv_numb = conv_dark - conv_light
increase_conv_numb
## [1] 866.7941

Penerapan dark theme pada website dapat meningkatkan transaksi sebanyak 866 transaksi per minggu

#Peningkatan Revenue apabila AOV Rp200.000
increase_conv_numb*200000
## [1] 173358813

Penerapan dark theme pada website dapat meningkatkan revenue sebanyak Rp174.000.000 dalam seminggu.

8 Conclusion

  1. Dark theme secara signifikan lebih efektif dalam meningkatkan time spent user saat menjelajahi website, ditunjukkan dari rata-rata time spent user yang lebih lama 39 detik dibandingkan light theme pada website.
  2. Dark theme terbukti mendorong lebih banyak user untuk melakukan pembelian (Conversion), ditunjukkan dari kemungkinan konversi yang hampir tiga kali lebih tinggi dibandingkan light theme.
  3. Dark theme mampu meningkatkan conversion rate hingga 161% dengan potensi tambahan pembelian sebanyak 866 transaksi per 10.000 user (asumsi weekly traffic). Hal ini setara dengan potensi peningkatan revenue sebesar Rp174 juta apabila rata-rata transaksi sebesar Rp200.000.

Berdasarkan hasil A/B Testing, perubahan theme pada website Brand A berpengaruh positif terhadap perilaku user. User yang melihat dark theme pada website lebih banyak menghabiskan waktu di website dan terbukti dapat meningkatkan kemungkinan user untuk melakukan pembelian.

9 Business Recommendation

Brand X sebaiknya mengimplementasikan dark theme secara permanen untuk websitenya. Hal ini karena dark theme terbukti efektif dalam meningkatkan user engangement, mendorong purchase behavior user, dan meningkatkan revenue perusahaan.

Dengan mengimplementasikan dark theme ini, Brand X akan berpotensi untuk mendorong penjualan dan revenue sehingga memberikan keunggulan kompetitif di industri modern fashion e-commerce saat ini.

Thank you for reading! Lets connect!
- linked in: Rahma Ardita Putri
- email: