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.
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))
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:
Area Code : Kode area geografis lokasi transaksi
Date : Tanggal pencatatan transaksi
Market : Wilayah pasar
Market Size : Ukuran pasar
Product : Nama produk
Product Line : Lini produk
Product Type : Tipe produk
State : Nama negara bagian
Type : Jenis racikan kopi
Budget OCGS : Anggaran biaya pokok penjualan
Budget Margin : Anggaran margin keuntungan
Budget Profit : Anggaran profit yang ditargetkan
Budget Sales : Target penjualan yang dianggarkan
OCGS : Realisasi biaya pokok penjualan
Inventory : Jumlah inventaris/persediaan produk
Margin : Realisasi margin keuntungan aktual
Marketing : Biaya pemasaran yang dikeluarkan
Profit : Realisasi profit aktual
Sales : Realisasi penjualan aktual
Total Expenses : Total keseluruhan pengeluaran operasional
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
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
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.
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.
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.
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.
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))
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.
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.
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.
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.
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.
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.