Nama : Muhammad Fauzan Abid
NIM : 3337260096
Kelas : A26

Anggota Kelompok:
1. Muhammad Fauzan Abid [3337260096]
2. Cik Mochammad Isra Islami Pasha [3337260084]
3. Fany Shaffa Aulia [3337260004]

1 Sumber Data

Bidang yang dipilih: Ekonomi dan Bisnis (Perilaku Konsumen Ritel).

Data yang digunakan adalah Customer Shopping Trends Dataset yang berisi data transaksi ritel konsumen, mencakup informasi demografi pelanggan, kategori produk yang dibeli, nominal belanja, rating ulasan, hingga metode pembayaran yang digunakan.

Sumber data: Kaggle (Sourav Banerjee).

Dataset Customer Shopping Trends: https://www.kaggle.com/datasets/iamsouravbanerjee/customer-shopping-trends-dataset

Alasan memilih data ini: Dataset ini sangat relevan dengan tren bisnis ritel modern untuk memahami pola pembelian dan preferensi konsumen. Data ini menyediakan kombinasi variabel numerik (seperti nominal belanja dan usia) serta variabel kategorik (seperti kategori produk, gender, dan metode pembayaran) secara lengkap, sehingga sangat ideal untuk latihan visualisasi data kategorik dan numerik.

2 Visualisasi Data Kategorik

2.1 Pie Chart Metode Pembayaran (Payment Method)

# Menghitung frekuensi setiap metode pembayaran
df_pay <- data %>%
  group_by(`Payment Method`) %>%
  summarise(counts = n(), .groups = "drop")

# Menghitung persentase dan posisi label
df_pay <- df_pay %>%
  arrange(desc(`Payment Method`)) %>%
  mutate(
    prop = round(counts * 100 / sum(counts), 1),
    lab.ypos = cumsum(prop) - 0.5 * prop
  )

# Membuat pie chart distribusi metode pembayaran
ggplot(df_pay, aes(x = "", y = prop, fill = `Payment Method`)) +
  geom_bar(width = 1, stat = "identity", color = "white") +
  geom_text(
    aes(y = lab.ypos, label = paste0(prop, "%")),
    color = "white",
    size = 3.5
  ) +
  coord_polar("y", start = 0) +
  scale_fill_viridis_d(option = "turbo") + 
  labs(
    title = "Distribusi Penggunaan Metode Pembayaran",
    fill = "Metode Pembayaran"
  ) +
  theme_void() +
  theme(plot.title = element_text(face = "bold", hjust = 0.5))

Interpretasi Pie Chart Metode Pembayaran

Visualisasi ini menampilkan distribusi berbagai metode pembayaran yang digunakan oleh konsumen. Persentase menunjukkan angka yang cenderung seimbang antar berbagai metode seperti Kartu Kredit, PayPal, Cash, dan metode digital lainnya. Tidak ada satu metode pembayaran yang mendominasi secara absolut, menunjukkan bahwa konsumen memiliki preferensi transaksi yang sangat beragam.

2.2 Bar Chart Frekuensi Pembelian per Kategori Produk (Category)

# Menghitung frekuensi pembelian per kategori produk
df_cat <- data %>%
  group_by(Category) %>%
  summarise(counts = n(), .groups = "drop") %>%
  arrange(desc(counts))

# Membuat Bar Chart Horizontal
ggplot(df_cat, aes(x = reorder(Category, counts), y = counts, fill = Category)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
  coord_flip() +
  scale_fill_brewer(palette = "Set1") +
  labs(
    title = "Frekuensi Transaksi Pembelian per Kategori Produk",
    x = "Kategori Produk",
    y = "Jumlah Transaksi"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 13, hjust = 0.5),
    axis.title = element_text(face = "bold")
  )

Interpretasi Bar Chart Kategori Produk

Diagram batang di atas memperlihatkan perbandingan total frekuensi transaksi untuk setiap kategori produk (Category) seperti Clothing, Footwear, Outerwear, dan Accessories. Kategori produk di urutan atas menunjukkan item yang paling diminati dan paling sering dibeli oleh pelanggan, yang menjadi penggerak utama volume penjualan ritel.

3 Visualisasi Data Numerik

3.1 Histogram Nominal Belanja (Purchase Amount)

ggplot(data, aes(x = `Purchase Amount (USD)`)) +
  geom_histogram(
    binwidth = 5,
    fill = "coral",
    color = "white",
    alpha = 0.8
  ) +
  labs(
    title = "Distribusi Frekuensi Nominal Belanja (USD)",
    x = "Nominal Belanja (USD)",
    y = "Frekuensi (Jumlah Transaksi)"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    axis.title = element_text(face = "bold")
  )

Interpretasi Histogram Nominal Belanja

Histogram menunjukkan sebaran nilai transaksi (Purchase Amount) dalam USD. Distribusi data terlihat cukup merata (seragam) di berbagai rentang harga, mengindikasikan bahwa konsumen melakukan pembelian dengan rentang pengeluaran yang bervariasi tanpa ada pemusatan pada satu titik harga tertentu. Hal ini umum terjadi pada retail yang menjual barang dengan variasi harga yang luas.

3.2 Histogram Usia Konsumen (Age)

