Analisis Profitabilitas Lini dan Jenis Produk serta Identifikasi Penggerak Utama Profit dengan Pendekatan Pareto pada Coffe Chain Dataset tahun 2012-2013
LATAR BELAKANG
Di tengah ketatnya persaingan industri kopi dan teh, perusahaan dituntut untuk cerdik dalam memetakan portofolio produk agar tidak terjebak pada angka penjualan semu yang belum tentu menjamin kesehatan profit. Melalui pemanfaatan Dataset Coffee Chain 2012–2013, riset ini bertujuan membedah dinamika profitabilitas dengan mengombinasikan data transaksi riil guna mengidentifikasi produk-produk “vital” yang menjadi penggerak utama bisnis berdasarkan Prinsip Pareto. Dengan memahami kaitan antara margin keuntungan dan efisiensi biaya, analisis ini diharapkan dapat menjadi navigasi strategis bagi manajemen dalam mengalokasikan sumber daya secara lebih tepat sasaran demi menjaga keberlangsungan finansial perusahaan.
TUJUAN PENELITIAN
METODE PENELITIAN Penelitian ini mengevaluasi performa bisnis melalui dataset Coffee Chain 2012–2013 dengan mengintegrasikan tahap preprocessing data yang ketat di lingkungan R, mencakup pembersihan data, penanganan outlier melalui metode winsorizing, hingga rekayasa variabel untuk menghasilkan metrik finansial seperti Profit Margin dan ROI. Melalui pendekatan statistik deskriptif yang komprehensif, analisis ini membedah profitabilitas secara berjenjang dan menerapkan Prinsip Pareto untuk mengidentifikasi produk unggulan (vital few) yang menjadi penggerak utama keuntungan perusahaan. Seluruh temuan yang disajikan melalui Pareto Chart dan diagram kuadran ini memberikan navigasi strategis bagi manajemen dalam menentukan prioritas alokasi sumber daya serta kebijakan inventori yang lebih efisien di masa depan.
ANALISIS
Sebelum ke analisis, terlebih dahulu untuk load library dan deploy dataset Coffe Chain Dataset ke dalam R, dengan library dan sintaks load data sebagai berikut;
# =============================================================================
# ANALISIS COFFEE CHAIN - SIM 2025B
# Analisis: Profitabilitas, Pareto, Tren, Varians Budget vs Aktual
# Dataset: Coffee Chain (2012-2013)
# =============================================================================
# ── 0. INSTALASI & LOAD LIBRARY ──────────────────────────────────────────────
packages <- c("readxl", "dplyr", "tidyr", "ggplot2", "scales", "ggrepel",
"gridExtra", "lubridate", "knitr", "kableExtra", "RColorBrewer",
"ggthemes", "patchwork", "stringr", "moments")
library(readxl)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)
library(scales)
library(ggrepel)
library(gridExtra)
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(knitr)
library(kableExtra)
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
library(RColorBrewer)
library(ggthemes)
library(patchwork)
library(stringr)
library(moments)
names(df_raw), menggantikan variabel ber-spasi dengan underscore agar lebih mudah di inputkan dalam fungsi-fungsi analisis dan preprocessing.
# ── 1. LOAD DATA ─────────────────────────────────────────────────────────────
path_file <- "D:/Tugas_SIM_2025B.xlsx" # sesuaikan path
df_raw <- read_excel(path_file, sheet = "data")
deskripsi <- read_excel(path_file, sheet = "deskripsi")
# Bersihkan nama kolom (spasi → underscore)
names(df_raw) <- gsub(" ", "_", names(df_raw))
cat("=== INFO DATASET ===\n")
## === INFO DATASET ===
cat("Jumlah baris :", nrow(df_raw), "\n")
## Jumlah baris : 4248
cat("Jumlah kolom :", ncol(df_raw), "\n")
## Jumlah kolom : 20
cat("Rentang tanggal:", format(min(df_raw$Date), "%d-%b-%Y"),
"s/d", format(max(df_raw$Date), "%d-%b-%Y"), "\n\n")
## Rentang tanggal: 01-Jan-2012 s/d 01-Dec-2013
glimpse(df_raw)
## Rows: 4,248
## Columns: 20
## $ Area_Code <dbl> 719, 970, 970, 303, 303, 720, 970, 719, 970, 719, 303, …
## $ Date <dttm> 2012-01-01, 2012-01-01, 2012-01-01, 2012-01-01, 2012-0…
## $ Market <chr> "Central", "Central", "Central", "Central", "Central", …
## $ Market_Size <chr> "Major Market", "Major Market", "Major Market", "Major …
## $ Product <chr> "Amaretto", "Colombian", "Decaf Irish Cream", "Green Te…
## $ Product_Line <chr> "Beans", "Beans", "Beans", "Leaves", "Beans", "Beans", …
## $ Product_Type <chr> "Coffee", "Coffee", "Coffee", "Tea", "Espresso", "Espre…
## $ State <chr> "Colorado", "Colorado", "Colorado", "Colorado", "Colora…
## $ Type <chr> "Regular", "Regular", "Decaf", "Regular", "Regular", "D…
## $ Budget_COGS <dbl> 90, 80, 100, 30, 60, 80, 140, 50, 50, 40, 50, 150, 100,…
## $ Budget_Margin <dbl> 130, 110, 140, 50, 90, 130, 160, 80, 70, 70, 70, 210, 1…
## $ Budget_Profit <dbl> 100, 80, 110, 30, 70, 80, 110, 20, 40, 20, 40, 130, 100…
## $ Budget_Sales <dbl> 220, 190, 240, 80, 150, 210, 300, 130, 120, 110, 120, 3…
## $ COGS <dbl> 89, 83, 95, 44, 54, 72, 170, 63, 60, 58, 64, 144, 95, 2…
## $ Inventory <dbl> 777, 623, 821, 623, 456, 558, 1091, 435, 336, 338, 965,…
## $ Margin <dbl> 130, 107, 139, 56, 80, 108, 171, 87, 80, 72, 76, 201, 1…
## $ Marketing <dbl> 24, 27, 26, 14, 15, 23, 47, 57, 19, 22, 19, 47, 30, 77,…
## $ Profit <dbl> 94, 68, 101, 30, 54, 53, 99, 0, 33, 17, 36, 111, 87, 20…
## $ Sales <dbl> 219, 190, 234, 100, 134, 180, 341, 150, 140, 130, 140, …
## $ Total_Expenses <dbl> 36, 39, 38, 26, 26, 55, 72, 87, 47, 55, 40, 90, 52, 109…
Terdapat 4248 baris dan 20 kolom.
PREPROCESSING DATA
Tahap preprocessing data merupakan langkah krusial yang berfungsi untuk memastikan integritas dan kualitas data melalui prinsip Data Cleaning dan Data Transformation sebelum proses analisis statistik lebih lanjut dilakukan. Dengan melakukan pembersihan terhadap nilai yang hilang, standardisasi variabel, serta penanganan outlier menggunakan metode seperti winsorizing, peneliti dapat meminimalisir risiko bias dan distorsi informasi yang sering kali muncul akibat adanya data anomali atau kesalahan input. Selain itu, proses ini memungkinkan pembentukan variabel turunan yang lebih informatif bagi pengambilan keputusan strategis, sehingga hasil analisis yang diperoleh—seperti tingkat profitabilitas maupun pemetaan Pareto—memiliki akurasi yang tinggi, memenuhi asumsi metodologis yang dipersyaratkan, serta dapat dipertanggungjawabkan secara saintifik.
## 2.1 Cek Missing Values (cek data yang hilang)
cat("\n=== CEK MISSING VALUES ===\n")
##
## === CEK MISSING VALUES ===
missing_summary <- df_raw %>%
summarise(across(everything(), ~ sum(is.na(.)))) %>%
pivot_longer(everything(), names_to = "Variabel", values_to = "Jumlah_NA") %>%
mutate(Persen_NA = round(Jumlah_NA / nrow(df_raw) * 100, 2)) %>%
arrange(desc(Jumlah_NA))
print(missing_summary)
## # A tibble: 20 × 3
## Variabel Jumlah_NA Persen_NA
## <chr> <int> <dbl>
## 1 Area_Code 0 0
## 2 Date 0 0
## 3 Market 0 0
## 4 Market_Size 0 0
## 5 Product 0 0
## 6 Product_Line 0 0
## 7 Product_Type 0 0
## 8 State 0 0
## 9 Type 0 0
## 10 Budget_COGS 0 0
## 11 Budget_Margin 0 0
## 12 Budget_Profit 0 0
## 13 Budget_Sales 0 0
## 14 COGS 0 0
## 15 Inventory 0 0
## 16 Margin 0 0
## 17 Marketing 0 0
## 18 Profit 0 0
## 19 Sales 0 0
## 20 Total_Expenses 0 0
## 2.2 Cek Duplikasi
cat("\n=== CEK DUPLIKASI ===\n")
##
## === CEK DUPLIKASI ===
cat("Jumlah baris duplikat:", sum(duplicated(df_raw)), "\n")
## Jumlah baris duplikat: 0
## 2.3 Transformasi Tipe Data
df <- df_raw %>%
mutate(
Date = as.Date(Date),
Year = year(Date),
Month = month(Date, label = TRUE, abbr = TRUE),
Quarter = paste0("Q", quarter(Date)),
YearMonth = format(Date, "%Y-%m"),
# Variabel turunan
Profit_Margin_Pct = round(Profit / Sales * 100, 2),
Gross_Margin_Pct = round(Margin / Sales * 100, 2),
Expense_Ratio = round(Total_Expenses / Sales * 100, 2),
Budget_Achievement = round(Sales / Budget_Sales * 100, 2),
Profit_vs_Budget = Profit - Budget_Profit,
Sales_vs_Budget = Sales - Budget_Sales
)
## 2.4 Deteksi & Treatment Outlier (metode IQR)
numeric_cols <- c("Sales", "Profit", "COGS", "Margin", "Marketing",
"Total_Expenses", "Inventory")
outlier_summary <- lapply(numeric_cols, function(col) {
x <- df[[col]]
Q1 <- quantile(x, 0.25)
Q3 <- quantile(x, 0.75)
IQR <- Q3 - Q1
low <- Q1 - 1.5 * IQR
up <- Q3 + 1.5 * IQR
n_out <- sum(x < low | x > up)
data.frame(
Variabel = col,
Q1 = Q1,
Q3 = Q3,
IQR = IQR,
Batas_Bawah = round(low, 2),
Batas_Atas = round(up, 2),
Jumlah_Outlier = n_out,
Persen_Outlier = round(n_out / nrow(df) * 100, 2)
)
}) %>% bind_rows()
cat("\n=== RINGKASAN OUTLIER (METODE IQR) ===\n")
##
## === RINGKASAN OUTLIER (METODE IQR) ===
print(outlier_summary)
## Variabel Q1 Q3 IQR Batas_Bawah Batas_Atas
## 25%...1 Sales 100.00 230.0 130.00 -95.00 425.00
## 25%...2 Profit 17.00 92.0 75.00 -95.50 204.50
## 25%...3 COGS 43.00 100.0 57.00 -42.50 185.50
## 25%...4 Margin 52.75 132.0 79.25 -66.12 250.88
## 25%...5 Marketing 13.00 39.0 26.00 -26.00 78.00
## 25%...6 Total_Expenses 33.00 65.0 32.00 -15.00 113.00
## 25%...7 Inventory 432.00 910.5 478.50 -285.75 1628.25
## Jumlah_Outlier Persen_Outlier
## 25%...1 406 9.56
## 25%...2 405 9.53
## 25%...3 444 10.45
## 25%...4 384 9.04
## 25%...5 364 8.57
## 25%...6 328 7.72
## 25%...7 346 8.15
# Winsorizing outlier (cap pada batas IQR) untuk analisis statistik
winsorize <- function(x) {
Q1 <- quantile(x, 0.25); Q3 <- quantile(x, 0.75); IQR <- Q3 - Q1
pmax(pmin(x, Q3 + 1.5 * IQR), Q1 - 1.5 * IQR)
}
df_clean <- df %>%
mutate(across(all_of(numeric_cols), winsorize, .names = "{.col}_w"))
cat("\nData setelah winsorizing tersimpan dengan suffix '_w'.\n")
##
## Data setelah winsorizing tersimpan dengan suffix '_w'.
cat("Total observasi bersih:", nrow(df_clean), "\n\n")
## Total observasi bersih: 4248
## 2.5 Statistik Deskriptif
cat("=== STATISTIK DESKRIPTIF ===\n")
## === STATISTIK DESKRIPTIF ===
desc_stats <- df %>%
select(all_of(numeric_cols), Profit_Margin_Pct, Gross_Margin_Pct) %>%
summary()
print(desc_stats)
## Sales Profit COGS Margin
## Min. : 17 Min. :-638.0 Min. : 0.00 Min. :-302.00
## 1st Qu.:100 1st Qu.: 17.0 1st Qu.: 43.00 1st Qu.: 52.75
## Median :138 Median : 40.0 Median : 60.00 Median : 76.00
## Mean :193 Mean : 61.1 Mean : 84.43 Mean : 104.29
## 3rd Qu.:230 3rd Qu.: 92.0 3rd Qu.:100.00 3rd Qu.: 132.00
## Max. :912 Max. : 778.0 Max. :364.00 Max. : 613.00
## Marketing Total_Expenses Inventory Profit_Margin_Pct
## Min. : 0.00 Min. : 10.00 Min. :-3534.0 Min. :-3190.00
## 1st Qu.: 13.00 1st Qu.: 33.00 1st Qu.: 432.0 1st Qu.: 16.10
## Median : 22.00 Median : 46.00 Median : 619.0 Median : 32.00
## Mean : 31.19 Mean : 54.06 Mean : 749.4 Mean : 14.72
## 3rd Qu.: 39.00 3rd Qu.: 65.00 3rd Qu.: 910.5 3rd Qu.: 42.78
## Max. :156.00 Max. :190.00 Max. : 8252.0 Max. : 118.09
## Gross_Margin_Pct
## Min. :-1589.47
## 1st Qu.: 54.29
## Median : 56.42
## Mean : 47.95
## 3rd Qu.: 59.18
## Max. : 100.00
## 2.6 Skewness & Kurtosis
cat("\n=== SKEWNESS & KURTOSIS ===\n")
##
## === SKEWNESS & KURTOSIS ===
sk_kurt <- data.frame(
Variabel = numeric_cols,
Skewness = sapply(numeric_cols, function(c) round(skewness(df[[c]]), 3)),
Kurtosis = sapply(numeric_cols, function(c) round(kurtosis(df[[c]]), 3))
)
print(sk_kurt)
## Variabel Skewness Kurtosis
## Sales Sales 1.881 6.488
## Profit Profit 0.445 12.780
## COGS COGS 1.672 5.268
## Margin Margin 1.425 8.331
## Marketing Marketing 1.645 5.412
## Total_Expenses Total_Expenses 1.319 4.586
## Inventory Inventory 2.894 31.511
ANALISIS PROFITABILITAS (product line and type)
Analisis profitabilitas adalah proses evaluasi untuk menilai kemampuan suatu perusahaan dalam menghasilkan keuntungan (profit) relatif terhadap penjualan, aset, atau modal pada periode waktu tertentu, mengukur efisiensi operasional, dan menentukan prioritas produk yang akan diedarkan.
Yang pertama adalah analisis produk tipe mana dan produk apa yang memiliki keuntungan tertinggi.
## 3.1 Profitabilitas per Produk
profit_produk <- df %>%
group_by(Product, Product_Type, Product_Line) %>%
summarise(
Total_Sales = sum(Sales),
Total_Profit = sum(Profit),
Total_COGS = sum(COGS),
Total_Margin = sum(Margin),
Total_Expenses = sum(Total_Expenses),
Profit_Margin_Pct = round(sum(Profit) / sum(Sales) * 100, 2),
Gross_Margin_Pct = round(sum(Margin) / sum(Sales) * 100, 2),
ROI = round(sum(Profit) / sum(COGS) * 100, 2),
N_Transaksi = n(),
.groups = "drop"
) %>%
arrange(desc(Total_Profit))
print(profit_produk)
## # A tibble: 13 × 12
## Product Product_Type Product_Line Total_Sales Total_Profit Total_COGS
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 Colombian Coffee Beans 128311 55804 48396
## 2 Lemon Herbal Tea Leaves 95926 29869 41494
## 3 Decaf Espresso Espresso Beans 78162 29502 33318
## 4 Darjeeling Tea Leaves 73151 29053 30534
## 5 Chamomile Herbal Tea Leaves 75578 27231 31386
## 6 Earl Grey Tea Leaves 66772 24164 28554
## 7 Caffe Mocha Espresso Beans 84904 17678 37990
## 8 Decaf Irish Cr… Coffee Beans 62248 13989 29568
## 9 Caffe Latte Espresso Beans 35899 11375 15294
## 10 Regular Espres… Espresso Beans 24031 10065 10398
## 11 Mint Herbal Tea Leaves 35710 6154 19930
## 12 Amaretto Coffee Beans 26269 4890 12732
## 13 Green Tea Tea Leaves 32850 -231 19078
## # ℹ 6 more variables: Total_Margin <dbl>, Total_Expenses <dbl>,
## # Profit_Margin_Pct <dbl>, Gross_Margin_Pct <dbl>, ROI <dbl>,
## # N_Transaksi <int>
## 3.4 Profitabilitas per Product Type
profit_type <- df %>%
group_by(`Product_Type`) %>%
summarise(
Total_Sales = sum(Sales),
Total_Profit = sum(Profit),
Profit_Margin_Pct = round(sum(Profit) / sum(Sales) * 100, 2),
Gross_Margin_Pct = round(sum(Margin) / sum(Sales) * 100, 2),
.groups = "drop"
) %>%
arrange(desc(Total_Profit))
cat("\n=== PROFITABILITAS PER PRODUCT TYPE ===\n")
##
## === PROFITABILITAS PER PRODUCT TYPE ===
print(profit_type)
## # A tibble: 4 × 5
## Product_Type Total_Sales Total_Profit Profit_Margin_Pct Gross_Margin_Pct
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Coffee 216828 74683 34.4 56.1
## 2 Espresso 222996 68620 30.8 54.3
## 3 Herbal Tea 207214 63254 30.5 53.1
## 4 Tea 172773 52986 30.7 52.3
Kedua, yaitu plot untuk keuntungan per produk dan tipe produk.
# Visualisasi Gabungan: Profit per Produk yang dikelompokkan berdasarkan Type
ggplot(profit_type, aes(x = reorder(`Product_Type`, Total_Profit), y = Total_Profit)) +
geom_bar(stat = "identity", fill = "steelblue") +
# Menambahkan label angka
geom_text(aes(label = comma(Total_Profit)),
vjust = -0.5, # Posisi sedikit di atas bar
size = 3.5,
fontface = "bold") +
theme_minimal() +
labs(title = "Total Profit berdasarkan Kategori Produk",
x = "Kategori Produk",
y = "Total Profit ($)") +
# Memberikan ruang di atas agar teks tidak terpotong
expand_limits(y = max(profit_type$Total_Profit) * 1.1)
ggplot(profit_produk, aes(x = reorder(Product, Total_Profit), y = Total_Profit, fill = Product_Type)) +
geom_bar(stat = "identity") +
# Menambahkan label angka di samping bar
geom_text(aes(label = comma(Total_Profit)),
hjust = -0.1, # Geser sedikit ke kanan dari ujung bar
size = 3) +
coord_flip() +
facet_wrap(~Product_Type, scales = "free_y") +
theme_minimal() +
labs(title = "Detail Profitabilitas per Produk dalam Kategori",
x = "Nama Produk",
y = "Total Profit ($)") +
# Memberikan ruang di kanan agar teks tidak terpotong
expand_limits(y = max(profit_produk$Total_Profit) * 1.2) +
theme(legend.position = "none") # Sembunyikan legenda karena sudah ada facet
ANALISIS PARETO
Analisis Pareto, atau yang sering dikenal sebagai Aturan 80/20, adalah teknik pengambilan keputusan yang didasarkan pada prinsip bahwa sekitar 80% hasil biasanya berasal dari 20% penyebab utama.
# ── 4. ANALISIS PARETO ───────────────────────────────────────────────────────
## Fungsi helper Pareto
make_pareto <- function(data, group_col, value_col, label = "Item") {
data %>%
group_by(across(all_of(group_col))) %>%
summarise(Total = sum(.data[[value_col]]), .groups = "drop") %>%
arrange(desc(Total)) %>%
mutate(
Kumulatif = cumsum(Total),
Persen = round(Total / sum(Total) * 100, 2),
Persen_Kumulatif = round(Kumulatif / sum(Total) * 100, 2),
Rank = row_number(),
Label = label
)
}
## 4.1 Pareto – Produk vs Profit
pareto_produk_profit <- make_pareto(df, "Product", "Profit", "Produk")
cat("\n=== PARETO: PRODUK vs PROFIT ===\n")
##
## === PARETO: PRODUK vs PROFIT ===
print(pareto_produk_profit)
## # A tibble: 13 × 7
## Product Total Kumulatif Persen Persen_Kumulatif Rank Label
## <chr> <dbl> <dbl> <dbl> <dbl> <int> <chr>
## 1 Colombian 55804 55804 21.5 21.5 1 Produk
## 2 Lemon 29869 85673 11.5 33.0 2 Produk
## 3 Decaf Espresso 29502 115175 11.4 44.4 3 Produk
## 4 Darjeeling 29053 144228 11.2 55.6 4 Produk
## 5 Chamomile 27231 171459 10.5 66.1 5 Produk
## 6 Earl Grey 24164 195623 9.31 75.4 6 Produk
## 7 Caffe Mocha 17678 213301 6.81 82.2 7 Produk
## 8 Decaf Irish Cream 13989 227290 5.39 87.6 8 Produk
## 9 Caffe Latte 11375 238665 4.38 92.0 9 Produk
## 10 Regular Espresso 10065 248730 3.88 95.8 10 Produk
## 11 Mint 6154 254884 2.37 98.2 11 Produk
## 12 Amaretto 4890 259774 1.88 100. 12 Produk
## 13 Green Tea -231 259543 -0.09 100 13 Produk
INTERPRETASI ANALISIS 1. Analisis Profitabilitas Kategori Produk
Ditinjau dari aspek profitabilitas, kategori Coffee mencatatkan efisiensi tertinggi dengan margin 34,4% dan laba sebesar $ 74.683, membuktikan manajemen biaya yang jauh lebih sehat dibandingkan Espresso yang meski mendominasi omzet senilai $ 222.996, margin labanya justru tertahan di angka 30,8%. Sementara itu, kategori Herbal Tea dan Tea menunjukkan kinerja stabil dengan margin di kisaran 30%, mempertegas bahwa struktur biaya perusahaan cenderung seragam di seluruh lini. Mengingat tipisnya selisih margin antar kategori, strategi peningkatan profitabilitas ke depan harus difokuskan pada penguatan volume penjualan bagi produk-produk dengan margin tebal guna mengoptimalkan kontribusi laba secara keseluruhan.
Penelusuran pada level produk mengungkap ketimpangan performa yang signifikan, di mana Colombian mendominasi kategori kopi dengan kontribusi laba sebesar $55.804 (74%), sementara kategori Espresso dan Herbal Tea menunjukkan sebaran laba yang lebih kompetitif melalui produk unggulan seperti Decaf Espresso, Lemon, dan Chamomile. Di sisi lain, ditemukan anomali kritis pada Green Tea yang mencatat profit negatif sebesar -$231, yang mengindikasikan bahwa biaya operasionalnya telah melampaui pendapatan dan membebani profitabilitas kategori teh secara keseluruhan. Temuan ini mempertegas relevansi Prinsip Pareto, di mana kesehatan finansial perusahaan sangat bergantung pada segelintir produk kunci (vital few), sehingga manajemen perlu segera mengevaluasi produk yang merugi dan memprioritaskan alokasi sumber daya pada produk-produk penggerak laba utama.
Hasil analisis Pareto menunjukkan temuan yang sangat signifikan: dari 13 produk yang ada, hanya 6 produk yang secara kumulatif menyumbang 75,4% total profit, dan 7 produk menyumbang 82,2% total profit. Ini sangat selaras dengan prinsip Pareto 80/20, di mana sebagian kecil produk mendominasi sebagian besar keuntungan bisnis.
KESIMPULAN
Berdasarkan pembedahan data Coffee Chain 2012–2013, kategori Coffee terbukti menjadi primadona bisnis dengan efisiensi tertinggi melalui margin laba 34,4%, yang sangat didorong oleh performa dominan produk Colombian sebagai penyumbang 21,5% dari total keuntungan perusahaan. Penerapan Prinsip Pareto mengonfirmasi bahwa kesehatan finansial perusahaan sangat bergantung pada kelompok “vital few”, di mana hanya 7 dari 13 produk mampu menyumbang 82,2% total laba, sehingga manajemen perlu memprioritaskan alokasi sumber daya pada produk-produk kunci tersebut. Di sisi lain, temuan kritis pada Green Tea yang mencatat profit negatif sebesar -$231 menjadi alarm bagi manajemen untuk segera mengevaluasi kembali struktur biaya dan harga agar tidak terus menggerus profitabilitas keseluruhan.
Sources
V. Puntoni, G. M. P. Masselli, and S. Silvestri, “An adaptation of Pareto’s parametric distribution as a support tool for the analysis of maintenance costs of biomedical equipment,” pp. 32–36, June 2021, doi: 10.1109/METROIND4.0IOT51437.2021.9488514.