Industri coffee chain memiliki dinamika profitabilitas yang berbeda antara wilayah dengan skala pasar besar (major market) dan kecil (small market). Perbedaan karakteristik konsumen, daya beli, intensitas promosi, serta cakupan distribusi dapat memengaruhi besarnya penjualan dan keuntungan yang diperoleh perusahaan. Oleh karena itu, analisis profitabilitas berdasarkan ukuran pasar menjadi penting untuk membantu perusahaan memahami segmen pasar mana yang memberikan kontribusi keuntungan lebih besar.
Melalui analisis ini, perusahaan dapat mengevaluasi efektivitas strategi pemasaran yang telah diterapkan serta menentukan prioritas ekspansi bisnis dan alokasi anggaran secara lebih efisien.
Analisis ini bertujuan untuk membandingkan profitabilitas antara Major Market dan Small Market berdasarkan total profit, rata-rata profit, profit margin, distribusi profit transaksi, serta hubungan antara biaya marketing dan profit. Hasil analisis diharapkan dapat menjadi dasar pertimbangan dalam pengambilan keputusan strategis perusahaan.
Insight utama yang dianalisis adalah:
“Analisis ini bertujuan untuk membandingkan profitabilitas serta efektivitas pengeluaran marketing antara Major Market dan Small Market pada produk Coffee dan Tea, guna mengetahui segmen pasar yang memberikan keuntungan dan efisiensi pemasaran yang lebih baik.”
Insight ini dipilih karena dapat memberikan gambaran apakah pasar besar benar-benar lebih menguntungkan dibanding pasar kecil, serta apakah investasi marketing pada masing-masing pasar memberikan hasil yang sebanding terhadap profit.
Profitabilitas diukur dengan:
Analisis dilakukan dengan tahapan sebagai berikut:
# ==== Load Library ====
library(readxl)
## Warning: package 'readxl' was built under R version 4.5.2
library(ggplot2)
library(knitr)
library(scales)
# ==== Load Dataset ====
data <- read_excel("C:/Users/NOUFAL PELLU/Documents/DATASET/SIM/1. Tugas SIM 2025B - Coffee Chain Datasets.xlsx")
# ==== Cek Struktur ====
str(data)
## tibble [4,248 × 20] (S3: tbl_df/tbl/data.frame)
## $ Area Code : num [1:4248] 719 970 970 303 303 720 970 719 970 719 ...
## $ Date : POSIXct[1:4248], format: "2012-01-01" "2012-01-01" ...
## $ Market : chr [1:4248] "Central" "Central" "Central" "Central" ...
## $ Market Size : chr [1:4248] "Major Market" "Major Market" "Major Market" "Major Market" ...
## $ Product : chr [1:4248] "Amaretto" "Colombian" "Decaf Irish Cream" "Green Tea" ...
## $ Product Line : chr [1:4248] "Beans" "Beans" "Beans" "Leaves" ...
## $ Product Type : chr [1:4248] "Coffee" "Coffee" "Coffee" "Tea" ...
## $ State : chr [1:4248] "Colorado" "Colorado" "Colorado" "Colorado" ...
## $ Type : chr [1:4248] "Regular" "Regular" "Decaf" "Regular" ...
## $ Budget COGS : num [1:4248] 90 80 100 30 60 80 140 50 50 40 ...
## $ Budget Margin : num [1:4248] 130 110 140 50 90 130 160 80 70 70 ...
## $ Budget Profit : num [1:4248] 100 80 110 30 70 80 110 20 40 20 ...
## $ Budget Sales : num [1:4248] 220 190 240 80 150 210 300 130 120 110 ...
## $ COGS : num [1:4248] 89 83 95 44 54 72 170 63 60 58 ...
## $ Inventory : num [1:4248] 777 623 821 623 456 ...
## $ Margin : num [1:4248] 130 107 139 56 80 108 171 87 80 72 ...
## $ Marketing : num [1:4248] 24 27 26 14 15 23 47 57 19 22 ...
## $ Profit : num [1:4248] 94 68 101 30 54 53 99 0 33 17 ...
## $ Sales : num [1:4248] 219 190 234 100 134 180 341 150 140 130 ...
## $ Total Expenses: num [1:4248] 36 39 38 26 26 55 72 87 47 55 ...
# ==== Cek Missing Value dan Duplikat ====
missing_summary <- data.frame(
Variabel = names(data),
Missing = colSums(is.na(data))
)
duplicate_count <- sum(duplicated(data))
kable(missing_summary, caption = "Jumlah Missing Value per Variabel")
| Variabel | Missing | |
|---|---|---|
| Area Code | Area Code | 0 |
| Date | Date | 0 |
| Market | Market | 0 |
| Market Size | Market Size | 0 |
| Product | Product | 0 |
| Product Line | Product Line | 0 |
| Product Type | Product Type | 0 |
| State | State | 0 |
| Type | Type | 0 |
| Budget COGS | Budget COGS | 0 |
| Budget Margin | Budget Margin | 0 |
| Budget Profit | Budget Profit | 0 |
| Budget Sales | Budget Sales | 0 |
| COGS | COGS | 0 |
| Inventory | Inventory | 0 |
| Margin | Margin | 0 |
| Marketing | Marketing | 0 |
| Profit | Profit | 0 |
| Sales | Sales | 0 |
| Total Expenses | Total Expenses | 0 |
kable(data.frame(Jumlah_Duplikat = duplicate_count), caption = "Jumlah Data Duplikat")
| Jumlah_Duplikat |
|---|
| 0 |
# ==== Persiapan Variabel ====
names(data)[names(data) == "Market Size"] <- "MarketSize"
# Pilih kolom yang dibutuhkan
data_merged <- data[, c("MarketSize", "Profit", "Sales", "Marketing")]
data_merged$MarketSize <- as.factor(data_merged$MarketSize)
# ==== Konversi ke numeric (memperbaiki error) ====
data_merged$Profit <- as.numeric(as.character(data_merged$Profit))
data_merged$Sales <- as.numeric(as.character(data_merged$Sales))
data_merged$Marketing <- as.numeric(as.character(data_merged$Marketing))
data_merged$MarketSize <- as.factor(data_merged$MarketSize)
Tahap awal analisis menunjukkan bahwa dataset telah diperiksa dari sisi struktur, kelengkapan data, dan kemungkinan adanya duplikasi. Pemeriksaan missing value penting dilakukan untuk memastikan tidak ada data kosong yang dapat menyebabkan bias dalam perhitungan statistik. Pemeriksaan data duplikat juga diperlukan agar hasil analisis tidak terdistorsi akibat pengulangan observasi yang sama.
Setelah data dinyatakan siap, variabel yang relevan untuk analisis dipilih, yaitu ukuran pasar, profit, sales, dan marketing. Pemilihan variabel ini bertujuan agar analisis lebih fokus pada faktor-faktor utama yang memengaruhi profitabilitas pasar.
# ==== Hitung ringkasan menggunakan base R ====
total_profit <- tapply(data_merged$Profit, data_merged$MarketSize, sum, na.rm = TRUE)
avg_profit <- tapply(data_merged$Profit, data_merged$MarketSize, mean, na.rm = TRUE)
total_sales <- tapply(data_merged$Sales, data_merged$MarketSize, sum, na.rm = TRUE)
n_trans <- table(data_merged$MarketSize)
profit_margin <- (total_profit / total_sales) * 100
# ==== Buat data frame hasil ====
summary_df <- data.frame(
MarketSize = names(total_profit),
Total_Profit = as.numeric(total_profit),
Avg_Profit = as.numeric(avg_profit),
Total_Sales = as.numeric(total_sales),
Profit_Margin = round(as.numeric(profit_margin), 2),
Jumlah_Transaksi = as.numeric(n_trans)
)
kable(summary_df,
caption = "Ringkasan Profitabilitas Major Market vs Small Market",
digits = 2)
| MarketSize | Total_Profit | Avg_Profit | Total_Sales | Profit_Margin | Jumlah_Transaksi |
|---|---|---|---|---|---|
| Major Market | 155736 | 91.39 | 425141 | 36.63 | 1704 |
| Small Market | 103807 | 40.80 | 394670 | 26.30 | 2544 |
Berdasarkan statistik deskriptif, terlihat bahwa Major Market menghasilkan total profit yang lebih besar dibandingkan Small Market. Hal ini menunjukkan bahwa wilayah dengan ukuran pasar besar memberikan kontribusi pendapatan yang lebih dominan terhadap perusahaan.
Selain itu, rata-rata profit per transaksi pada Major Market juga lebih tinggi, yang berarti setiap transaksi pada pasar besar cenderung menghasilkan keuntungan lebih besar. Profit margin yang lebih tinggi pada Major Market juga menandakan bahwa efektivitas penjualan pada pasar besar lebih baik, karena proporsi keuntungan terhadap penjualan lebih besar.
Secara keseluruhan, hasil ini mengindikasikan bahwa Major Market merupakan segmen pasar yang lebih menguntungkan baik dari sisi volume penjualan maupun efisiensi keuntungan.
t_test_result <- t.test(Profit ~ MarketSize, data = data_merged, var.equal = FALSE)
t_test_result
##
## Welch Two Sample t-test
##
## data: Profit by MarketSize
## t = 14.993, df = 2574.1, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group Major Market and group Small Market is not equal to 0
## 95 percent confidence interval:
## 43.97329 57.20617
## sample estimates:
## mean in group Major Market mean in group Small Market
## 91.39437 40.80464
Uji independent t-test dilakukan untuk mengetahui apakah perbedaan rata-rata profit antara Major Market dan Small Market terjadi secara signifikan secara statistik. Jika nilai p-value lebih kecil dari 0,05, maka terdapat bukti bahwa rata-rata profit kedua kelompok pasar memang berbeda secara nyata.
Apabila hasil uji menunjukkan nilai p-value < 0,05, maka dapat disimpulkan bahwa Major Market dan Small Market memiliki perbedaan rata-rata profit yang signifikan, sehingga strategi bisnis untuk kedua jenis pasar sebaiknya dibedakan sesuai karakteristik profitabilitasnya.
# ==== Korelasi keseluruhan ====
cor_all <- cor.test(data_merged$Marketing, data_merged$Profit)
# ==== Korelasi per Market Size ====
cor_major <- cor.test(data_merged$Marketing[data_merged$MarketSize == "Major Market"],
data_merged$Profit[data_merged$MarketSize == "Major Market"])
cor_small <- cor.test(data_merged$Marketing[data_merged$MarketSize == "Small Market"],
data_merged$Profit[data_merged$MarketSize == "Small Market"])
# Tampilkan hasil
cat("Korelasi Keseluruhan:\n")
## Korelasi Keseluruhan:
print(cor_all)
##
## Pearson's product-moment correlation
##
## data: data_merged$Marketing and data_merged$Profit
## t = 15.08, df = 4246, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.1967258 0.2538172
## sample estimates:
## cor
## 0.225465
cat("\nKorelasi Major Market:\n")
##
## Korelasi Major Market:
print(cor_major)
##
## Pearson's product-moment correlation
##
## data: data_merged$Marketing[data_merged$MarketSize == "Major Market"] and data_merged$Profit[data_merged$MarketSize == "Major Market"]
## t = 9.0316, df = 1702, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.1680754 0.2587140
## sample estimates:
## cor
## 0.2138549
cat("\nKorelasi Small Market:\n")
##
## Korelasi Small Market:
print(cor_small)
##
## Pearson's product-moment correlation
##
## data: data_merged$Marketing[data_merged$MarketSize == "Small Market"] and data_merged$Profit[data_merged$MarketSize == "Small Market"]
## t = 7.9623, df = 2542, p-value = 2.522e-15
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.1178437 0.1936795
## sample estimates:
## cor
## 0.1559915
Berdasarkan hasil uji korelasi, terdapat hubungan positif yang signifikan antara pengeluaran marketing dan profit, baik secara keseluruhan maupun pada masing-masing market size. Nilai korelasi pada Major Market sebesar 0,214 lebih tinggi dibandingkan Small Market sebesar 0,156, yang menunjukkan bahwa pengeluaran marketing pada Major Market lebih efektif dalam meningkatkan profit. Namun, karena nilai korelasi masih tergolong rendah, hubungan antara marketing dan profit bersifat lemah, sehingga profit juga dipengaruhi oleh faktor lain selain marketing.
marketing_eff <- aggregate(cbind(Profit, Marketing) ~ MarketSize,
data = data_merged, sum)
marketing_eff$Profit_per_Marketing <- marketing_eff$Profit / marketing_eff$Marketing
kable(marketing_eff, digits = 2,
caption = "Efisiensi Marketing berdasarkan Market Size")
| MarketSize | Profit | Marketing | Profit_per_Marketing |
|---|---|---|---|
| Major Market | 155736 | 64502 | 2.41 |
| Small Market | 103807 | 67972 | 1.53 |
Berdasarkan hasil analisis, Major Market memiliki nilai profit per marketing sebesar 2,41, sedangkan Small Market sebesar 1,53. Nilai tersebut menunjukkan bahwa Major Market mampu menghasilkan profit sebesar 2,41 kali dari biaya marketing yang dikeluarkan, lebih tinggi dibandingkan Small Market yang menghasilkan profit sebesar 1,53 kali dari biaya marketing.
Hasil ini mengindikasikan bahwa pengeluaran marketing pada Major Market lebih efisien dibandingkan Small Market. Meskipun biaya marketing pada kedua pasar relatif sebanding, Major Market menghasilkan profit yang lebih besar. Dengan demikian, dapat disimpulkan bahwa strategi pemasaran pada Major Market lebih efektif dalam menghasilkan keuntungan dan memberikan tingkat pengembalian yang lebih tinggi dibandingkan Small Market.
# Siapkan data untuk bar chart
viz_data <- data.frame(
MarketSize = names(total_profit),
TotalProfit = as.numeric(total_profit)
)
ggplot(viz_data, aes(x = MarketSize, y = TotalProfit, fill = MarketSize)) +
geom_bar(stat = "identity", width = 0.65) +
geom_text(aes(label = comma(TotalProfit)),
vjust = -0.3, size = 5, fontface = "bold") +
scale_y_continuous(
labels = comma,
expand = expansion(mult = c(0, 0.12))
) +
theme_minimal() +
labs(
title = "Total Profit: Major Market vs Small Market",
subtitle = "Data Coffee Chain Tahun 2012-2013",
x = "Tipe Pasar",
y = "Total Profit (USD)",
fill = "Market Size"
) +
theme(
plot.title = element_text(face = "bold", size = 18),
plot.subtitle = element_text(size = 12),
axis.title = element_text(size = 13),
axis.text = element_text(size = 11),
legend.title = element_text(size = 12),
legend.text = element_text(size = 11)
)
Visualisasi batang memperlihatkan perbedaan kontribusi total profit antara kedua kategori pasar. Major Market memiliki batang yang lebih tinggi, yang menandakan total profit yang dihasilkan jauh lebih besar dibanding Small Market. Perbedaan ini memperkuat temuan statistik deskriptif bahwa pasar besar menjadi sumber profit utama perusahaan.
Dari sisi bisnis, hal ini menunjukkan bahwa perusahaan memperoleh keuntungan terbesar dari pasar yang memiliki skala lebih besar, kemungkinan karena volume transaksi lebih tinggi, daya beli konsumen lebih kuat, serta jangkauan distribusi yang lebih luas.
ggplot(data_merged, aes(x = MarketSize, y = Profit, fill = MarketSize)) +
geom_boxplot(outlier.colour = "red", outlier.shape = 16, outlier.size = 2.5, alpha = 0.85) +
scale_fill_manual(values = c("Major Market" = "#1f77b4", "Small Market" = "#ff7f0e")) +
labs(title = "Distribusi Profit per Transaksi",
subtitle = "Perbandingan Major Market vs Small Market",
x = "Tipe Pasar",
y = "Profit per Transaksi (USD)") +
theme_minimal(base_size = 15) +
theme(plot.title = element_text(face = "bold", size = 18))
Boxplot menunjukkan penyebaran profit transaksi pada masing-masing kategori pasar. Pada Major Market, distribusi profit cenderung lebih tinggi dengan rentang variasi yang lebih besar. Hal ini berarti bahwa selain memiliki rata-rata profit lebih tinggi, pasar besar juga memiliki transaksi-transaksi dengan profit sangat tinggi.
Sementara itu, Small Market memiliki distribusi profit yang lebih rendah dan relatif sempit, yang mengindikasikan bahwa profit transaksi di pasar kecil lebih stabil namun tidak sebesar pasar besar. Temuan ini menjelaskan mengapa total profit dan rata-rata profit di Major Market lebih unggul.
Berdasarkan hasil analisis, dapat disimpulkan bahwa Major Market memiliki profitabilitas yang lebih tinggi dibandingkan Small Market, baik dari sisi total profit, rata-rata profit transaksi, maupun profit margin. Hasil uji statistik juga menunjukkan bahwa perbedaan profit antara kedua pasar bersifat signifikan.
Selain itu, pengeluaran marketing pada Major Market juga lebih efisien, yang ditunjukkan oleh nilai profit per marketing sebesar 2,41, lebih tinggi dibandingkan Small Market sebesar 1,53. Hal ini menunjukkan bahwa biaya marketing pada pasar besar memberikan hasil yang lebih optimal dalam menghasilkan profit.
Dengan demikian, Major Market menjadi segmen pasar yang lebih menguntungkan dan lebih efektif dari sisi pemasaran, sehingga dapat diprioritaskan dalam strategi ekspansi dan alokasi anggaran perusahaan. Meskipun demikian, Small Market tetap memiliki potensi untuk dikembangkan melalui strategi pemasaran yang lebih tepat agar profitabilitasnya meningkat.