Data yang digunakan merupakan data Coffee Chain yang berisi tentang penjualan produk kopi dan teh dari sebuah rantai toko kopi. Dari data tersebut kita menggunakan data ‘Product’ dan ‘Sales’ untuk melihat persebaran penjualan yang ada pada rantai toko tersebut.
Analisis dilakukan menggunakan metode analisis deskriptif untuk memberikan gambaran umum dan ringkasan statistik dari penjualan tersebut. Hal itu akan membantu mengetahui rata-rata dan nilai tengah penjualan, dan menyajikan data dalam bentuk yang lebih mudah dipahami melalui grafik.
Memuat packages yang dibutuhkan
library(readxl)
library(ggplot2)
library(rmarkdown)
library(knitr)
library(tinytex)
Import dataset ke dalam Rstudio
#Import data Coffee Chain
CC <- read_excel("C:/Users/Hp/Documents/3. CM1 - Coffee Chain Datasets.xlsx")
CC
Membuat dataframe untuk data yang ingin digunakan
#Membuat data_frame
DataCC <- CC[, c("Product", "Product Line", "Product Type", "Sales")]
DataCC
## # A tibble: 4,248 × 4
## Product `Product Line` `Product Type` Sales
## <chr> <chr> <chr> <dbl>
## 1 Amaretto Beans Coffee 219
## 2 Colombian Beans Coffee 190
## 3 Decaf Irish Cream Beans Coffee 234
## 4 Green Tea Leaves Tea 100
## 5 Caffe Mocha Beans Espresso 134
## 6 Decaf Espresso Beans Espresso 180
## 7 Chamomile Leaves Herbal Tea 341
## 8 Lemon Leaves Herbal Tea 150
## 9 Mint Leaves Herbal Tea 140
## 10 Darjeeling Leaves Tea 130
## # ℹ 4,238 more rows
Ukuran pemusatan data digunakan untuk memberikan gambaran umum tentang pusat distribusi data. Ukuran Pemusatan Data meliputi 3 ukuran utama yaitu, Mean, Median, dan Modus.
Rata-rata (Mean) adalah ukuran pemusatan data yang merujuk pada penjumlahan semua data dan kemudian dibagi dengan jumlah data yang ada atau \(n\). Hal ini memberikan gambaran mengenai titik tengah atau pusat dari data. Untuk menghitung rata-rata kita dapat menggunakan rumus sebagai berikut:
\[\bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i\] Untuk menghitung rata-rata dalam R, kita dapat menggunakan function mean seperti berikut:
## Rata - rata dari sales setiap product
productsales_avg <- aggregate(Sales ~ Product, data = DataCC, FUN = mean)
productsales_avg
## Product Sales
## 1 Amaretto 136.8177
## 2 Caffe Latte 166.1991
## 3 Caffe Mocha 176.8833
## 4 Chamomile 196.8177
## 5 Colombian 267.3146
## 6 Darjeeling 190.4974
## 7 Decaf Espresso 191.5735
## 8 Decaf Irish Cream 162.1042
## 9 Earl Grey 231.8472
## 10 Green Tea 114.0625
## 11 Lemon 199.8458
## 12 Mint 185.9896
## 13 Regular Espresso 333.7639
Dari tabel yang dihasilkan diatas, kita dapat menyimpulkan bahwa produk Reguler Espresso mempunyai rata-rata penjualan tertinggi sebanyak 333.76. Sementara produk green tea mempunyai rata-rata penjualan terendah sebanyak 114.06.
Median adalah nilai tengah dari data yang sudah diurutkan dari kecil hingga terbesar.
Data Ganjil
\[\frac{n+1}{2}\]Data Genap
\[\frac{n}{2}\]dan
\[\frac{n}{2} + 1\].
Untuk mencari median menggunakan R kita dapat menggunakan function median seperti berikut:
## Median dari sales setiap product
productsales_med <- aggregate(Sales ~ Product, data = DataCC, FUN = median)
productsales_med
## Product Sales
## 1 Amaretto 129.0
## 2 Caffe Latte 119.0
## 3 Caffe Mocha 133.0
## 4 Chamomile 135.0
## 5 Colombian 170.0
## 6 Darjeeling 124.0
## 7 Decaf Espresso 131.0
## 8 Decaf Irish Cream 148.0
## 9 Earl Grey 189.0
## 10 Green Tea 91.0
## 11 Lemon 133.0
## 12 Mint 170.5
## 13 Regular Espresso 325.0
Dari tabel yang dihasilkan, kita dapat menyimpulkan bahwa Reguler Espresso mempunyai nilai tengah tertinggi yaitu sebanyak 325 penjualan. Hal ini menunjukkan bahwa setengah dari penjualan reguler espresso berada diatas angka 325.Sementara green tea mempunyai nilai tengah terendah yaitu sebanyak 91 penjualan. Dapat diartikan bahwa reguler espresso adalah produk yang sangat laris dan cocok untuk dilanjutkan perjualan, namun produk green tea tidak terlalu disukai oleh pengunjung dan sebaiknya ditinjau kembali.
Modus menunjukkan nilai yang paling sering muncul atau memiliki frekuensi tertinggi dalam suatu dataset. Untuk mencari modus dalam R, kita harus membuat suatu function yang dapat digunakan sebagai berikut:
## Modus dari sales setiap product
modus <- function(x) {
uniqx <- unique(x)
uniqx[which.max(tabulate(match(x, uniqx)))]
}
productsales_mode <- aggregate(Sales ~ Product, data = DataCC, FUN = modus)
productsales_mode
## Product Sales
## 1 Amaretto 133
## 2 Caffe Latte 43
## 3 Caffe Mocha 104
## 4 Chamomile 110
## 5 Colombian 114
## 6 Darjeeling 80
## 7 Decaf Espresso 43
## 8 Decaf Irish Cream 190
## 9 Earl Grey 150
## 10 Green Tea 43
## 11 Lemon 190
## 12 Mint 190
## 13 Regular Espresso 65
Dari tabel yang dihasilkan, kita dapat menyimpulkan bahwa produk Decaf Irish Cream, Lemon, dan Mint mempunyai nilai modus yang tinggi yaitu sebanyak 190. Artinya penjualan tertinggi paling sering dicapai oleh 3 produk tersebut. Sementara produk caffe latte, decaf espresso, dan green tea mempunyai nilai modus terendah sebanyak 43. Artinya 3 produk tersebut sering kali mendapatkan penjualan terendah selama 2 tahun tersebut.
Ukuran Penyebaran Data menunjukkan seberapa tersebar atau bervariasinya data terhadap ukuran pemusatan (khususnya mean). Semakin besar penyebaran, semakin bervarias data tersebut. Ukuran Penyebaran Data meliputi 4 ukuran yaitu, Range, Variansi, Standar deviasi, dan Simpangan kuartil.
Range adalah ukuran penyebaran data yang menunjukkan seberapa lebar suatu sebaran data itu berada. Nilai range didapatkan dengan mencari selisih dari nilai data tertinggi (maksimum) dengan nilai data terendah (minimum). Untuk mencarinya kita dapat menggunakan rumus sebagai berikut:
\[Range = Maks - Min\]
Dalam R tidak terdapat function yang dapat digunakan, oleh karena itu kita dapat membuat suatu function range untuk mencari nilai maksimum dan minimum kemudian mencari selisihnya.
productsales_range <- aggregate(Sales ~ Product, data = DataCC,
FUN = function(x) max(x, na.rm = TRUE) - min(x, na.rm = TRUE))
productsales_range
## Product Sales
## 1 Amaretto 283
## 2 Caffe Latte 491
## 3 Caffe Mocha 648
## 4 Chamomile 648
## 5 Colombian 851
## 6 Darjeeling 648
## 7 Decaf Espresso 646
## 8 Decaf Irish Cream 353
## 9 Earl Grey 671
## 10 Green Tea 324
## 11 Lemon 741
## 12 Mint 286
## 13 Regular Espresso 770
Dari tabel yang dihasilkan kita dapat menyimpulkan bahwa produk Colombian mempunyai nilai range tertinggi sebanyak 851, artinya produk ini mempunyai penjualan yang cukup fluktuatif dengan adanya penjualan yang rendah kemudian diikuti dengan penjualan yang tinggi. Sementara itu produk amaretto mempunyai nilai range terendah sebanyak 283, artinya produk ini mempunyai penjualan yang lebih stabil dibanding produk produk yang lain.
Varians adalah ukuran penyebaran data yang menunjukkan penyebaran data yang menjauh dari rata rata. Ukuran ini membantu dalam menggambarkan keragaman dari dataset yang digunakan. Lebih besar nilai variansnya maka semakin besar juga penyebaran datanya, begitu juga sebaliknya.
Nilai varians dari sebuah sampel didapatkan dengan menggunakan rumus:
\[s^2 = \sum_{i=1}^{n} \frac{(x_i-\mu)^2}{n-1}\]
Untuk mencari nilai varians dalam R kita dapat menggunakan function var().
## Varians dari sales setiap product
productsales_var <- aggregate(Sales ~ Product, data = DataCC, FUN = function(x) var(x))
productsales_var
## Product Sales
## 1 Amaretto 3713.448
## 2 Caffe Latte 18154.011
## 3 Caffe Mocha 16816.500
## 4 Chamomile 20341.387
## 5 Colombian 47878.584
## 6 Darjeeling 24323.692
## 7 Decaf Espresso 23075.705
## 8 Decaf Irish Cream 6184.506
## 9 Earl Grey 25503.057
## 10 Green Tea 5065.850
## 11 Lemon 24275.897
## 12 Mint 4562.660
## 13 Regular Espresso 51624.774
Dari tabel yang dihasilkan, kita dapat menyimpulkan bahwa produk Reguler Espresso mempunyai nilai varians tertinggi sebanyak 51624.77, artinya produk ini mempunyai penyebaran yang fluktuatif dan tidak konsisten. Sementara itu, produk amaretto mempunyai nilai varians paling rendah sebanyak 3713.44, artinya produk ini mempunyai penyebaran penjualan yang lebih konsisten dibanding produk lainnya.
Standar Deviasi atau simpangan baku adalah akar kuadrat dari varians. Ukuran ini lebih mudah digunakan dibandingkan varians karena berada pada skala yang sama dengan dataset.
Untuk mencari nilai simpangan baku dalam R, kita dapat menggunakan function sd().
## simpangan baku (standar deviasi) dari sales setiap product
productsales_sd <- aggregate(Sales ~ Product, data = DataCC, FUN = function(x) sd(x))
productsales_sd
## Product Sales
## 1 Amaretto 60.93807
## 2 Caffe Latte 134.73682
## 3 Caffe Mocha 129.67845
## 4 Chamomile 142.62323
## 5 Colombian 218.81175
## 6 Darjeeling 155.96055
## 7 Decaf Espresso 151.90689
## 8 Decaf Irish Cream 78.64163
## 9 Earl Grey 159.69676
## 10 Green Tea 71.17478
## 11 Lemon 155.80724
## 12 Mint 67.54746
## 13 Regular Espresso 227.21086
Dari tabel yang dihasilkan, kita dapat menyimpulkan bahwa produk Reguler Espresso mempunyai nilai simpangan baku tertinggi sebanyak 227.21, artinya produk ini mempunyai penyebaran yang fluktuatif dan tidak konsisten. Sementara itu, produk amaretto mempunyai nilai simpangan baku paling rendah sebanyak 60.93, artinya produk ini mempunyai penyebaran penjualan yang lebih konsisten dibanding produk lainnya.
Simpangan Kuartil adalah penyebaran data yang menunjukan persebaran data pada 50% tengah dari kumpulan data. Ukuran ini akan menggambarkan penyebaran data di sekitar median.
Nilai simpangan kuartil didapatkan dari rumus:
\[IQR = Q_3 - Q_1\]
Untuk mendapatkan simpangan kuartil dalam R, kita dapat menggunakan function quantile() untuk mencari nilai \(Q_3\) dan \(Q_1\) kemudian membuat suatu function untuk mencari selisihnya.
simpqr <- function(x) {
return((quantile(x, 0.75) - quantile(x,0.25)) / 2)
}
productsales_simpqr <- aggregate(Sales ~ Product, data = DataCC, FUN = simpqr)
productsales_simpqr
## Product Sales
## 1 Amaretto 19.500
## 2 Caffe Latte 55.500
## 3 Caffe Mocha 61.125
## 4 Chamomile 91.500
## 5 Colombian 116.125
## 6 Darjeeling 73.250
## 7 Decaf Espresso 58.250
## 8 Decaf Irish Cream 55.500
## 9 Earl Grey 79.625
## 10 Green Tea 49.750
## 11 Lemon 55.000
## 12 Mint 37.750
## 13 Regular Espresso 233.125
Dari tabel yang dihasilkan, kita dapat menyimpulkan bahwa produk Reguler Espresso mempunyai nilai simpangan kuartil, artinya produk ini mempunyai penjualan yang fluktuatif dan kemungkinan mengalami lonjakan penjualan pada waktu tertentu. Sementara produk amaretto mempunyai simpangan kuartil yang rendah, artinya produk ini mempunyai penjualan yang cenderung konsisten dan tidak fluktuatif.
Visualisasi Data adalah reprentasi grafis dari informasi atau data untuk mempermudah pemahaman pola, tren dan hubungan antar data. Visualisasi yang digunakan pada analisis ini adalah histogram dan boxplot.
Histogram adalah grafik batang yang menunjukkan distribusi frekuensi dari data numerik. Hal ini membantu untuk melihat bagaimana data tersebar dan apakah terdapat pola tertentu dalam data.
Histogram Average Sales per Product
## Histogram
ggplot(productsales_avg, aes(x = Product, y = Sales, fill = Product )) +
geom_bar(stat = "identity") + geom_text(aes(label = round(Sales,2)), vjust = -0.5,
color = "black") +
labs(x = "Product", y = "Average Sales") +
ggtitle("Average Sales Per Product") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_discrete(name = "Product")
Dari grafik yang sudah dibuat kita dapat menyimpulkan bahwa:
• Reguler Espresso : Rata-rata penjualan tertinggi yaitu sekitar 333.76, artinya produk ini paling populer dan sering dibeli oleh pelanggan
• Green Tea : Rata-rata penjualan terendah yaitu sekitar 114.06, artinya produk ini kurang populer dibandingkan produk lain.
• Colombian dan Earl Grey : Rata-rata penjualan yang tergolong tinggi, artinya mempunyai pasar yang cukup laris namun terkalahkan oleh reguler espresso
• Produk lainnya : Rata-rata yang cukup stabil berada di tengah, artinya mempunyai pasar tertentu dan masih tergolong konsisten pembeliannya.
Boxplot adalah grafik yang menampilkan ringkasan lima angka penting dari data yaitu, nilai minimum, Q1, median, Q3, nilai maksimum, dan outlier (jika ada). Hal ini akan membantu menggambarkan penyebaran data dan variabilitas dari dataset, menemukan outlier dan membandingkan distribusi antar produknya.
Boxplot Sales For Each Product
## Boxplot
ggplot(DataCC, aes(x = Product, y = Sales, color = Product)) +
geom_boxplot() +
labs(x = "Product", y = "Sales", color = "Product") +
ggtitle("Sales For Each Product")
Dari grafik yang sudah dibuat kita dapat menyimpulkan bahwa:
• Produk seperti Reguler Espresso, Colombian, dan Chamomile memiliki sebaran penjualan yang cukup besar. Hal ini terlihat dari panjangnya box dan whisker, serta banyaknya outlier.
• Produk seperti Amaretto dan Green Tea memiliki sebaran yang lebih sempit, hal ini menunjukkan bahwa penjualan mereka lebih konsisten dibanding produk lain.
• Reguler Espresso tidak hanya memiliki nilai maksimum yang tinggi, tetapi juga median penjualan yang lebih tinggi dibanding sebagian besar produk lain. Hal ini menunjukkan reguler espresso mempunyai penjualan yang lebih besar secara konsisten dibanding produk lain.
• Amaretto dan Green Tea memiliki median penjualan yang lebih rendah dibanding produk yang lainnnya. Hal ini menunjukkan bahwa kedua produk tersebut mempunyai penjualan yang relatif lebih rendah dari produk yang lain.
• Hampir semua produk memiliki outlier, terutama pada produk seperti Reguler Espresso, Colombian, Lemon, dan Earl Grey. Hal ini menunjukkan bahwa produk tersebut mempunyai penjualan yang lebih fluktuatif dibanding produk lain.
Terdapat beberapa produk yang mempunyai rata-rata penjualan yang tinggi namun penjualannya fluktuatif, seperti Reguler Espresso dan Colombian. Kedua produk tersebut mempunyai pasar yang ramai sehingga terdapat banyak pembeli, namun hal tersebut mungkin didukung dengan promosi atau event tertentu yang mendukung. Sementara itu produk Amaretto dan Green Tea cenderung mempunyai penjualan yang lebih rendah dan relatif stabil. Hal tersebut dapat disebabkan oleh promosi yang kurang, ataupun kurang peminat pasar. Oleh karena itu, dibutuhkan evaluasi lebih untuk produk tersebut agar dapat meningkatkan penjualannya.