LOAD LIBRARY

library(readxl)
library(dplyr)
library(ggplot2)

IMPORT DATA

data_kopi <- read_excel("Coffee Chain Datasets.xlsx")

# Rename kolom biar aman (tidak pakai spasi)
data_kopi <- data_kopi %>%
  rename(
    Market_Size = `Market Size`,
    Product_Type = `Product Type`
  )

# Lihat struktur data
str(data_kopi)
## 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 PREPROCESSING

# Ubah ke factor
data_kopi$Market_Size <- as.factor(data_kopi$Market_Size)
data_kopi$Product_Type <- as.factor(data_kopi$Product_Type)

# Cek missing value
colSums(is.na(data_kopi))
##      Area Code           Date         Market    Market_Size        Product 
##              0              0              0              0              0 
##   Product Line   Product_Type          State           Type    Budget COGS 
##              0              0              0              0              0 
##  Budget Margin  Budget Profit   Budget Sales           COGS      Inventory 
##              0              0              0              0              0 
##         Margin      Marketing         Profit          Sales Total Expenses 
##              0              0              0              0              0

EKSPLORASI DATA

# Rata-rata profit per Market Size
data_kopi %>%
  group_by(Market_Size) %>%
  summarise(mean_profit = mean(Profit, na.rm = TRUE))
## # A tibble: 2 × 2
##   Market_Size  mean_profit
##   <fct>              <dbl>
## 1 Major Market        91.4
## 2 Small Market        40.8
# Rata-rata profit per Product Type
data_kopi %>%
  group_by(Product_Type) %>%
  summarise(mean_profit = mean(Profit, na.rm = TRUE))
## # A tibble: 4 × 2
##   Product_Type mean_profit
##   <fct>              <dbl>
## 1 Coffee              70.7
## 2 Espresso            58.4
## 3 Herbal Tea          59.9
## 4 Tea                 55.2

ANALISIS DATA (ANOVA)

# ANOVA 1: Market Size
anova_market <- aov(Profit ~ Market_Size, data = data_kopi)
summary(anova_market)
##               Df   Sum Sq Mean Sq F value Pr(>F)    
## Market_Size    1  2611722 2611722   268.4 <2e-16 ***
## Residuals   4246 41321915    9732                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ANOVA 2: Product Type
anova_product <- aov(Profit ~ Product_Type, data = data_kopi)
summary(anova_product)
##                Df   Sum Sq Mean Sq F value  Pr(>F)   
## Product_Type    3   141680   47227   4.577 0.00333 **
## Residuals    4244 43791957   10319                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Tukey HSD
tukey_product <- TukeyHSD(anova_product)
tukey_product
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Profit ~ Product_Type, data = data_kopi)
## 
## $Product_Type
##                           diff       lwr        upr     p adj
## Espresso-Coffee     -12.372198 -23.44003 -1.3043662 0.0212815
## Herbal Tea-Coffee   -10.822917 -22.18438  0.5385423 0.0684855
## Tea-Coffee          -15.528788 -27.17082 -3.8867568 0.0034344
## Herbal Tea-Espresso   1.549281  -9.51855 12.6171126 0.9840623
## Tea-Espresso         -3.156590 -14.51225  8.1990707 0.8914175
## Tea-Herbal Tea       -4.705871 -16.34790  6.9361599 0.7265871
# ANOVA 3: Gabungan
anova_both <- aov(Profit ~ Market_Size + Product_Type, data = data_kopi)
summary(anova_both)
##                Df   Sum Sq Mean Sq F value   Pr(>F)    
## Market_Size     1  2611722 2611722 269.294  < 2e-16 ***
## Product_Type    3   171544   57181   5.896 0.000519 ***
## Residuals    4243 41150371    9698                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

VISUALISASI DATA

# Boxplot Market Size
ggplot(data_kopi, aes(x = Market_Size, y = Profit, fill = Market_Size)) +
  geom_boxplot(alpha = 0.7) +
  scale_fill_manual(values = c(
    "Major Market" = "#547792", 
    "Small Market" = "#7AAACE"
  )) +
  theme_minimal() +
  labs(
    title = "Perbandingan Profit Berdasarkan Market Size",
    x = "Market Size",
    y = "Profit"
  ) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    legend.position = "none"
  )

