Latar Belakang

Pengelolaan data yang baik merupakan fondasi utama dalam pengambilan keputusan bisnis yang efektif. Dalam era digital saat ini, perusahaan dituntut untuk mampu mengolah dan menginterpretasikan data operasional mereka secara sistematis agar dapat memahami performa bisnis secara menyeluruh. Laporan ini menyajikan analisis data penjualan dari sebuah perusahaan rantai kedai kopi (Coffee Chain) yang mencakup informasi transaksi dari berbagai wilayah pemasaran di Amerika Serikat selama periode tahun 2012 hingga 2013. Dataset Coffee Chain mencakup 4.248 transaksi dan memuat informasi geografis, kategori produk, serta perbandingan antara nilai yang dianggarkan dan realisasi aktualnya. Data semacam ini menjadi sangat relevan untuk dikaji menggunakan pendekatan statistik, karena tidak cukup hanya membaca angka secara langsung — diperlukan metode yang sistematis untuk menarik kesimpulan yang valid dan dapat dipertanggungjawabkan.

Import Data

library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
df <- read_excel("C:/Users/Asus/OneDrive/문서/1. Tugas SIM 2025B - Coffee Chain Datasets.xlsx")

Mengganti semua nama variabel yang memiliki spasi menjadi underscore

names(df) <- gsub(" ", "_", names(df))

Deskripsi Data

Berikut adalah tampilan lima baris pertama dari dataset Coffee Chain.

head(df, 5)
## # A tibble: 5 × 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 Irish C… 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 Mocha    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>

Dataset ini terdiri dari 20 variabel yang merepresentasikan berbagai aspek operasional dan keuangan dari setiap transaksi produk kopi. Berikut adalah penjelasan singkat masing-masing variabel:

  1. Area Code : Kode area geografis lokasi transaksi

  2. Date : Tanggal pencatatan transaksi

  3. Market : Wilayah pasar

  4. Market Size : Ukuran pasar

  5. Product : Nama produk

  6. Product Line : Lini produk

  7. Product Type : Tipe produk

  8. State : Nama negara bagian

  9. Type : Jenis racikan kopi

  10. Budget OCGS : Anggaran biaya pokok penjualan

  11. Budget Margin : Anggaran margin keuntungan

  12. Budget Profit : Anggaran profit yang ditargetkan

  13. Budget Sales : Target penjualan yang dianggarkan

  14. OCGS : Realisasi biaya pokok penjualan

  15. Inventory : Jumlah inventaris/persediaan produk

  16. Margin : Realisasi margin keuntungan aktual

  17. Marketing : Biaya pemasaran yang dikeluarkan

  18. Profit : Realisasi profit aktual

  19. Sales : Realisasi penjualan aktual

  20. Total Expenses : Total keseluruhan pengeluaran operasional

Eksplorasi Data

str(df)
## 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 ...

Berdasarkan hasil pemeriksaan tipe data, dataset Coffee Chain memiliki komposisi sebagai berikut. Terdapat 7 variabel kategorik, 11 variabel numerik, dan 1 variabel tanggal.

Statistik deskriptif digunakan untuk merangkum dan menggambarkan karakteristik dasar dari variabel-variabel numerik dalam dataset. Empat ukuran yang digunakan dalam analisis ini adalah mean (rata-rata), median (nilai tengah), standar deviasi, dan variansi. Rumus masing-masing ukuran tersebut adalah sebagai berikut:

Mean: \[\bar{x} = \frac{\sum_{i=1}^{n} x_i}{n}\] Median: \[\tilde{x} = \frac{x_{(\frac{n}{2})} + x_{(\frac{n}{2} + 1)}}{2}\] Standar Deviasi: \[s = \sqrt{\frac{\sum_{i=1}^{n} (x_i - \bar{x})^2}{n - 1}}\] Variansi: \[s^2 = \frac{\sum_{i=1}^{n} (x_i - \bar{x})^2}{n - 1}\]

numeric_cols <- df[, sapply(df, is.numeric)]

