PENDAHULUAN

Dalam era bisnis yang semakin kompetitif, khususnya pada industri makanan dan minuman seperti kedai kopi, pemanfaatan data menjadi komponen penting dalam mendukung pengambilan keputusan yang efektif. Melalui analisis data, perusahaan dapat memahami perilaku konsumen, mengevaluasi efisiensi operasional, serta mengidentifikasi strategi yang berdampak langsung pada peningkatan pendapatan. Salah satu pendekatan yang umum digunakan adalah analisis hubungan antara variabel penentu operasional dengan tingkat penjualan yang mencerminkan kinerja keuangan utama suatu usaha.

Pada artikel ini digunakan dataset Coffee Chain untuk menganalisis pengaruh tiga variabel independen, yaitu biaya pokok penjualan (Cost of Goods Sold/COGS), belanja pemasaran (Marketing), dan nilai persediaan (Inventory) terhadap variabel dependen yaitu penjualan (Sales). Metode yang digunakan adalah regresi robust, yang dipilih karena mampu memberikan hasil estimasi yang stabil meskipun terdapat pencilan atau pelanggaran terhadap asumsi klasik regresi linier. Tujuan dari analisis ini adalah untuk mengetahui sejauh mana variabel-variabel tersebut memengaruhi tingkat penjualan, serta memberikan dasar yang kuat bagi manajemen dalam merumuskan strategi bisnis berbasis data.

Deskripsi Data

Data yang digunakan yaitu Coffee Chain Datasets

Data <- read_excel("C:/Users/ASUS/Downloads/Dataset CM SIM.xlsx")
Dataset <- datatable(
  Data,
  caption = "Datasets Coffee Chain",
  options = list(
    scrollX = TRUE,
    pageLength = 10,
    lengthMenu = c(5, 10, 15, 20)
  )
)
Dataset

ANALISIS DATA

Statistik Deskriptif

Statistik deskriptif bertujuan untuk memberikan gambaran awal mengenai distribusi dan karakteristik dari masing-masing variabel yang akan digunakan dalam analisis. Dalam studi ini, variabel yang digunakan, antara lain:
  • Sales\((Y)\): menunjukkan total pendapatan dari penjualan produk pada suatu periode.

  • Inventory\((X_1)\): mencerminkan nilai atau jumlah persediaan barang yang tersedia untuk dijual.

  • COGS\((X_2)\): merupakan biaya langsung yang dikeluarkan untuk memproduksi barang yang dijual.

  • Marketing\((X_3)\): berisi total pengeluaran yang digunakan untuk aktivitas promosi dan pemasaran.
Analyze <- Data[, c("Sales", "Inventory", "COGS", "Marketing")]
summary(Analyze)
##      Sales         Inventory            COGS          Marketing     
##  Min.   : 17.0   Min.   :-3534.0   Min.   : 10.00   Min.   :  3.00  
##  1st Qu.:103.0   1st Qu.:  432.0   1st Qu.: 43.00   1st Qu.: 14.00  
##  Median :140.0   Median :  622.0   Median : 61.00   Median : 22.00  
##  Mean   :195.3   Mean   :  752.4   Mean   : 85.77   Mean   : 31.68  
##  3rd Qu.:232.0   3rd Qu.:  923.0   3rd Qu.:100.00   3rd Qu.: 40.00  
##  Max.   :912.0   Max.   : 8252.0   Max.   :364.00   Max.   :156.00

Interpretasi:
Keempat variabel menunjukkan sebaran nilai yang luas, dengan indikasi adanya outlier khususnya pada variabel Inventory dan Sales. Perbedaan signifikan antara nilai rata-rata dan median pada sebagian variabel juga menunjukkan adanya distribusi yang tidak simetris. Oleh karena itu, pendekatan regresi robust dipilih untuk mengatasi kemungkinan bias akibat pencilan dan untuk menghasilkan model yang lebih stabil dalam mengukur pengaruh Inventory, COGS, dan Marketing terhadap Sales.

Uji Asumsi Klasik

