PENDAHULUAN

Pertumbuhan konsumsi minuman berbasis kafein dan herbal di Indonesia menunjukkan tren yang sangat dinamis, didorong oleh pergeseran gaya hidup masyarakat modern. Berdasarkan data Survei Sosial Ekonomi Nasional (Susenas), konsumsi kopi instan pada tahun 2019 telah mencapai angka 1,171 kg per kapita per tahun (Yusuf, 2022). Di saat yang sama, komoditas teh herbal mulai mendapatkan tempat yang kuat sebagai alternatif minuman fungsional bagi konsumen yang peduli kesehatan. Dinamika ini menuntut jaringan ritel minuman atau Coffee Chain untuk tidak hanya berfokus pada volume penjualan, tetapi juga pada pemetaan margin keuntungan yang lebih akurat guna menjamin keberlanjutan bisnis.

Dalam praktiknya, profitabilitas setiap produk tidaklah seragam karena dipengaruhi oleh karakteristik pasar tempat produk tersebut dipasarkan. Terdapat perbedaan preferensi yang kontras antara konsumen di pasar besar (Major Market) yang cenderung menyukai efisiensi produk kopi, dengan konsumen di pasar kecil (Small Market) yang menunjukkan kecenderungan berbeda terhadap produk teh. Pemahaman mendalam mengenai interaksi antara jenis produk dan skala pasar ini menjadi sangat krusial agar perusahaan terhindar dari kesalahan alokasi stok dan strategi pemasaran yang “pukul rata” (one-size-fits-all), yang seringkali justru menggerus margin keuntungan secara keseluruhan.

Penelitian ini bertujuan untuk mengevaluasi secara komprehensif interaksi antara kategori produk dan skala pasar terhadap margin keuntungan menggunakan dataset Coffee Chain. Mengingat data operasional di lapangan seringkali memiliki variansi yang tidak seragam (heteroskedastisitas), analisis ini dilakukan dengan pendekatan Robust ANOVA Dua Arah. Metode ini dipilih untuk memastikan hasil evaluasi tetap objektif dan valid secara statistik meskipun terdapat anomali data. Melalui identifikasi kombinasi produk-pasar yang paling menguntungkan, hasil riset ini diharapkan mampu memberikan landasan strategis bagi perusahaan dalam mengoptimalkan profitabilitas di setiap wilayah operasionalnya.

DESKRIPSI DATA

Dataset ini mencakup 4.248 observasi yang memberikan basis data yang kuat untuk analisis statistik skala besar. Variabel utama yang menjadi fokus dalam penelitian ini adalah Margin, yang digunakan sebagai indikator efisiensi profitabilitas produk sebelum dikurangi biaya operasional non-produksi. Selain variabel dependen tersebut, dataset ini memuat variabel kategorik kunci yaitu Market Size (klasifikasi pasar menjadi Major Market dan Small Market) serta Product Type (kategori produk yang meliputi Coffee, Espresso, Herbal Tea, dan Tea). Variabel pendukung lainnya seperti Sales, COGS, Inventory, dan State juga tersedia dalam dataset untuk memberikan konteks wilayah dan operasional. Dengan volume data yang besar dan keberagaman kategori produk serta wilayah, dataset ini sangat relevan untuk menguji interaksi antar-faktor menggunakan Robust ANOVA, guna mendapatkan gambaran yang akurat mengenai distribusi margin keuntungan di seluruh jaringan coffee chain.

library(readxl)
library(DT)
library(car)
library(emmeans)
library(kableExtra)
library(tidyverse) 
data <- read_excel("D:/SEMESTER 4/SIM/1. Tugas SIM 2025B - Coffee Chain Datasets.xlsx", sheet = "data")
data_subset <- data[, c("Area Code", "Date", "Product", "Product Type", "Market", "Market Size", "Margin")]

datatable(data_subset, 
          options = list(scrollX = TRUE, pageLength = 10), 
          rownames = FALSE)

LANDASAN TEORI

Anova 2 Arah (Two Way Anova)

ANOVA dua arah adalah metode statistik yang digunakan untuk menguji pengaruh dua variabel independen (faktor) terhadap satu variabel dependen sekaligus, serta melihat apakah terdapat interaksi antara kedua faktor tersebut. Metode ini membandingkan rata-rata antar kelompok untuk mengetahui apakah perbedaan yang terjadi signifikan secara statistik. Tujuan utama:

  • Menguji pengaruh faktor pertama
  • Menguji pengaruh faktor kedua
  • Menguji interaksi antar faktor

Robust Anova

Dalam praktiknya, analisis margin keuntungan seringkali menghadapi kendala berupa data fungsional yang memiliki variansi tidak seragam atau adanya anomali (outlier), sehingga diperlukan pendekatan yang lebih tangguh melalui Robust Functional ANOVA (RoFANOVA). Metode ini dirancang untuk menguji desain ANOVA multi-arah, khususnya desain ANOVA fungsional dua arah dengan interaksi, di mana respon fungsional \(X\) dipengaruhi oleh dua faktor (misalnya jenis produk dan skala pasar) yang dinyatakan sebagai jumlah dari dua efek utama, istilah interaksi, serta kesalahan acak. Tujuan utama dari model ini adalah untuk menguji signifikansi statistik dari efek utama dan interaksi antar-faktor secara objektif, sehingga hasil evaluasi tetap valid dan reliabel meskipun terdapat penyimpangan asumsi pada realisasi data di setiap level faktor yang diuji (Centofanti et al., 2023).