summary_stats <- data.frame(
  Mean = sapply(numeric_cols, base::mean, na.rm = TRUE),
  Median = sapply(numeric_cols, stats::median, na.rm = TRUE),
  Std_Dev = sapply(numeric_cols, stats::sd, na.rm = TRUE),
  Variance = sapply(numeric_cols, stats::var, na.rm = TRUE)
)
print(summary_stats)
##                     Mean Median   Std_Dev    Variance
## Area_Code      582.27801    573 221.14031  48903.0367
## Budget_COGS     74.83051     50  66.23815   4387.4919
## Budget_Margin  100.81921     70  92.60273   8575.2647
## Budget_Profit   60.91337     40  79.54612   6327.5856
## Budget_Sales   175.64972    130 148.89152  22168.6854
## COGS            84.43315     60  67.24977   4522.5314
## Inventory      749.38136    619 661.03190 436963.1670
## Margin         104.29331     76  94.34252   8900.5115
## Marketing       31.18503     22  27.02326    730.2568
## Profit          61.09769     40 101.70855  10344.6283
## Sales          192.98752    138 151.13313  22841.2221
## Total_Expenses  54.06356     46  32.35260   1046.6906

Uji Statistik

Menguji apakah terdapat perbedaan yang signifikan antara nilai yang dianggarkan (budget) dengan realisasi aktual dari empat indikator keuangan, yaitu COGS, margin, profit, dan sales. Sebelum menentukan jenis uji yang akan digunakan, terlebih dahulu dilakukan uji normalitas menggunakan uji Shapiro-Wilk untuk mengetahui apakah data berdistribusi normal.

vars_to_test <- c("Budget_COGS", "Budget_Margin", "Budget_Profit", "Budget_Sales", 
                  "COGS", "Margin", "Profit", "Sales")

normality_results <- lapply(df[vars_to_test], shapiro.test)
print(normality_results)
## $Budget_COGS
## 
##  Shapiro-Wilk normality test
## 
## data:  X[[i]]
## W = 0.79484, p-value < 2.2e-16
## 
## 
## $Budget_Margin
## 
##  Shapiro-Wilk normality test
## 
## data:  X[[i]]
## W = 0.80307, p-value < 2.2e-16
## 
## 
## $Budget_Profit
## 
##  Shapiro-Wilk normality test
## 
## data:  X[[i]]
## W = 0.80523, p-value < 2.2e-16
## 
## 
## $Budget_Sales
## 
##  Shapiro-Wilk normality test
## 
## data:  X[[i]]
## W = 0.76816, p-value < 2.2e-16
## 
## 
## $COGS
## 
##  Shapiro-Wilk normality test
## 
## data:  X[[i]]
## W = 0.80416, p-value < 2.2e-16
## 
## 
## $Margin
## 
##  Shapiro-Wilk normality test
## 
## data:  X[[i]]
## W = 0.82439, p-value < 2.2e-16
## 
## 
## $Profit
## 
##  Shapiro-Wilk normality test
## 
## data:  X[[i]]
## W = 0.79969, p-value < 2.2e-16
## 
## 
## $Sales
## 
##  Shapiro-Wilk normality test
## 
## data:  X[[i]]
## W = 0.78969, p-value < 2.2e-16

Karena p-value semua variabel < 0.05 maka data tidak berdistribusi normal, sehingga untuk melakukan pengujian menggunakan uji Wilcoxon Ranked Test

  1. Apakah terdapat perbedaan antara Budget OCGS dan OCGS

H0: Tidak ada perbedaan yang signifikan antara Budget OCGS dan OCGS

H1: Ada perbedaan yang signifikan antara Budget OCGS dan OCGS

wilcox.test(df$Budget_COGS, df$COGS, paired = TRUE)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  df$Budget_COGS and df$COGS
## V = 1537964, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0

Karena p-value < 0.05 maka H0 ditolak artinya ada perbedaan yang signifikan antara biaya pokok penjualan (COGS) yang dianggarkan dengan realisasinya.

  1. Apakah terdapat perbedaan antara Budget Margin dan Margin

H0: Tidak ada perbedaan yang signifikan antara Budget Margin dan Margin

H1: Ada perbedaan yang signifikan antara Budget Margin dan Margin