model <- lm(Sales ~ Inventory + COGS + Marketing, data = Data)
summary(model)
## 
## Call:
## lm(formula = Sales ~ Inventory + COGS + Marketing, data = Data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -520.99  -16.74    0.27   23.97  383.33 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 43.746114   1.435587  30.473  < 2e-16 ***
## Inventory   -0.084858   0.001627 -52.148  < 2e-16 ***
## COGS         2.626135   0.024159 108.702  < 2e-16 ***
## Marketing   -0.309143   0.054091  -5.715 1.17e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 54.72 on 4178 degrees of freedom
## Multiple R-squared:  0.869,  Adjusted R-squared:  0.8689 
## F-statistic:  9239 on 3 and 4178 DF,  p-value: < 2.2e-16

Uji Normalitas Residual

  1. Hipotesis
    \(H_0\) : Data berdistribusi normal
    \(H_1\) : Data tidak berdistribusi normal

  2. Taraf Signifikansi
    \(\alpha = 5\% \ (0.05)\) K

  3. Daerah Kritis
    Tolak \(H_0\) jika:
    \(P\text{-Value} < \alpha\) atau \(P\text{-Value} < 0.05\)

  4. Statistik Uji

ks.test(model$residuals, "pnorm")
## Warning in ks.test.default(model$residuals, "pnorm"): ties should not be
## present for the Kolmogorov-Smirnov test
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  model$residuals
## D = 0.4687, p-value < 2.2e-16
## alternative hypothesis: two-sided
  1. Kesimpulan
    Berdasarkan hasil uji Kolmogorov-Smirnov, diperoleh nilai P-value \(< 0.05\) maka \(H_0\) ditolak, yang berarti bahwa data tidak berdistribusi normal.

Uji Autokorelasi

  1. Hipotesis
    \(H_0\) : Tidak ada autokorelasi antarresidu
    \(H_1\) : Terdapat autokorelasi antarresidu

  2. Taraf Signifikansi
    \(\alpha = 5\% \ (0.05)\)

  3. Daerah Kritis
    Tolak \(H_0\) jika:
    \(P\text{-Value} < \alpha\) atau \(P\text{-Value} < 0.05\)

  4. Statistik Uji

dwtest(model)
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 2.0845, p-value = 0.9968
## alternative hypothesis: true autocorrelation is greater than 0
  1. Kesimpulan
    Berdasarkan hasil uji Durbin Watson, diperoleh nilai P-value \(> 0.05\) maka \(H_0\) ditolak, yang berarti bahwa data tidak memiliki autokorelasi antar residu.

Uji Multikolinearitas

  1. Hipotesis
    \(H_0\) : Tidak terjadi multikolinearitas
    \(H_1\) : Terjadi multikolinearitas

  2. Taraf Signifikansi
    \(\alpha = 5\% \ (0.05)\)

  3. Daerah Kritis
    Tolak \(H_0\) jika: nilai VIF > 10

  4. Statistik Uji

vif(model)
## Inventory      COGS Marketing 
##  1.637707  3.650301  2.966356
  1. Kesimpulan
    Berdasarkan hasil uji VIF, diperoleh nilai dari masing-masing variabel \(X\) adalah \(<10\) maka \(H_0\) gagal ditolak, yang berarti bahwa tidak terjadi multikolinearitas atau tidak ada hubungan kuat antar variabel.

Uji Homoskedastisitas

  1. Hipotesis
    \(H_0\) : Terdapat homoskedastistas residu
    \(H_1\) : Tidak terdapat homoskedastistas residu
  2. Taraf Signifikansi
    \(\alpha = 5\% \ (0.05)\)
  3. Daerah Kritis
    Tolak \(H_0\) jika:
    \(P\text{-Value} < \alpha\) atau \(P\text{-Value} < 0.05\)
  4. Statistik Uji