Post-Hoc Test

Analisis post-hoc merupakan pendekatan eksploratif yang memungkinkan peneliti untuk menyelidiki data lebih lanjut dan menyoroti perbandingan kelompok spesifik yang berkontribusi terhadap efek keseluruhan yang diamati. Mengingat analisis ini sering kali melibatkan perbandingan ganda, prosedur ini meningkatkan risiko kesalahan Tipe I atau false positives, sehingga diperlukan penyesuaian untuk mengontrol tingkat kesalahan agar hasil tetap valid. Pemilihan metode post-hoc yang tepat, seperti uji Tukey yang menyeimbangkan kontrol kesalahan dengan kekuatan statistik atau uji Scheffé yang lebih konservatif, sangat bergantung pada pertimbangan ukuran sampel, kesamaan varians, dan kontrol kesalahan. Penerapan uji post-hoc secara benar sangat esensial untuk menjaga integritas penelitian, memastikan akurasi hasil, serta meningkatkan ketangguhan (robustness) dari temuan yang diperoleh agar terhindar dari kesimpulan yang menyesatkan (Costin, 2025).

Uji Normalitas (Shapiro Wilk)

Uji normalitas digunakan untuk mengetahui apakah data atau residual dalam model berdistribusi normal atau tidak. Asumsi normalitas penting terutama dalam analisis parametrik seperti regresi dan ANOVA. Jika data berdistribusi normal, maka hasil analisis menjadi lebih valid. Metode yang umum digunakan:

  • Uji Shapiro-Wilk
  • Uji Kolmogorov-Smirnov
  • Melihat grafik (histogram, Q-Q plot)

Statistik Uji: Statistik uji \(W\) dihitung dengan rumus: \[W = \frac{(\sum_{i=1}^{n} a_i x_{(i)})^2}{\sum_{i=1}^{n} (x_i - \bar{x})^2}\]

Di mana:

  • \(x_{(i)}\) adalah nilai data ke-\(i\) setelah diurutkan dari terkecil ke terbesar.

  • \(a_i\) adalah bobot konstanta yang berasal dari kovariansi data normal.

  • Nilai \(W\) berkisar antara 0 dan 1. Jika \(W\) mendekati 1, data mendukung asumsi normalitas.

Uji Homogenitas

Uji homogenitas digunakan untuk mengetahui apakah varians antar kelompok data adalah sama (homogen). Asumsi ini penting dalam ANOVA karena perbedaan varians dapat mempengaruhi hasil pengujian. Metode yang sering digunakan:

  • Uji Levene
  • Uji Bartlett

Uji Levene digunakan untuk menguji kesamaan varians antar kelompok. Berbeda dengan uji Bartlett, uji Levene memiliki keunggulan karena bersifat Robust, artinya hasil pengujian tetap stabil dan akurat meskipun data tidak berdistribusi normal sempurna.

Statistik Uji: Prinsip dasar uji ini adalah melakukan analisis varians (ANOVA) terhadap nilai absolut residu (selisih antara data dengan rata-rata/median kelompoknya). \[Z_{ij} = |x_{ij} - \tilde{x}_i|\]

Di mana \(\tilde{x}_i\) adalah median dari kelompok ke-\(i\). Jika rata-rata \(Z_{ij}\) antar kelompok tidak berbeda secara signifikan (dilihat dari \(P\)-value), maka varians antar kelompok dinyatakan Homogen.

ANALISIS DATA

1.Preprocessing Data

Langkah preprocessing dilakukan untuk menjamin kualitas data melalui pembersihan nilai kosong (missing values) guna menghindari bias saat proses perhitungan statistik. Selain itu, pengecekan data duplikat dilakukan untuk memastikan setiap observasi bersifat unik, sementara penyesuaian tipe data memastikan setiap variabel berada dalam format yang tepat untuk dianalisis. Proses standarisasi awal ini sangat krusial agar hasil pengujian ANOVA nantinya bersifat akurat, konsisten, dan dapat dipertanggungjawabkan secara ilmiah.

sum(is.na(data))
## [1] 0
sum(duplicated(data))
## [1] 0
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 ...
data$Market <- as.factor(data$Market)
data$`Market Size` <- as.factor(data$`Market Size`)
data$Product <- as.factor(data$Product)
data$`Product Line` <- as.factor(data$`Product Line`)
data$`Product Type` <- as.factor(data$`Product Type`)
data$State <- as.factor(data$State)
data$Type <- as.factor(data$Type)
names(data)[names(data) == "Product Type"] <- "Product_Type"
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        : Factor w/ 4 levels "Central","East",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Market Size   : Factor w/ 2 levels "Major Market",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Product       : Factor w/ 13 levels "Amaretto","Caffe Latte",..: 1 5 8 10 3 7 4 11 12 6 ...
##  $ Product Line  : Factor w/ 2 levels "Beans","Leaves": 1 1 1 2 1 1 2 2 2 2 ...
##  $ Product_Type  : Factor w/ 4 levels "Coffee","Espresso",..: 1 1 1 4 2 2 3 3 3 4 ...
##  $ State         : Factor w/ 20 levels "California","Colorado",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ Type          : Factor w/ 2 levels "Decaf","Regular": 2 2 1 2 2 1 1 1 1 2 ...
##  $ 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 ...

2. Pemodelan Awal


