Data yang digunakan berasal dari database Coffee Chain yang terdiri dari tabel facttable, product, dan location. Tabel facttable memuat data kinerja bisnis seperti profit, sales, marketing, dan budget profit, sedangkan tabel lainnya berisi informasi pendukung terkait produk dan wilayah (market).
Variabel yang digunakan dalam analisis ini meliputi Profit, Marketing, Sales, Market, dan Budget Profit. Analisis dilakukan untuk menguji perbedaan rata-rata profit antar wilayah (ANOVA), melihat hubungan antara profit, marketing, dan sales (korelasi), serta mengevaluasi apakah profit telah mencapai target yang ditetapkan.
Melalui analisis ini, diharapkan dapat diperoleh gambaran mengenai perbedaan kinerja antar wilayah, hubungan antara aktivitas pemasaran dan penjualan terhadap profit, serta tingkat pencapaian target perusahaan.
library(DBI)
library(odbc)
con <- DBI::dbConnect(odbc::odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
Database = "coffeee",
UID = Sys.getenv("DB_USER"),
PWD = Sys.getenv("DB_PASS"),
Port = 3306)
dbListTables(con)
## [1] "facttable" "location" "product"
dbListFields(con, "facttable")
## [1] "Profit" "Margin" "Sales" "COGS"
## [5] "Total Expenses" "Marketing" "Inventory" "Budget Profit"
## [9] "Budget COGS" "Budget Margin" "Budget Sales" "Area Code"
## [13] "ProductId" "Date"
dbListFields(con, "product")
## [1] "Product Line" "Product Type" "Product" "ProductId" "Type"
dbListFields(con, "location")
## [1] "Area Code" "State" "Market" "Market Size"
data_full <- dbGetQuery(con, "
SELECT f.Profit, f.Marketing, f.Sales,
l.Market
FROM facttable f
JOIN product p ON f.ProductId = p.ProductId
JOIN location l ON f.`Area Code` = l.`Area Code`
")
str(data_full)
## 'data.frame': 4248 obs. of 4 variables:
## $ Profit : int 94 68 101 30 54 53 99 0 33 17 ...
## $ Marketing: int 24 27 26 14 15 23 47 57 19 22 ...
## $ Sales : int 219 190 234 100 134 180 341 150 140 130 ...
## $ Market : chr "Central" "Central" "Central" "Central" ...
summary(data_full)
## Profit Marketing Sales Market
## Min. :-638.0 Min. : 0.00 Min. : 17 Length:4248
## 1st Qu.: 17.0 1st Qu.: 13.00 1st Qu.:100 Class :character
## Median : 40.0 Median : 22.00 Median :138 Mode :character
## Mean : 61.1 Mean : 31.19 Mean :193
## 3rd Qu.: 92.0 3rd Qu.: 39.00 3rd Qu.:230
## Max. : 778.0 Max. :156.00 Max. :912
Interpretasi: Data menunjukkan adanya variasi yang cukup besar pada Profit, Marketing, dan Sales, serta terdapat nilai profit negatif yang mengindikasikan kerugian pada beberapa observasi. Hal ini menarik untuk dianalisis lebih lanjut, terutama terkait hubungan antara marketing, sales, dan profit pada berbagai market.
library(ggplot2)
library(dplyr)
ggplot(data_full, aes(x = Marketing, y = Profit)) +
geom_point() +
theme_minimal() +
ggtitle("Hubungan Marketing terhadap Profit")
Interpretasi:
Tidak terlihat hubungan positif yang kuat
Pada beberapa titik, semakin tinggi marketing, profit justru menurun
Sebaran data cukup acak dan banyak variasi
Kesimpulan: Biaya marketing tidak selalu efektif meningkatkan profit, bahkan berpotensi tidak efisien.
ggplot(data_full, aes(x = Sales, y = Profit)) +
geom_point() +
theme_minimal() +
ggtitle("Hubungan Sales terhadap Profit")
Interpretasi:
Terlihat pola hubungan positif yang jelas
Semakin tinggi sales, profit cenderung meningkat
Pola lebih konsisten dibanding marketing
Kesimpulan: Sales memiliki pengaruh positif yang kuat terhadap profit.
ggplot(data_full, aes(x = Marketing, y = Profit)) +
geom_point() +
facet_wrap(~Market) +
theme_minimal() +
labs(
title = "Hubungan Marketing terhadap Profit pada Setiap Market",
x = "Biaya Marketing",
y = "Profit"
)
Interpretasi:
Central & South
-Cenderung menunjukkan hubungan yang lebih stabil dan sedikit positif
-Peningkatan marketing masih diikuti kenaikan profit (meski tidak kuat)
East & West
-Hubungan tidak konsisten dan lebih menyebar
-Banyak titik dengan marketing tinggi tapi profit rendah bahkan negatif
Kesimpulan: Efektivitas marketing berbeda di tiap market. Market seperti East dan West menunjukkan marketing yang kurang efisien dibanding Central dan South.
ggplot(data_full, aes(x = Market, y = Profit)) +
geom_boxplot() +
theme_minimal() +
ggtitle("Distribusi Profit pada Setiap Market")
Interpretasi:
East
-Variasi profit paling besar (banyak outlier tinggi & rendah)
-Risiko tinggi (profit bisa sangat besar tapi juga bisa rugi besar)
West
-Memiliki variasi besar dan cukup banyak profit negatif
Central & South
-Distribusi lebih stabil
-Profit lebih konsisten meskipun tidak setinggi maksimum East
Kesimpulan:
Market East & West → high risk, high variability
Market Central & South → lebih stabil
cor(data_full[, c("Profit", "Marketing", "Sales")])
## Profit Marketing Sales
## Profit 1.0000000 0.2254650 0.7973309
## Marketing 0.2254650 1.0000000 0.7105149
## Sales 0.7973309 0.7105149 1.0000000
Interpretasi:
Artinya, peningkatan marketing cenderung diikuti kenaikan profit, tapi hubungannya tidak kuat.
Artinya, semakin tinggi sales, profit juga cenderung meningkat secara signifikan.
Artinya, peningkatan marketing berkaitan erat dengan peningkatan sales.
Kesimpulan:
Sales punya hubungan paling kuat dengan profit, sementara marketing lebih berpengaruh ke sales daripada langsung ke profit.
anova_model <- aov(Profit ~ Market, data = data_full)
summary(anova_model)
## Df Sum Sq Mean Sq F value Pr(>F)
## Market 3 288811 96270 9.361 3.64e-06 ***
## Residuals 4244 43644825 10284
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Interpretasi
H₀: μ₁ = μ₂ = μ₃ = μ₄ (rata-rata profit sama di semua wilayah/market)
H₁: Minimal ada satu μ yang berbeda (ada perbedaan rata-rata profit antar wilayah)
α = 0.05
Tolak H₀ jika p-value < 0.05 dan F hitung > F tabel
Hasil Uji: F hitung = 9.361, p-value = 3.64 × 10⁻⁶
Kesimpulan: Krena F hitung > F tabel dan p-value < 0.05 maka terdapat perbedaan rata-rata profit yang signifikan antar wilayah (market).
data_budget <- dbGetQuery(con, "
SELECT Profit, `Budget Profit`
FROM facttable
")
data_budget$Tercapai <- data_budget$Profit >= data_budget$`Budget Profit`
table(data_budget$Tercapai)
##
## FALSE TRUE
## 2507 1741
round(prop.table(table(data_budget$Tercapai)) * 100, 2)
##
## FALSE TRUE
## 59.02 40.98
Interpretasi:
Mayoritas target belum tercapai, karena sekitar 59% data berada di bawah target.
Hanya sekitar 41% yang berhasil memenuhi atau melampaui target.
Jadi secara keseluruhan, kinerja profit masih belum memenuhi target yang ditetapkan.