Header Image

Analisis Pengaruh Biaya Pemasaran dan Harga Pokok Penjualan terhadap Keuntungan di Pasar Utama Amerika Serikat

Oleh: Catharina Vanessa Gracia | 12 May 2025

Table of Content

Pendahuluan

Bisnis coffeeshop saat ini mengalami pertumbuhan yang pesat, ditandai dengan menjamurnya gerai-gerai baru di berbagai wilayah, baik di kawasan perkotaan maupun pinggiran. Di tengah persaingan yang semakin ketat, para pelaku usaha dituntut untuk lebih cermat dalam mengelola biaya operasional, khususnya biaya pemasaran dan harga pokok penjualan (HPP), agar tetap mampu meraih keuntungan optimal. Di pasar utama seperti Amerika Serikat, di mana industri makanan dan minuman sangat kompetitif, pemahaman terhadap pengaruh dua faktor biaya tersebut menjadi sangat krusial. Oleh karena itu, analisis ini bertujuan untuk meninjau seberapa besar pengaruh biaya pemasaran dan HPP terhadap keuntungan bisnis, khususnya dalam konteks pasar coffeeshop di Amerika Serikat.

Namun, analisis ini sering kali menghadapi tantangan dari keberadaan outlier, heteroskedastisitas dan pengaruh nilai-nilai ekstrem dalam data keuangan yang dapat mengganggu estimasi parameter jika hanya menggunakan metode regresi linier klasik. Sehingga penelitian ini menggunakan pendekatan regresi robust sebagai metode analisis. Regresi robust dirancang untuk menghasilkan estimasi yang lebih stabil dan reliabel meskipun terdapat pencilan atau pelanggaran asumsi-asumsi klasik dalam regresi.

Analisis

Metode Analisis

  1. Regresi Robust
    Metode analisis regresi yang dirancang untuk memberikan estimasi parameter yang tahan terhadap pelanggaran asumsi klasik, terutama terhadap pencilan (outlier) dan data yang tidak berdistribusi normal atau memiliki heteroskedastisitas.

  2. Uji S
    Merupakan salah satu metode dalam regresi robust yang digunakan untuk mengestimasi parameter regresi dengan mengutamakan ketahanan terhadap outlier. Tujuan utama dari Uji S adalah meminimalkan ukuran penyebaran (scale) dari residual, sambil menjaga agar model tetap representatif terhadap sebagian besar data yang “normal”.

Rumus Umum
\[\ K= \frac{1}{n}\sum_{i=1}^{n}\rho(\frac{r_i}{s})\]

Keterangan :
K: Nilai konstanta yang ditentukan untuk mencapai efisiensi tertentu,
n: Jumlah tota data,
\(\rho\): Fungsi kerugian (loss function) robust,
\(r_i\): Residu ke-\(i\), selisih antara \(y_i\) dan \(\hat{y}_i\),
\(s\): Estimasi skala residu yang dicari.

Implementasi Metode

  • Library

Penelitian ini dimulai dengan pemuatan package yang diperlukan dengan library()

library(readr) 
library(car) 
library(MASS) 
library(lmtest) 
library(readxl)
library(ggplot2)
  • Deskripsi Data
Data yang digunakan dalam analisis ini adalah data dari dataset Coffee Chain. Dataset ini sudah diolah kembali menjadi dataset yang hanya memuat 3 variable saja, yaitu :
Jenis Variabel Peran
COGS X1
Marketing X2
Profit Y
Berikut ini merupakan data yang digunakan dalam pengujian ini atau dapat diunduh di sini

data <- read_excel("C:/Users/Temy/Downloads/COFFEE.xlsx")
print(data)
## # A tibble: 408 × 3
##       X1    X2     Y
##    <dbl> <dbl> <dbl>
##  1    89    24    94
##  2    83    27    68
##  3    95    26   101
##  4   144    47   111
##  5    95    30    87
##  6    60    19    34
##  7    57    18    42
##  8    63    57     0
##  9    84    26    67
## 10    84    27    68
## # ℹ 398 more rows
  • Model Regresi Klasik

Membuat model regresi klasik dengan menggunakan fungsi lm() seperti berikut :

MKT=lm(Y~.,data=data)