Berikut adalah prosedur formal pengujian hipotesis untuk Two-Way ANOVA:

  1. Hipotesis Awal Pengujian dilakukan pada tiga aspek utama:

    • Faktor Produk \(\begin{matrix} H_0: \alpha_i = 0 \\ H_1: \alpha_i \neq 0 \end{matrix}\) (Pengaruh jenis produk terhadap margin)

    • Faktor Pasar \(\begin{matrix} H_0: \beta_j = 0 \\ H_1: \beta_j \neq 0 \end{matrix}\) (Pengaruh ukuran pasar terhadap margin)

    • Interaksi \(\begin{matrix} H_0: (\alpha\beta)_{ij} = 0 \\ H_1: (\alpha\beta)_{ij} \neq 0 \end{matrix}\) (Efek interaksi produk dan pasar)

  2. Taraf Signifikansi Taraf signifikansi yang digunakan adalah: \(\alpha = 0.05\)

  3. Daerah Kritis \(H_0\) ditolak jika: \(P\text{-value} < 0.05\)

  4. Statistik Uji Statistik uji yang digunakan adalah Uji-F: \[F = \frac{MS_{\text{efek}}}{MS_{\text{error}}}\]

model <- lm(Margin ~ `Market Size` * Product_Type, data = data)
res_anova <- anova(model)

p_market  <- res_anova$`Pr(>F)`[1]
p_product <- res_anova$`Pr(>F)`[2]
p_interak <- res_anova$`Pr(>F)`[3]

cat("HASIL KEPUTUSAN HIPOTESIS (Alpha = 0.05):\n")
## HASIL KEPUTUSAN HIPOTESIS (Alpha = 0.05):
cat("1. Faktor Product Type: ")
## 1. Faktor Product Type:
if(p_product < 0.05) {
  cat("H0 Ditolak (Product Type Berpengaruh Signifikan Terhadap Margin)\n")
} else {
  cat("Gagal Tolak H0 (Product Type Tidak Berpengaruh Signifikan Terhadap Margin)\n")
}
## H0 Ditolak (Product Type Berpengaruh Signifikan Terhadap Margin)
cat("2. Faktor Market Size: ")
## 2. Faktor Market Size:
if(p_market < 0.05) {
  cat("H0 Ditolak (Ukuran Pasar Berpengaruh Signifikan Terhadap Margin)\n")
} else {
  cat("Gagal Tolak H0 (Ukuran Pasar Tidak Berpengaruh Signifikan Terhadap Margin)\n")
}
## H0 Ditolak (Ukuran Pasar Berpengaruh Signifikan Terhadap Margin)
cat("3. Efek Interaksi: ")
## 3. Efek Interaksi:
if(p_interak < 0.05) {
  cat("H0 Ditolak (Terdapat Interaksi Signifikan Antara Product Type dengan Ukuran Pasar)\n")
} else {
  cat("Gagal Tolak H0 (Tidak Ada Interaksi Signifikan Antara Product Type dengan Ukuran Pasar)\n")
}
## H0 Ditolak (Terdapat Interaksi Signifikan Antara Product Type dengan Ukuran Pasar)
  1. Kesimpulan : Karena semua p value < 0.05 maka ketiga H0 ditolak. Pada taraf signifikansi 5% jenis produk dan ukuran pasar berpengaruh terhadap margin. Terdapat interaksi antara jenis produk dengan ukuran pasar.

3. Uji Kelayakan Model

Uji Normalitas


Berikut adalah prosedur pengujian asumsi dan analisis lanjutan: Digunakan untuk menguji apakah sisaan (residuals) model berdistribusi normal.

  1. Hipotesis \(\begin{aligned} H_0 &: \text{Sisaan berdistribusi normal} \\ H_1 &: \text{Sisaan tidak berdistribusi normal} \end{aligned}\)

  2. Taraf Signifikansi Taraf signifikansi yang digunakan adalah: \(\alpha = 0.05\)

  3. Daerah Kritis \(H_0\) ditolak jika: \(P\text{-value} < 0.05\)

  4. Statistik Uji

plot(model, which = 2)

residu <- residuals(model)
shapiro.test(residu)
## 
##  Shapiro-Wilk normality test
## 
## data:  residu
## W = 0.87542, p-value < 2.2e-16
  1. Kesimpulan : karena \(P\text{-value} < 0.05\) maka H0 ditolak. Pada taraf sigifikansi 5% terdapat cukup bukti bahwa residual tidak berdistribusi normal.

Uji Homogenitas

  1. Hipotesis \(\begin{aligned} H_0 &: \sigma_1^2 = \sigma_2^2 = \dots = \sigma_k^2 \text{ (Varians homogen)} \\ H_1 &: \text{Minimal ada satu varians yang berbeda} \end{aligned}\)

  2. Taraf Signifikansi Taraf signifikansi yang digunakan adalah: \(\alpha = 0.05\)

  3. Daerah Kritis \(H_0\) ditolak jika: \(P\text{-value} < 0.05\)

  4. Statistik Uji

leveneTest(Margin ~ `Market Size` * Product_Type, data = data)
## Levene's Test for Homogeneity of Variance (center = median)
##         Df F value    Pr(>F)    
## group    7  108.18 < 2.2e-16 ***
##       4240                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  1. Kesimpulan : karena \(P\text{-value} < 0.05\) maka H0 ditolak. Pada taraf sigifikansi 5% terdapat cukup bukti bahwa terdapat heterogenitas di dalam model.

4. Robust Anova