# Boxplot Product Type
ggplot(data_kopi, aes(x = Product_Type, y = Profit, fill = Product_Type)) +
  geom_boxplot(alpha = 0.7) +
  scale_fill_brewer(palette = "Set2") +
  theme_minimal() +
  labs(
    title = "Perbandingan Profit Berdasarkan Product Type",
    x = "Product Type",
    y = "Profit"
  ) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.text.x = element_text(angle = 45, hjust = 1),
    legend.position = "none"
  )

ANALISIS DAN VISUALISASI INTERAKSI

# ANOVA interaksi
anova_interaksi <- aov(Profit ~ Market_Size * Product_Type, data = data_kopi)
summary(anova_interaksi)
##                            Df   Sum Sq Mean Sq F value  Pr(>F)    
## Market_Size                 1  2611722 2611722 276.822 < 2e-16 ***
## Product_Type                3   171544   57181   6.061 0.00041 ***
## Market_Size:Product_Type    3  1147469  382490  40.541 < 2e-16 ***
## Residuals                4240 40002902    9435                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Plot interaksi
ggplot(data_kopi, aes(x = Market_Size, y = Profit, color = Product_Type, group = Product_Type)) +
  stat_summary(fun = mean, geom = "point", size = 3) +
  stat_summary(fun = mean, geom = "line") +
  theme_minimal()

DESKRIPSI INSIGHT

Insight yang diambil dalam analisis ini adalah untuk mengetahui apakah profit dipengaruhi oleh ukuran market dan jenis produk pada Coffee Chain Dataset. Profit merupakan indikator utama dalam menilai kinerja bisnis, sehingga penting untuk memahami faktor-faktor yang memengaruhinya. Dalam dataset ini, ukuran market dikategorikan menjadi major dan small, di mana market major umumnya memiliki jangkauan konsumen yang lebih luas dibandingkan market small, sehingga berpotensi menghasilkan profit yang lebih tinggi. Namun, market yang lebih besar juga dapat diikuti dengan tingkat persaingan yang lebih tinggi, sehingga pengaruhnya terhadap profit perlu dianalisis lebih lanjut.

Selain itu, jenis produk yang dianalisis terdiri dari Coffee, Espresso, Herbal Tea, dan Tea, yang masing-masing memiliki karakteristik berbeda dalam hal harga jual, biaya produksi, serta tingkat permintaan konsumen. Perbedaan tersebut memungkinkan adanya variasi profit antar jenis produk. Oleh karena itu, analisis ini bertujuan untuk membandingkan profit antara market major dan small, mengidentifikasi jenis produk yang memberikan kontribusi profit terbesar, serta melihat apakah terdapat pengaruh atau hubungan antara ukuran market dan jenis produk terhadap profit, sehingga dapat memberikan gambaran yang lebih jelas dalam mendukung pengambilan keputusan bisnis.

INTERPRETASI ANALISIS DATA

Eksplorasi Data

Hasil eksplorasi data menunjukkan bahwa terdapat perbedaan rata-rata profit berdasarkan Market Size dan Product Type. Pada Market Size, Major Market memiliki rata-rata profit yang lebih tinggi yaitu sebesar 91,4 dibandingkan Small Market sebesar 40,8. Hal ini menunjukkan bahwa pasar yang lebih besar cenderung menghasilkan keuntungan yang lebih tinggi. Sementara itu, berdasarkan Product Type, Coffee memiliki rata-rata profit tertinggi yaitu 70,7, diikuti oleh Herbal Tea (59,9), Espresso (58,4), dan Tea (55,2). Temuan ini mengindikasikan bahwa produk Coffee merupakan kontributor utama dalam menghasilkan profit dibandingkan jenis produk lainnya.

ANOVA Market Size

Hasil analisis ANOVA menunjukkan bahwa Market Size berpengaruh signifikan terhadap profit dengan nilai p-value kurang dari 2e-16. Hal ini berarti terdapat perbedaan rata-rata profit yang sangat nyata antara Major Market dan Small Market. Nilai F yang tinggi menunjukkan bahwa variasi profit antar kelompok Market Size jauh lebih besar dibandingkan variasi dalam kelompok. Dengan demikian, dapat disimpulkan bahwa ukuran pasar merupakan faktor penting yang memengaruhi tingkat profit perusahaan.

ANOVA Product Type