#Model Regresi Klasik
summary(MKT)
## 
## Call:
## lm(formula = Y ~ ., data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -434.08  -35.83  -12.68   36.49  708.03 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  28.7862    14.6040   1.971 0.049390 *  
## X1            1.1519     0.3475   3.315 0.000999 ***
## X2           -1.1007     1.0249  -1.074 0.283490    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 158 on 405 degrees of freedom
## Multiple R-squared:  0.1498, Adjusted R-squared:  0.1456 
## F-statistic: 35.68 on 2 and 405 DF,  p-value: 5.343e-15

Maka didapatkan bahwa model regresi klasiknya adalah

\[\hat{Y}=28.782+1.1519X_1 - 1.1007X_2\] Interpretasi

  1. Setiap kenaikan 1 unit pada \(X_1\) akan meningkatkan Y sebesar 1.1519, dengan asumsi X2 konstan. Nilainya signifikan secara statistik \(p-value < 0.001\)
  2. Setiap kenaikan 1 unit pada \(X_2\) akan menurunkan Y sebesar 1.1007, dengan asumsi X1 konstan. Namun, tidak signifikan secara statistik \(p-value = 0.283 > 0.05\).
  • Uji Normalitas

Setelah model regresi klasik ditemukan, dilakukan Uji Normalitas.

Uji ini dilakukan untuk memastikan bahwa residual mengikuti distribusi normalatau tidak dengan menggunakan uji seperti Shapiro-Wilk.

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

  2. \(\alpha=0{,}05\)

  3. Daerah Kritis:
    \(H_0\) ditolak jika \(p_0 < \alpha=0{,}05\)

  4. Statistik Uji:

    shapiro.test(MKT$residuals)
    ## 
    ##  Shapiro-Wilk normality test
    ## 
    ## data:  MKT$residuals
    ## W = 0.80565, p-value < 2.2e-16
    ggplot(data.frame(res = MKT$residuals), aes(sample = res)) +
      stat_qq() +
      stat_qq_line(color = "#870929") +
      ggtitle("Plot Residu Model")

  5. Kesimpulan
    Dikarenakan \(p_0=2.2e{-}16 < \alpha=0{,}05\), artinya \(H_0\) DITOLAK.
    Sehingga residual model tidak berdistribusi normal dan membutuhkan pendekatan seperti Regresi Robust.

  • Regresi Robust: Estimasi S
  1. Iterasi ke-n
    Proses estimasi dilakukan secara iteratif hingga model mencapai titik konvergensi, yaitu ketika perubahan antar iterasi menjadi sangat kecil dan stabil, yang dalam penelitian ini tercapai hingga iterasi ke-n. 
  • Model Awal Estimator S
Beta <- matrix(nrow=408,ncol=3)
Beta[1, ] <- MKT$coefficients
j <- 1
tol <- c(1,rep=3)
sig<-(median(abs(MKT$residuals-(median(MKT$residuals)))))/0.6745
u<-MKT$residuals/sig
absui<-abs(u)
w<-weights(MKT)
for (i in 1:408){
  if
  (absui[i]<=1.547){w[i]=1-((u[i]/1.547)^2)^2}
  else {w[i]=0}
}
models<- lm(Y~ .,data=data, weight = w)
Beta[j+1, ]<-models$coefficients
summary(models)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w)
## 
## Weighted Residuals:
##    Min     1Q Median     3Q    Max 
## -69.29 -11.85   0.00  10.00  46.42 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.05009    2.61664   0.019    0.985    
## X1           1.63572    0.05537  29.543   <2e-16 ***
## X2          -1.95812    0.16662 -11.752   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 23.26 on 307 degrees of freedom
## Multiple R-squared:  0.9077, Adjusted R-squared:  0.9071 
## F-statistic:  1510 on 2 and 307 DF,  p-value: < 2.2e-16
  • Iterasi 1