Pendekatan lain yang lebih tangguh untuk mengatasi pelanggaran asumsi adalah Robust ANOVA (sering disebut sebagai uji WRS2 atau Wilcox’s Robust ANOVA). Robust ANOVA adalah metode pengujian perbedaan rata-rata antar kelompok yang dirancang khusus agar tetap akurat meskipun data mengandung pencilan (outliers) yang ekstrim dan varians yang tidak homogen (heteroskedastisitas). Berbeda dengan ANOVA klasik yang menggunakan rata-rata aritmatika murni, Robust ANOVA bekerja dengan menggunakan trimmed means (rata-rata yang telah dipangkas dari nilai ekstrim) serta penyesuaian pada derajat bebas. Hal ini memastikan bahwa kesimpulan mengenai perbedaan margin profit antar jenis produk tidak terdistorsi oleh data-data anomali yang muncul di pasar.

  1. Hipotesis \(\begin{aligned} H_0 &: \mu_{t1} = \mu_{t2} = \dots = \mu_{tk} \text{ (Semua rata-rata terpangkas adalah sama)} \\ H_1 &: \text{Minimal ada satu rata-rata terpangkas } (\mu_{ti}) \text{ yang berbeda} \end{aligned}\)

  2. Taraf Signifikansi Taraf signifikansi yang digunakan adalah:\(\alpha = 0.05\)

  3. Daerah Kritis \(H_0\) ditolak jika:\(P\text{-value} < 0.05\)

  4. Statistik Uji Statistik uji Robust ANOVA dihitung berdasarkan jumlah kuadrat dari trimmed means: \[F_t = \frac{\sum_{i=1}^k w_i(\bar{x}_{ti} - \bar{x}_{t..})^2 / (k-1)}{1 + \frac{2(k-2)}{k^2-1} \sum_{i=1}^k \frac{1}{h_i-1}}\]

Keterangan: * \(\bar{x}_{ti}\): Trimmed mean (rata-rata kelompok \(i\) setelah pemangkasan).

  • \(w_i\): Bobot yang disesuaikan dengan varians tiap kelompok.

  • \(h_i\): Ukuran sampel efektif setelah pemangkasan data.

model_baru <- lm(Margin ~ `Market Size` * Product_Type, data = data)
hasil_anova <- Anova(model_baru, type = "III", white.adjust = TRUE)
## Coefficient covariances computed by hccm()
print(hasil_anova)
## Analysis of Deviance Table (Type III tests)
## 
## Response: Margin
##                              Df       F    Pr(>F)    
## (Intercept)                   1 533.544 < 2.2e-16 ***
## `Market Size`                 1 169.481 < 2.2e-16 ***
## Product_Type                  3  67.039 < 2.2e-16 ***
## `Market Size`:Product_Type    3  81.769 < 2.2e-16 ***
## Residuals                  4240                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("\n--- Interpretasi Uji Hipotesis (alpha = 0.05) ---\n")
## 
## --- Interpretasi Uji Hipotesis (alpha = 0.05) ---
for(i in 1:nrow(hasil_anova)) {
  p_val <- hasil_anova$`Pr(>F)`[i]
  row_name <- rownames(hasil_anova)[i]
  
  if(!is.na(p_val)) {
    if(p_val < 0.05) {
      status <- "DITOLAK (Signifikan)"
      kesimpulan <- "Variabel ini berpengaruh nyata terhadap Margin."
    } else {
      status <- "GAGAL DITOLAK (Tidak Signifikan)"
      kesimpulan <- "Tidak cukup bukti variabel ini berpengaruh terhadap Margin."
    }
    cat(paste0("[", row_name, "]\n"))
    cat(paste0("   H0: ", status, "\n"))
    cat(paste0("   Ket: ", kesimpulan, "\n\n"))
  }
}
## [(Intercept)]
##    H0: DITOLAK (Signifikan)
##    Ket: Variabel ini berpengaruh nyata terhadap Margin.
## 
## [`Market Size`]
##    H0: DITOLAK (Signifikan)
##    Ket: Variabel ini berpengaruh nyata terhadap Margin.
## 
## [Product_Type]
##    H0: DITOLAK (Signifikan)
##    Ket: Variabel ini berpengaruh nyata terhadap Margin.
## 
## [`Market Size`:Product_Type]
##    H0: DITOLAK (Signifikan)
##    Ket: Variabel ini berpengaruh nyata terhadap Margin.
  1. Kesimpulan : seluruh variabel dan interaksinya memiliki nilai \(p < 0,05\), sehingga \(H_0\) ditolak. Hal ini membuktikan adanya pengaruh utama yang signifikan dari Market Size dan Product_Type terhadap Margin, serta efek interaksi yang signifikan antara keduanya. Secara statistik, signifikan secara interaksi berarti pengaruh tipe produk terhadap margin tidak bersifat konstan, melainkan berubah secara nyata bergantung pada kategori ukuran pasarnya.

5. Uji Lanjut (Tukey Test)


Dilakukan setelah ANOVA jika terdapat hasil yang signifikan untuk melihat perbandingan spesifik.

  1. Hipotesis Post-Hoc \(\begin{aligned} H_0 &: \mu_{ti} = \mu_{tj} \text{ untuk semua } i \neq j \\ H_1 &: \mu_{ti} \neq \mu_{tj} \text{ untuk minimal satu pasangan kelompok} \end{aligned}\)

  2. Taraf Signifikansi Taraf signifikansi yang digunakan adalah: \(\alpha = 0.05\)

  3. Daerah Kritis \(H_0\) ditolak jika: \(P\text{-adj} < 0.05\)

  4. Statistik Uji \[q = \frac{\bar{y}_{\max} - \bar{y}_{\min}}{\sqrt{MS_{\text{error}}/n}}\]

