Pendahuluan

Latar Belakang

Industri kopi saat ini menghadapi persaingan yang sangat ketat, terutama dengan munculnya banyak pemain baru dan perubahan gaya hidup masyarakat, terutama generasi muda yang terdorong tren gaya hidup. Hal ini menyebabkan peningkatan permintaan terhadap kopi sekaligus menciptakan persaingan yang semakin ketat antar pelaku usaha kopi. Untuk menghadapi persaingan industri kopi, maka perusahaan atapun pelaku industri kopi perlu memiliki pemahaman yang kuat terhadap data penjualan guna modal dalam menyusun strategi yang tepat. Salah satu pendekatan yang dapat digunakan untuk memahami dinamika dari penjualan tersebut adalah melalui analisis statistik.

Analisis statistik ini menjadi krusial bagi pelaku bisnis coffee chain karena mampu mengungkap faktor-faktor kunci yang mempengaruhi nilai profit secara signifikan. Dengan memanfaatkan pendekatan statistik yang tepat diharapkan dapat memberikan insight dasar dalam merumuskan strategi bisnis yang adaptif, dan lebih efektif untuk meningkatkan daya saing dalam industri kopi.

Tujuan

Memahami pola penjualan dan preferensi pelanggan terhadap berbagai jenis produk kopi di setiap wilayah dengan Uji Statistik.

Hasil akhir pengamatan ini dapat digunakan perusahaan untuk membantu pengambilan keputusan bisnis.

Deskripsi Data

Data ini diambil dari dataset Coffee Chain yang berisi 4.248 observasi penjualan kopi dari +- 50 kota yang berada di wilayah utama Amerika. Penelitian dataset ini diambil sejak bulan Juli 2012 hingga bulan April 2013.

Statistik Uji

Analisis perbandingan rata-rata profit di Major market vs Small market (Uji ANOVA)

Dengan uji ini, perusahaan dapat menganalisis perbandingan profit untuk mengetahui lokasi mana yang sebaiknya dialokasikan untuk investasi terbesar oleh perusahaan.

Visualisasi

df_mean <- coffee_chain %>%
  group_by(Market, Market.Size) %>%
  summarise(Mean_Profit = mean(Profit), .groups = "drop")

ggplot(df_mean, aes(x = Market, y = Mean_Profit,
                    color = Market.Size,
                    group = Market.Size)) +
  geom_line(linewidth = 1) +
  geom_point(size = 3) +
  labs(title = "Interaction Plot: Market × Market Size",
       x = "Market", y = "Mean Profit",
       color = "Market Size") +
  theme_minimal()

Dari plot sudah terlihat adanya perbedaan rata rata Profit yang signifikan antara market besar dan kecil.

Hipotesis

H0 = Tidak terdapat perbedaan signifikan pada rata-rata profit antara Major Market dan Small Market

H1 = Terdapat perbedan signifikan pada rata-rata profit antara Major Market dan Small Market

Statistik Uji

coffee_chain %>%
  group_by(Market) %>%
  summarise(
    n           = n(),
    Mean_Profit = mean(Profit),
    SD          = sd(Profit),
    SE          = sd(Profit) / sqrt(n())
  )
## # A tibble: 4 × 5
##   Market      n Mean_Profit    SD    SE
##   <chr>   <int>       <dbl> <dbl> <dbl>
## 1 Central  1344        69.8  73.7  2.01
## 2 East      888        66.7 138.   4.64
## 3 South     672        48.3  54.3  2.09
## 4 West     1344        55.1 114.   3.11
model <- aov(Profit ~ Market, data = coffee_chain)
summary(model)
##               Df   Sum Sq Mean Sq F value   Pr(>F)    
## Market         3   288811   96270   9.361 3.64e-06 ***
## Residuals   4244 43644825   10284                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(model)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Profit ~ Market, data = coffee_chain)
## 
## $Market
##                     diff        lwr        upr     p adj
## East-Central   -3.144546 -14.415515  8.1264225 0.8903657
## South-Central -21.500000 -33.813493 -9.1865072 0.0000438
## West-Central  -14.773810 -24.827734 -4.7198847 0.0009266
## South-East    -18.355454 -31.681197 -5.0297102 0.0022850
## West-East     -11.629263 -22.900232 -0.3582944 0.0401115
## West-South      6.726190  -5.587302 19.0396833 0.4969307
leveneTest(Profit ~ Market, data = coffee_chain)
## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
## Levene's Test for Homogeneity of Variance (center = median)
##         Df F value    Pr(>F)    
## group    3  38.082 < 2.2e-16 ***
##       4244                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
p_anova <- summary(model)[[1]]$`Pr(>F)`[1]