#Iterasi 1
Beta1 <- matrix(nrow=408,ncol=3)
Beta1[1,] <- models$coefficients
j <- 1
toln <- c(1,rep=3)
while (any(abs(toln)>0.001)){
  res1 <- models$residuals
  Yhat1 <- models$fitted.values
  sigma.hat1 <- sqrt((1/(408*0.199))*sum(w*((models$residuals)^2)))
  u1 <- models$residuals/sigma.hat1
  absu1 <- abs(u1)
  c <- 1.547
  up1 <- ((u1[i]^2/2)-(u1[i]^4/(2*c^2))+(u1[i]^6/(6*c^4)))/(u1[i])^2
  w1<-weights(models)
  for (i in 1:408){
    if (absu1[i]<=1.547){w1[i]=up1}
    else {w1[i]=((c^2/6)/u1[i]^2)}
  }
  models1 <- lm(Y~ .,data=data, weight = w1)
  Beta1[j+1,] <- models1$coefficients
  toln <- Beta1[j+1,]-Beta1[j,]
  j <- j+1
}
summary(models1)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w1)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -1108.10  -197.17   -28.87   134.36   973.58 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.36969    2.35429  -0.582    0.561    
## X1           1.69686    0.04932  34.406   <2e-16 ***
## X2          -2.04984    0.14819 -13.833   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 352.6 on 405 degrees of freedom
## Multiple R-squared:  0.9127, Adjusted R-squared:  0.9123 
## F-statistic:  2118 on 2 and 405 DF,  p-value: < 2.2e-16
  • Iterasi 2
#Iterasi 2
Beta2 <- matrix(nrow=408,ncol=3)
Beta2[1,] <- models1$coefficients
j <- 1
toln <- c(1,rep=3)
while (any(abs(toln)>0.001)){
  res2 <- models1$residuals
  Yhat2 <- models1$fitted.values
  sigma.hat2 <- sqrt((1/(408*0.199))*sum(w*((models1$residuals)^2)))
  u2 <- models1$residuals/sigma.hat2
  absu2 <- abs(u2)
  c <- 1.547
  up2 <- ((u2[i]^2/2)-(u2[i]^4/(2*c^2))+(u2[i]^6/(6*c^4)))/(u2[i])^2
  w2<-weights(models1)
  for (i in 1:408){
    if (absu2[i]<=1.547){w2[i]=up2}
    else {w2[i]=((c^2/6)/u2[i]^2)}
  }
  models2 <- lm(Y~ .,data=data, weight = w2)
  Beta2[j+1,] <- models2$coefficients
  toln <- Beta2[j+1,]-Beta2 [j,]
  j <- j+1
}
summary(models2)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w2)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -1116.82  -198.72   -28.81   135.38   981.22 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.37034    2.35431  -0.582    0.561    
## X1           1.69686    0.04932  34.405   <2e-16 ***
## X2          -2.04982    0.14819 -13.833   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 355.4 on 405 degrees of freedom
## Multiple R-squared:  0.9127, Adjusted R-squared:  0.9123 
## F-statistic:  2118 on 2 and 405 DF,  p-value: < 2.2e-16
  • Iterasi 3
#Iterasi 3
Beta3 <- matrix(nrow=408,ncol=3) 
Beta3[1,] <- models2$coefficients 
j <- 1 
toln <- c(1,rep=3) 
while (any(abs(toln)>0.001)){ 
  res3 <- models2$residuals 
  Yhat3 <- models2$fitted.values 
  sigma.hat3 <- sqrt((1/(408*0.199))*sum(w*((models2$residuals)^2))) 
  u3 <- models2$residuals/sigma.hat3
  absu3 <- abs(u3) 
  c <- 1.547 
  up3 <- ((u3[i]^2/2)-(u3[i]^4/(2*c^2))+(u3[i]^6/(6*c^4)))/(u3[i])^2 
  w3<-weights(models2) 
  for (i in 1:408){ 
    if (absu3[i]<=1.547){w3[i]=up3} 
    else {w3[i]=((c^2/6)/u3[i]^2)} 
  } 
  models3 <- lm(Y~ .,data=data, weight = w3) 
  Beta3[j+1,] <- models3$coefficients 
  toln <- Beta3[j+1,]-Beta3[j,] 
  j <- j+1 
}
summary(models3)
## 
## Call:
## lm(formula = Y ~ ., data = data, weights = w3)
## 
## Weighted Residuals:
##      Min       1Q   Median       3Q      Max 
## -1116.82  -198.72   -28.81   135.38   981.21 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.37034    2.35431  -0.582    0.561    
## X1           1.69686    0.04932  34.405   <2e-16 ***
## X2          -2.04982    0.14819 -13.833   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 355.4 on 405 degrees of freedom
## Multiple R-squared:  0.9127, Adjusted R-squared:  0.9123 
## F-statistic:  2118 on 2 and 405 DF,  p-value: < 2.2e-16
  1. Model Regresi Robust Terbaik
    Setelah melalui beberapa iterasi dan evaluasi model, diperoleh models3 sebagai model terbaik. Oleh karena itu, model ini dapat dianggap sebagai representasi yang handal dalam menjelaskan hubungan antara variabel dependen dan independen dalam data yang digunakan.
  • Pencilan