library(emmeans)

model_baru <- lm(Margin ~ `Market Size` * Product_Type, data = data)
adj_means  <- emmeans(model_baru, ~ `Market Size` * Product_Type)

hasil_pairs <- pairs(adj_means, by = "Market Size", adjust = "bonferroni")
df_pairs    <- as.data.frame(hasil_pairs)

list_per_size <- split(df_pairs, df_pairs$`Market Size`)

cat("          PERBANDINGAN BERPASANGAN (POST-HOC)         \n")
##           PERBANDINGAN BERPASANGAN (POST-HOC)
for (size_name in names(list_per_size)) {
  
  sub_data <- list_per_size[[size_name]]
  
  cat(paste0(">>> MARKET SIZE: ", toupper(size_name), "\n"))
  cat("--------------------------------------------------------------\n")
  
  for (i in 1:nrow(sub_data)) {
    kontras <- sub_data$contrast[i]
    p_val   <- sub_data$p.value[i]
    status  <- ifelse(p_val < 0.05, "DITOLAK (Signifikan)", "GAGAL DITOLAK (Tidak Signifikan)")
    
    cat(paste0("Perbandingan : ", kontras, "\n"))
    cat(paste0("P-Value      : ", round(p_val, 6), "\n"))
    cat(paste0("Status H0    : ", status, "\n"))
    
    if(p_val < 0.05) {
      cat("Kesimpulan   : Terdapat perbedaan Margin yang nyata.\n")
    } else {
      cat("Kesimpulan   : Margin kedua produk dianggap sama secara statistik.\n")
    }
    cat("\n")
  }
  cat("--------------------------------------------------------------\n\n")
}
## >>> MARKET SIZE: MAJOR MARKET
## --------------------------------------------------------------
## Perbandingan : Coffee - Espresso
## P-Value      : 0.064832
## Status H0    : GAGAL DITOLAK (Tidak Signifikan)
## Kesimpulan   : Margin kedua produk dianggap sama secara statistik.
## 
## Perbandingan : Coffee - Herbal Tea
## P-Value      : 0
## Status H0    : DITOLAK (Signifikan)
## Kesimpulan   : Terdapat perbedaan Margin yang nyata.
## 
## Perbandingan : Coffee - Tea
## P-Value      : 0
## Status H0    : DITOLAK (Signifikan)
## Kesimpulan   : Terdapat perbedaan Margin yang nyata.
## 
## Perbandingan : Espresso - Herbal Tea
## P-Value      : 0
## Status H0    : DITOLAK (Signifikan)
## Kesimpulan   : Terdapat perbedaan Margin yang nyata.
## 
## Perbandingan : Espresso - Tea
## P-Value      : 0
## Status H0    : DITOLAK (Signifikan)
## Kesimpulan   : Terdapat perbedaan Margin yang nyata.
## 
## Perbandingan : Herbal Tea - Tea
## P-Value      : 1
## Status H0    : GAGAL DITOLAK (Tidak Signifikan)
## Kesimpulan   : Margin kedua produk dianggap sama secara statistik.
## 
## --------------------------------------------------------------
## 
## >>> MARKET SIZE: SMALL MARKET
## --------------------------------------------------------------
## Perbandingan : Coffee - Espresso
## P-Value      : 0.794626
## Status H0    : GAGAL DITOLAK (Tidak Signifikan)
## Kesimpulan   : Margin kedua produk dianggap sama secara statistik.
## 
## Perbandingan : Coffee - Herbal Tea
## P-Value      : 0
## Status H0    : DITOLAK (Signifikan)
## Kesimpulan   : Terdapat perbedaan Margin yang nyata.
## 
## Perbandingan : Coffee - Tea
## P-Value      : 0.031878
## Status H0    : DITOLAK (Signifikan)
## Kesimpulan   : Terdapat perbedaan Margin yang nyata.
## 
## Perbandingan : Espresso - Herbal Tea
## P-Value      : 0
## Status H0    : DITOLAK (Signifikan)
## Kesimpulan   : Terdapat perbedaan Margin yang nyata.
## 
## Perbandingan : Espresso - Tea
## P-Value      : 9.8e-05
## Status H0    : DITOLAK (Signifikan)
## Kesimpulan   : Terdapat perbedaan Margin yang nyata.
## 
## Perbandingan : Herbal Tea - Tea
## P-Value      : 0.03902
## Status H0    : DITOLAK (Signifikan)
## Kesimpulan   : Terdapat perbedaan Margin yang nyata.
## 
## --------------------------------------------------------------
  1. Kesimpulan hasil uji menunjukkan bahwa hipotesis nol (\(H_0\)) mayoritas ditolak, yang berarti tipe produk berpengaruh nyata terhadap margin di kedua kategori pasar. Di pasar besar maupun kecil, Coffee dan Espresso konsisten memiliki performa margin yang setara (tidak berbeda signifikan), namun keduanya unggul jauh dibandingkan kelompok Herbal Tea dan Tea. Perbedaan mencolok terlihat di pasar kecil (Small Market), di mana hampir seluruh kombinasi produk menunjukkan perbedaan margin yang sangat kontras dibandingkan dengan pasar besar.

VISUALISASI DATA

Analisis Distribusi Margin