cat("\n========== KESIMPULAN ANOVA ==========\n")
## 
## ========== KESIMPULAN ANOVA ==========
cat("p-value =", p_anova, "\n")
## p-value = 3.641428e-06
if (p_anova < 0.05) {
  cat("Keputusan : H0 DITOLAK\n")
  cat("Kesimpulan: Terdapat perbedaan rata-rata Profit\n")
  cat("            yang signifikan antar Market.\n")
} else {
  cat("Keputusan : H0 GAGAL DITOLAK\n")
  cat("Kesimpulan: Tidak ada perbedaan rata-rata Profit\n")
  cat("            yang signifikan antar Market.\n")
}
## Keputusan : H0 DITOLAK
## Kesimpulan: Terdapat perbedaan rata-rata Profit
##             yang signifikan antar Market.
cat("======================================\n")
## ======================================

Hasil Uji ANAVA menunjukkan bahwa Market secara signifikan memengaruhi profit, yang berarti setiap wilayah tidak memberikan keuntungan yang sama. Dalam Uji lanjut Tukey ditampilkan bahwa market seperti South dan West cenderung memiliki profit yang lebih rendah dibanding Central, sehingga perusahaan perlu memberi perhatian khusus untuk meningkatkan profit di daerah tersebut. Dengan adanya perbedaan profit yang lumayan banyak, dapat diketahui bahwa strategi bisnis yang diterapkan belum optimal secara merata di semua market.

Analisis Hubungan antara Biaya Marketing dan Profit (Uji Korelasi Pearson)

Perlu untuk mengetahui apakah ada hubungan linear antara pengeluaran utk pemasaran dengan profit yang diperoleh perusahaan. Uji ini dilakukan agar perusahaan dapat mengevaluasi apakah peningkatan biaya marketing berkontribusi thd peningkatan profit.

Visualisasi

cor_val <- cor(coffee_chain$Marketing, coffee_chain$Profit, use = "complete.obs")
ggplot(coffee_chain, aes(x = Marketing, y = Profit)) +
  geom_point(color = "lightblue", size = 2, alpha = 0.7) +
  
  geom_smooth(method = "lm", se = FALSE, color = "red", size = 1) +
  annotate("text",
           x = min(coffee_chain$Marketing, na.rm = TRUE),
           y = max(coffee_chain$Profit, na.rm = TRUE),
           label = paste("Correlation:", round(cor_val, 2)),
           hjust = 0,
           size = 5) +
  
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'

Di dalam plot terlihat bahwa tren positif lemah yang berarti semakin tinggi anggaran Marketing, maka Profit cenderung meningkat meskipun dengan sebaran yang cukup besar.

Hipotesis

H0 = Tidak terdapat korelasi antara Marketing dan Profit (ρ = 0)

H1 = Terdapat korelasi antara Marketing dan Profit (ρ ≠ 0)

Statistik Uji

shapiro.test(coffee_chain$Profit[1:5000])
## 
##  Shapiro-Wilk normality test
## 
## data:  coffee_chain$Profit[1:5000]
## W = 0.79969, p-value < 2.2e-16
shapiro.test(coffee_chain$Marketing[1:5000])
## 
##  Shapiro-Wilk normality test
## 
## data:  coffee_chain$Marketing[1:5000]
## W = 0.81776, p-value < 2.2e-16
hasil_cor <- cor.test(coffee_chain$Marketing, coffee_chain$Profit,
      method = "pearson")
print(hasil_cor)
## 
##  Pearson's product-moment correlation
## 
## data:  coffee_chain$Marketing and coffee_chain$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
r  <- hasil_cor$estimate
p_cor <- hasil_cor$p.value

cat("\n========== KESIMPULAN KORELASI ==========\n")
## 
## ========== KESIMPULAN KORELASI ==========
cat("r       =", round(r, 4), "\n")
## r       = 0.2255
cat("p-value =", p_cor, "\n")
## p-value = 4.265018e-50
if (p_cor < 0.05) {
  cat("Keputusan : H0 DITOLAK\n")
  cat("Kesimpulan: Terdapat korelasi signifikan antara\n")
  cat("            Marketing dan Profit (r =", round(r,4), ").\n")
} else {
  cat("Keputusan : H0 GAGAL DITOLAK\n")
  cat("Kesimpulan: Tidak terdapat korelasi signifikan\n")
  cat("            antara Marketing dan Profit.\n")
}
## Keputusan : H0 DITOLAK
## Kesimpulan: Terdapat korelasi signifikan antara
##             Marketing dan Profit (r = 0.2255 ).
cat("=========================================\n")
## =========================================

Dengan hasil r = 0.2225 < p-value maka H0 ditolak, dapat disimpulkan bahwa terdapat korelasi positif antara Marketing dan Profit, namun kekuatan korelasinya tergolong lemah. Sehingga perusahaan dapat menaikkan Marketing jika ingin meningkatkan hasil Profit.

