Dataset Coffe Chain merupakan data transaksi penjualan kopi yang tersimpan dalam database MySQL. Dataset tersebut terdiri dari beberapa tabel, yaitu, tabel facttabel, product, dan location.
Insight yang diambil dalam analisis ini adalah untuk mengetahui apakah terdapat perbedaan profit berdasarkan jenis produk.
Insight ini dipilih karena setiap jenis produk memiliki karakteristik yang berbeda, sehingga berpotensi menghasilkan profit yang berbeda pula.
library(DBI)
## Warning: package 'DBI' was built under R version 4.5.2
library(odbc)
## Warning: package 'odbc' was built under R version 4.5.2
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.2
##
## 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
cc = dbConnect(odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
UID = "root",
PWD = "admin123",
Port = 3306,
database = "coffee_chain")
fact <- dbGetQuery(cc, "SELECT * FROM facttable")
loc <- dbGetQuery(cc, "SELECT * FROM location")
prod <- dbGetQuery(cc, "SELECT * FROM product")
colnames(fact)
## [1] "Profit" "Margin" "Sales" "COGS"
## [5] "Total Expenses" "Marketing" "Inventory" "Budget Profit"
## [9] "Budget COGS" "Budget Margin" "Budget Sales" "Area Code"
## [13] "ProductId" "Date"
colnames(loc)
## [1] "Area Code" "State" "Market" "Market Size"
colnames(prod)
## [1] "Product Line" "Product Type" "Product" "ProductId" "Type"
str(fact)
## 'data.frame': 4248 obs. of 14 variables:
## $ Profit : int 94 68 101 30 54 53 99 0 33 17 ...
## $ Margin : int 130 107 139 56 80 108 171 87 80 72 ...
## $ Sales : int 219 190 234 100 134 180 341 150 140 130 ...
## $ COGS : int 89 83 95 44 54 72 170 63 60 58 ...
## $ Total Expenses: int 36 39 38 26 26 55 72 87 47 55 ...
## $ Marketing : int 24 27 26 14 15 23 47 57 19 22 ...
## $ Inventory : int 777 623 821 623 456 558 1091 435 336 338 ...
## $ Budget Profit : int 100 80 110 30 70 80 110 20 40 20 ...
## $ Budget COGS : int 90 80 100 30 60 80 140 50 50 40 ...
## $ Budget Margin : int 130 110 140 50 90 130 160 80 70 70 ...
## $ Budget Sales : int 220 190 240 80 150 210 300 130 120 110 ...
## $ Area Code : int 719 970 970 303 303 720 970 719 970 719 ...
## $ ProductId : int 1 2 3 13 5 6 8 9 10 11 ...
## $ Date : chr "2012-01-01 00:00:00" "2012-01-01 00:00:00" "2012-01-01 00:00:00" "2012-01-01 00:00:00" ...
str(loc)
## 'data.frame': 156 obs. of 4 variables:
## $ Area Code : int 203 206 209 210 212 213 214 216 217 224 ...
## $ State : chr "Connecticut" "Washington" "California" "Texas" ...
## $ Market : chr "East" "West" "West" "South" ...
## $ Market Size: chr "Small Market" "Small Market" "Major Market" "Major Market" ...
str(prod)
## 'data.frame': 13 obs. of 5 variables:
## $ Product Line: chr "Beans" "Beans" "Beans" "Beans" ...
## $ Product Type: chr "Coffee" "Coffee" "Coffee" "Espresso" ...
## $ Product : chr "Amaretto" "Colombian" "Decaf Irish Cream" "Caffe Latte" ...
## $ ProductId : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Type : chr "Regular" "Regular" "Decaf" "Regular" ...
summary(fact)
## Profit Margin Sales COGS
## Min. :-638.0 Min. :-302.00 Min. : 17 Min. : 0.00
## 1st Qu.: 17.0 1st Qu.: 52.75 1st Qu.:100 1st Qu.: 43.00
## Median : 40.0 Median : 76.00 Median :138 Median : 60.00
## Mean : 61.1 Mean : 104.29 Mean :193 Mean : 84.43
## 3rd Qu.: 92.0 3rd Qu.: 132.00 3rd Qu.:230 3rd Qu.:100.00
## Max. : 778.0 Max. : 613.00 Max. :912 Max. :364.00
## Total Expenses Marketing Inventory Budget Profit
## Min. : 10.00 Min. : 0.00 Min. :-3534.0 Min. :-320.00
## 1st Qu.: 33.00 1st Qu.: 13.00 1st Qu.: 432.0 1st Qu.: 20.00
## Median : 46.00 Median : 22.00 Median : 619.0 Median : 40.00
## Mean : 54.06 Mean : 31.19 Mean : 749.4 Mean : 60.91
## 3rd Qu.: 65.00 3rd Qu.: 39.00 3rd Qu.: 910.5 3rd Qu.: 80.00
## Max. :190.00 Max. :156.00 Max. : 8252.0 Max. : 560.00
## Budget COGS Budget Margin Budget Sales Area Code
## Min. : 0.00 Min. :-210.0 Min. : 0.0 Min. :203.0
## 1st Qu.: 30.00 1st Qu.: 50.0 1st Qu.: 80.0 1st Qu.:417.0
## Median : 50.00 Median : 70.0 Median : 130.0 Median :573.0
## Mean : 74.83 Mean : 100.8 Mean : 175.6 Mean :582.3
## 3rd Qu.: 90.00 3rd Qu.: 130.0 3rd Qu.: 210.0 3rd Qu.:772.0
## Max. :450.00 Max. : 690.0 Max. :1140.0 Max. :985.0
## ProductId Date
## Min. : 1.000 Length:4248
## 1st Qu.: 4.000 Class :character
## Median : 6.000 Mode :character
## Mean : 6.887
## 3rd Qu.:10.000
## Max. :13.000
summary(loc)
## Area Code State Market Market Size
## Min. :203.0 Length:156 Length:156 Length:156
## 1st Qu.:406.5 Class :character Class :character Class :character
## Median :611.0 Mode :character Mode :character Mode :character
## Mean :599.8
## 3rd Qu.:813.5
## Max. :985.0
summary(prod)
## Product Line Product Type Product ProductId
## Length:13 Length:13 Length:13 Min. : 1
## Class :character Class :character Class :character 1st Qu.: 4
## Mode :character Mode :character Mode :character Median : 7
## Mean : 7
## 3rd Qu.:10
## Max. :13
## Type
## Length:13
## Class :character
## Mode :character
##
##
##
data <- left_join(fact, prod, by = "ProductId")
Ratarata_profit <- aggregate(Profit ~ `Product Type`, data = data, mean)
Ratarata_profit
## Product Type Profit
## 1 Coffee 70.72254
## 2 Espresso 58.35034
## 3 Herbal Tea 59.89962
## 4 Tea 55.19375
Interpretasi : Hasil ini menunjukkan rata-rata profit untuk setiap jenis produk. Terlihat bahwa terdapat perbedaan nilai rata-rata antar produk, yang mengindikasikan adanya perbedaan performa dalam menghasilkan keuntungan.
ggplot(data, aes(x = `Product Type`, y = Profit)) +
geom_boxplot(fill = "lightblue") +
labs(title = "Distribusi Profit per Jenis Produk",
x = "Jenis Produk",
y = "Profit")
Interpretasi : Berdasarkan boxplot, terlihat bahwa distribusi profit pada masing-masing jenis produk memiliki pola yang cukup mirip. Median dari setiap jenis produk berada pada rentang yang hampir sama, yang menunjukkan bahwa secara umum tingkat profit antar produk tidak jauh berbeda.
Selain itu, terlihat adanya banyak outlier baik pada nilai profit tinggi maupun rendah di setiap jenis produk. Hal ini menunjukkan bahwa data profit memiliki variasi yang cukup besar dan tidak stabil.
Sebaran data yang cukup lebar dan adanya outlier juga mengindikasikan bahwa data tidak berdistribusi normal.
ggplot(data, aes(x = `Product Type`, y = Profit)) +
stat_summary(fun = mean, geom = "bar", fill = "skyblue") +
labs(title = "Rata-rata Profit per Jenis Produk",
x = "Jenis Produk",
y = "Rata-rata Profit")
Interpretasi : Berdasarkan grafik rata-rata profit per jenis produk, terlihat bahwa produk Coffee memiliki rata-rata profit paling tinggi dibandingkan jenis produk lainnya. Sementara itu, produk Tea memiliki rata-rata profit paling rendah. Produk Espresso dan Herbal Tea berada di tengah dengan nilai yang relatif tidak jauh berbeda.
Perbedaan ini menunjukkan bahwa secara deskriptif terdapat variasi rata-rata profit antar jenis produk. Namun, selisih antar produk tidak terlalu besar sehingga belum dapat disimpulkan adanya perbedaan yang signifikan tanpa uji statistik.
H₀: \(X \sim N(\mu, \sigma^2)\) (data profit berdistribusi normal) H₁: \(X \not\sim N(\mu, \sigma^2)\) (data profit tidak berdistribusi normal)
shapiro.test(data$Profit)
##
## Shapiro-Wilk normality test
##
## data: data$Profit
## W = 0.79969, p-value < 2.2e-16
Interpretasi : Berdasarkan hasil uji Shapiro-Wilk, diperoleh nilai p-value < 0.05, sehingga H₀ ditolak. Hal ini menunjukkan bahwa data profit tidak berdistribusi normal.
Dilakukan dengan Uji Kruskal-Wallis karena data tidak berdistribusi normal.
H₀:\(\tilde{x}_1 = \tilde{x}_2 = \dots = \tilde{x}_k\) (Tidak terdapat perbedaan profit antar jenis produk) H₁: \(\tilde{x}_i \neq \tilde{x}_j\) (Terdapat perbedaan profit antar jenis produk)
kruskal.test(Profit ~ `Product Type`, data = data)
##
## Kruskal-Wallis rank sum test
##
## data: Profit by Product Type
## Kruskal-Wallis chi-squared = 2.4137, df = 3, p-value = 0.4911
Interpretasi : Berdasarkan hasil uji Kruskal-Wallis, diperoleh nilai p-value sebesar 0.4911 yang lebih besar dari 0.05. Hal ini menunjukkan bahwa H₀ gagal ditolak. Dengan demikian, dapat disimpulkan bahwa tidak terdapat perbedaan profit yang signifikan antar jenis produk.
Berdasarkan hasil analisis yang telah dilakukan, baik melalui analisis deskriptif, visualisasi, maupun uji statistik menggunakan Kruskal-Wallis, diperoleh hasil bahwa tidak terdapat perbedaan profit yang signifikan berdasarkan jenis produk.
Meskipun secara deskriptif terlihat adanya perbedaan nilai rata-rata dan variasi distribusi profit antar jenis produk, hasil uji statistik menunjukkan bahwa perbedaan tersebut tidak signifikan (p-value > 0.05).
Dengan demikian, insight awal yang menyatakan bahwa setiap jenis produk berpotensi menghasilkan profit yang berbeda tidak terbukti secara statistik. Hal ini menunjukkan bahwa perbedaan karakteristik produk tidak memberikan pengaruh yang signifikan terhadap profit yang diperoleh.