ggplot(data, aes(x = Product_Type, y = Margin, fill = Product_Type)) +
  geom_boxplot(alpha = 0.7, outlier.colour = "red", outlier.shape = 1) +
  facet_wrap(~`Market Size`) +
  theme_minimal() +
  scale_fill_brewer(palette = "Set2") +
  labs(title = "Distribusi Margin per Produk dan Market",
       x = "Jenis Produk", y = "Margin") +
  theme(legend.position = "none", strip.background = element_rect(fill = "#ecf0f1"))

Visualisasi boxplot menunjukkan distribusi margin keuntungan berdasarkan kategori produk dan ukuran pasar. Secara statistik, Major Market menunjukkan variabilitas data yang jauh lebih tinggi dibandingkan dengan Small Market. Hal ini tercermin dari bentang Interquartile Range (IQR) yang lebih lebar pada kategori Coffee dan Espresso di pasar besar.

  • Volatilitas dan Skala Ekonomi: Major Market menawarkan potensi margin yang lebih tinggi, namun disertai dengan risiko volatilitas yang signifikan. Keberadaan nilai pencilan (outliers) yang ekstrim pada sisi bawah (margin negatif) menunjukkan adanya inefisiensi operasional atau promosi agresif yang merugikan pada transaksi tertentu.

  • Homogenitas Pasar Kecil: Sebaliknya, Small Market menunjukkan distribusi yang lebih terpusat dan homogen. Margin keuntungan di pasar ini lebih terprediksi, meskipun secara nominal lebih rendah. Ini mengindikasikan struktur pasar yang telah jenuh atau stabil dengan kompetisi yang lebih terkendali.

  • Identifikasi Risiko (Outliers): Keberadaan outliers pada produk Herbal Tea dan Tea menunjukkan bahwa meskipun produk tersebut memiliki median margin yang rendah, terdapat anomali transaksi yang perlu diinvestigasi lebih lanjut guna memitigasi kerugian di masa mendatang.

Interaksi Produk dan Market

interaction_data <- emmeans(model_baru, ~ Product_Type * `Market Size`) %>% as.data.frame()

ggplot(interaction_data, aes(x = Product_Type, y = emmean, group = `Market Size`, color = `Market Size`)) +
  geom_line(linewidth = 1.2) + # SUDAH FIX: Pakai linewidth
  geom_point(size = 3) +
  theme_minimal() + # SUDAH FIX: Pakai theme standar R
  labs(title = "Interaksi Product Type dan Market terhadap Margin",
       subtitle = "Persilangan garis menunjukkan signifikansi interaksi",
       x = "Jenis Produk", y = "Estimated Marginal Means") +
  scale_color_manual(values = c("#2980b9", "#e67e22"))

Interaction plot mengonfirmasi adanya interaksi non-paralel yang signifikan antara jenis produk dan ukuran pasar. Perubahan kemiringan garis yang kontras antara Major Market (biru) dan Small Market (oranye) membuktikan bahwa pengaruh jenis produk terhadap margin keuntungan sangat bergantung pada dimensi pasar di mana produk tersebut dijual.

  • Diferensiasi Performa Produk: Terdapat fenomena pembalikan performa pada kategori Coffee dan Espresso. Kedua produk ini merupakan kontributor margin utama di Major Market, namun menjadi produk dengan performa terendah di Small Market. Hal ini menunjukkan adanya preferensi konsumen atau daya beli yang berbeda secara fundamental terhadap produk premium di kedua pasar tersebut.

  • Produk Penyeimbang (Stabilizer): Herbal Tea menunjukkan titik konvergensi, di mana margin yang dihasilkan relatif serupa di kedua ukuran pasar. Produk ini dapat dikategorikan sebagai produk yang “resilien” atau tidak sensitif terhadap skala pasar, sehingga sangat krusial sebagai instrumen penjaga arus kas (cash flow) yang stabil.

  • Implikasi Strategi Pemasaran: Secara manajerial, data ini menegaskan bahwa strategi “satu ukuran untuk semua” (one-size-fits-all) tidak berlaku. Perusahaan disarankan untuk melakukan spesialisasi inventori; memprioritaskan lini kopi di pasar metropolitan (Major) dan memperkuat penetrasi lini teh di pasar yang lebih kecil guna mengoptimalkan margin perusahaan secara agregat.

Korelasi Sales -> Margin

ggplot(data, aes(x = Sales, y = Margin)) +
  geom_point(alpha = 0.3, color = "#16a085") +
  geom_smooth(method = "lm", color = "#c0392b", se = TRUE) +
  theme_light() +
  labs(title = "Korelasi Sales terhadap Margin",
       x = "Total Sales", y = "Margin")
## `geom_smooth()` using formula = 'y ~ x'

Grafik sebaran (scatter plot) menunjukkan hubungan linear positif yang sangat kuat antara volume penjualan (Sales) dan keuntungan (Margin). Garis regresi berwarna merah mengindikasikan bahwa setiap peningkatan unit penjualan berkontribusi secara proporsional terhadap peningkatan margin.

  • Efisiensi Skala Ekonomi: Konsentrasi data yang merapat pada garis tren menunjukkan model bisnis yang memiliki tingkat efisiensi biaya variabel yang stabil. Semakin tinggi penjualan, perusahaan mampu mempertahankan margin tanpa terdistorsi oleh lonjakan biaya operasional yang tidak terduga.

  • Identifikasi Anomali Bawah: Terdapat klaster data pada area penjualan rendah (0-250) yang berada jauh di bawah garis regresi, bahkan menyentuh margin negatif. Hal ini mengindikasikan adanya kelompok transaksi “rugi” yang kemungkinan disebabkan oleh diskon berlebih atau biaya logistik yang melampaui harga jual pada skala kecil.

  • Prediktabilitas Keuntungan: Hubungan ini memungkinkan manajemen untuk melakukan estimasi keuntungan masa depan dengan tingkat akurasi tinggi berdasarkan target volume penjualan yang ditetapkan.