Analisis Hubungan antara Jenis Produk dan Wilayah (Uji Chi-Square)

Dalam praktik nyatanya, tiap wilayah mungkin memiliki selera pelanggan yang berbeda-beda. Dengan dilakukannya uji ini, perusahaan dapat benar-benar mengetahui apakah jenis produk yang terjual bergantung pada lokasi atau tidak.

Hipotesis

H0 = Tidak terdapat hubungan antara Jenis Produk terhadap lokasi

H1 = Terdapat hubungan antara jenis produk terhadap lokasi

Statistik Uji

# buat tabel kontingensi
tab <- table(coffee_chain[["Product.Type"]],
             coffee_chain[["Area.Code"]])

# uji chi-square
chi_test <- chisq.test(tab)
## Warning in chisq.test(tab): Chi-squared approximation may be incorrect
chi_val <- chi_test$statistic
p_val   <- chi_test$p.value
df_val  <- chi_test$parameter
chi_test
## 
##  Pearson's Chi-squared test
## 
## data:  tab
## X-squared = 774.47, df = 465, p-value < 2.2e-16
cat("\n========== KESIMPULAN CHI-SQUARE ==========\n")
## 
## ========== KESIMPULAN CHI-SQUARE ==========
if(p_val < 0.05){
  cat("Karena p-value =", round(p_val,4), "< 0.05, maka H0 ditolak.\n",
      "Artinya terdapat hubungan yang signifikan antara Product Type dan Area Code.\n")
} else {
  cat("Karena p-value =", round(p_val,4), ">= 0.05, maka H0 gagal ditolak.\n",
      "Artinya tidak terdapat hubungan yang signifikan antara Product Type dan Area Code.\n")
}
## Karena p-value = 0 < 0.05, maka H0 ditolak.
##  Artinya terdapat hubungan yang signifikan antara Product Type dan Area Code.
cat("Nilai Chi-Square =", round(chi_val,2),
    "dengan df =", df_val, "\n")
## Nilai Chi-Square = 774.47 dengan df = 465
cat("===========================================\n")
## ===========================================

Hasil Uji Chi-Squared menunjukkan p-value = 0 < 0.05, maka H0 ditolak. Dapat disimpulkan bahwa terdapat hubungan yang signifikan antara Product Type dan Area Code. Jenis produk yang terjual sudah bervariasi antar lokasi, dan berarti ada selera pelanggan yang berbeda tiap lokasi sehingga perusahaan dapat memanfaatkan hal tersebut untuk strategi distribusi lokal.

Analisis Keterkaitan Jenis Produk dan Ukuran Pasar (Uji Fisher Exact)

Uji ini dilakukan untuk mengetahui apakah distribusi tiap produk berbeda signifikan terhadap ukuran pasar. Dengan bisnis Coffee yang sgt dipengaruhi gaya hidup dan tingkat konsumsi yg tinggi, diperlukan pemahaman preferensi produk terhadap perbedaan ukuran pasar.

Visualisasi

tab <- table(coffee_chain$Product.Type, coffee_chain$Market.Size)

mosaicplot(tab,
           color = TRUE,
           main = "Product Type vs Market Size")

Hipotesis

H0 = Tidak ada hubungan antara Jenis produk dengan Market Size (Distribusi penjualan merata)

H1 = Terdapat hubungan antara Jenis produk dengan Market Size

Uji Statistik

ct <- table(coffee_chain$Product.Type, coffee_chain$Market.Size)
print(ct)
##             
##              Major Market Small Market
##   Coffee              408          648
##   Espresso            432          744
##   Herbal Tea          456          600
##   Tea                 408          552
#Chi-Square untuk tabel 4x2 (overall) 
chisq.test(ct)
## 
##  Pearson's Chi-squared test
## 
## data:  ct
## X-squared = 12.962, df = 3, p-value = 0.004718
hasil_overall <- chisq.test(ct)
p_overall <- hasil_overall$p.value

