Pada industri Coffee Chain, penjualan produk minuman sangat dipengaruhi oleh berbagai faktor seperti lokasi (wilayah) dan jenis toko. Analisis yang mendalam terhadap faktor-faktor ini dapat membantu perusahaan dalam mengambil keputusan strategis, seperti penentuan lokasi outlet baru dan segmentasi pasar. Insight ini penting karena perbedaan geografis dan karakteristik toko (misalnya toko Premium vs Regular) dapat menjelaskan variasi penjualan. Dengan menganalisis faktor-faktor tersebut, manajemen dapat mengoptimalkan strategi penjualan dan operasional.
Insight yang akan dianalisis adalah faktor-faktor yang mempengaruhi total penjualan produk minuman berdasarkan Wilayah dan Tipe Toko dan wilayah-wilayah dengan kinerja terbaik berdasarkan total profit dari penjualan produk-produk minuman di jaringan Coffee Chain. Pemilihan insight ini didasari kebutuhan untuk memahami apakah lokasi toko dan jenis toko (misalnya Premium, Regular, Outlet) secara signifikan mempengaruhi performa penjualan. Analisis ini relevan untuk memastikan strategi pemasaran dan distribusi produk lebih tepat sasaran. Fokus pada produk minuman dipilih karena jenis produk ini biasanya menjadi salah satu kontributor utama dalam pendapatan gerai kopi. \[ Sales_{ijk} = \mu + \alpha_i + \beta_j + (\alpha\beta)_{ij} + \epsilon_{ijk} \]
# Baca data dan filter produk minuman
data <- read_excel(file.choose(), sheet = "data")
bev <- data %>%
filter(`Product Type` %in% c("Coffee", "Espresso", "Tea", "Herbal Tea"))
head(bev)## # A tibble: 6 × 20
## `Area Code` Date Market `Market Size` Product `Product Line`
## <dbl> <dttm> <chr> <chr> <chr> <chr>
## 1 719 2012-01-01 00:00:00 Central Major Market Amaretto Beans
## 2 970 2012-01-01 00:00:00 Central Major Market Colombian Beans
## 3 970 2012-01-01 00:00:00 Central Major Market Decaf Ir… Beans
## 4 303 2012-01-01 00:00:00 Central Major Market Green Tea Leaves
## 5 303 2012-01-01 00:00:00 Central Major Market Caffe Mo… Beans
## 6 720 2012-01-01 00:00:00 Central Major Market Decaf Es… Beans
## # ℹ 14 more variables: `Product Type` <chr>, State <chr>, Type <chr>,
## # `Budget COGS` <dbl>, `Budget Margin` <dbl>, `Budget Profit` <dbl>,
## # `Budget Sales` <dbl>, COGS <dbl>, Inventory <dbl>, Margin <dbl>,
## # Marketing <dbl>, Profit <dbl>, Sales <dbl>, `Total Expenses` <dbl>
## # A tibble: 6 × 4
## Market State Sales Profit
## <chr> <chr> <dbl> <dbl>
## 1 Central Colorado 219 94
## 2 Central Colorado 190 68
## 3 Central Colorado 234 101
## 4 Central Colorado 100 30
## 5 Central Colorado 134 54
## 6 Central Colorado 180 53
Disini kita akan mencari tahu terlebih dahulu wilayah yang memilihi total penjualan dan keuntungan terbesar di semua produk
# Ringkasan per Market
market_summary <- df_region %>%
group_by(Market) %>%
summarise(
Total_Sales = sum(Sales, na.rm = TRUE),
Total_Profit = sum(Profit, na.rm = TRUE),
Profit_Margin = Total_Profit / Total_Sales
) %>%
arrange(desc(Total_Profit))
knitr::kable(market_summary, caption = "Profit dan Sales Berdasarkan Market")| Market | Total_Sales | Total_Profit | Profit_Margin |
|---|---|---|---|
| Central | 265045 | 93852 | 0.3540984 |
| West | 272264 | 73996 | 0.2717803 |
| East | 178576 | 59217 | 0.3316067 |
| South | 103926 | 32478 | 0.3125108 |
# Bar chart Profit per Market
ggplot(market_summary, aes(x = reorder(Market, Total_Profit), y = Total_Profit)) +
geom_col(fill = "#00BFC4") +
coord_flip() +
labs(
title = "Total Profit per Market",
x = "Market",
y = "Total Profit"
) +
theme_minimal()
Wilayah dengan Profit Tinggi menunjukkan bahwa bisnis coffee chain di
wilayah tersebut berjalan efisien, baik karena harga jual yang tinggi,
volume penjualan besar, atau biaya operasional yang lebih rendah.
Wilayah dengan Profit Rendah atau Negatif mengindikasikan adanya masalah
profitabilitas. Kita akan melihat secara daerah untuk mengetahui daerah
yang memiliki margin profit tertinggi
# Ringkasan per State
state_summary <- df_region %>%
group_by(State) %>%
summarise(
Total_Sales = sum(Sales, na.rm = TRUE),
Total_Profit = sum(Profit, na.rm = TRUE),
Profit_Margin = Total_Profit / Total_Sales
) %>%
arrange(desc(Total_Profit))
knitr::kable(state_summary, caption = "Profit dan Sales Berdasarkan State")| State | Total_Sales | Total_Profit | Profit_Margin |
|---|---|---|---|
| California | 96892 | 31785 | 0.3280457 |
| Illinois | 69883 | 30821 | 0.4410372 |
| Iowa | 54750 | 22212 | 0.4056986 |
| New York | 70852 | 20096 | 0.2836335 |
| Colorado | 48179 | 17743 | 0.3682725 |
| Massachusetts | 29965 | 16442 | 0.5487068 |
| Texas | 37410 | 15766 | 0.4214381 |
| Oregon | 40899 | 12439 | 0.3041395 |
| Florida | 37443 | 12310 | 0.3287664 |
| Washington | 38930 | 11405 | 0.2929617 |
| Ohio | 34517 | 10773 | 0.3121071 |
| Nevada | 60159 | 10616 | 0.1764657 |
| Wisconsin | 33069 | 8702 | 0.2631468 |
| Oklahoma | 27463 | 8558 | 0.3116193 |
| Utah | 35384 | 7751 | 0.2190538 |
| Connecticut | 25429 | 7621 | 0.2996972 |
| Louisiana | 23161 | 7355 | 0.3175597 |
| Missouri | 24647 | 3601 | 0.1461030 |
| New Hampshire | 14887 | 2748 | 0.1845906 |
| New Mexico | 15892 | 799 | 0.0502769 |
top_states <- state_summary %>%
top_n(10, Total_Profit)
ggplot(top_states, aes(x = reorder(State, Total_Profit), y = Total_Profit)) +
geom_col(fill = "#F8766D") +
coord_flip() +
labs(
title = "Top 10 State Berdasarkan Total Profit",
x = "State",
y = "Total Profit"
) +
theme_minimal()
Didapat bahwa daerah yang berlokasi di wilayah tengah “Central” seperti
California menjadi daerah dengan profit terbesar dari penjualan. Terkait
penjualan untuk produk minuman kita perlu mencari tahu apakah wilayah
central masi menjadi daerah dengan penjualan terbanyak.
Untuk memahami pola penjualan, kita hitung rata-rata penjualan per kelompok wilayah dan ukuran pasar:
summary_table <- bev %>%
group_by(Market, `Market Size`) %>%
summarise(AvgSales = mean(Sales, na.rm = TRUE), .groups = "drop")
knitr::kable(summary_table, caption = "Rata-rata Penjualan Berdasarkan Wilayah dan Tipe Toko")| Market | Market Size | AvgSales |
|---|---|---|
| Central | Major Market | 219.2227 |
| Central | Small Market | 173.5586 |
| East | Major Market | 250.4710 |
| East | Small Market | 119.9881 |
| South | Major Market | 222.6786 |
| South | Small Market | 131.9762 |
| West | Major Market | 336.4306 |
| West | Small Market | 166.0720 |
Dari tabel di atas terlihat tren umum: Major Market (toko besar) cenderung memiliki penjualan lebih tinggi dibanding Small Market di semua wilayah.
ggplot(bev, aes(x = Market, y = Sales, fill = `Market Size`)) +
geom_boxplot() +
theme_minimal() +
labs(title = "Distribusi Penjualan berdasarkan Wilayah dan Tipe Toko") Perbedaan
antar wilayah juga tampak,dari plot yang tersusun West unggul lebih
tinggi. Hal ini mengindikasikan kemungkinan pengaruh signifikan dari
kedua faktor (wilayah dan tipe toko) terhadap penjualan.
## Df Sum Sq Mean Sq F value Pr(>F)
## Market 3 1193539 397846 20.09 6.29e-13 ***
## `Market Size` 1 9553061 9553061 482.47 < 2e-16 ***
## Market:`Market Size` 3 2306631 768877 38.83 < 2e-16 ***
## Residuals 4240 83953439 19800
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Hasil ringkasan ANOVA menunjukkan bahwa efek Market, efek Market Size, dan interaksi keduanya semuanya signifikan (nilai p < 0.001). Ada perbedaan rata-rata penjualan antar tipe toko (Major vs Small) yang signifikan.Terdapat interaksi signifikan antara Wilayah dan Tipe Toko, artinya efek wilayah terhadap penjualan tergantung pada tipe toko (atau sebaliknya).
Persamaan model regresinya secara kasar : \[ Sales = \beta_{0} + \beta_{1}I_{East} + \beta_{2}I_{South} + \beta_{3}I_{West} + \gamma I_{SmallMarket} + \delta I_{EastxSmall} +..+ \epsilon \] Koefisien regresi dan p-value konsisten dengan hasil ANOVA: misalnya Wilayah West signifikan lebih tinggi daripada Central, Small Market secara umum negatif (penjualan lebih rendah daripada Major Market), dan interaksi tertentu (misal East di Small Market) signifikan negatif.
##
## Call:
## lm(formula = Sales ~ Market * `Market Size`, data = bev)
##
## Residuals:
## Min 1Q Median 3Q Max
## -250.43 -86.49 -34.43 35.53 661.53
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 219.223 5.334 41.101 < 2e-16 ***
## MarketEast 31.248 8.020 3.896 9.92e-05 ***
## MarketSouth 3.456 12.096 0.286 0.7751
## MarketWest 117.208 9.859 11.888 < 2e-16 ***
## `Market Size`Small Market -45.664 7.681 -5.945 2.99e-09 ***
## MarketEast:`Market Size`Small Market -84.819 12.402 -6.839 9.10e-12 ***
## MarketSouth:`Market Size`Small Market -45.038 14.702 -3.063 0.0022 **
## MarketWest:`Market Size`Small Market -124.695 12.104 -10.302 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 140.7 on 4240 degrees of freedom
## Multiple R-squared: 0.1346, Adjusted R-squared: 0.1331
## F-statistic: 94.18 on 7 and 4240 DF, p-value: < 2.2e-16
Analisis menunjukkan: - Wilayah (Market) berpengaruh signifikan. Wilayah Barat (West) memiliki penjualan rata-rata tertinggi, diikuti oleh East, sementara Central dan South lebih rendah (efek West sig. p<0.001; East p<0.001, seperti terlihat di output koefisien). - Tipe Toko (Market Size) berpengaruh signifikan. Toko Major Market menghasilkan penjualan lebih tinggi secara konsisten dibandingkan Small Market - Interaksi antara wilayah dan tipe toko signifikan. Misalnya, selisih penjualan antara Major dan Small Market lebih besar di East dan West (koefisien interaksi East:Small dan West:Small sangat signifikan, p<0.001).
Untuk memastikan validitas asumsi model ANOVA, salah satu asumsi penting yang perlu diuji adalah normalitas residu. Uji Shapiro-Wilk digunakan untuk mengetahui apakah residual model berdistribusi normal. Visualisasi dengan QQ plot juga ditampilkan untuk mendukung interpretasi secara grafis.
##
## Shapiro-Wilk normality test
##
## data: residuals
## W = 0.84954, p-value < 2.2e-16
Karena nilai p-value < 0.05, maka terdapat indikasi bahwa residual tidak berdistribusi normal.
Penjualan minuman dipengaruhi secara signifikan oleh:
Hasil uji Shapiro-Wilk menunjukkan nilai p-value sebesar 0. Karena nilai p-value < 0.05, maka terdapat indikasi bahwa residual tidak berdistribusi normal. Namun, karena jumlah sampel yang cukup besar, metode ANOVA tetap dapat digunakan karena cukup robust terhadap pelanggaran asumsi normalitas.