Rata-Rata Margin per Produk

Diagram batang ini menyajikan rata-rata margin keuntungan untuk empat kategori produk utama: Coffee, Herbal Tea, Espresso, dan Tea. Penggunaan error bars (garis vertikal) merepresentasikan standar deviasi atau rentang variabilitas data di sekitar nilai rata-rata.

summary_margin <- data %>%
  group_by(Product_Type) %>%
  summarise(Mean_Margin = mean(Margin), SD = sd(Margin))

ggplot(summary_margin, aes(x = reorder(Product_Type, -Mean_Margin), y = Mean_Margin, fill = Product_Type)) +
  geom_bar(stat = "identity", width = 0.7) +
  geom_errorbar(aes(ymin = Mean_Margin - (SD/2), ymax = Mean_Margin + (SD/2)), width = 0.2) +
  theme_minimal() +
  labs(title = "Rata-Rata Margin per Jenis Produk",
       x = "Jenis Produk", y = "Rata-rata Margin") +
  scale_fill_viridis_d(option = "mako") +
  theme(legend.position = "none")

  • Dominasi Produk Kopi: Secara nominal, Coffee memiliki rata-rata margin tertinggi (di atas 100), diikuti oleh Herbal Tea dan Espresso. Hal ini memosisikan lini kopi sebagai kontributor profitabilitas utama perusahaan.

  • Analisis Risiko melalui Variabilitas: Perhatikan bahwa Coffee memiliki error bar yang paling panjang. Hal ini menunjukkan bahwa meskipun rata-ratanya tinggi, performanya sangat fluktuatif (berisiko tinggi). Sebaliknya, Herbal Tea dan Espresso memiliki rentang variabilitas yang lebih pendek, mengindikasikan performa yang lebih konsisten bagi portofolio perusahaan.

  • Evaluasi Produk Teh: Kategori Tea memiliki rata-rata margin terendah. Mengingat variabilitasnya yang cukup lebar hingga menyentuh angka margin rendah, kategori ini memerlukan peninjauan struktur biaya atau strategi penetapan harga ulang.

Violin plot memberikan gambaran komprehensif mengenai struktur kepadatan data margin. Lebar “biola” menunjukkan frekuensi data; semakin lebar bagian tertentu, semakin banyak jumlah transaksi yang menghasilkan margin pada angka tersebut.

# --- Visualisasi Tambahan: Violin Plot untuk Sebaran Data ---
ggplot(data, aes(x = Product_Type, y = Margin, fill = Product_Type)) +
  # Membuat biola (densitas data)
  geom_violin(alpha = 0.5, trim = FALSE, color = NA) + 
  # Menambahkan boxplot kecil di dalam untuk detail kuartil
  geom_boxplot(width = 0.15, color = "black", outlier.shape = NA, alpha = 0.8) +
  # Membagi berdasarkan Market Size
  facet_wrap(~`Market Size`) +
  # Estetika
  theme_minimal() +
  scale_fill_brewer(palette = "Set1") +
  labs(
    title = "Distribusi Kepadatan Margin per Produk dan Market",
    subtitle = "Bentuk biola yang lebar menunjukkan konsentrasi data terbanyak",
    x = "Jenis Produk",
    y = "Margin"
  ) +
  theme(
    legend.position = "none",
    strip.background = element_rect(fill = "#2c3e50"),
    strip.text = element_text(color = "white", face = "bold")
  )

* Struktur Kepadatan Major vs Small Market: Di Major Market, distribusi data pada produk Coffee dan Espresso cenderung lebih menyebar secara vertikal dengan kepadatan yang terdistribusi luas. Namun, pada Small Market, bentuk biola cenderung lebih “gemuk” di tengah (sekitar margin 50-100), mengindikasikan keuntungan yang sangat terpusat dan seragam.

  • Karakteristik Produk Herbal: Produk Herbal Tea di kedua pasar menunjukkan bentuk biola yang sangat lebar di bagian bawah tengah. Ini menunjukkan bahwa mayoritas besar transaksi produk ini terkonsentrasi pada margin yang stabil namun moderat, menjadikannya produk “basis” yang andal.

  • Anomali Ekor Distribusi: Pada kategori Tea di Small Market, terlihat “ekor” distribusi yang menjulur tajam ke arah negatif (bawah). Secara statistik, ini menunjukkan adanya risiko fat-tail di mana transaksi merugi jarang terjadi namun memiliki dampak negatif yang cukup dalam jika muncul.

INTEPRETASI HASIL

