Dalam era digital saat ini, strategi pemasaran berbasis data menjadi faktor penting dalam meningkatkan penjualan produk. Perusahaan tidak hanya mengandalkan satu faktor, tetapi kombinasi berbagai indikator seperti biaya iklan, jumlah pengunjung, dan interaksi pengguna (klik).
Namun, dalam praktiknya, variabel-variabel tersebut seringkali saling berkorelasi. Misalnya, semakin banyak pengunjung yang datang ke suatu platform, maka jumlah klik yang dihasilkan juga cenderung meningkat. Hal ini dapat menimbulkan masalah multikolinearitas, yang berpotensi mengganggu kestabilan model regresi.
Penelitian ini bertujuan untuk:
Menganalisis pengaruh:
Biaya iklan
Jumlah pengunjung
Jumlah klik
terhadap penjualan produk
Mengatasi masalah multikolinearitas antar variabel independen
Membangun model prediksi penjualan yang lebih stabil dan akurat menggunakan Ridge Regression
library(glmnet)
## Loading required package: Matrix
## Loaded glmnet 4.1-10
library(car)
## Loading required package: carData
library(ggplot2)
data <- read.csv("D:/Youtube/Regresi/Ridge Regression/ridge.csv")
head(data)
## X iklan pengunjung klik penjualan
## 1 1 35.88198 683.1041 413.3919 876.3624
## 2 2 80.94746 387.8386 204.2789 756.0223
## 3 3 46.80792 376.9480 211.4521 719.6704
## 4 4 89.47157 297.7909 170.9918 686.7099
## 5 5 94.64206 432.5400 314.8398 937.7575
## 6 6 14.10008 985.7973 571.9199 1201.9530
X1 <- data$iklan
X2 <- data$pengunjung
X3 <- data$klik
Y <- data$penjualan
model_ols <- lm(Y~X1+X2+X3)
summary(model_ols)
##
## Call:
## lm(formula = Y ~ X1 + X2 + X3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -111.342 -32.421 0.594 36.690 105.660
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 90.58510 16.17207 5.601 1.45e-07 ***
## X1 3.84699 0.18131 21.217 < 2e-16 ***
## X2 0.69779 0.09757 7.152 8.24e-11 ***
## X3 0.53773 0.15797 3.404 0.000912 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 50.75 on 116 degrees of freedom
## Multiple R-squared: 0.9622, Adjusted R-squared: 0.9612
## F-statistic: 984.5 on 3 and 116 DF, p-value: < 2.2e-16
vif(model_ols)
## X1 X2 X3
## 1.009557 24.225466 24.180009
Diperoleh terdapat nilai VIF > 10 pada X2 dan X3 sehingga terjadi masalah multikolinearitas, maka kita dapat menggunakan ridge regression.
X <- as.matrix(data[, c("iklan", "pengunjung", "klik")])
Y <- data$penjualan
set.seed(123)
cv <- cv.glmnet(X,Y,alpha=0)
best_lambda <- cv$lambda.min
best_lambda
## [1] 23.08532
ridge_model <- glmnet(X, Y, alpha = 0, lambda = best_lambda)
coef(ridge_model)
## 4 x 1 sparse Matrix of class "dgCMatrix"
## s0
## (Intercept) 138.9722125
## iklan 3.4839156
## pengunjung 0.5243421
## klik 0.7416829
\[ \hat Y = 138.9722125+3.4839Iklan+0.5243Pengunjung+0.7417Klik \]
Iklan : Setiap kenaikan 1 unit iklan meningkatkan penjualan sekitar 3.48 unit
Pengunjung : tiap tambahan 1 pengunjung meningkatkan penjualan sekitar 0.52 unit
Klik : Setiap tambahan 1 klik meningkatkan penjualan sekitar 0.74 unit
y_pred_ridge <- predict(ridge_model, s = best_lambda, newx = X)
RMSE <- sqrt(mean((Y - y_pred_ridge)^2))
RMSE
## [1] 52.21647
Rata-rata kesalahan prediksi model Ridge terhadap nilai aktual penjualan adalah sekitar 52 unit.
# Mean Y
y_mean <- mean(Y)
# SSE (error)
SSE <- sum((Y - y_pred_ridge)^2)
# SST (total)
SST <- sum((Y - y_mean)^2)
# R-square
R2_ridge <- 1 - (SSE / SST)
R2_ridge
## [1] 0.9586138
Model Ridge Regression mampu menjelaskan sekitar 95.86% variasi penjualan.
plot(Y, y_pred_ridge,col = "blue",
xlab = "Aktual",ylab = "Prediksi")
abline(0, 1, col = "red", lwd = 2)