bptest(model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 357.47, df = 3, p-value < 2.2e-16
  1. Kesimpulan
    Berdasarkan hasil uji Breushch-Pagan, diperoleh nilai P-value \(< 0.05\) maka \(H_0\) ditolak, yang berarti bahwa data tidak terdapat homoskedastisitas residu atau terjadi heteroskedastisitas yaitu adanya ketidaksamaan residual varian dari residual.

Regresi Robust (Estimasi M)

Estimasi M adalah metode dalam regresi robust yang digunakan untuk memperkirakan parameter model ketika data mengandung pencilan (outlier) atau tidak memenuhi asumsi klasik regresi linier. Berbeda dari metode kuadrat terkecil (OLS) yang meminimalkan jumlah kuadrat dari residual, estimasi M meminimalkan fungsi kerugian tertentu yang lebih fleksibel dan kurang sensitif terhadap nilai-nilai ekstrem.

Pada variabel yang digunakan :
  • COGS memiliki variasi besar antar produk, terutama pada produk premium atau murah, yang menyebabkan outlier dalam hubungannya dengan Sales.

  • Marketing menunjukkan efektivitas yang tidak konsisten, biaya tinggi tidak selalu menghasilkan penjualan tinggi, sehingga bisa menimbulkan hubungan tidak proporsional.

  • Inventory sering kali menunjukkan fluktuasi karena adanya kelebihan atau kekurangan stok yang tidak selalu terkait langsung dengan jumlah penjualan.

  • Maka dari itu, estimasi M menjadi pilihan yang tepat dibandingkan regresi OLS karena mampu mengurangi pengaruh data ekstrem dan menghasilkan estimasi parameter yang lebih stabil dan akurat

    Landasan Teori Estimasi M

    • Pemberian Nilai Awal
      Hitung residual awal dari model OLS: \[r_i = y_i - X_i\beta_{OLS}\]

    • Pembobotan Huber
      Berikan bobot untuk tiap observasi: \[ w_i = \begin{cases} 1 & \text{untuk } |r_i| \leq k \\ k/|r_i| & \text{untuk } |r_i| > k \end{cases} \] dengan default \(k = 1.345\)

    • Iterasi Reweighted Least Squares
      Update koefisien hingga konvergen: \[\beta_{new} = (X^TWX)^{-1}X^TWy \] dimana \(W\) adalah matriks diagonal berisi \(w_i\)

    Perhitungan Estimasi M

    model_rlm <- rlm(Sales ~ Inventory + COGS + Marketing, data = Data,
                     psi = psi.huber,  
                     k = 1.5,         
                     maxit = 15) 
    ## Warning in rlm.default(x, y, weights, method = method, wt.method = wt.method, :
    ## 'rlm' failed to converge in 15 steps
    final_coef_rlm <- coef(model_rlm)
    names(final_coef_rlm) <- names(coef(model_rlm))
    summary(model_rlm)
    ## 
    ## Call: rlm(formula = Sales ~ Inventory + COGS + Marketing, data = Data, 
    ##     psi = psi.huber, k = 1.5, maxit = 15)
    ## Residuals:
    ##       Min        1Q    Median        3Q       Max 
    ## -542.2499   -9.6476    0.3977    9.4672  480.9652 
    ## 
    ## Coefficients:
    ##             Value    Std. Error t value 
    ## (Intercept)  19.4738   0.4293    45.3665
    ## Inventory    -0.0279   0.0005   -57.2876
    ## COGS          2.3625   0.0072   327.0498
    ## Marketing     0.0055   0.0162     0.3381
    ## 
    ## Residual standard error: 14.15 on 4178 degrees of freedom
    Interpretasi:
    • COGS merupakan variabel paling signifikan dan berpengaruh positif terhadap Sales, mencerminkan bahwa penjualan naik seiring meningkatnya volume barang terjual.

    • Inventory memiliki efek negatif, yang bisa mengindikasikan adanya kelebihan stok atau tidak efisien dalam manajemen persediaan.

    • Marketing tidak menunjukkan pengaruh signifikan dalam model ini, bisa jadi karena biaya pemasaran tidak langsung berdampak pada penjualan atau efeknya tertunda.

VISUALISASI DATA

Jumlah Penjualan per Produk

# Hitung efisiensi marketing (Sales per Produk)
Data$Eff_Marketing <- Data$Sales / Data$Marketing

# Ambil 10 produk secara acak untuk visualisasi
sample_Data <- Data[sample(nrow(Data), 10), ]

barplot(sample_Data$Eff_Marketing, names.arg = sample_Data$Product,
        las = 2, col = "#E8C999",
        main = "Jumlah Penjualan Per Produk",
        ylab = "Penjualan")

Interpretasi :
Berdasarkan grafik Jumlah Penjualan Per Produk yang ditampilkan, terlihat bahwa produk dengan penjualan tertinggi adalah salah satu varian Earl Grey, diikuti oleh Colombian dan beberapa produk lainnya dengan jumlah penjualan yang relatif stabil di kisaran 7–8 unit. Sementara itu, produk dengan penjualan paling rendah adalah Irish Cream, yang secara signifikan memiliki jumlah penjualan jauh di bawah produk lainnya, hanya sekitar 2 unit. Hal ini menunjukkan adanya perbedaan preferensi konsumen yang cukup jelas terhadap jenis produk, sehingga strategi pemasaran dapat difokuskan pada peningkatan daya tarik produk dengan penjualan rendah atau penguatan stok dan promosi pada produk-produk unggulan.

Tren Bulanan

# Agregasi bulanan
monthly_data <- Data %>%
  mutate(Month = floor_date(Date, "month")) %>%
  group_by(Month) %>%
  summarise(Sales = sum(Sales, na.rm = TRUE),
            COGS = sum(COGS, na.rm = TRUE),
            Marketing = sum(Marketing, na.rm = TRUE),
            Inventory = sum(Inventory, na.rm = TRUE))

# Buat plot ggplot
p <- ggplot(monthly_data, aes(x = Month)) +
  geom_line(aes(y = Sales, color = "Sales"), size = 1.2) +
  geom_line(aes(y = COGS, color = "COGS"), size = 1.2) +
  geom_line(aes(y = Marketing, color = "Marketing"), size = 1.2) +
  geom_line(aes(y = Inventory, color = "Inventory"), size = 1.2) +
  labs(title = "Tren Bulanan: Sales, COGS, Marketing, dan Inventory",
       x = "Bulan", y = "Jumlah (Rp)", color = "Kategori", xanchor = 'center', font = list(size = 16), x = 0.5) +
  scale_color_manual(values = c("Sales" = "#706233",
                                "COGS" = "#B0926A",
                                "Marketing" = "#E1C78F", 
                                "Inventory" = "#FAE7C9")) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.title.x = element_text(face = "bold"),
    axis.title.y = element_text(face = "bold"),
    plot.margin = margin(t = 10, r = 8, b = 10, l = 8),
    legend.title = element_blank()
  )
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
fig <- ggplotly(p) %>% config(displayModeBar = FALSE)
fig