Kesimpulan

  1. Berdasarkan serangkaian analisis data yang telah dilakukan terhadap margin keuntungan perusahaan, dapat ditarik kesimpulan komprehensif sebagai berikut:1. Signifikansi Faktor Utama dan Efek Interaksi Hasil pengujian Two-Way ANOVA dan Robust ANOVA menunjukkan bahwa faktor Jenis Produk dan Ukuran Pasar memiliki pengaruh yang signifikan secara statistik terhadap margin keuntungan (\(p < 0.05\)). Temuan terpenting dalam penelitian ini adalah adanya efek interaksi yang signifikan antara kedua variabel tersebut. Hal ini mengimplikasikan bahwa efektivitas suatu jenis produk dalam menghasilkan laba sangat bergantung pada karakteristik pasar tempat produk tersebut dipasarkan.

  2. Perbedaan Performa Produk di Berbagai Skala Pasar Data menunjukkan perbedaan pola yang cukup kontras antara dua kelompok utama:

  • Lini Kopi dan Espresso: Menjadi penyumbang keuntungan tertinggi di pasar besar (Major Market). Namun, performanya menurun cukup tajam di pasar kecil. Produk ini sangat sensitif terhadap jumlah keramaian konsumen atau skala ekonomi.

  • Lini Teh Herbal: Merupakan produk yang paling tangguh atau resilien. Margin yang dihasilkan cenderung stabil dan konsisten, baik di pasar besar maupun kecil. Hal ini menjadikan teh herbal sebagai produk dengan risiko paling rendah bagi perusahaan.

  1. Efisiensi Biaya dan Peluang Perbaikan Analisis menunjukkan hubungan positif yang sangat kuat antara angka penjualan dan laba. Ini adalah kabar baik karena artinya biaya operasional kita masih terkendali seiring bertambahnya pesanan. Namun, ditemukan beberapa transaksi skala kecil yang justru merugi (margin negatif). Hal ini mengindikasikan perlunya evaluasi kembali terhadap kebijakan diskon atau biaya pengiriman pada transaksi berjumlah sedikit.

  2. Memahami Risiko dan Kepastian Kita melihat dua sisi mata uang: pasar besar menawarkan potensi keuntungan yang melimpah namun dengan risiko atau ketidakpastian yang lebih tinggi. Sebaliknya, pasar kecil memberikan kepastian dan stabilitas meskipun memiliki batas keuntungan yang lebih terbatas.

Profil Produk dan Karakteristik Pasar

Analisis Strategis: Produk, Pasar, dan Loyalitas Konsumen

Kategori 🚀 Pasar Besar (Major Market) 🛡️ Pasar Kecil (Small Market)
Produk Unggulan Kopi & Espresso Teh (Herbal & Reguler)
Varian Spesifik Caffè Latte, Mocha, & Colombian Earl Grey, Chamomile, Lemon, & Darjeeling
Performa Margin Sangat Tinggi (Maksimal saat tren naik) Stabil & Konsisten (Jarang berfluktuasi)
Profil Risiko ⚠️ Tinggi: Sangat dipengaruhi oleh tren dan persaingan. Rendah: Memiliki basis pelanggan setia yang tetap.
Fokus Strategi Inovasi & Ekspansi: Terus ciptakan varian baru. Efisiensi & Loyalitas: Fokus pada ketersediaan stok.
Perilaku Konsumen Explorative: Konsumen mencari pengalaman baru. Routine: Konsumen cenderung membeli secara berulang.
Tujuan Bisnis Pusat Pertumbuhan & Akselerasi Profit. Pilar Stabilitas & Jaring Pengaman Arus Kas.

💡 Kesimpulan Analisis: Hasil pengujian menunjukkan bahwa sementara Kopi dan Espresso menjadi mesin pertumbuhan di pasar besar, seluruh lini produk teh—baik itu Herbal Tea (Chamomile, Lemon) maupun Tea reguler (Earl Grey, Darjeeling)—memegang peranan krusial dalam menjaga stabilitas margin di pasar kecil.

Rekomendasi

Strategi Peningkatan Keuntungan: “Tumbuh Tepat di Tempat yang Pas” Analisis data kita menunjukkan bahwa setiap pasar memiliki “jiwa” yang berbeda. Agar bisnis kita lebih berkembang dan kreatif, berikut langkah yang bisa kita ambil:

  • Optimalkan Potensi Lokal: Di pasar besar (Major Market), Kopi dan Espresso adalah primadona. Mari kita jadikan ini peluang untuk berinovasi, misalnya dengan menciptakan varian rasa baru atau kemasan eksklusif guna menangkap peluang keuntungan yang lebih besar.

  • Perkuat Keunikan Produk: Di pasar kecil (Small Market), produk Teh dan Herbal adalah pahlawan kestabilan kita. Kita bisa mengembangkan kreativitas di sini dengan menonjolkan nilai kesehatan atau bahan lokal untuk menjaga loyalitas pelanggan.

  • Transformasi Produk Kurang Laris: Alih-alih menghentikan produk yang kinerjanya rendah, mari kita evaluasi dan tata ulang. Ini adalah kesempatan untuk memikirkan ide baru—apakah produk tersebut butuh resep baru, cara pemasaran yang lebih unik, atau dialokasikan ke tempat lain yang lebih membutuhkan.

<“Pasar besar berfungsi sebagai ruang pengembangan inovasi untuk menjawab kebutuhan pelanggan secara dinamis, sedangkan pasar kecil menjadi pilar keseimbangan yang menjaga stabilitas dan memperkokoh ketahanan bisnis jangka panjang.”

DAFTAR PUSTAKA

Centofanti F., et al. 2023. Robust Functional ANOVA with Application to Additive Manufacturing. Journal of the Royal Statistical Society, 72(5), 1210–1234.https://doi.org/10.1093/jrsssc/qlad074

Costin A. D., Andreea. 2025. Parametric Post-Hoc Tests: A Refined Examination of Significance and Errors in Small Sample Sizes. 47(4), 139-149.

Yusuf E. S., Idqan, Raden. 2022. Sustainability Strategy and Business Model of Arabica Coffee in West Java : A Case Study in Garut Regency. Jurnal Analisis Kebijakan Pertanian, 20(1), 73-94.