Model Regresi Linier Sederhana

Packages

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) 

Input Data Marketing

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

Regresi linier sederhana

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

Plot Residual

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 residual vs Fitted

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 Scale-Location

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.

Breush-Pagan Test untuk memastikan heteroskedastisitas

#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.

Model

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

Breush-Pagan Tes untuk model

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 Normal Q-Q (untuk memeriksa normalitas residual)

plot(log.model, 2)

Dapat dilihat semua titik jatuh sepanjang garis, sehingga kita dapat mengasumsikan bahwa data yang telah di transformasi berdistribusi normal.

Kolmogorov-Smirnov Uji

#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.

Kolmogorov-Smirnov Uji pada model asli

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.

Autocorrelation using Durbin - Watson

#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.

Autocorrelation using Durbin - Watson pada model asli

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 Regresi Linier berganda

Regresi linier berganda

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

Plot residual vs Fitted (untuk memeriksa linearitas)

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.

Plot Skala-Lokasi (untuk memeriksa homoskedastisitas)

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.

Breush-Pagan Test untuk memastikan heteroskedastisitas

#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 Normal Q-Q (untuk memeriksa normalitas residual)

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.

Autocorrelation using Durbin - Watson

#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.

Variance Inflation Factor (VIF)

#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

Penambahan Variabel Baru (Simulasi Multikolinearitas)

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.