Hasil ANOVA untuk Product Type menunjukkan bahwa jenis produk memiliki pengaruh signifikan terhadap profit dengan nilai p sebesar 0,00333. Hal ini berarti terdapat perbedaan rata-rata profit yang nyata di antara kategori Coffee, Espresso, Herbal Tea, dan Tea. Dengan demikian, jenis produk menjadi salah satu faktor yang perlu diperhatikan dalam menentukan tingkat keuntungan.

Uji Lanjut Tukey HSD

Hasil uji lanjut Tukey HSD menunjukkan bahwa tidak semua pasangan Product Type memiliki perbedaan yang signifikan. Espresso memiliki rata-rata profit yang secara signifikan lebih rendah dibandingkan Coffee, begitu juga dengan Tea yang juga lebih rendah secara signifikan dibandingkan Coffee. Sementara itu, Herbal Tea tidak menunjukkan perbedaan yang signifikan dibandingkan Coffee. Perbandingan antar produk selain Coffee, seperti Espresso dengan Herbal Tea, Espresso dengan Tea, serta Tea dengan Herbal Tea, tidak menunjukkan perbedaan yang signifikan. Hal ini menunjukkan bahwa Coffee merupakan produk yang paling unggul dalam menghasilkan profit dibandingkan beberapa jenis produk lainnya.

ANOVA Gabungan (Market Size + Product Type)

Pada analisis gabungan tanpa interaksi, hasil menunjukkan bahwa Market Size dan Product Type sama-sama berpengaruh signifikan terhadap profit. Market Size memiliki pengaruh yang sangat kuat dengan p-value kurang dari 2e-16, sedangkan Product Type juga signifikan dengan p-value sebesar 0,000519. Hal ini menunjukkan bahwa kedua variabel tersebut secara independen berkontribusi dalam menjelaskan variasi profit.

Analisis Interaksi (Market Size × Product Type)

Hasil ANOVA interaksi menunjukkan bahwa terdapat interaksi yang sangat signifikan antara Market Size dan Product Type dengan nilai p-value kurang dari 2e-16. Hal ini berarti pengaruh Product Type terhadap profit berbeda tergantung pada Market Size. Dengan kata lain, efek suatu jenis produk tidak sama pada setiap ukuran pasar, sehingga kedua variabel tersebut saling memengaruhi dalam menentukan profit.

INTERPRETASI VISUALISASI DATA

Berdasarkan boxplot Profit berdasarkan Market Size, terlihat bahwa distribusi profit pada Major Market secara umum lebih tinggi dibandingkan Small Market. Hal ini ditunjukkan oleh posisi median yang lebih tinggi pada Major Market. Selain itu, rentang data pada Major Market juga lebih lebar, yang menandakan variasi profit yang lebih besar. Terlihat pula adanya sejumlah outlier baik pada nilai profit yang sangat tinggi maupun sangat rendah, namun secara keseluruhan nilai profit di Major Market cenderung lebih unggul dibandingkan Small Market.

Pada boxplot berdasarkan Product Type, terlihat bahwa distribusi profit antar jenis produk relatif mirip, meskipun terdapat sedikit perbedaan. Produk Coffee menunjukkan median profit yang cenderung lebih tinggi dibandingkan produk lainnya, sementara Tea dan Espresso memiliki median yang sedikit lebih rendah. Herbal Tea berada di antara keduanya. Selain itu, semua jenis produk menunjukkan adanya outlier, baik pada nilai profit yang tinggi maupun rendah, yang mengindikasikan adanya variasi data dalam masing-masing kategori produk.

Selanjutnya, berdasarkan plot interaksi antara Market Size dan Product Type, terlihat bahwa seluruh jenis produk mengalami penurunan profit ketika berpindah dari Major Market ke Small Market. Namun, tingkat penurunan tersebut berbeda-beda untuk setiap jenis produk. Produk Coffee dan Espresso menunjukkan penurunan yang cukup tajam, sedangkan Herbal Tea mengalami penurunan yang relatif lebih kecil. Perbedaan kemiringan garis pada grafik ini menunjukkan adanya indikasi interaksi antara Market Size dan Product Type, di mana pengaruh jenis produk terhadap profit bergantung pada ukuran pasar.

Secara keseluruhan, visualisasi ini memperkuat hasil analisis sebelumnya bahwa Market Size memiliki pengaruh yang kuat terhadap profit, serta terdapat variasi profit antar Product Type dengan pola yang berbeda pada masing-masing ukuran pasar.