Interpretasi :
Grafik Tren Bulanan: Sales, COGS, Marketing, dan Inventory menunjukkan bahwa kategori Inventory memiliki nilai yang paling tinggi dibandingkan kategori lainnya, dengan tren yang cenderung meningkat secara konsisten selama periode 2012 hingga awal 2014, meskipun sempat mengalami penurunan tajam pada awal tahun 2013. Sales juga menunjukkan pertumbuhan stabil dari waktu ke waktu, sementara COGS dan Marketing berada pada level yang lebih rendah dan relatif stabil. Pola ini mencerminkan bahwa pengeluaran untuk inventaris menjadi komponen utama dalam operasional bisnis, sementara biaya pemasaran dan biaya pokok penjualan dijaga dalam batas yang terkendali. Ini dapat menjadi indikator efisiensi operasional dan strategi pengelolaan sumber daya yang baik.

Pengaruh Biaya terhadap Sales

monthly_stacked <- melt(monthly_data, id.vars = "Month", measure.vars = c("COGS", "Marketing", "Sales"))

join <- ggplot(monthly_stacked, aes(x = Month, y = value, fill = variable)) +
  geom_bar(stat = "identity") +
  labs(title = "Pengaruh Biaya terhadap Sales",
       x = "Bulan", y = "Jumlah (Rp)", fill = "Komponen") +
  scale_fill_manual(values = c("Sales" = "#706233",
                                "COGS" = "#B0926A",
                                "Marketing" = "#E1C78F"
                )) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.title.x = element_text(face = "bold"),
    axis.title.y = element_text(face = "bold"),
    plot.margin = margin(t = 10, r = 8, b = 10, l = 8),
    legend.title = element_blank()
  )


