Pendahuluan

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.

Deskripsi Insight dan Alasan Pemilihan

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>
df_region <- data %>%
  select(Market, State, Sales, Profit)
head(df_region)
## # 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

Ringkasan Profit dan Sales Berdasarkan Market

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")
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")
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.

Rata rata Penjualan Produk

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")
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
  • Wilayah West menunjukkan rata-rata penjualan tertinggi di pasar Major Market (sekitar 336 unit) dan juga relatif tinggi di Small Market (~166 unit).
  • Wilayah East memiliki penjualan Major Market tertinggi kedua (~250 unit) namun Small Market terendah (~120 unit).
  • Wilayah Central dan South memiliki rata-rata penjualan Major Market di kisaran 219–223 dan Small Market 132–174.

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.

Analisis ANOVA Dua Arah

model_aov <- aov(Sales ~ Market * `Market Size`, data = bev)
summary(model_aov)
##                        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).

Analisis Regresi Linier

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.

model_lm <- lm(Sales ~ Market * `Market Size`, data = bev)
summary(model_lm)
## 
## 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).

Uji Normalitas Residu

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.

residuals <- resid(model_aov)
shapiro.test(residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals
## W = 0.84954, p-value < 2.2e-16
# Plot QQ untuk visualisasi normalitas
qqnorm(residuals)
qqline(residuals, col = "blue")

Karena nilai p-value < 0.05, maka terdapat indikasi bahwa residual tidak berdistribusi normal.

Interpretasi Hasil

Penjualan minuman dipengaruhi secara signifikan oleh:

  • Wilayah (Market): Wilayah West memiliki penjualan tertinggi.
  • Tipe Toko (Market Size): Major Market lebih tinggi daripada Small Market.
  • Interaksi antara wilayah dan tipe toko juga signifikan.
  • Market dengan profit tertinggi dapat menjadi prioritas untuk penguatan distribusi.

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.