wilcox.test(df$Budget_Margin, df$Margin, paired = TRUE)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  df$Budget_Margin and df$Margin
## V = 3022258, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0

Karena p-value < 0.05 maka H0 ditolak artinya ada perbedaan yang signifikan antara target (Margin) laba kotor dengan realisasi di lapangan.

  1. Apakah terdapat perbedaan antara Budget Profit dan Profit

H0: Tidak ada perbedaan yang signifikan antara Budget Profit dan Profit

H1: Ada perbedaan yang signifikan antara Budget Profit dan Profit

wilcox.test(df$Budget_Profit, df$Profit, paired = TRUE)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  df$Budget_Profit and df$Profit
## V = 4923728, p-value = 2.192e-14
## alternative hypothesis: true location shift is not equal to 0

Karena p-value < 0.05 maka H0 ditolak artinya ada perbedaan yang signifikan antara target laba bersih (Profit) yang ditetapkan dengan hasil aktual yang diperoleh.

  1. Apakah terdapat perbedaan antara Budget Sales dan Sales

H0: Tidak ada perbedaan yang signifikan antara Budget Sales dan Sales

H1: Ada perbedaan yang signifikan antara Budget Sales dan Sales

wilcox.test(df$Budget_Sales, df$Sales, paired = TRUE)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  df$Budget_Sales and df$Sales
## V = 1918934, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0

Karena p-value < 0.05 maka H0 ditolak artinya ada perbedaan yang signifikan antara volume/nilai penjualan (Sales) yang ditargetkan dengan realisasi penjualan.

Secara keseluruhan, karena keempat indikator (COGS, Margin, Profit, dan Sales) menunjukkan perbedaan yang signifikan (p-value < 0.05), dapat disimpulkan bahwa perencanaan anggaran (budgeting) pada Coffee Chain ini belum akurat atau kondisi pasar sangat fluktuatif.

Pihak manajemen perlu melakukan peninjauan kembali terhadap metode peramalan (forecasting) yang digunakan, karena realisasi keuangan perusahaan secara konsisten menyimpang dari apa yang telah direncanakan di awal periode.

Analisis Tren dan Grafik

Dalam dunia bisnis, khususnya pada sektor penjualan, analisis tren memegang peranan yang tidak dapat diabaikan. Melalui analisis tren, pergerakan suatu variabel dari waktu ke waktu dapat diamati secara sistematis — apakah menunjukkan kecenderungan meningkat, menurun, atau bahkan tidak mengalami perubahan yang berarti. Pemahaman atas pergerakan ini menjadi bekal penting bagi perusahaan dalam menyusun perencanaan yang lebih matang serta mengambil keputusan yang lebih tepat sasaran. Lebih jauh lagi, dengan mempelajari pola tren yang telah terjadi, perusahaan dapat membangun proyeksi mengenai kondisi yang mungkin terjadi di masa mendatang, sehingga langkah antisipatif dapat disiapkan lebih awal. Oleh karena itu, visualisasi grafik bukan sekadar pelengkap dalam sebuah laporan analisis data, melainkan elemen utama yang wajib hadir untuk memastikan temuan analisis dapat dikomunikasikan secara efektif kepada seluruh pemangku kepentingan.

df$Date <- as.Date(df$Date)
monthly_data <- df %>%
  group_by(Month = format(Date, "%Y-%m")) %>%
  summarise(Total_Profit = sum(Profit, na.rm = TRUE), 
            Total_Sales = sum(Sales, na.rm = TRUE))
  1. Profit Bulanan
ggplot(monthly_data, aes(x = Month, y = Total_Profit, group = 1)) +
  geom_line(color = "blue", size = 1) +
  geom_point() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(title = "Profit Bulanan", y = "Total Profit")
## 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.

Grafik ini menunjukkan tren yang cenderung meningkat secara signifikan setelah pertengahan periode dan kemudian relatif stabil dengan fluktuasi kecil. Hal ini menandakan bahwa perusahaan mampu meningkatkan efisiensi atau margin keuntungan, sehingga meskipun penjualan mengalami fluktuasi, profit tetap menunjukkan kinerja yang positif.

  1. Sales Bulanan
