# Memuat paket yang diperlukan untuk koneksi database dan visualisasi
library(DBI)
library(ggplot2)
library(scales)
library(odbc)
# Koneksi Database
con = dbConnect(odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
UID = "root",
PWD = "admin123",
Port = 3306,
database = "coffee_db")
Analisis ini berfokus pada evaluasi performa keuntungan (profit) antar negara di wilayah Central. Data yang dianalisis merupakan hasil penggabungan (joining) antara tabel transaksi (facttable) dan tabel wilayah (location) dari Coffee Chain Datasets melalui variabel kunci Area Code. Pemilihan insight ini untuk memahami variabilitas keuntungan di berbagai lokasi geografis dalam satu wilayah pasar yang sama. Dengan menganalisis variabel kategori berupa negara terhadap variabel numerik keuntungan, analisis ini bertujuan untuk melihat apakah setiap negara bagian di wilayah tersebut memberikan kontribusi keuntungan yang sama atau justru ada perbedaan performa secara signifikan.
dt = dbGetQuery(con, "SELECT l.State,
SUM(f.Profit) AS Total_Profit
FROM coffee_db.facttable f
JOIN coffee_db.location l ON f.`Area Code` = l.`Area Code`
WHERE l.Market = 'Central'
GROUP BY l.State
ORDER BY Total_Profit DESC")
ggplot(dt, aes(x = reorder(State, -Total_Profit), y = Total_Profit, fill = Total_Profit)) +
geom_bar(stat = "identity", color = "white") +
geom_text(aes(label = label_dollar()(Total_Profit)), vjust = -0.5, size = 3.5, fontface = "bold") +
scale_fill_gradient(low = "#D2B48C", high = "#4B2C20") +
scale_y_continuous(labels = label_dollar(), expand = expansion(c(0, 0.2))) +
theme_minimal() +
labs(title = "Total Keuntungan per Negara di Wilayah Central",
subtitle = "Coffee Chain Datasets",
x = "Negara",
y = "Total Keuntungan (USD)") +
theme(legend.position = "none",
axis.text.x = element_text(angle = 0))
dt_avg = dbGetQuery(con, "SELECT l.State,
AVG(f.Profit) AS Avg_Profit
FROM coffee_db.facttable f
JOIN coffee_db.location l ON f.`Area Code` = l.`Area Code`
WHERE l.Market = 'Central'
GROUP BY l.State
ORDER BY Avg_Profit DESC")
ggplot(dt_avg, aes(x = reorder(State, -Avg_Profit), y = Avg_Profit, fill = Avg_Profit)) +
geom_bar(stat = "identity", color = "white") +
geom_text(aes(label = label_dollar()(Avg_Profit)),
vjust = -0.5, size = 3.5, fontface = "bold") +
scale_fill_gradient(low = "#D2B48C", high = "#4B2C20") +
scale_y_continuous(labels = label_dollar(),
expand = expansion(c(0, 0.2))) +
theme_minimal() +
labs(title = "Rata-rata Keuntungan per Negara di Wilayah Central",
x = "Negara",
y = "Rata-rata Keuntungan (USD)") +
theme(legend.position = "none")
Berdasarkan visualisasi diagram batang di atas, terdapat variasi keuntungan bersih (profit) yang cukup signifikan di antara enam negara bagian yang masuk dalam kategori wilayah Central. Data menunjukkan adanya kesenjangan performa finansial yang nyata antar lokasi geografis.
Performa Tertinggi: Illinois menjadi negara dengan kontribusi keuntungan terbesar di wilayah Central, dengan total keuntungan mencapai 30.821. Angka ini jauh melampaui negara bagian lainnya.
Performa Menengah: Iowa dan Colorado menempati posisi kedua dan ketiga dengan profit masing-masing sebesar 22.212 dan 17.743.
Performa Terendah: Missouri mencatatkan keuntungan paling kecil di wilayah ini, yaitu hanya sebesar 3.601, yang berarti hanya sekitar 11% dari total keuntungan yang dihasilkan oleh Illinois.
Gradasi warna dari cokelat tua ke muda menunjukkan tingkat urgensi serta dominasi tiap negara bagian. Dominasi Illinois yang sangat kuat mengindikasikan bahwa wilayah tersebut merupakan pusat operasional utama di wilayah Central, yang berbanding terbalik dengan rendahnya profit di Missouri dan Wisconsin. Secara statistik, sebaran data ini menunjukkan adanya variabilitas yang tinggi antar wilayah, di mana rentang keuntungan antara posisi tertinggi dan terendah mencapai 27.220. Hal ini mengindikasikan bahwa faktor lokasi memiliki pengaruh besar terhadap profitabilitas. Kondisi tersebut juga sejalan dengan hasil analisis nilai rata-rata, di mana total profit terbesar terbukti mencatatkan rata-rata keuntungan yang juga paling tinggi, sehingga menegaskan efisiensi operasional di wilayah tersebut.
H0 : mu1 = mu2 = mu3 = mu4 = mu5 = mu6
H1 : mu1 =! mu2 =! mu3 =! mu4 =! mu5 =! mu6
# Menggunakan ANOVA
dt_anova = dbGetQuery(con,
"SELECT l.State, f.Profit
FROM coffee_db.facttable f
JOIN coffee_db.location l ON f.`Area Code` = l.`Area Code`
WHERE l.Market = 'Central'")
hasil_anova = aov(Profit ~ State, data = dt_anova)
summary(hasil_anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## State 5 2268650 453730 120.6 <2e-16 ***
## Residuals 1338 5033351 3762
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(hasil_anova)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = Profit ~ State, data = dt_anova)
##
## $State
## diff lwr upr p adj
## Illinois-Colorado 75.481481 59.422310 91.540653 0.0000000
## Iowa-Colorado 35.625000 19.565828 51.684172 0.0000000
## Missouri-Colorado -50.537037 -66.596209 -34.477865 0.0000000
## Ohio-Colorado -17.333333 -33.392505 -1.274161 0.0256844
## Wisconsin-Colorado -26.921296 -42.980468 -10.862124 0.0000281
## Iowa-Illinois -39.856481 -56.699483 -23.013480 0.0000000
## Missouri-Illinois -126.018519 -142.861520 -109.175517 0.0000000
## Ohio-Illinois -92.814815 -109.657816 -75.971813 0.0000000
## Wisconsin-Illinois -102.402778 -119.245779 -85.559776 0.0000000
## Missouri-Iowa -86.162037 -103.005039 -69.319035 0.0000000
## Ohio-Iowa -52.958333 -69.801335 -36.115332 0.0000000
## Wisconsin-Iowa -62.546296 -79.389298 -45.703295 0.0000000
## Ohio-Missouri 33.203704 16.360702 50.046705 0.0000003
## Wisconsin-Missouri 23.615741 6.772739 40.458742 0.0009375
## Wisconsin-Ohio -9.587963 -26.430965 7.255039 0.5823242
Analisis ini bertujuan untuk melihat pasangan negara mana saja yang memiliki perbedaan rata-rata keuntungan secara signifikan. Acuan utamanya adalah selisih rata-rata (diff) dan selang kepercayaan 95%. Jika selang tersebut tidak melewati angka nol, maka perbedaan tersebut dinyatakan signifikan secara statistik.
Ini adalah satu-satunya pasangan yang TIDAK SIGNIFIKAN. Meskipun rata-rata Wisconsin terlihat lebih rendah 9.58, namun selang kepercayaannya berkisar antara -26.43 hingga +7.25. Karena rentang ini melewati angka nol, maka secara statistika kita tidak memiliki bukti yang cukup untuk menyatakan adanya perbedaan nyata antara performa Wisconsin dan Ohio. Keduanya dianggap memiliki tingkat profitabilitas yang setara.
Analisis ini bertujuan untuk mengevaluasi fluktuasi volume penjualan (Sales) selama tahun 2012. Data diperoleh melalui ekstraksi kolom Date yang dikonversi menjadi nama bulan dan kolom Sales yang diakumulasikan menggunakan fungsi agregasi SUM dari tabel transaksi (facttable). Melalui pemilihan insight ini, analisis difokuskan untuk mengidentifikasi pola dan stabilitas permintaan dari waktu ke waktu.
dt1 = dbGetQuery(con, "SELECT
MONTHNAME(`Date`) AS Bulan,
SUM(`Sales`) AS TotalSales
FROM `coffee_db`.`facttable`
WHERE `Date` LIKE '2012%'
GROUP BY 1, MONTH(`Date`)
ORDER BY MONTH(`Date`)")
ggplot(dt1, aes(x = factor(Bulan, levels = month.name), y = TotalSales, group = 1)) +
geom_line(color = "#4B2C20", linewidth = 1.2) + # Pakai linewidth agar tidak warning
geom_point(color = "#D2B48C", size = 3) +
scale_y_continuous(labels = label_dollar(), expand = expansion(c(0.1, 0.2))) +
theme_minimal() +
labs(title = "Tren Penjualan Bulanan Coffee Chain (Tahun 2012)",
subtitle = "Analisis Fluktuasi Penjualan Berdasarkan Data Fact Table",
x = "Bulan",
y = "Total Penjualan (USD)") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Visualisasi line plot menunjukkan adanya fluktuasi penjualan yang dinamis sepanjang tahun 2012. Secara umum, data membentuk pola siklus musiman, di mana terjadi pertumbuhan progresif pada paruh pertama tahun, diikuti oleh fase koreksi atau penurunan di paruh kedua, sebelum akhirnya menunjukkan tanda-tanda pemulihan di penghujung tahun. Masa keemasan atau Peak Season yang dimulai secara konsisten dari bulan Januari dan memuncak pada bulan Juli. Pada titik ini, total penjualan menyentuh angka tertinggi di atas 35.000. Kenaikan selama tujuh bulan berturut-turut ini mengindikasikan strategi pemasaran atau faktor eksternal (seperti musim panas/liburan tengah tahun) berhasil mendorong volume transaksi secara optimal. Setelah mencapai titik puncak, grafik menunjukkan penurunan (downtrend) yang cukup tajam selama periode Agustus hingga November. Titik terendah atau Low Season tercatat pada bulan November dengan total penjualan berada di kisaran 32.000. Kesenjangan antara bulan tertinggi (Juli) dan terendah (November) mencapai sekitar 3.000. Memasuki bulan Desember, tren penjualan kembali menunjukkan pergerakan positif (naik). Berdasarkan fluktuasi tersebut, dapat disimpulkan bahwa performa penjualan Coffee Chain sangat dipengaruhi oleh siklus waktu. Penurunan drastis di kuartal keempat (Agustus-November) menjadi temuan krusial.
H0 : mu1 = mu2
H1 : mu1 =! mu2
dt_jan_feb = dbGetQuery(con, "SELECT MONTHNAME(`Date`) AS Bulan, Sales
FROM coffee_db.facttable
WHERE YEAR(`Date`) = 2012 AND MONTH(`Date`) IN (1, 2)")
t_test_hasil <- t.test(Sales ~ Bulan, data = dt_jan_feb)
print(t_test_hasil)
##
## Welch Two Sample t-test
##
## data: Sales by Bulan
## t = 0.22239, df = 351.97, p-value = 0.8241
## alternative hypothesis: true difference in means between group February and group January is not equal to 0
## 95 percent confidence interval:
## -23.79724 29.86504
## sample estimates:
## mean in group February mean in group January
## 181.3107 178.2768
Berdasarkan hasil uji statistik menggunakan Independent Samples T-Test (Welch Two Sample t-test) untuk membandingkan rata-rata penjualan antara bulan Januari dan Februari tahun 2012. Nilai p-value yang diperoleh adalah 0.8241. Menggunakan taraf nyata (alpha) sebesar 5% (0.05), maka nilai p-value > 0.05. Secara statistika, hal ini berarti gagal menolak Ho. Selang kepercayaan 95% berada pada rentang -23.79 hingga 29.86. Karena rentang ini melewati angka nol, hal ini memperkuat kesimpulan bahwa tidak ada perbedaan rata-rata yang signifikan antara kedua bulan tersebut. Meskipun secara nominal rata-rata di bulan Februari (181.31) terlihat sedikit lebih tinggi dibandingkan Januari (178.27), namun perbedaan sebesar 3.04 tersebut dianggap tidak nyata dan hanya merupakan fluktuasi acak dalam data transaksi. Hal ini mengindikasikan bahwa pada dua bulan pertama tahun 2012, performa penjualan cenderung stabil dan konsisten.