ggplot(data, aes(x = Age)) +
  geom_histogram(
    binwidth = 2,
    fill = "skyblue",
    color = "white",
    alpha = 0.8
  ) +
  labs(
    title = "Distribusi Usia Konsumen",
    x = "Usia (Tahun)",
    y = "Frekuensi"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    axis.title = element_text(face = "bold")
  )

Interpretasi Histogram Usia Konsumen

Histogram menunjukkan bahwa usia konsumen yang berbelanja tersebar mulai dari belasan tahun hingga lansia. Tidak terdapat satu kelompok usia yang mendominasi secara ekstrem, yang mengindikasikan bahwa produk yang dijual memiliki target pasar yang luas dan dapat diterima oleh semua kalangan umur.

3.3 Scatter Plot Hubungan Usia dan Nominal Belanja

ggplot(data, aes(x = Age, y = `Purchase Amount (USD)`, color = Category)) +
  geom_point(alpha = 0.6, size = 2) +
  geom_smooth(method = "lm", se = FALSE, color = "black", linetype = "dashed") +
  scale_color_viridis_d(option = "turbo") +
  labs(
    title = "Hubungan Antara Usia Konsumen dan Nominal Belanja",
    x = "Usia Konsumen (Tahun)",
    y = "Nominal Belanja (USD)",
    color = "Kategori Produk"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 13, hjust = 0.5),
    axis.title = element_text(face = "bold")
  )
## `geom_smooth()` using formula = 'y ~ x'

Interpretasi Scatter Plot Hubungan Usia dan Nominal Belanja

Titik-titik tersebar secara menyeluruh dan acak di sepanjang bidang koordinat. Garis tren yang cenderung datar mengindikasikan bahwa tidak ada korelasi linear yang kuat antara usia seorang konsumen dengan besaran uang yang mereka belanjakan. Konsumen usia muda maupun usia tua sama-sama memiliki potensi untuk melakukan transaksi bernominal kecil maupun besar.

3.4 Stacked Bar Chart Komposisi Pembelian per Gender

ggplot(data, aes(x = Gender, fill = Category)) +
  geom_bar(position = "fill") +
  scale_y_continuous(labels = scales::percent) +
  scale_fill_viridis_d(option = "turbo") +
  labs(
    title = "Proporsi Kategori Produk Berdasarkan Gender",
    x = "Gender (Jenis Kelamin)",
    y = "Persentase Komposisi",
    fill = "Kategori Produk"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 13, hjust = 0.5),
    axis.title = element_text(face = "bold")
  )

Interpretasi Stacked Bar Chart Komposisi Pembelian per Gender

Stacked bar chart menunjukkan komposisi pembelian produk antara konsumen laki-laki dan perempuan. Proporsi pembelian kategori seperti Clothing, Accessories, dan Footwear terlihat hampir identik dan seimbang di antara kedua kelompok gender. Hal ini membuktikan bahwa preferensi kategori barang di toko ini tidak memiliki bias gender yang signifikan.

3.5 Needle Chart Rata-rata Belanja per Kategori Produk

# Menyiapkan tabel rata-rata nominal belanja per Kategori
freqtab <- data %>%
  group_by(Category) %>%
  summarise(Avg_Purchase = mean(`Purchase Amount (USD)`), .groups = "drop") %>%
  rename(Var1 = Category)

# Membuat Needle Chart
ggplot(data = freqtab, mapping = aes(x = reorder(Var1, Avg_Purchase), y = Avg_Purchase)) +
  geom_segment(
    aes(x = reorder(Var1, Avg_Purchase), xend = reorder(Var1, Avg_Purchase), y = 0, yend = Avg_Purchase), 
    color = "skyblue"
  ) +
  geom_point(color = "navyblue", size = 4, alpha = 0.6) +
  geom_text(aes(label = round(Avg_Purchase, 1)), hjust = -0.3, size = 3.5) +
  coord_flip() +
  scale_y_continuous(limits = c(0, max(freqtab$Avg_Purchase) * 1.15)) +
  labs(
    title = "Rata-Rata Nominal Belanja Berdasarkan Kategori Produk",
    x = "Kategori Produk",
    y = "Rata-Rata Nominal Belanja (USD)"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 13, hjust = 0.5),
    axis.title = element_text(face = "bold")
  )

Interpretasi Rata-rata Belanja per Kategori Produk

Visualisasi needle chart memperlihatkan perbandingan rata-rata uang yang dihabiskan per transaksi untuk setiap kategori produk. Nilai rata-rata dari seluruh kategori terlihat sangat berdekatan (tidak memiliki disparitas harga yang jauh). Ini menunjukkan bahwa harga rata-rata produk secara keseluruhan antar kategori dikelola pada rentang nilai yang setara (berkisar di angka yang sama).

4 Kesimpulan

  • Hasil visualisasi menunjukkan bahwa pemilihan geometri (bar chart, pie chart) disesuaikan dengan jenis pertanyaan analitis untuk perbandingan kategori dan distribusi data.
  • Penambahan estetika (color, fill), label (labs()), serta tema (theme_minimal()) secara konsisten meningkatkan keterbacaan dan kejelasan informasi pada grafik.
  • Praktik ini sejalan dengan prinsip utama analisis data: grafik yang baik tidak hanya akurat secara statistik, tetapi juga mudah diinterpretasikan oleh pembaca.