ggplot(monthly_data, aes(x = Month, y = Total_Sales, group = 1)) +
  geom_line(color = "green", size = 1) +
  geom_point() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(title = "Sales Bulanan", y = "Total Sales")

Grafik ini memperlihatkan pola fluktuatif dengan kecenderungan meningkat pada periode tertentu, meskipun terdapat penurunan yang cukup signifikan di pertengahan periode. Pola ini mengindikasikan adanya faktor musiman atau kondisi eksternal yang mempengaruhi tingkat penjualan, seperti perubahan permintaan konsumen atau faktor ekonomi tertentu.

  1. Perbandingan Profit Berdasarkan Market
market_profit <- df %>% group_by(Market) %>% summarise(Total_Profit = sum(Profit))
ggplot(market_profit, aes(x = "", y = Total_Profit, fill = Market)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  theme_void() +
  labs(title = "Proporsi Profit berdasarkan Market")

Grafik ini menunjukkan adanya perbedaan performa antar wilayah, di mana market Central menghasilkan profit tertinggi, diikuti oleh West, East, dan terakhir South. Hal ini mengindikasikan bahwa wilayah Central memiliki potensi pasar yang lebih kuat atau strategi pemasaran yang lebih efektif, sedangkan wilayah South mungkin memerlukan evaluasi lebih lanjut untuk meningkatkan profitabilitas.

  1. Perbandingan Profit Berdasarkan Product Type
prod_type_profit <- df %>% group_by(Product_Type) %>% summarise(Total_Profit = sum(Profit))
ggplot(prod_type_profit, aes(x = "", y = Total_Profit, fill = Product_Type)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  theme_void() +
  labs(title = "Proporsi Profit berdasarkan Product Type")

Grafik ini memperlihatkan bahwa kategori Coffee menjadi penyumbang profit terbesar bagi perusahaan, diikuti oleh Espresso, Herbal Tea, dan Tea. Dominasi kategori Coffee ini menunjukkan bahwa tidak hanya dari sisi volume penjualan, tetapi juga dari sisi margin keuntungan, produk kopi memberikan kontribusi paling signifikan terhadap kinerja keuangan perusahaan.

  1. Perbandingan Sales Berdasarkan Product
prod_sales <- df %>% group_by(Product) %>% summarise(Total_Sales = sum(Sales))
ggplot(prod_sales, aes(x = reorder(Product, -Total_Sales), y = Total_Sales, fill = Product)) +
  geom_bar(stat = "identity") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(title = "Perbandingan Sales berdasarkan Product", x = "Product")

Grafik ini menunjukkan bahwa penjualan didominasi oleh produk kopi populer seperti Cappuccino, Latte, dan Espresso yang memiliki kontribusi tertinggi dibandingkan produk lainnya. Hal ini mengindikasikan bahwa preferensi konsumen cenderung pada minuman kopi klasik yang sudah umum dikenal. Sebaliknya, produk seperti Regular Espresso dan Amaretto memiliki penjualan yang relatif rendah, sehingga dapat diasumsikan kurang diminati atau memiliki pasar yang lebih terbatas.

Kesimpulan

Berdasarkan seluruh analisis yang telah dilakukan terhadap dataset Coffee Chain, dapat ditarik beberapa kesimpulan penting. Secara umum, terdapat perbedaan antara nilai yang dianggarkan dengan realisasi aktual pada beberapa indikator keuangan, khususnya pada variabel COGS, Margin, Profit dan Sales yang menunjukkan realisasi melebihi anggaran. Hal ini perlu menjadi perhatian manajemen dalam penyusunan anggaran periode berikutnya agar proyeksi lebih akurat dan realistis.

Dari sisi tren, penjualan dan profit menunjukkan fluktuasi yang wajar sepanjang tahun 2012–2013, dengan beberapa periode yang mencatat lonjakan maupun penurunan yang patut dievaluasi lebih lanjut. Wilayah pasar tertentu dan jenis produk tertentu terbukti memberikan kontribusi yang lebih dominan terhadap keseluruhan profit perusahaan, sehingga dapat menjadi prioritas dalam alokasi sumber daya dan strategi pemasaran ke depannya.