Profit merupakan salah satu indikator utama dalam mengukur kinerja dan keberlanjutan bisnis, termasuk pada industri kedai kopi (coffee chain). Dalam dunia bisnis yang kompetitif, memahami faktor-faktor internal yang mempengaruhi profit menjadi sangat krusial untuk pengambilan keputusan strategis. Oleh karena itu, analisis terhadap variabel-variabel seperti penjualan (sales), anggaran pemasaran (marketing), dan anggaran laba (budget profit) menjadi penting untuk memetakan pengaruhnya terhadap pencapaian laba bersih perusahaan.
Pada analisis ini, digunakan metode regresi robust dengan pendekatan estimasi M untuk mengatasi potensi outlier atau deviasi dari asumsi klasik regresi linier. Metode ini lebih tahan terhadap pengaruh nilai ekstrem, sehingga dapat memberikan estimasi parameter yang lebih stabil dan representatif. Estimasi M sangat sesuai digunakan pada data bisnis yang sering kali memiliki variasi tinggi dan outlier, seperti yang terlihat pada dataset Coffee Chain ini.
Dataset yang digunakan mencakup berbagai variabel internal dari beberapa cabang kedai kopi, seperti data penjualan aktual, anggaran biaya, dan margin laba. Dengan menjadikan profit sebagai variabel target, dan sales, marketing, serta budget profit sebagai variabel prediktor, analisis ini bertujuan untuk memberikan insight mendalam mengenai faktor-faktor mana yang paling berkontribusi terhadap profit. Hasil dari analisis ini diharapkan dapat memberikan rekomendasi yang dapat diimplementasikan dalam pengelolaan anggaran dan strategi pemasaran di masa depan.
Data yang digunakan adalah Dataset Coffe Chain.
library(readxl)
library(car)
## Loading required package: carData
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(knitr)
library(markdown)
library(ggplot2)
library(MASS)
library(stats)
library(car)
library(lmtest)
library(fit.models)
library(robustbase)
library(robust)
library(DT)
DataCoffeeChain <- read_excel("D:/DOWNLOAD APAPUN/3. CM1 - Coffee Chain Datasets.xlsx")
Dataset <- datatable(
DataCoffeeChain,
caption = "Datasets Coffee Chain",
options = list(
scrollX = TRUE,
pageLength = 10,
lengthMenu = c(5, 10, 15, 20)
)
)
Dataset
Pilih kolom yang dibutuhkan.
DataCoffeeChain <- DataCoffeeChain[, c("Profit", "Sales", "Marketing", "Budget Profit")]
DataCoffeeChain
## # A tibble: 4,248 × 4
## Profit Sales Marketing `Budget Profit`
## <dbl> <dbl> <dbl> <dbl>
## 1 94 219 24 100
## 2 68 190 27 80
## 3 101 234 26 110
## 4 30 100 14 30
## 5 54 134 15 70
## 6 53 180 23 80
## 7 99 341 47 110
## 8 0 150 57 20
## 9 33 140 19 40
## 10 17 130 22 20
## # ℹ 4,238 more rows
Statistika Deskriptif menampilkan nilai minimum (Min), nilai maksimum (Max), kuartil atas \((Q_1)\), median \((Q_2)\), kuartil bawah \((Q_3)\), rata-rata (Mean) pada setiap variabel. Pada analisis ini, mengambil 1 variabel dependen dan 3 variabel independen, yaitu:
Analyze <- DataCoffeeChain[, c("Profit", "Sales", "Marketing", "Budget Profit")]
summary(Analyze)
## Profit Sales Marketing Budget Profit
## Min. :-638.0 Min. : 17 Min. : 0.00 Min. :-320.00
## 1st Qu.: 17.0 1st Qu.:100 1st Qu.: 13.00 1st Qu.: 20.00
## Median : 40.0 Median :138 Median : 22.00 Median : 40.00
## Mean : 61.1 Mean :193 Mean : 31.19 Mean : 60.91
## 3rd Qu.: 92.0 3rd Qu.:230 3rd Qu.: 39.00 3rd Qu.: 80.00
## Max. : 778.0 Max. :912 Max. :156.00 Max. : 560.00
model <- lm(Profit ~ Sales + Marketing + `Budget Profit`, data = DataCoffeeChain)
summary(model)
##
## Call:
## lm(formula = Profit ~ Sales + Marketing + `Budget Profit`, data = DataCoffeeChain)
##
## Residuals:
## Min 1Q Median 3Q Max
## -281.885 -10.404 0.531 12.743 167.271
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -18.41857 0.77743 -23.69 <2e-16 ***
## Sales 0.42396 0.01061 39.96 <2e-16 ***
## Marketing -1.39018 0.03577 -38.87 <2e-16 ***
## `Budget Profit` 0.67392 0.01477 45.62 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 29.97 on 4244 degrees of freedom
## Multiple R-squared: 0.9132, Adjusted R-squared: 0.9131
## F-statistic: 1.488e+04 on 3 and 4244 DF, p-value: < 2.2e-16
Hipotesis
\(H_0\): Nilai
residual berdistribusi normal
\(H_1\): Nilai residual tidak berdistribusi
normal
Taraf Signifikansi
\(\alpha =
0,05\)
Daerah Kritis
\(\begin{aligned}
& H_0 \text{ ditolak jika } p\text{-value} < \alpha
\end{aligned}\)
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.45219, p-value < 2.2e-16
## alternative hypothesis: two-sided
shapiro.test(model$residuals)
##
## Shapiro-Wilk normality test
##
## data: model$residuals
## W = 0.83428, p-value < 2.2e-16
Hipotesis
\(H_0\): Terdapat
homoskedastisitas residu
\(H_1\): Tidak Terdapat
homoskedastisitas residu
Taraf Signifikansi
\(\alpha =
0,05\)
Daerah Kritis
\(\begin{aligned}
& H_0 \text{ ditolak jika } p\text{-value} < \alpha
\end{aligned}\)
Statistik Uji
bptest(model)
##
## studentized Breusch-Pagan test
##
## data: model
## BP = 581.66, df = 3, p-value < 2.2e-16
Hipotesis
\(H_0\): Tidak
ada autokorelasi antarresidu
\(H_1\): Terdapat autokorelasi
antarresidu
Taraf Signifikansi
\(\alpha =
0,05\)
Daerah Kritis
\(\begin{aligned}
& H_0 \text{ ditolak jika } p\text{-value} < \alpha
\end{aligned}\)
Statistik Uji
dwtest(model)
##
## Durbin-Watson test
##
## data: model
## DW = 1.8072, p-value = 1.567e-10
## alternative hypothesis: true autocorrelation is greater than 0
Hipotesis
\(H_0\): Tidak
terjadi multikolinearitas
\(H_1\): Terjadi
multikolinearitas
Taraf Signifikansi
\(\alpha =
0,05\)
Daerah Kritis
\(\begin{aligned}
& H_0 \text{ ditolak jika } \text{nilai VIF} > 10
\end{aligned}\)
Statistik Uji
vif(model)
## Sales Marketing `Budget Profit`
## 12.151156 4.415959 6.526011
Regresi robust dengan estimasi M (M-estimation) adalah metode regresi yang digunakan ketika sisaan (residual) tidak berdistribusi normal atau terdapat pencilan (outlier) yang memengaruhi model.Metode ini penting untuk analisis data yang mengandung pencilan, menghasilkan model yang tahan terhadap pengaruh pencilan.Jika asumsi regresi klasik dilanggar dan transformasi tidak efektif, regresi robust menjadi solusi terbaik.
Syarat menggunakan Estimasi M:Estimasi-M adalah salah satu metode dalam regresi
robust yang bersifat tipe maksimum likelihood (MLE).Estimator-M bersifat
tak bias dan memiliki variansi minimum, memenuhi persamaan: \[ E[\beta_n(x_1, ..., x_n)] = \beta \]
Estimasi-M merupakan perluasan dari MLE dan lebih robust terhadap
pencilan.
Prinsip estimasi-M adalah meminimumkan fungsi
Huber \(\rho(ε):\)
\[
\rho(ε) = \begin{cases}
ε^2 & \text{jika } -k \le ε \le k \\
2k|ε|-k^2 & \text{jika } ε < -k \text{ atau } ε > k
\end{cases}
\] dengan \(k = 1,5\) dan \(\hat{\sigma} = 1,483 \times MAD\) (MAD =
median deviasi absolut).Fungsi \(\rho\)
diminimumkan untuk mendapatkan estimator robust. Algoritma
Estimasi-M:
1. Gunakan estimasi awal dari metode kuadrat terkecil
(OLS).
2. Hitung sisaan \((e_i)\)
dan potong (trim) sisaan yang melebihi \(1,5
\hat{\sigma}\) .
3. Iterasi hingga konvergensi (nilai
koefisien stabil), maka model regresi didapatkan dari iterasi terakhir
yang sudah konvergen.
4. Model regresi linear robust estimasi M
adalah: \[\hat{y}_i = b_0^0 + b_1^0 x_{i1} +
\cdots + b_p^0 x_{ip}\]
1.Model awal
modelM <- lm(Profit ~ Sales + Marketing + `Budget Profit`, data = DataCoffeeChain)
2.Setup
n_iter <- 15
n_coef <- length(modelM$coefficients)
Beta <- matrix(nrow = n_iter, ncol = n_coef)
Beta[1, ] <- modelM$coefficients
tol <- rep(1, n_coef)
j <- 1
3.Loop iterasi M-estimation
while (any(abs(tol) > 0.001) & (j < n_iter)) {
res <- residuals(modelM)
Yhat <- fitted.values(modelM)
sigma_hat <- 1.483 * median(abs(res - median(res)))
res_modified <- ifelse(
abs(res) > 1.5 * sigma_hat,
sign(res) * 1.5 * sigma_hat,
res
)
pseudo_response <- Yhat + res_modified
DataModified <- DataCoffeeChain
DataModified$Profit <- pseudo_response
modelM <- lm(Profit ~ Sales + Marketing + `Budget Profit`, data = DataModified)
if (j + 1 <= n_iter) {
Beta[j + 1, ] <- modelM$coefficients
tol <- Beta[j + 1, ] - Beta[j, ]
j <- j + 1
}
}
4.Hasil akhir
final_coef <- Beta[j, ]
names(final_coef) <- names(modelM$coefficients)
summary(modelM)
##
## Call:
## lm(formula = Profit ~ Sales + Marketing + `Budget Profit`, data = DataModified)
##
## Residuals:
## Min 1Q Median 3Q Max
## -25.0736 -10.6288 0.0933 11.5011 25.0625
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -17.828060 0.383458 -46.49 <2e-16 ***
## Sales 0.412453 0.005233 78.82 <2e-16 ***
## Marketing -1.255712 0.017642 -71.18 <2e-16 ***
## `Budget Profit` 0.645759 0.007286 88.63 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 14.78 on 4244 degrees of freedom
## Multiple R-squared: 0.9761, Adjusted R-squared: 0.9761
## F-statistic: 5.776e+04 on 3 and 4244 DF, p-value: < 2.2e-16
5.Output
cat("Koefisien Estimasi M (Huber):\n")
## Koefisien Estimasi M (Huber):
print(final_coef)
## (Intercept) Sales Marketing `Budget Profit`
## -17.8280599 0.4124526 -1.2557125 0.6457587
cat("\nProses konvergensi tercapai dalam", j, "iterasi.\n")
##
## Proses konvergensi tercapai dalam 7 iterasi.
Proses konvergensi model yang berhasil dicapai dalam 7 iterasi
menunjukkan bahwa pendekatan Estimasi M (Huber) mampu memberikan hasil
yang robust dan efisien, terutama dalam menghadapi potensi gangguan dari
pencilan data (outlier). Ini memperkuat alasan metodologis yang telah
dijelaskan pada bagian pendahuluan, di mana pemilihan regresi robust
ditujukan untuk meningkatkan keandalan analisis dalam konteks bisnis
coffee chain yang kompleks.
Dari hasil estimasi, ditemukan bahwa variabel Sales dan Budget Profit
memiliki pengaruh positif terhadap Profit, dengan masing-masing
koefisien sebesar 0.412 dan 0.645. Ini menunjukkan bahwa peningkatan
penjualan dan perencanaan anggaran laba yang baik secara signifikan
mampu meningkatkan profitabilitas. Sebaliknya, variabel Marketing
menunjukkan pengaruh negatif yang cukup besar (-1.256), yang menandakan
bahwa strategi pemasaran yang diterapkan saat ini belum efektif dan
bahkan berpotensi menurunkan profit. Maka perlu dilakukan evaluasi ulang
terhadap strategi yang diterapkan.
Berdasarkan hasil yang diperoleh, analisis ini tidak hanya menunjukkan hubungan antar variabel internal terhadap profit, tetapi juga memberikan gambaran praktis yang dapat dijadikan pertimbangan awal dalam evaluasi operasional. Di sisi lain, fokus pada peningkatan penjualan serta pengelolaan anggaran laba yang lebih terarah dapat menjadi langkah konkret untuk mendorong profitabilitas. Dengan kata lain, hasil analisis ini bisa digunakan sebagai pijakan awal dalam menyusun kebijakan yang lebih tepat sasaran di masa depan, meskipun tetap perlu dikaji lebih lanjut dengan pendekatan bisnis yang menyeluruh.