fig <- ggplotly(join) %>% config(displayModeBar = FALSE)
fig

Interpretasi : Grafik Pengaruh Biaya terhadap Sales menunjukkan bahwa nilai penjualan (Sales) per bulan terdiri dari kontribusi dua komponen utama, yaitu biaya pemasaran (Marketing) dan biaya pokok penjualan (COGS). Sepanjang periode dari awal 2012 hingga awal 2014, tren penjualan mengalami peningkatan secara bertahap, dengan puncak terlihat pada pertengahan hingga akhir tahun 2012 dan pertengahan 2013. Meskipun terdapat fluktuasi kecil, komposisi biaya dalam total penjualan terlihat cukup konsisten, di mana porsi terbesar tetap berasal dari nilai penjualan bersih itu sendiri, diikuti oleh COGS dan marketing. Hal ini mencerminkan bahwa peningkatan penjualan cenderung tidak diiringi oleh lonjakan biaya yang signifikan, yang menunjukkan pengelolaan biaya yang efisien dalam mendukung pertumbuhan penjualan.

PENUTUP

Kesimpulan

Berdasarkan hasil analisis data penjualan dan biaya operasional pada Coffe Chain, dapat disimpulkan bahwa:
  1. COGS (Cost of Goods Sold) memiliki kontribusi yang stabil dan signifikan dalam struktur penjualan bulanan. Biaya ini mencerminkan langsung pengeluaran untuk produksi atau pengadaan produk, dan proporsinya yang konsisten menunjukkan bahwa peningkatan penjualan berjalan seiring dengan efisiensi biaya pokok.

  2. Marketing memberikan pengaruh positif terhadap sales, meskipun nilainya relatif lebih kecil dibandingkan COGS. Namun, stabilitas dan konsistensi biaya marketing menunjukkan bahwa strategi pemasaran yang dijalankan cukup efektif dalam mendukung pertumbuhan penjualan tanpa menimbulkan lonjakan pengeluaran yang besar.

  3. Inventory merupakan komponen biaya yang bernilai tinggi dan menunjukkan tren peningkatan yang selaras dengan pertumbuhan penjualan. Hal ini mengindikasikan bahwa kapasitas penyimpanan dan manajemen stok memainkan peran penting dalam menjaga kontinuitas pasokan untuk memenuhi permintaan pasar.

Secara keseluruhan, peningkatan nilai Sales terjadi seiring dengan pertumbuhan Inventory dan stabilnya pengeluaran untuk Marketing dan COGS, yang menunjukkan bahwa penjualan dapat ditingkatkan tanpa harus menaikkan biaya secara proporsional.

Rekomendasi Strategis

Beberapa rekomendasi strategis yang dapat diterapkan untuk meningkatkan performa penjualan Coffe Chain:
  1. Penguatan Pengelolaan Inventory
    Inventory merupakan komponen biaya terbesar yang beriringan dengan tren penjualan. Oleh karena itu, diperlukan strategi pengelolaan stok yang lebih cermat, seperti penerapan sistem just in time, otomatisasi pencatatan stok, serta peramalan permintaan berbasis data historis. Hal ini bertujuan untuk menjaga ketersediaan produk secara optimal tanpa menimbulkan biaya penyimpanan yang berlebihan.

  2. Optimalisasi Strategi Marketing
    Meskipun biaya marketing tidak sebesar biaya lainnya, pengaruhnya terhadap penjualan tetap penting. Oleh karena itu, pemasaran perlu dilakukan secara terarah dengan pendekatan berbasis data, seperti digital marketing yang disesuaikan dengan target pasar, evaluasi efektivitas promosi, dan program loyalitas pelanggan yang dapat mendorong pembelian berulang.