for (pt in unique(coffee_chain$Product.Type)) { 
  mat <- rbind(
    ct[pt,], 
    colSums(ct) - ct[pt,])
  
cat("\nProduk:", pt, "\n") 
print(fisher.test(mat)) 
}
## 
## Produk: Coffee 
## 
##  Fisher's Exact Test for Count Data
## 
## data:  mat
## p-value = 0.2618
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  0.7963832 1.0647496
## sample estimates:
## odds ratio 
##  0.9211708 
## 
## 
## Produk: Tea 
## 
##  Fisher's Exact Test for Count Data
## 
## data:  mat
## p-value = 0.09213
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  0.9789744 1.3176917
## sample estimates:
## odds ratio 
##   1.136033 
## 
## 
## Produk: Espresso 
## 
##  Fisher's Exact Test for Count Data
## 
## data:  mat
## p-value = 0.005709
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  0.7133797 0.9458911
## sample estimates:
## odds ratio 
##  0.8217068 
## 
## 
## Produk: Herbal Tea 
## 
##  Fisher's Exact Test for Count Data
## 
## data:  mat
## p-value = 0.02044
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  1.025332 1.366325
## sample estimates:
## odds ratio 
##   1.183791
cat("\n========== KESIMPULAN FISHER EXACT ==========\n")
## 
## ========== KESIMPULAN FISHER EXACT ==========
cat("Chi-Square overall p-value =", p_overall, "\n\n")
## Chi-Square overall p-value = 0.004718448
for (pt in unique(coffee_chain$Product.Type)) {
  mat <- rbind(ct[pt, ], colSums(ct) - ct[pt, ])
  hasil <- fisher.test(mat)
  p_f   <- hasil$p.value
  cat("Produk:", pt, "| OR =", round(hasil$estimate, 4),
      "| p =", round(p_f, 4), "|",
      ifelse(p_f < 0.05, "H0 DITOLAK", "H0 GAGAL DITOLAK"), "\n")
}
## Produk: Coffee | OR = 0.9212 | p = 0.2618 | H0 GAGAL DITOLAK 
## Produk: Tea | OR = 1.136 | p = 0.0921 | H0 GAGAL DITOLAK 
## Produk: Espresso | OR = 0.8217 | p = 0.0057 | H0 DITOLAK 
## Produk: Herbal Tea | OR = 1.1838 | p = 0.0204 | H0 DITOLAK
cat("Overall:", ifelse(p_overall < 0.05,
  "H0 DITOLAK — ada hubungan Product Type & Market Size.",
  "H0 GAGAL DITOLAK — tidak ada hubungan signifikan."), "\n")
## Overall: H0 DITOLAK — ada hubungan Product Type & Market Size.
cat("=============================================\n")
## =============================================

Dengan ditolaknya H0, dapat disimpulkan bahwa ada hubungan antara jenis produk dengan market size. Misalnya dari hasil uji terlihat bahwa Ekspresso lebih laris di Major Market sedangkan Herbal Tea leboh laris di Small market. Dengan hal ini perusahaan dapat memperbanyak stok Ekspresso dan Herbal Tea di market masing-masing.

Analisis Tren dan Grafik

Profit Bulanan

coffee_chain$Date <- as.Date(coffee_chain$Date)

data_bulanan <- coffee_chain %>%
  mutate(
    TahunBulan = floor_date(Date, "month") 
  ) %>%
  group_by(TahunBulan) %>% 
  summarise(
    TotalProfit = sum(Profit, na.rm = TRUE)
  ) %>%
  ungroup()

grafik_profit_bulanan <- ggplot(data = data_bulanan, aes(x = TahunBulan, y = TotalProfit)) +
  geom_line(color = "#160", size = 1) +  
  geom_point(color = "#160", size = 2.5) + 
  labs(
    x = "Bulan",
    y = "Total Profit",
    title = 'Profit Bulanan'
  ) +
  theme_minimal() +
  scale_x_date(date_labels = "%b %Y", date_breaks = "1 month") + 
  theme(
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.text.x = element_text(angle = 45, hjust = 1),
    plot.title = element_text(hjust = 0.5)) 
print(grafik_profit_bulanan)

Grafik menunjukkan pergerakan total profit per Bulan pada setiap bulan. Terlihat bahwa profit mengalami lonjakan signifikan di awal 2013 dan bertahan pada level yang lebih tinggi hingga akhir periode dengan fluktuasi kecil. Hal ini mengindikasikan adanya peningkatan kinerja bisnis yang cukup besar mulai 2013, meskipun pola musiman tidak terlalu kuat.

Penutup

Analisis penjualan kopi dengan pendekatan statistik dapat membantu perusahaan memahami performa penjualan secara objektif karena didasarkan pada data, sehingga keputusan yang diambil tidak hanya berdasarkan asumsi. Untuk melakukan analisis ini, diperlukan pemahaman dasar statistika dan konteks bisnis agar hasilnya bisa dimanfaatkan secara maksimal.

Dari berbagai analisis yang dilakukan, diperoleh beberapa insight penting. Misalnya, adanya korelasi positif antara Profit dan Marketing menunjukkan bahwa peningkatan biaya marketing cenderung diikuti peningkatan profit. Selain itu, hasil uji Chi-Square menunjukkan adanya hubungan antara Product Type dan Area Code, yang berarti preferensi produk berbeda antar wilayah. Beberapa penyajian data dalam bentuk grafik juga membantu melihat pola yang bisa menjadi peluang untuk meningkatkan strategi bisnis.

Secara keseluruhan, analisis ini dapat mendukung perusahaan dalam mengoptimalkan penjualan kopi dan masih bisa dikembangkan lebih lanjut untuk mencakup aspek bisnis lainnya.