author: “Muhammad Nadhif Farizqi”
Laporan ini menganalisis Coffee Chain Dataset dengan fokus pada perbedaan profit antar produk. Tujuannya sederhana: mencari produk mana yang paling menguntungkan, produk mana yang lemah, lalu menguji apakah perbedaan profit itu memang signifikan secara statistik.
Dataset dibaca dari file Excel, lalu difokuskan pada variabel:
ProductProfitSalesState##1. Import Dataset
data <- read_excel("C:/Users/Nadhif/OneDrive/Documents/1. Tugas SIM 2025B - Coffee Chain Datasets.xlsx")
# Melihat struktur data
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 ...
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>
##2. Insight 1: Profit Berdasarkan Produk
# Mengelompokkan data berdasarkan produk
# Kemudian menjumlahkan total profit tiap produk
profit_produk <- data %>%
group_by(Product) %>% # mengelompokkan berdasarkan kolom Product
summarise(Total_Profit = sum(Profit, na.rm = TRUE)) %>%
arrange(desc(Total_Profit))
profit_produk
## # A tibble: 13 × 2
## Product Total_Profit
## <chr> <dbl>
## 1 Colombian 55804
## 2 Lemon 29869
## 3 Decaf Espresso 29502
## 4 Darjeeling 29053
## 5 Chamomile 27231
## 6 Earl Grey 24164
## 7 Caffe Mocha 17678
## 8 Decaf Irish Cream 13989
## 9 Caffe Latte 11375
## 10 Regular Espresso 10065
## 11 Mint 6154
## 12 Amaretto 4890
## 13 Green Tea -231
# Membuat grafik batang (bar chart)
ggplot(profit_produk, aes(x = reorder(Product, Total_Profit), y = Total_Profit)) +
geom_bar(stat = "identity") + # membuat bar sesuai nilai asli
coord_flip() + # membalik sumbu agar lebih mudah dibaca
labs(title = "Total Profit per Produk",
x = "Produk",
y = "Total Profit")
Grafik menunjukkan bahwa terdapat perbedaan kontribusi profit antar produk. Beberapa produk memiliki profit lebih tinggi, yang menandakan performa penjualan dan keuntungan yang lebih baik.
Sebaliknya, produk dengan profit rendah menunjukkan kontribusi yang lebih kecil terhadap total keuntungan. Hal ini bisa disebabkan oleh rendahnya penjualan atau tingginya biaya.
Secara keseluruhan, produk dengan profit tinggi dapat dijadikan fokus utama, sedangkan produk dengan profit rendah perlu dievaluasi lebih lanjut. ##3. Insight 2: Hubungan Sales dan Profit
# Menghitung korelasi antara Sales dan Profit
correlation <- cor(data$Sales, data$Profit, use = "complete.obs")
# Menampilkan nilai korelasi
correlation
## [1] 0.7973309
# Membuat scatter plot (diagram titik)
ggplot(data, aes(x = Sales, y = Profit)) +
geom_point(alpha = 0.6) + # titik dengan transparansi
geom_smooth(method = "lm", se = FALSE) +
# garis regresi linear tanpa interval
labs(title = "Hubungan Sales dan Profit",
x = "Sales",
y = "Profit")
## `geom_smooth()` using formula = 'y ~ x'
Grafik menunjukkan adanya hubungan antara Sales dan Profit, di mana peningkatan penjualan cenderung diikuti oleh peningkatan profit.
Namun, hubungan tersebut tidak selalu kuat karena terdapat beberapa titik yang menyebar. Hal ini menunjukkan bahwa tidak semua penjualan tinggi menghasilkan profit tinggi.
Secara keseluruhan, selain meningkatkan penjualan, perusahaan juga perlu memperhatikan faktor lain seperti biaya agar profit dapat optimal. ##4. Insight 3: Profit Berdasarkan State
# Mengelompokkan data berdasarkan wilayah (Region)
profit_State <- data %>%
group_by(State) %>% # grouping berdasarkan Region
summarise(Total_Profit = sum(Profit, na.rm = TRUE)) %>%
# menjumlahkan profit tiap region
arrange(desc(Total_Profit)) # urut dari terbesar
# Menampilkan hasil
profit_State
## # A tibble: 20 × 2
## State Total_Profit
## <chr> <dbl>
## 1 California 31785
## 2 Illinois 30821
## 3 Iowa 22212
## 4 New York 20096
## 5 Colorado 17743
## 6 Massachusetts 16442
## 7 Texas 15766
## 8 Oregon 12439
## 9 Florida 12310
## 10 Washington 11405
## 11 Ohio 10773
## 12 Nevada 10616
## 13 Wisconsin 8702
## 14 Oklahoma 8558
## 15 Utah 7751
## 16 Connecticut 7621
## 17 Louisiana 7355
## 18 Missouri 3601
## 19 New Hampshire 2748
## 20 New Mexico 799
# Visualisasi profit per region
ggplot(profit_State, aes(x = reorder(State, Total_Profit), y = Total_Profit)) +
geom_bar(stat = "identity") +
coord_flip() +
labs(title = "Total Profit per State",
x = "State",
y = "Total Profit")
Grafik menunjukkan bahwa terdapat perbedaan tingkat profit antar state. Beberapa state memiliki profit yang lebih tinggi, yang menandakan kinerja penjualan yang lebih baik di wilayah tersebut.
Sebaliknya, state dengan profit rendah menunjukkan kontribusi yang lebih kecil terhadap total keuntungan, yang bisa disebabkan oleh rendahnya permintaan atau faktor biaya.
Secara keseluruhan, state dengan profit tinggi dapat menjadi fokus pengembangan, sedangkan state dengan profit rendah perlu dievaluasi lebih lanjut. ##5. Metode Analisis 1. Statistik Deskriptif
Statistik deskriptif digunakan untuk memberikan gambaran umum mengenai data, seperti nilai minimum, maksimum, rata-rata (mean), dan standar deviasi dari variabel Sales dan Profit.
Melalui metode ini, dapat diketahui karakteristik dasar data serta tingkat penyebarannya. Informasi ini penting sebagai langkah awal sebelum melakukan analisis lanjutan.
# Statistik deskriptif untuk Sales dan Profit
summary(data$Sales) # melihat min, max, mean, dll
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 17 100 138 193 230 912
summary(data$Profit)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -638.0 17.0 40.0 61.1 92.0 778.0
# Menghitung rata-rata dan standar deviasi
mean(data$Sales, na.rm = TRUE) # rata-rata sales
## [1] 192.9875
mean(data$Profit, na.rm = TRUE) # rata-rata profit
## [1] 61.09769
sd(data$Sales, na.rm = TRUE) # standar deviasi sales
## [1] 151.1331
sd(data$Profit, na.rm = TRUE) # standar deviasi profit
## [1] 101.7085
Korelasi Pearson digunakan untuk mengukur kekuatan dan arah hubungan antara dua variabel, yaitu Sales dan Profit.
Nilai korelasi berada pada rentang -1 hingga 1:
Mendekati 1 → hubungan positif kuat Mendekati 0 → hubungan lemah Mendekati -1 → hubungan negatif
# Korelasi Pearson antara Sales dan Profit
correlation <- cor(data$Sales, data$Profit, use = "complete.obs")
correlation
## [1] 0.7973309
Regresi linear digunakan untuk menganalisis pengaruh variabel independen (Sales) terhadap variabel dependen (Profit).
Model regresi menghasilkan persamaan yang dapat digunakan untuk:
Menjelaskan hubungan antara Sales dan Profit Mengukur seberapa besar pengaruh Sales terhadap Profit Melakukan prediksi nilai Profit berdasarkan Sales
model <- lm(Profit ~ Sales, data = data)
summary(model)
##
## Call:
## lm(formula = Profit ~ Sales, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -606.28 -9.15 11.77 28.31 466.85
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -42.456004 1.527850 -27.79 <2e-16 ***
## Sales 0.536582 0.006233 86.08 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 61.39 on 4246 degrees of freedom
## Multiple R-squared: 0.6357, Adjusted R-squared: 0.6357
## F-statistic: 7410 on 1 and 4246 DF, p-value: < 2.2e-16
# Menambahkan prediksi ke dalam data
data$Prediksi_Profit <- predict(model)
# Melihat sebagian hasil prediksi
head(data)
## # A tibble: 6 × 21
## `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
## # ℹ 15 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>,
## # Prediksi_Profit <dbl>