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.
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.
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.
Dengan uji ini, perusahaan dapat menganalisis perbandingan profit untuk mengetahui lokasi mana yang sebaiknya dialokasikan untuk investasi terbesar oleh perusahaan.
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.
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
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.
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.
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.
H0 = Tidak terdapat korelasi antara Marketing dan Profit (ρ = 0)
H1 = Terdapat korelasi antara Marketing dan Profit (ρ ≠ 0)
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.
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.
H0 = Tidak terdapat hubungan antara Jenis Produk terhadap lokasi
H1 = Terdapat hubungan antara jenis produk terhadap lokasi
# 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.
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.
tab <- table(coffee_chain$Product.Type, coffee_chain$Market.Size)
mosaicplot(tab,
color = TRUE,
main = "Product Type vs Market Size")
H0 = Tidak ada hubungan antara Jenis produk dengan Market Size (Distribusi penjualan merata)
H1 = Terdapat hubungan antara Jenis produk dengan Market Size
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.
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.
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.