Dalam analisis regresi, salah satu langkah penting untuk mengevaluasi pengaruh individu pengamatan terhadap model regresi adalah dengan menggunakan DFITS (Difference in Fits). DFITS mengukur sejauh mana perubahan dalam estimasi parameter regresi akan terjadi jika pengamatan tertentu dihilangkan. Nilai DFITS yang besar menunjukkan bahwa suatu pengamatan dapat dianggap sebagai pengamatan pencilan yang memiliki pengaruh besar terhadap hasil model.

Untuk menilai potensi pengamatan yang ekstrem, pertama-tama dihitung nilai DFITS keseluruhan, yang menggambarkan seberapa besar kontribusi setiap data terhadap perubahan model. Selanjutnya ducari nilai pembanding untuk DFITS.

nilai.pembanding.dffits= 2*sqrt (3/408)
nilai.pembanding.dffits
## [1] 0.1714986

Karena nilai pembanding untuk DFITS adalah models3 maka berikut adalah data yang merupakan pencilan.

# Inisialisasi vektor untuk simpan pencilan
pencilan <- c()

# Loop untuk cek nilai DFFITS yang lebih besar dari threshold
for (i in 1:length(nilai_dffits)) {
  if (abs(nilai_dffits[i]) > nilai.pembanding.dffits) {
    pencilan <- c(pencilan, nilai_dffits[i])
  }
}

# Tampilkan pencilan
print(pencilan)
##         13         30         48         64         81         98        116 
## -0.2479695 -0.2614321 -0.2632080 -0.2603557 -0.3331734 -0.3502175 -0.3993326 
##        150        166        183        200        309        310        326 
## -0.3806068 -0.3405735 -0.3049964 -0.3497338  0.1716069  0.2158454  0.1804555 
##        341        358        375        392        395 
##  0.2091486  0.2022054  0.1934358  0.2091486  0.2632864

Kesimpulan

Setelah dilakukan Analisis menggunakan Regresi Robust terhadap pengaruh biaya pemasaran dan harga pokok penjualan terhadap keuntungan di Pasar Utama Amerika Serikat, maka didapat model regresi robust sebagai berikut

\[\hat{Y}=-1.37034+1.69686X_1 - 2.04982X2\]

Interpretasi

  1. Dengan asumsi variabel lainnya konstan, setiap kenaikan 1 satuan pada \(X_1\) atau Harga Pokok Penjualan akan meningkatkan nilai Y sebesar 1.69686 satuan. Koefisien ini signifikan secara statistik (p < 0.001), yang menunjukkan bahwa \(X_1\) adalah prediktor yang sangat berpengaruh terhadap Y.
  2. Dengan asumsi variabel lainnya konstan, setiap kenaikan 1 satuan pada \(X_2\) atau Biaya Pemasaran akan menurunkan nilai Y sebesar 2.04982 satuan. Koefisien ini juga signifikan secara statistik (p < 0.001), menunjukkan bahwa \(X_2\) juga merupakan prediktor yang penting.

Model regresi ini memberikan wawasan penting bahwa pengeluaran untuk Harga Pokok Penjualan saat ini berasosiasi positif dengan keuntungan, sementara biaya marketing masih belum memberikan kontribusi keuntungan yang positif. Oleh karena itu, strategi pemasaran perlu ditinjau kembali agar bisa memberikan hasil yang lebih efisien dan berdampak positif terhadap profit perusahaan.