Toko berlian dengan 15 cabang di Indonesia mengalami masalah serius 6 bulan terakhir:
“Kenapa penjualan mandek? Harga kita sudah benar belum? Di range harga berapa kita harus fokus? Apakah ada kesalahan pricing yang bikin rugi?”
Menggunakan data 53,940 berlian untuk: - Cari pola distribusi harga → temukan sweet spot - Identifikasi masalah pricing → deteksi kesalahan harga - Berikan solusi konkret → action plan langsung jalan
| Variabel | Detail |
|---|---|
| Harga (Price) | Termurah: Rp4.890.000 | Termahal: Rp282.345.000 |
| Berat (Carat) | 0.2 - 5.01 carat (rata-rata: 0.8 carat) |
| Jumlah Data | 53,940 berlian |
| Korelasi Harga-Berat | 0.922 → Hubungan SANGAT KUAT |
Key Insight Awal:
Korelasi 0.922 artinya berat berlian sangat mempengaruhi harga. Tapi range harga lebar (Rp 4.9 juta - Rp 282 juta) menunjukkan ada faktor lain yang perlu digali.
median_val <- median(diamonds$price_idr)
mean_val <- mean(diamonds$price_idr)
ggplot(diamonds, aes(x = price_idr)) +
geom_histogram(bins = 50, fill = "#1976D2", color = "white", alpha = 0.8) +
geom_vline(xintercept = median_val, color = "#D32F2F", linetype = "dashed", size = 1.2) +
geom_vline(xintercept = mean_val, color = "#F57C00", linetype = "dashed", size = 1.2) +
annotate("text", x = median_val + 20000000, y = 5000,
label = paste0("Median\nRp", format(round(median_val/1000000), big.mark="."), " Jt"),
color = "#D32F2F", fontface = "bold", size = 5) +
annotate("text", x = mean_val + 20000000, y = 4500,
label = paste0("Rata-rata\nRp", format(round(mean_val/1000000), big.mark="."), " Jt"),
color = "#F57C00", fontface = "bold", size = 5) +
scale_x_continuous(
labels = function(x) paste0("Rp", format(x/1000000, big.mark=".", decimal.mark=","), " Jt"),
breaks = seq(0, 300000000, 37500000)
) +
scale_y_continuous(labels = scales::comma) +
labs(
title = "Distribusi Harga: Mayoritas Berlian di Segment Budget",
subtitle = "Grafik miring kanan → Volume tinggi di harga rendah, ekor panjang di harga tinggi",
x = "Harga (Rupiah)",
y = "Jumlah Berlian"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 17),
plot.subtitle = element_text(color = "#555555", margin = margin(b = 15)),
axis.title = element_text(face = "bold"),
panel.grid.minor = element_blank()
)
Artinya: - Puncak di kiri (harga murah) → Mayoritas berlian murah - Ekor panjang ke kanan (harga mahal) → Sedikit berlian mahal
Gap Median vs Rata-rata: - Median: Rp 36 juta - Rata-rata: Rp 59 juta - Selisih: Rp 23 juta
Kesimpulan: Jangan pakai rata-rata untuk patokan! Pakai median karena lebih real.
| segment | Jumlah | Persentase | Harga Rata-rata |
|---|---|---|---|
| Budget (<15 Juta) | 14499 | 26.9% | Rp11 Jt |
| Menengah (15-75 Juta) | 24714 | 45.8% | Rp39 Jt |
| Premium (75-150 Juta) | 9504 | 17.6% | Rp104 Jt |
| Luxury (>150 Juta) | 5223 | 9.7% | Rp205 Jt |
Volume drop drastis di segment ini. Konsumen cenderung: - Skip dari menengah (Rp 75 juta) langsung ke luxury (>Rp 150 juta), ATAU - Turun dari Rp 75 juta ke Rp 45 juta
1. Rebalancing Stok: - 60-70% stok di Rp 7.5-37 juta (laku cepat) - 20-25% di Rp 37-75 juta (margin bagus) - 5-10% di Rp 75-150 juta (hati-hati!) - <5% di >Rp 150 juta (showcase, pre-order)
2. Clearance Dead Zone: - Berlian Rp 75-150 juta >90 hari → Diskon 15-20% - Bundle dengan garansi/servis gratis - Trade-in program
3. Strategi Harga Beda: - Budget (<15 jt): Kompetitif, fokus volume - Menengah (15-75 jt): Value add (sertifikat, garansi) - Premium (>75 jt): Konsultasi, customization
ggplot(diamonds, aes(x = price_idr)) +
geom_density(fill = "#1976D2", alpha = 0.6, color = "#0D47A1", size = 1.2) +
geom_vline(xintercept = 15000000, color = "#4CAF50", linetype = "dashed", size = 1) +
geom_vline(xintercept = 75000000, color = "#FF9800", linetype = "dashed", size = 1) +
geom_vline(xintercept = 150000000, color = "#D32F2F", linetype = "dashed", size = 1) +
annotate("rect", xmin = 0, xmax = 15000000, ymin = 0, ymax = Inf, alpha = 0.1, fill = "#4CAF50") +
annotate("rect", xmin = 15000000, xmax = 75000000, ymin = 0, ymax = Inf, alpha = 0.1, fill = "#FF9800") +
annotate("rect", xmin = 75000000, xmax = 150000000, ymin = 0, ymax = Inf, alpha = 0.1, fill = "#FFC107") +
annotate("rect", xmin = 150000000, xmax = 300000000, ymin = 0, ymax = Inf, alpha = 0.1, fill = "#D32F2F") +
annotate("text", x = 7500000, y = 3.5e-08, label = "BUDGET", color = "#2E7D32", fontface = "bold", size = 5) +
annotate("text", x = 45000000, y = 3.5e-08, label = "MENENGAH", color = "#E65100", fontface = "bold", size = 5) +
annotate("text", x = 112500000, y = 3.5e-08, label = "PREMIUM", color = "#F57F17", fontface = "bold", size = 5) +
annotate("text", x = 210000000, y = 3.5e-08, label = "LUXURY", color = "#C62828", fontface = "bold", size = 5) +
scale_x_continuous(
labels = function(x) paste0("Rp", format(x/1000000, big.mark="."), " Jt"),
breaks = seq(0, 300000000, 37500000)
) +
labs(
title = "Density Plot: Identifikasi Sweet Spot Pasar",
subtitle = "Area di bawah kurva = proporsi pasar | Puncak = harga paling banyak terjual",
x = "Harga (Rupiah)",
y = "Density (Probabilitas)"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 17),
plot.subtitle = element_text(color = "#555555", margin = margin(b = 15)),
axis.title = element_text(face = "bold"),
panel.grid.minor = element_blank()
)
Puncak kurva ada di sini → Harga paling banyak terjual.
| segment | Jumlah | Persentase | Harga Rata-rata |
|---|---|---|---|
| Budget (<15 Juta) | 14499 | 26.9% | Rp11 Jt |
| Menengah (15-75 Juta) | 24714 | 45.8% | Rp39 Jt |
| Premium (75-150 Juta) | 9504 | 17.6% | Rp104 Jt |
| Luxury (>150 Juta) | 5223 | 9.7% | Rp205 Jt |
Insight Krusial:
Tidak ada dua puncak → Artinya satu pasar unified, bukan terpisah (retail vs wholesale).
| Alokasi | Segment | Alasan |
|---|---|---|
| 60% | Budget-Menengah (<75 jt) | Volume tinggi, cepat laku |
| 30% | Menengah (15-45 jt) | SWEET SPOT margin terbaik |
| 10% | Premium-Luxury (>75 jt) | Showcase, konsinyasi |
medians_cut <- diamonds %>%
group_by(cut) %>%
summarise(med = median(price_per_carat_idr))
ggplot(diamonds, aes(x = cut, y = price_per_carat_idr, fill = cut)) +
geom_boxplot(alpha = 0.7, outlier.alpha = 0.3, outlier.size = 1) +
stat_summary(fun = median, geom = "point", shape = 23, size = 3, fill = "white", color = "black") +
scale_fill_manual(values = c(
"Fair" = "#BDBDBD",
"Good" = "#9E9E9E",
"Very Good" = "#FF9800",
"Premium" = "#1976D2",
"Ideal" = "#2E7D32"
)) +
scale_y_continuous(
labels = function(x) paste0("Rp", format(x/1000000, big.mark="."), " Jt"),
breaks = seq(0, 300000000, 37500000)
) +
labs(
title = "TEMUAN KRUSIAL: Premium Lebih Mahal dari Ideal!",
subtitle = "Box = 50% data tengah | Garis tengah = Median | Titik = Outlier",
x = "Kualitas Potongan",
y = "Harga per Carat (Rupiah)"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 17, color = "#D32F2F"),
plot.subtitle = element_text(color = "#555555", margin = margin(b = 15)),
axis.title = element_text(face = "bold"),
legend.position = "none",
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank()
)
Ideal > Premium > Very Good > Good > Fair
Premium (Rp 56.4 jt) > Ideal (Rp 49.6 jt)
Premium lebih mahal Rp 6.8 juta per carat dari Ideal!
Secara objektif: - Ideal = kualitas potongan terbaik - Premium = di bawah Ideal
Yang terjadi: - Customer educated tahu Ideal lebih bagus - Lihat Premium lebih mahal → AVOID! - Premium stuck di gudang → Modal tertahan
Hasil: - Terpaksa diskon untuk jual → Margin hancur - INI KENAPA MARGIN TURUN 12%!
Reprice Premium Cut:
| Cut | Sekarang (SALAH) | Target (BENAR) |
|---|---|---|
| Ideal | Rp 49.6 jt/carat | Rp 49.6 jt (benchmark) |
| Premium | Rp 56.4 jt ❌ | Rp 46 jt (-7%) ✅ |
| Very Good | Rp 54 jt | Rp 42 jt (-15%) |
Expected Result: - Premium turnover naik 30-40% - Value ladder jelas: Fair < Good < VG < Premium < Ideal - Total margin naik meski per unit turun sedikit
Untuk berlian di atas Q3 (25% termahal):
Segment A — Legitimate Premium: - Ideal/Premium + berat besar + warna D-E + clarity IF/VVS - Keep pricing → Memang exceptional - Strategy: Konsinyasi, pre-order, trunk show
Segment B — Overpriced Fair/Good: - Fair/Good tapi harga tinggi - Re-audit: Kenapa mahal? Berat besar? Warna bagus? - Action: Jika ga justified → Diskon 15-20%
ggplot(diamonds, aes(x = cut, y = price_idr, fill = cut)) +
geom_violin(alpha = 0.7, draw_quantiles = c(0.25, 0.5, 0.75), scale = "width") +
geom_boxplot(width = 0.15, alpha = 0.5, outlier.shape = NA) +
scale_fill_manual(values = c(
"Fair" = "#757575",
"Good" = "#9E9E9E",
"Very Good" = "#FF9800",
"Premium" = "#1976D2",
"Ideal" = "#2E7D32"
)) +
scale_y_continuous(
labels = function(x) paste0("Rp", format(x/1000000, big.mark="."), " Jt"),
breaks = seq(0, 300000000, 37500000)
) +
coord_cartesian(ylim = c(0, 300000000)) +
labs(
title = "Violin Plot: Distribusi Harga by Cut Quality",
subtitle = "Lebar violin = banyaknya berlian di harga itu | 3 garis = Q1, Median, Q3",
x = "Kualitas Potongan",
y = "Harga (Rupiah)"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 17),
plot.subtitle = element_text(color = "#555555", margin = margin(b = 15)),
axis.title = element_text(face = "bold"),
legend.position = "none",
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank()
)
Very Good (Orange): - Violin paling lebar di Rp 30-75 juta - Sweet spot VG ada di sini - Volume tinggi, distribusi merata
Premium (Biru): - Lebar merata dari Rp 7.5 juta - Rp 180 juta - Lack of focus! Ga ada positioning jelas - Memperkuat Premium Paradox
Ideal (Hijau): - Sangat lebar di bawah Rp 30 juta - Volume play → Ideal populer di semua segment - Kompetisi ketat → Harga tertekan
Very Good = Hidden Champion! - Dominasi di Rp 45-75 juta - Area terbaik untuk margin + volume - Under-utilized oleh banyak toko
Campaign “VG Sweet Spot”: - Tagline: “90% kecantikan Ideal, 70% harganya” - Target: Rp 45-75 juta - Bundle: VG + warna G + clarity VS2 = Paket Perfect Rp 52.5 juta
Action: - Tambah stok VG 40% di range Rp 45-75 juta - Train sales: Value prop VG yang clear - Display showcase VG di toko
3 Tier Berbeda:
| Tier | Range | Product | Channel |
|---|---|---|---|
| Entry | Rp 7.5-30 jt | 0.3-0.5 carat, warna I-J | Online, marketplace |
| Classic | Rp 37-105 jt | 0.5-1.0 carat, warna G-H | In-store, konsultasi |
| Signature | Rp 105-225 jt | 1.0-2.0 carat, warna D-F | VIP, private viewing |
Benefit: - Clear messaging per tier - Tidak kanibalisasi antar tier - Maksimalkan volume DAN margin
Audit berlian Fair/Good >Rp 75 juta: - Recertify → Mungkin seharusnya Very Good? - Recut → Upgrade kualitas potongan - Markdown 25-30% → Quick liquidation
Laporan dibuat: 18-02-2026