#Dalam data Coffe Chain set, produk-produk yang ada memiliki catatan penjualan setiap awal bulannya. Hal itu menjadi suatu insight yang menarik untuk dibahas karena dapat menjadi pertimbangan dalam pengambilan keputusan. Setiap jenis produk terdapat dugaan bahwa memiliki pola tertentu.
#1) Apakah tipe produk kopi dan teh mengalami pola kenaikan, penurunan, atau stagnan di musim tertentu? #2) Bagaimana efektivitas marketing terhadap profit di bulan/musim tertentu pada saat produk mengalami puncak penjualan?
library(odbc)
## Warning: package 'odbc' was built under R version 4.5.2
library(DBI)
odbcListDrivers()
## name attribute
## 1 SQL Server APILevel
## 2 SQL Server ConnectFunctions
## 3 SQL Server CPTimeout
## 4 SQL Server DriverODBCVer
## 5 SQL Server FileUsage
## 6 SQL Server SQLLevel
## 7 SQL Server UsageCount
## 8 Microsoft Access Driver (*.mdb, *.accdb) UsageCount
## 9 Microsoft Access Driver (*.mdb, *.accdb) APILevel
## 10 Microsoft Access Driver (*.mdb, *.accdb) ConnectFunctions
## 11 Microsoft Access Driver (*.mdb, *.accdb) DriverODBCVer
## 12 Microsoft Access Driver (*.mdb, *.accdb) FileUsage
## 13 Microsoft Access Driver (*.mdb, *.accdb) FileExtns
## 14 Microsoft Access Driver (*.mdb, *.accdb) SQLLevel
## 15 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) UsageCount
## 16 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) APILevel
## 17 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) ConnectFunctions
## 18 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) DriverODBCVer
## 19 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) FileUsage
## 20 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) FileExtns
## 21 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) SQLLevel
## 22 Microsoft Access Text Driver (*.txt, *.csv) UsageCount
## 23 Microsoft Access Text Driver (*.txt, *.csv) APILevel
## 24 Microsoft Access Text Driver (*.txt, *.csv) ConnectFunctions
## 25 Microsoft Access Text Driver (*.txt, *.csv) DriverODBCVer
## 26 Microsoft Access Text Driver (*.txt, *.csv) FileUsage
## 27 Microsoft Access Text Driver (*.txt, *.csv) FileExtns
## 28 Microsoft Access Text Driver (*.txt, *.csv) SQLLevel
## 29 MySQL ODBC 8.0 ANSI Driver UsageCount
## 30 MySQL ODBC 8.0 Unicode Driver UsageCount
## value
## 1 2
## 2 YYY
## 3 60
## 4 03.50
## 5 0
## 6 1
## 7 1
## 8 3
## 9 1
## 10 YYN
## 11 02.50
## 12 2
## 13 *.mdb,*.accdb
## 14 0
## 15 3
## 16 1
## 17 YYN
## 18 02.50
## 19 2
## 20 *.xls,*.xlsx, *.xlsb
## 21 0
## 22 3
## 23 1
## 24 YYN
## 25 02.50
## 26 2
## 27 *.txt, *.csv
## 28 0
## 29 1
## 30 1
dbConnect(odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
UID = "root",
PWD = "farelarrafi445",
Port = "3306")
## <OdbcConnection> root@127.0.0.1 via TCP/IP
## Database: null
## MySQL Version: 8.0.43
con1 = dbConnect(odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
UID = "root",
PWD = "farelarrafi445",
Port = "3306")
con2 = dbConnect(odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
UID = "root",
PWD = "farelarrafi445",
Port = "3306",
Database = "coffechains")
#Dataset total pendapatan tipe produk Kopi selama 2013
dataset_kopi_teh <- dbGetQuery(con2, "select monthname(Tanggal), Jenis_produk, sum(Penjualan) as total_pendapatan from (select f.`Date` as Tanggal, f.ProductId, p.`Product Type` as Jenis_produk, p.Product, sum(f.Sales) as Penjualan from facttable f
join product p on f.ProductId = p.ProductId
where p.`Product Type` in ('Tea', 'Coffee') and year(f.Date) = 2013
group by p.Product, f.ProductId, p.`Product Type`, Tanggal
order by f.ProductId) as total_penjualan_teh
group by Jenis_produk, Tanggal;")
#Total pendapatan produk kopi dan teh
dataset_kopi_teh
## monthname(Tanggal) Jenis_produk total_pendapatan
## 1 February Coffee 8872
## 2 October Coffee 8909
## 3 January Coffee 9305
## 4 September Coffee 9426
## 5 May Coffee 8865
## 6 August Coffee 9702
## 7 December Coffee 9350
## 8 March Coffee 8958
## 9 July Coffee 9821
## 10 November Coffee 8759
## 11 April Coffee 9257
## 12 June Coffee 9470
## 13 October Tea 7472
## 14 September Tea 7607
## 15 February Tea 7201
## 16 May Tea 7098
## 17 January Tea 7444
## 18 March Tea 7255
## 19 August Tea 7474
## 20 November Tea 7123
## 21 December Tea 7497
## 22 July Tea 7400
## 23 June Tea 7290
## 24 April Tea 7378
#Urutan dataset berdasarkan bulan
dataset_kopi_teh$`monthname(Tanggal)` <- factor(dataset_kopi_teh$`monthname(Tanggal)`, levels = month.name)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
#Line chart untuk melihat tren penjualan produk kopi dan teh selama tahun 2013
library(ggplot2)
timeseries_line <- ggplot(dataset_kopi_teh, aes(x = `monthname(Tanggal)`, y = total_pendapatan, group = Jenis_produk, color = Jenis_produk)) +
geom_line() +
geom_point() +
labs(title = "Tren Penjualan Produk Kopi dan Teh selama Tahun 2013",
x = "Bulan",
y = "Total Pendapatan") +
theme_minimal() +
scale_color_manual(values = c("Coffee" = "brown", "Tea" = "green")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
timeseries_line
#Interpretasi grafik : Tren pendapatan produk Kopi dan Teh mempunyai pola yang cenderung mirip, tetapi sedikit berbeda. Kemiripan pola dapat dilihat dari pola pada awal tahun (bulan Januari - April). Pendapatan kedua produk mengalami penurunan pada bulan Februari karena berakhirnya musim dingin. Pendapatan perlahan mengalami kenaikan hingga bulan April, kemudian pendapatan turun di bulan Mei. Puncak pendapatan kedua produk berada di bulan yang berbeda, produk kopi mengalami puncak penjualan di bulan Juli, sedangkan produk Teh mengalami puncak penjualan di bulan September.Selain pola tersebut, pola yang cukup menarik dari kedua produk dapat ditinjau di penjualan akhir tahun (bulan November-Desember). Pola tersebut mungkin disebabkan karena adanya musim dingin / salju yang menyebabkan banyak masyarakat mulai mengonsumsi minuman hangat, dalam hal ini adalah produk kopi dan teh.
##Uji normalitas antara 2 data produk bertujuan untuk mengetahui normalitas kedua data dan menentukan uji yang sesuai dengan normalitasnya (parametrik jika normal dan nonparametrik jika tidak normal)
dataset_kopi <- dbGetQuery(con2,"select monthname(Tanggal), Jenis_produk, sum(Penjualan) as total_pendapatan from (select f.`Date` as Tanggal, f.ProductId, p.`Product Type` as Jenis_produk, p.Product, sum(f.Sales) as Penjualan from facttable f
join product p on f.ProductId = p.ProductId
where p.`Product Type` in ('Coffee') and year(f.Date) = 2013
group by p.Product, f.ProductId, p.`Product Type`, Tanggal
order by f.ProductId) as total_penjualan_teh
group by Jenis_produk, Tanggal;")
dataset_teh <- dbGetQuery(con2,"select monthname(Tanggal), Jenis_produk, sum(Penjualan) as total_pendapatan from (select f.`Date` as Tanggal, f.ProductId, p.`Product Type` as Jenis_produk, p.Product, sum(f.Sales) as Penjualan from facttable f
join product p on f.ProductId = p.ProductId
where p.`Product Type` in ('Tea') and year(f.Date) = 2013
group by p.Product, f.ProductId, p.`Product Type`, Tanggal
order by f.ProductId) as total_penjualan_teh
group by Jenis_produk, Tanggal;")
#Uji normalitas dataset kopi
uji_normalitas_kopi <- shapiro.test(dataset_kopi$total_pendapatan)
#Interpretasi hasil uji
cat(ifelse(uji_normalitas_kopi$p.value > 0.05, "Data Produk Kopi Berdistribusi Normal", "Data Produk Kopi Tidak Berdistribusi Normal"))
## Data Produk Kopi Berdistribusi Normal
#Uji normalitas dataset teh
uji_normalitas_teh <- shapiro.test(dataset_teh$total_pendapatan)
#Interpretasi hasil uji
cat(ifelse(uji_normalitas_teh$p.value > 0.05, "Data Produk Teh Berdistribusi Normal", "Data Produk Teh Tidak Berdistribusi Normal"))
## Data Produk Teh Berdistribusi Normal
#Uji t berpasangan untuk dataset kopi dan teh
uji_t_berpasangan <- t.test(dataset_kopi$total_pendapatan, dataset_teh$total_pendapatan, paired = TRUE)
#Interpretasi hasil uji t berpasangan
cat(ifelse(uji_t_berpasangan$p.value < 0.05, "Terdapat Perbedaan Signifikan antara Pendapatan Produk Kopi dan Teh", "Tidak Terdapat Perbedaan Signifikan antara Pendapatan Produk Kopi dan Teh"))
## Terdapat Perbedaan Signifikan antara Pendapatan Produk Kopi dan Teh
df_efektivitas <- dbGetQuery(con2, "select month(ft.Date) as Bulan, monthname(ft.Date) as Nama_bulan, p.`Product Type`, sum(ft.Profit) as keuntungan, sum(ft.Marketing) as biaya_marketing, (round((sum(ft.Profit) / sum(ft.Marketing)) * 100, 2)-100) as efektivitas from facttable ft
join product p on ft.ProductId = p.ProductId
where year(ft.Date)=2013 and p.`Product Type` in ('Coffee', 'Tea')
group by month(ft.Date), monthname(ft.Date), p.`Product Type`
order by month(ft.Date), `Product Type`;")
df_efektivitas
## Bulan Nama_bulan Product Type keuntungan biaya_marketing efektivitas
## 1 1 January Coffee 3669 1301 182.01
## 2 1 January Tea 2535 1073 136.25
## 3 2 February Coffee 3456 1312 163.41
## 4 2 February Tea 2550 1067 138.99
## 5 3 March Coffee 3508 1321 165.56
## 6 3 March Tea 2567 1075 138.79
## 7 4 April Coffee 3624 1370 164.53
## 8 4 April Tea 2583 1100 134.82
## 9 5 May Coffee 3547 1402 153.00
## 10 5 May Tea 2527 1137 122.25
## 11 6 June Coffee 3946 1490 164.83
## 12 6 June Tea 2683 1149 133.51
## 13 7 July Coffee 4127 1555 165.40
## 14 7 July Tea 2730 1167 133.93
## 15 8 August Coffee 4065 1538 164.30
## 16 8 August Tea 2756 1176 134.35
## 17 9 September Coffee 3825 1376 177.98
## 18 9 September Tea 2656 1141 132.78
## 19 10 October Coffee 3440 1323 160.02
## 20 10 October Tea 2689 1101 144.23
## 21 11 November Coffee 3335 1308 154.97
## 22 11 November Tea 2500 1059 136.07
## 23 12 December Coffee 3673 1387 164.82
## 24 12 December Tea 2605 1124 131.76
#Pengurutan bulan
df_efektivitas$Nama_bulan <- factor(df_efektivitas$Nama_bulan, levels = month.name)
#Bar chart untuk melihat efektivitas terhadap profit di bulan/musim tertentu pada saat produk mengalami puncak penjualan
library(ggplot2)
bar_chart <- ggplot(df_efektivitas, aes(x = Nama_bulan, y = efektivitas, fill = `Product Type`)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Efektivitas Marketing terhadap Profit per Bulan untuk Produk Kopi dan Teh",
x = "Bulan",
y = "Efektivitas (%)") +
theme_minimal() +
scale_fill_manual(values = c("Coffee" = "brown", "Tea" = "darkgreen")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
bar_chart
#Interpretasi grafik : Efektivitas marketing terhadap profit untuk produk kopi dan teh memiliki pola yang cukup mirip, tetapi terdapat beberapa perbedaan. Pola yang mirip dapat dilihat pada bulan Januari hingga April, dimana efektivitas marketing untuk kedua produk mengalami penurunan. Hal ini mungkin disebabkan karena berakhirnya musim dingin yang menyebabkan penurunan konsumsi minuman hangat seperti kopi dan teh. Setelah itu, efektivitas marketing untuk kedua produk mulai meningkat secara bertahap hingga mencapai puncaknya di bulan Juli untuk kopi dan bulan September untuk teh. Pola yang berbeda dapat dilihat pada bulan November dan Desember, dimana efektivitas marketing untuk produk kopi mengalami peningkatan yang signifikan, sedangkan untuk produk teh tetap stabil atau bahkan menurun. Hal ini mungkin disebabkan karena adanya musim dingin atau salju yang menyebabkan banyak masyarakat mulai mengonsumsi minuman hangat, dalam hal ini adalah produk kopi dan teh. Namun, mungkin juga disebabkan karena adanya promosi atau diskon khusus untuk produk kopi selama musim dingin yang meningkatkan efektivitas marketingnya dibandingkan dengan produk teh.
#Kesimpulan akhir : #Berdasarkan analisis visual dan statistik, produk Kopi dan Teh menunjukkan tren musiman yang sesuai dengan lonjakan penjualan di akhir tahun, di mana peningkatan biaya marketing terbukti efektif mendorong profitabilitas pada kedua kategori tersebut. Validasi melalui uji Shapiro-Wilk mengonfirmasi bahwa data berdistribusi normal, sehingga hasil uji t berpasangan yang menunjukkan perbedaan pendapatan signifikan antara keduanya menjadi dasar kuat bahwa Kopi dan Teh memiliki skala pasar yang berbeda meski bergerak dalam pola yang serupa. Secara strategis, solusi yang dapat dilakukan adalah mengalihkan biaya marketing di bulan-bulan di mana pendapatan kopi dan teh mengalami penurunan dan mengalokasikan biaya marketing secara lebih agresif dan besar pada produk Kopi dan teh selama musim dingin untuk memaksimalkan profit.