Deskripsi Insight
Analisis ini bertujuan untuk mengetahui apakah profit dipengaruhi oleh jenis produk dan wilayah penjualan pada Coffee Chain Dataset. Insight ini penting karena setiap jenis produk memiliki karakteristik penjualan yang berbeda, begitu pula dengan wilayah yang dapat memengaruhi daya beli dan preferensi konsumen.
Dengan mengetahui hubungan ini, perusahaan dapat menentukan strategi penjualan yang lebih optimal, seperti fokus pada produk tertentu di wilayah dengan profit tertinggi.
install.packages("readxl", repos = "https://cloud.r-project.org")
## Installing package into 'C:/Users/LENOVO/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'readxl' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'readxl'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\LENOVO\AppData\Local\R\win-library\4.5\00LOCK\readxl\libs\x64\readxl.dll
## to C:\Users\LENOVO\AppData\Local\R\win-library\4.5\readxl\libs\x64\readxl.dll:
## Permission denied
## Warning: restored 'readxl'
##
## The downloaded binary packages are in
## C:\Users\LENOVO\AppData\Local\Temp\Rtmp2BBhfu\downloaded_packages
library(readxl)
## Warning: package 'readxl' was built under R version 4.5.3
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
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
data <- read_excel("~/1. Tugas SIM 2025B - Coffee Chain Datasets.xlsx")
head(data)
## # A tibble: 6 × 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 Ir… 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 Mo… Beans
## 6 720 2012-01-01 00:00:00 Central Major Market Decaf Es… 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>
str(data)
## 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 ...
summary(data)
## Area Code Date Market
## Min. :203.0 Min. :2012-01-01 00:00:00 Length:4248
## 1st Qu.:417.0 1st Qu.:2012-06-23 12:00:00 Class :character
## Median :573.0 Median :2012-12-16 12:00:00 Mode :character
## Mean :582.3 Mean :2012-12-15 22:00:00
## 3rd Qu.:772.0 3rd Qu.:2013-06-08 12:00:00
## Max. :985.0 Max. :2013-12-01 00:00:00
## Market Size Product Product Line Product Type
## Length:4248 Length:4248 Length:4248 Length:4248
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## State Type Budget COGS Budget Margin
## Length:4248 Length:4248 Min. : 0.00 Min. :-210.0
## Class :character Class :character 1st Qu.: 30.00 1st Qu.: 50.0
## Mode :character Mode :character Median : 50.00 Median : 70.0
## Mean : 74.83 Mean : 100.8
## 3rd Qu.: 90.00 3rd Qu.: 130.0
## Max. :450.00 Max. : 690.0
## Budget Profit Budget Sales COGS Inventory
## Min. :-320.00 Min. : 0.0 Min. : 0.00 Min. :-3534.0
## 1st Qu.: 20.00 1st Qu.: 80.0 1st Qu.: 43.00 1st Qu.: 432.0
## Median : 40.00 Median : 130.0 Median : 60.00 Median : 619.0
## Mean : 60.91 Mean : 175.6 Mean : 84.43 Mean : 749.4
## 3rd Qu.: 80.00 3rd Qu.: 210.0 3rd Qu.:100.00 3rd Qu.: 910.5
## Max. : 560.00 Max. :1140.0 Max. :364.00 Max. : 8252.0
## Margin Marketing Profit Sales
## Min. :-302.00 Min. : 0.00 Min. :-638.0 Min. : 17
## 1st Qu.: 52.75 1st Qu.: 13.00 1st Qu.: 17.0 1st Qu.:100
## Median : 76.00 Median : 22.00 Median : 40.0 Median :138
## Mean : 104.29 Mean : 31.19 Mean : 61.1 Mean :193
## 3rd Qu.: 132.00 3rd Qu.: 39.00 3rd Qu.: 92.0 3rd Qu.:230
## Max. : 613.00 Max. :156.00 Max. : 778.0 Max. :912
## Total Expenses
## Min. : 10.00
## 1st Qu.: 33.00
## Median : 46.00
## Mean : 54.06
## 3rd Qu.: 65.00
## Max. :190.00
library(dplyr)
#Cek nama kolom
colnames(data)
## [1] "Area Code" "Date" "Market" "Market Size"
## [5] "Product" "Product Line" "Product Type" "State"
## [9] "Type" "Budget COGS" "Budget Margin" "Budget Profit"
## [13] "Budget Sales" "COGS" "Inventory" "Margin"
## [17] "Marketing" "Profit" "Sales" "Total Expenses"
#ambil data
data_clean <- data %>%
select(`Product Type`, Market, Profit) %>%
filter(!is.na(Profit))
library(dplyr)
avg_product <- data_clean %>%
group_by(`Product Type`) %>%
summarise(avg_profit = mean(Profit))
avg_product
## # A tibble: 4 × 2
## `Product Type` avg_profit
## <chr> <dbl>
## 1 Coffee 70.7
## 2 Espresso 58.4
## 3 Herbal Tea 59.9
## 4 Tea 55.2
#Visualisasi Data
#Rata-rata Profit Produk
library(dplyr)
library(ggplot2)
# Hitung rata-rata profit
avg_product <- data_clean %>%
group_by(`Product Type`) %>%
summarise(avg_profit = mean(Profit)) %>%
arrange(avg_profit)
# Visualisasi
ggplot(avg_product, aes(x = reorder(`Product Type`, avg_profit),
y = avg_profit,
fill = avg_profit)) +
geom_col(width = 0.7) +
geom_text(aes(label = round(avg_profit, 1)),
hjust = -0.2,
size = 3.5) +
coord_flip() +
labs(title = "💰 Rata-rata Profit per Jenis Produk",
subtitle = "Perbandingan profit rata-rata antar produk",
x = "Jenis Produk",
y = "Rata-rata Profit",
fill = "Profit") +
scale_fill_gradient(low = "#A8DADC", high = "#1D3557") +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(size = 11),
axis.text = element_text(size = 10)
)
Berdasarkan visualisasi rata-rata profit per jenis produk, terlihat bahwa terdapat perbedaan profit antar produk. Produk Coffee memiliki rata-rata profit tertinggi dibandingkan produk lainnya, yang mengindikasikan bahwa produk tersebut memiliki performa penjualan atau margin yang lebih baik. Sebaliknya, produk Tea memiliki rata-rata profit terendah, yang dapat mengindikasikan kontribusi profit yang kurang optimal.
Sementara itu, produk Espresso dan Herbal Tea berada pada tingkat profit menengah, menunjukkan performa yang cukup stabil namun tidak sebaik Coffee. Perbedaan ini menunjukkan bahwa jenis produk berpotensi memengaruhi besar kecilnya profit yang dihasilkan.
#Visualisasi Data 2 (Distribusi Profit)
ggplot(data_clean, aes(x = Profit)) +
geom_histogram(bins = 30, fill = "pink", color = "white", alpha = 0.9) +
geom_vline(aes(xintercept = mean(Profit)),
color = "red", linetype = "dashed", linewidth = 1) +
labs(title = "📊 Distribusi Profit",
subtitle = "Garis merah menunjukkan rata-rata profit",
x = "Profit",
y = "Frekuensi") +
theme_minimal() +
theme(
plot.title = element_text(face = "bold"),
plot.subtitle = element_text(size = 11)
)
Berdasarkan histogram distribusi profit, terlihat bahwa nilai profit memiliki penyebaran yang cukup luas. Sebagian besar data terkonsentrasi pada nilai profit yang relatif rendah hingga menengah, sementara terdapat beberapa nilai profit yang sangat tinggi yang membentuk ekor distribusi di sisi kanan.
Garis vertikal menunjukkan rata-rata profit, yang berada di sekitar pusat distribusi, namun tidak sepenuhnya simetris. Hal ini mengindikasikan bahwa distribusi profit cenderung sedikit miring ke kanan (positively skewed), di mana terdapat beberapa transaksi dengan profit yang jauh lebih tinggi dibandingkan mayoritas data.
Kondisi ini menunjukkan bahwa meskipun sebagian besar penjualan menghasilkan profit dalam kisaran tertentu, terdapat beberapa kasus yang memberikan kontribusi profit yang sangat besar terhadap keseluruhan data.
#Visualisasi Data 3
#Boxplot Distribusi Profit per Wilayah
ggplot(data_clean, aes(x = Market, y = Profit, fill = Market)) +
geom_boxplot(alpha = 0.85) +
labs(title = "Distribusi Profit per Wilayah",
subtitle = "Perbandingan profit antar wilayah",
x = "Wilayah",
y = "Profit") +
scale_fill_brewer(palette = "Set3") +
theme_minimal() +
theme(
legend.position = "none",
plot.title = element_text(face = "bold")
)
Berdasarkan boxplot distribusi profit per wilayah, terlihat bahwa terdapat perbedaan tingkat profit antar wilayah penjualan. Setiap wilayah memiliki median dan rentang profit yang berbeda, yang menunjukkan adanya variasi performa penjualan di masing-masing wilayah.
Wilayah dengan median profit yang lebih tinggi menunjukkan bahwa secara umum wilayah tersebut menghasilkan keuntungan yang lebih besar dibandingkan wilayah lainnya. Selain itu, terlihat juga adanya perbedaan dalam penyebaran data, di mana beberapa wilayah memiliki rentang (interquartile range) yang lebih lebar, yang mengindikasikan variasi profit yang lebih tinggi.
Boxplot juga menunjukkan adanya beberapa nilai ekstrem (outlier), yang menandakan terdapat transaksi dengan profit yang jauh lebih tinggi atau lebih rendah dibandingkan mayoritas data. Hal ini menunjukkan bahwa performa profit tidak hanya berbeda antar wilayah, tetapi juga memiliki variasi yang cukup besar di dalam masing-masing wilayah.
Secara keseluruhan, visualisasi ini mengindikasikan bahwa wilayah penjualan berpotensi memengaruhi besar kecilnya profit yang dihasilkan.
#Analisis Data (ANOVA)
anova_result <- aov(Profit ~ `Product Type` * Market, data = data_clean)
summary(anova_result)
## Df Sum Sq Mean Sq F value Pr(>F)
## `Product Type` 3 141680 47227 5.02 0.00179 **
## Market 3 317768 105923 11.26 2.35e-07 ***
## `Product Type`:Market 8 3651726 456466 48.52 < 2e-16 ***
## Residuals 4233 39822463 9408
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan hasil uji Two-Way ANOVA, diperoleh bahwa variabel jenis produk memiliki pengaruh signifikan terhadap profit (p-value = 0.00179 < 0.05). Hal ini menunjukkan bahwa terdapat perbedaan rata-rata profit antar jenis produk.
Selain itu, variabel wilayah penjualan juga berpengaruh signifikan terhadap profit (p-value = 2.35e-07 < 0.05), yang mengindikasikan adanya perbedaan profit antar wilayah.
Hasil analisis juga menunjukkan adanya interaksi yang sangat signifikan antara jenis produk dan wilayah (p-value < 0.05). Hal ini berarti pengaruh jenis produk terhadap profit bergantung pada wilayah penjualannya.
Dengan demikian, suatu produk dapat menghasilkan profit yang tinggi di wilayah tertentu, namun tidak selalu memberikan hasil yang sama di wilayah lainnya.
Temuan ini menunjukkan bahwa strategi bisnis tidak dapat dilakukan secara seragam untuk semua wilayah. Perusahaan perlu menyesuaikan strategi penjualan dengan mempertimbangkan kombinasi antara jenis produk dan wilayah untuk memaksimalkan profit.
#Analisis Data (Regresi Linear)
model <- lm(Profit ~ `Product Type` * Market, data = data_clean)
summary(model)
##
## Call:
## lm(formula = Profit ~ `Product Type` * Market, data = data_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -679.94 -42.93 -16.58 30.34 619.98
##
## Coefficients: (1 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 60.5833 4.9496 12.240 < 2e-16 ***
## `Product Type`Espresso 21.0174 7.5607 2.780 0.00546 **
## `Product Type`Herbal Tea 13.0982 7.2455 1.808 0.07071 .
## `Product Type`Tea 5.8750 7.2455 0.811 0.41750
## MarketEast 123.8929 8.9720 13.809 < 2e-16 ***
## MarketSouth 0.3646 8.5730 0.043 0.96608
## MarketWest -32.6186 7.3927 -4.412 1.05e-05 ***
## `Product Type`Espresso:MarketEast -179.4769 12.3434 -14.540 < 2e-16 ***
## `Product Type`Herbal Tea:MarketEast -167.8383 12.3308 -13.611 < 2e-16 ***
## `Product Type`Tea:MarketEast -131.4194 12.0054 -10.947 < 2e-16 ***
## `Product Type`Espresso:MarketSouth -29.8646 11.7825 -2.535 0.01129 *
## `Product Type`Herbal Tea:MarketSouth -43.9888 12.2676 -3.586 0.00034 ***
## `Product Type`Tea:MarketSouth NA NA NA NA
## `Product Type`Espresso:MarketWest 17.3235 10.6513 1.626 0.10393
## `Product Type`Herbal Tea:MarketWest 43.2415 10.6209 4.071 4.76e-05 ***
## `Product Type`Tea:MarketWest 8.0991 10.4299 0.777 0.43748
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 96.99 on 4233 degrees of freedom
## Multiple R-squared: 0.09358, Adjusted R-squared: 0.09058
## F-statistic: 31.21 on 14 and 4233 DF, p-value: < 2.2e-16
Berdasarkan hasil analisis regresi linear, dapat kita ketahui bahwa variabel jenis produk dan wilayah penjualan memiliki pengaruh terhadap profit, serta terdapat interaksi antara keduanya.
Wilayah East memiliki pengaruh positif yang sangat signifikan terhadap profit (p-value < 0.001), dengan peningkatan profit yang cukup besar dibandingkan wilayah acuan. Hal ini menunjukkan bahwa wilayah East merupakan pasar dengan performa profit tertinggi.
Sebaliknya, wilayah West memiliki pengaruh negatif yang signifikan terhadap profit (p-value < 0.001), yang mengindikasikan bahwa profit di wilayah tersebut cenderung lebih rendah. Sementara itu, wilayah South tidak menunjukkan pengaruh yang signifikan terhadap profit.
Dari sisi jenis produk, produk Espresso memiliki pengaruh positif yang signifikan terhadap profit (p-value < 0.01), sedangkan produk lainnya tidak menunjukkan pengaruh yang signifikan secara statistik.
Selain itu, terdapat interaksi yang signifikan antara beberapa jenis produk dan wilayah. Interaksi antara produk dengan wilayah East sebagian besar menunjukkan nilai negatif yang signifikan, yang mengindikasikan bahwa meskipun wilayah East memiliki profit tinggi secara umum, tidak semua jenis produk mampu mempertahankan performa tersebut di wilayah ini.
Dengan demikian, hasil regresi menunjukkan bahwa pengaruh jenis produk terhadap profit sangat bergantung pada wilayah penjualannya. Oleh karena itu, strategi penjualan perlu disesuaikan dengan karakteristik masing-masing wilayah untuk memperoleh profit yang optimal.