library(tidyverse) # data manipulation
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'ggplot2' was built under R version 4.4.3
## Warning: package 'tidyr' was built under R version 4.4.3
## Warning: package 'readr' was built under R version 4.4.3
## Warning: package 'dplyr' was built under R version 4.4.2
## Warning: package 'forcats' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(broom) # clustering algorithms
library(datarium) # clustering algorithms & visualization
## Warning: package 'datarium' was built under R version 4.4.3
library(ggplot2)
data("marketing")
head(marketing, 3)
## youtube facebook newspaper sales
## 1 276.12 45.36 83.04 26.52
## 2 53.40 47.16 54.12 12.48
## 3 20.64 55.08 83.16 11.16
tail(marketing, 3)
## youtube facebook newspaper sales
## 198 212.40 11.16 7.68 15.36
## 199 340.32 50.40 79.44 30.60
## 200 278.52 10.32 10.44 16.08
model <- lm(sales ~ youtube, data = marketing)
model
##
## Call:
## lm(formula = sales ~ youtube, data = marketing)
##
## Coefficients:
## (Intercept) youtube
## 8.43911 0.04754
Maka dipeloleh model persamaan linier sebagai berikut Sales = 8.439 + 0.047Youtube
model.diag.metrics <- augment(model)
ggplot(model.diag.metrics, aes(x = youtube, y = sales)) +
geom_point(color = "gold", alpha = 0.7, size = 2) +
geom_smooth(method = "lm", se = FALSE, color = "blue", linewidth = 1) +
geom_segment(aes(xend = youtube, yend = .fitted),
color = "red", linewidth = 0.5, alpha = 0.7) +
labs(
title = "Plot Residual antara Iklan YouTube dan Penjualan",
subtitle = "Garis merah menunjukkan selisih antara nilai aktual dan prediksi (residual)",
x = "Jumlah Iklan di YouTube",
y = "Penjualan",
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold"),
plot.subtitle = element_text(size = 10),
axis.title = element_text(face = "bold")
)
## `geom_smooth()` using formula = 'y ~ x'
Plot tersebut menunjukkan hubungan antara iklan YouTube dan penjualan dengan garis regresi linier biru serta garis residual vertikal merah. Terlihat bahwa panjang garis residual semakin besar seiring meningkatnya nilai iklan, yang mengindikasikan adanya heteroskedastisitas atau varian residual yang tidak konstan. Hal ini merupakan pelanggaran terhadap asumsi dasar regresi linier dan menunjukkan bahwa model cenderung kurang akurat dalam memprediksi penjualan pada volume iklan yang lebih tinggi.
plot(model, 1)
Grafik residual terhadap nilai prediksi (fitted values) menunjukkan
bahwa seiring meningkatnya nilai prediksi, sebaran atau variasi residual
juga semakin besar. Pola ini mengindikasikan adanya heteroskedastisitas,
yaitu kondisi di mana varian residual tidak konstan. Hal tersebut
merupakan pelanggaran terhadap salah satu asumsi dasar regresi linier
yang menyatakan bahwa residual harus memiliki varian yang homogen
(homoskedastisitas). Kehadiran heteroskedastisitas ini dapat menyebabkan
estimasi koefisien regresi menjadi kurang akurat dan menyesatkan dalam
interpretasi hasil analisis, terutama dalam hal uji signifikansi dan
pembuatan prediksi.
plot(model, 3)
Grafik Scale-Location menunjukkan bahwa seiring meningkatnya nilai prediksi (fitted values), variansi dari residual yang sudah distandarisasi juga ikut meningkat. Hal ini terlihat dari garis merah yang cenderung naik dan penyebaran titik-titik residual yang semakin lebar di sisi kanan grafik. Pola tersebut mengindikasikan adanya heteroskedastisitas, yaitu ketidakkonstanan varians residual. Kondisi ini melanggar asumsi dasar regresi linier yang mengharuskan residual memiliki varians yang homogen (homoskedastisitas), sehingga dapat memengaruhi keakuratan hasil regresi, terutama dalam hal keandalan estimasi dan prediksi.
#With Packages in R
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.4.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(sandwich)
## Warning: package 'sandwich' was built under R version 4.4.3
#Without Packages
model <- lm(marketing$sales ~ marketing$youtube)
resid_sq <- residuals(model)^2
model_resid <- lm(resid_sq ~ marketing$youtube)
variance_est <- fitted(model_resid)
epsilon <- 1e-6
safe_variance_est <- variance_est
safe_variance_est[safe_variance_est <= 0] <- epsilon
wls_model <- lm(marketing$sales ~ marketing$youtube, weights = 1/safe_variance_est)
# Lihat hasil model WLS
summary(wls_model)
##
## Call:
## lm(formula = marketing$sales ~ marketing$youtube, weights = 1/safe_variance_est)
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -1859.76 -13.58 -10.88 -7.18 2073.07
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.29885 0.23466 14.06 <2e-16 ***
## marketing$youtube 0.31304 0.02207 14.19 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 317.4 on 198 degrees of freedom
## Multiple R-squared: 0.504, Adjusted R-squared: 0.5015
## F-statistic: 201.2 on 1 and 198 DF, p-value: < 2.2e-16
cat("\nHasil dengan Robust Standard Error:\n")
##
## Hasil dengan Robust Standard Error:
coeftest(model, vcov. = vcovHC(model, type = "HC1"))
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.4391123 0.3999094 21.103 < 2.2e-16 ***
## marketing$youtube 0.0475366 0.0028624 16.607 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan hasil analisis regresi, terdapat dua pendekatan yang digunakan untuk menangani heteroskedastisitas, yaitu model Weighted Least Squares (WLS) dan model Ordinary Least Squares (OLS) dengan robust standard error. Pada model WLS, diperoleh koefisien regresi sebesar 0.31304 untuk variabel marketing$youtube, yang menunjukkan bahwa setiap peningkatan 1 satuan dalam iklan YouTube diperkirakan akan meningkatkan penjualan sebesar 0.31 satuan, dengan asumsi variansi residual telah dikoreksi. Nilai p-value dari koefisien ini adalah < 2.2e-16, yang jauh lebih kecil dari tingkat signifikansi 0.05, sehingga kita menolak H₀ (hipotesis nol) dan menyimpulkan bahwa variabel youtube berpengaruh signifikan terhadap sales. Model ini juga menunjukkan nilai R² sebesar 0.504, yang berarti sekitar 50,4% variasi penjualan dapat dijelaskan oleh iklan YouTube. Sementara itu, pada model OLS yang diperbaiki dengan robust standard error, koefisien untuk variabel youtube adalah 0.04754, dengan p-value yang juga sangat kecil (< 2.2e-16). Hal ini mengindikasikan bahwa meskipun tanpa mengubah bentuk model, namun setelah koreksi terhadap standard error, variabel youtube tetap signifikan secara statistik. Oleh karena itu, pada kedua pendekatan tersebut, kita menolak H₀ dan menyimpulkan bahwa pengaruh iklan YouTube terhadap penjualan bersifat signifikan.
log.model <- lm(log(sales) ~ youtube, data = marketing)
log.model
##
## Call:
## lm(formula = log(sales) ~ youtube, data = marketing)
##
## Coefficients:
## (Intercept) youtube
## 2.189514 0.003156
model persamaan linier sebagai berikut Sales = 2.189 + 0.003Youtube
bptest(log.model)
##
## studentized Breusch-Pagan test
##
## data: log.model
## BP = 1.1959, df = 1, p-value = 0.2742
Dilihat di p-value telah lebih dari 0.05 artinya model tidak menunjukkan gejala heteroskedastisitas atau model bersifat homoskedastisitas. Dengan demikian, dapat disimpulkan bahwa model regresi memenuhi asumsi homoskedastisitas, yaitu kondisi di mana variansi residual bersifat konstan pada seluruh rentang nilai variabel independen.
plot(log.model, 2)
Dapat dilihat semua titik jatuh sepanjang garis, sehingga kita dapat mengasumsikan bahwa data yang telah di transformasi berdistribusi normal.
#Without Packages
error <- residuals(log.model)
e_cdf <- ecdf(error)
t_cdf <- pnorm(error, mean = 0, sd = sd(error))
D <- max(abs(e_cdf(error) - t_cdf))
print(D)
## [1] 0.0658037
#With Packages from R
ks.test(error, "pnorm", 0, sd(error))
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: error
## D = 0.070804, p-value = 0.2686
## alternative hypothesis: two-sided
Berdasarkan hasil uji Kolmogorov-Smirnov terhadap residual (error), diperoleh nilai statistik D sebesar 0,070804 dengan p-value sebesar 0,2686. Karena p-value lebih besar dari tingkat signifikansi yang digunakan α = 0,05, maka tidak terdapat cukup bukti untuk menolak hipotesis nol. Dengan demikian, dapat disimpulkan bahwa data residual berdistribusi normal.
ks.test(error, "pnorm", 0, sd(residuals(model)))
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: error
## D = 0.45656, p-value < 2.2e-16
## alternative hypothesis: two-sided
Berdasarkan hasil uji Kolmogorov-Smirnov terhadap model asli, diperoleh nilai statistik D sebesar 0,45656 dengan p-value kurang dari 2.2e-16. Karena p-value jauh lebih kecil daripada tingkat signifikansi 0,05, maka hipotesis nol yang menyatakan bahwa residual berdistribusi normal ditolak. Dengan demikian, dapat disimpulkan bahwa residual tidak berdistribusi normal, yang berarti salah satu asumsi dasar dalam analisis regresi linier tidak terpenuhi.
#Without Function
n <- dim(marketing)[1]
r <- cor(error[-1], error[-n])
DW <- 2*(1-r)
DW
## [1] 1.819105
dU <- 1.778
if(DW > dU && DW < 4-dU){
cat("No Autocorrelation, DW = ", DW)
} else {
cat("Autocorrelation exists, DW = ", DW)
}
## No Autocorrelation, DW = 1.819105
#With Function From R
dwtest(log.model)
##
## Durbin-Watson test
##
## data: log.model
## DW = 1.81, p-value = 0.08847
## alternative hypothesis: true autocorrelation is greater than 0
Berdasarkan hasil autocorelation pada uji Durbin-Watson, diperoleh nilai statistik DW sebesar 1,81 dengan p-value sebesar 0,08847. Karena p-value lebih besar dari tingkat signifikansi 0,05, maka tidak terdapat cukup bukti untuk menolak hipotesis nol. Dengan demikian, dapat disimpulkan bahwa tidak terdapat autokorelasi positif pada residual model. Ini menunjukkan bahwa asumsi bebas autokorelasi dalam analisis regresi linier telah terpenuhi.
dwtest(model)
##
## Durbin-Watson test
##
## data: model
## DW = 1.9347, p-value = 0.3213
## alternative hypothesis: true autocorrelation is greater than 0
Berdasarkan hasil uji Durbin-Watson terhadap model, diperoleh nilai statistik DW sebesar 1,9347 dengan p-value sebesar 0,3213. Karena p-value jauh lebih besar dari tingkat signifikansi 0,05, maka tidak ada cukup bukti untuk menolak hipotesis nol. Dengan demikian, dapat disimpulkan bahwa tidak terdapat autokorelasi positif pada residual model ini. Ini berarti asumsi kemandirian residual dalam analisis regresi linier terpenuhi.
model.mlr <- lm(sales ~ youtube + facebook + newspaper, data = marketing)
model.mlr
##
## Call:
## lm(formula = sales ~ youtube + facebook + newspaper, data = marketing)
##
## Coefficients:
## (Intercept) youtube facebook newspaper
## 3.526667 0.045765 0.188530 -0.001037
Model persamaan linier sales = 3.527 + 0.046youtube + 0.188facebook − 0.001newspaper
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.4.3
##
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
##
## smiths
library(ggplot2)
library(dplyr)
marketing$fit.r <- model.mlr$residuals
marketing$fit.p <- model.mlr$fitted.values
marketing %>%
melt(measure.vars = c("youtube", "facebook", "newspaper", "fit.p")) %>%
ggplot(aes(x = value, y = fit.r, color = variable)) +
geom_point(shape = 1, alpha = 0.7) +
geom_smooth(method = "loess", se = FALSE, linewidth = 1) +
geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
facet_wrap(~ variable, scales = "free") +
labs(
title = "Plot Residual terhadap Variabel Prediktor dan Fitted Values",
subtitle = "Memeriksa pola residual untuk mendeteksi masalah asumsi regresi",
x = "Nilai Variabel / Nilai Prediksi (Fitted)",
y = "Residual",
color = "Variabel"
) +
theme_bw() +
theme(
plot.title = element_text(size = 14, face = "bold"),
plot.subtitle = element_text(size = 10),
legend.position = "bottom"
)
## `geom_smooth()` using formula = 'y ~ x'
Berdasarkan plot residual di atas, terlihat bahwa asumsi linearitas
belum sepenuhnya terpenuhi, karena masih terdapat pola melengkung pada
beberapa variabel terutama pada youtube dan fit.p. Pola ini
mengindikasikan hubungan antara variabel prediktor dengan residual tidak
sepenuhnya acak, yang seharusnya terjadi jika linearitas benar-benar
terpenuhi.
library(reshape2)
library(ggplot2)
library(dplyr)
marketing$fit.r <- model.mlr$residuals
marketing$fit.p <- model.mlr$fitted.values
marketing$sqrt.fit.r <- sqrt(abs(marketing$fit.r))
marketing_long <- marketing %>%
melt(measure.vars = c("youtube", "facebook", "newspaper", "fit.p"))
ggplot(marketing_long, aes(x = value, y = sqrt.fit.r, color = variable)) +
geom_point(alpha = 0.6, shape = 1) + # Transparansi titik
geom_smooth(method = "loess", se = FALSE, linewidth = 0.8) + # Lebih halus dan tebal
geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
facet_wrap(~ variable, scales = "free") +
labs(
x = "Nilai Prediksi (Fitted) atau Variabel Asli",
y = "Akar Kuadrat dari |Residual|",
title = "Scale-Location Plot untuk Memeriksa Homoskedastisitas",
subtitle = "Memeriksa apakah varians residual konstan di seluruh rentang nilai prediksi"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(size = 12),
strip.text = element_text(face = "bold", size = 11),
legend.position = "none" # Menghilangkan legend karena sudah diwakili facet
)
## `geom_smooth()` using formula = 'y ~ x'
Berdasarkan plot Scale-Location, secara umum asumsi homoskedastisitas
hampir terpenuhi, meskipun terdapat indikasi sedikit ketidakkonstanan
varians residual pada variabel youtube dan facebook. Sementara itu,
variabel newspaper dan nilai prediksi (fit.p) menunjukkan sebaran
residual yang lebih stabil.
#Without Packages
error2 <- residuals(model.mlr)^2
model.error <- lm(error2 ~ youtube + facebook + newspaper, data = marketing)
chi_stat <- dim(marketing)[1]*summary(model.error)$r.square
p_value <- 1 - pchisq(chi_stat, df = 3)
cat("BP =",chi_stat, "; p-value =", p_value)
## BP = 5.132872 ; p-value = 0.1623222
#With Packages in R
library(lmtest)
bptest(model.mlr)
##
## studentized Breusch-Pagan test
##
## data: model.mlr
## BP = 5.1329, df = 3, p-value = 0.1623
Berdasarkan hasil studentized Breusch-Pagan test, diperoleh nilai BP sebesar 5.1329 dengan p-value 0.1623. Karena p-value lebih besar dari tingkat signifikansi 0.05, maka dapat disimpulkan bahwa tidak terdapat cukup bukti untuk menolak hipotesis nol, sehingga asumsi homoskedastisitas pada model dapat dianggap terpenuhi.
plot(model.mlr, 2)
### Kolmogorov-Smirnov Uji
#Without Packages
error <- residuals(model.mlr)
e_cdf <- ecdf(error)
t_cdf <- pnorm(error, mean = 0, sd = sd(error))
D <- max(abs(e_cdf(error) - t_cdf))
print(D)
## [1] 0.1269655
#With Packages from R
ks.test(error, "pnorm", 0, sd(error))
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: error
## D = 0.13197, p-value = 0.001887
## alternative hypothesis: two-sided
Karena p-value lebih kecil dari 0.05, kita menolak hipotesis nol dan menyimpulkan bahwa data tidak berdistribusi normal.
#Without Function
n <- dim(marketing)[1]
r <- cor(error[-1], error[-n])
DW <- 2*(1-r)
DW
## [1] 2.094184
dU <- 1.778
if(DW > dU && DW < 4-dU){
cat("No Autocorrelation, DW = ", DW)
} else {
cat("Autocorrelation exists, DW = ", DW)
}
## No Autocorrelation, DW = 2.094184
#With Function From R
dwtest(model.mlr)
##
## Durbin-Watson test
##
## data: model.mlr
## DW = 2.0836, p-value = 0.7236
## alternative hypothesis: true autocorrelation is greater than 0
Karena nilia p value lebih dari 0.05 dapat disimpulkan bahwa tidak terjadi autocorrelation pada model ini ### Multicorrelation
library(corrplot)
## corrplot 0.95 loaded
# Menghitung korelasi dan menampilkan matriks korelasi
cor_matrix <- cor(marketing[, 1:4])
# Visualisasi korelasi
corrplot(cor_matrix,
method = "circle",
type = "upper",
tl.col = "black",
addCoef.col = "black",
sig.level = 0.05,
p.mat = cor.mtest(marketing[, 1:4])$p)
Berdasarkan hasil analisis korelasi, variabel youtube memiliki hubungan
positif yang kuat dengan sales dengan nilai korelasi sebesar 0,78. Ini
menunjukkan bahwa peningkatan pengeluaran iklan di Youtube berhubungan
erat dengan peningkatan penjualan. Sementara itu, variabel facebook
menunjukkan korelasi positif sedang dengan sales, yaitu sebesar 0,58,
yang berarti iklan di Facebook juga berkontribusi terhadap peningkatan
penjualan, meskipun tidak sekuat Youtube. Di sisi lain, variabel
newspaper hanya memiliki korelasi positif yang lemah dengan sales
sebesar 0,23, sehingga iklan di koran tampaknya kurang efektif dalam
mendorong penjualan. Korelasi antar platform (Youtube, Facebook, dan
Newspaper) sebagian besar rendah, menandakan bahwa pengeluaran iklan di
satu platform relatif independen dari platform lainnya. Secara
keseluruhan, untuk meningkatkan penjualan, perusahaan sebaiknya
memprioritaskan investasi pada iklan di Youtube, diikuti oleh Facebook,
dan mempertimbangkan kembali efektivitas iklan di koran.
#Without Packages
m_youtube <- lm(youtube ~ facebook + newspaper, data = marketing)
m_facebook <- lm(facebook ~ youtube + newspaper, data = marketing)
m_newspaper <- lm(newspaper ~ youtube + facebook, data = marketing)
R2_youtube <- summary(m_youtube)$r.sq
R2_facebook <- summary(m_facebook)$r.sq
R2_newspaper <- summary(m_newspaper)$r.sq
VIF_y <- 1/(1-R2_youtube)
VIF_f <- 1/(1-R2_facebook)
VIF_n <- 1/(1-R2_newspaper)
data.frame(Youtube = VIF_y,
Facebook = VIF_f,
Newspaper = VIF_n)
## Youtube Facebook Newspaper
## 1 1.004611 1.144952 1.145187
#With Packages from R
library(car)
## Warning: package 'car' was built under R version 4.4.2
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
## The following object is masked from 'package:purrr':
##
## some
vif(model.mlr)
## youtube facebook newspaper
## 1.004611 1.144952 1.145187
Terlihat bahwa nilai vif semua variabel kurang dari 4, mengindikasikan tidak ada multikorelasi yang terjadi
set.seed(123)
marketing$X4 <- 0.5 * marketing$facebook + marketing$newspaper + rnorm(n, 0, 2)
model.update <- lm(sales ~ youtube + facebook + newspaper + X4, data = marketing)
summary(model.update)
##
## Call:
## lm(formula = sales ~ youtube + facebook + newspaper + X4, data = marketing)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.2145 -0.9580 0.3256 1.4265 3.5258
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.528939 0.371577 9.497 < 2e-16 ***
## youtube 0.045543 0.001389 32.780 < 2e-16 ***
## facebook 0.264243 0.039402 6.706 2.1e-10 ***
## newspaper 0.148471 0.076176 1.949 0.0527 .
## X4 -0.149359 0.075876 -1.968 0.0504 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.008 on 195 degrees of freedom
## Multiple R-squared: 0.8992, Adjusted R-squared: 0.8971
## F-statistic: 434.9 on 4 and 195 DF, p-value: < 2.2e-16
m_x4 <- lm(X4 ~ newspaper + youtube + facebook, data = marketing)
R2_x4 <- summary(m_x4)$r.square
1/(1 - R2_x4)
## [1] 266.0315
vif(model.update)
## youtube facebook newspaper X4
## 1.01127 24.32257 195.61739 266.03155
Berdasarkan hasil regresi linear dengan sales sebagai variabel dependen dan youtube, facebook, newspaper, serta X4 sebagai variabel independen, diperoleh model dengan nilai R-squared sebesar 0,8992 dan Adjusted R-squared sebesar 0,8971. Ini menunjukkan bahwa sekitar 89,71% variasi pada sales dapat dijelaskan oleh variasi pada keempat variabel tersebut, yang berarti model ini memiliki tingkat penjelasan yang sangat baik. Koefisien untuk youtube adalah 0,0455 dengan nilai p < 0,001, menunjukkan bahwa pengaruhnya terhadap sales signifikan secara statistik. Begitu juga dengan facebook yang memiliki koefisien 0,2642 dan juga sangat signifikan. Untuk newspaper, koefisien sebesar 0,1485 dengan p-value sekitar 0,0527 menunjukkan bahwa pengaruhnya hanya mendekati signifikan (pada tingkat signifikansi 10%). Sementara itu, X4 memiliki koefisien negatif sebesar -0,1494 dengan p-value 0,0504, juga mendekati signifikan. Secara keseluruhan, model ini sangat baik dalam menjelaskan penjualan, dengan pengaruh yang paling besar dan signifikan berasal dari variabel youtube dan facebook, sedangkan newspaper dan X4 memiliki pengaruh yang lebih lemah dan kurang signifikan.
Setelah menambahkan variabel baru (X4), VIF dan R-squared menunjukkan bahwa tidak ada masalah multikolinearitas yang signifikan.