author: “Muhammad Nadhif Farizqi”


Pendahuluan

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.

Insight & Deskripsi Data

Dataset dibaca dari file Excel, lalu difokuskan pada variabel:

##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
  1. Korelasi Pearson

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
  1. Regresi Linear Sederhana

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>