Pada artikel ini, saya akan menganalisis pada bidang bisnis yaitu mengenai Marketing. Setiap perusahaan tentunya menginginkan agar nilai penjualan nya tinggi. Oleh karena itu dalam dunia marketing dikenal dengan yang namanya Advertising. Advertising bisa menjadi salah satu cara untuk meningkatkan nilai penjualan. Terdapat beberapa media/platform seperti TV, Radio, Sosial Media bahkan bisa juga melalui promosi dari seorang Artist/Influncer yang bisa digunakan sebagai sarana promosi, advertisement agar lebih banyak lagi masyarakat mengenal dan terarik pada produk perusahaan. Sehingga dalam artikel ini akan ditelusuri lebih lanjut mengenai :
Tahap pertama dalam melakukan pengolahan data adalah dengan melakukan import untuk membaca data set dalam bentuk csv kemudian assign ke dalam objek yang bernama ’advertising`.
advertising <- read.csv("Dummy Data HSS.csv")
head(advertising)
## TV Radio Social.Media Influencer Sales
## 1 16 6.566231 2.907983 Mega 54.73276
## 2 13 9.237765 2.409567 Mega 46.67790
## 3 41 15.886446 2.913410 Mega 150.17783
## 4 83 30.020028 6.922304 Mega 298.24634
## 5 15 8.437408 1.405998 Micro 56.59418
## 6 29 9.614382 1.027163 Mega 105.88915
Tahap ini digunakan untuk mengetahui informasi data dan mengecek tipe data untuk setiap variabel/kolom data.
# mengecek tipe data
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
glimpse(advertising)
## Rows: 4,572
## Columns: 5
## $ TV <int> 16, 13, 41, 83, 15, 29, 55, 31, 76, 13, 62, 42, 64, NA, 3…
## $ Radio <dbl> 6.5662308, 9.2377646, 15.8864460, 30.0200283, 8.4374077, …
## $ Social.Media <dbl> 2.9079828, 2.4095672, 2.9134102, 6.9223040, 1.4059982, 1.…
## $ Influencer <chr> "Mega", "Mega", "Mega", "Mega", "Micro", "Mega", "Micro",…
## $ Sales <dbl> 54.73276, 46.67790, 150.17783, 298.24634, 56.59418, 105.8…
Keterangan: - Terapat sebanyak 4572 data - Terdapat sebanyak 5 variabel/kolom dinataranya adalah : + 1. TV : budget yang dikeluarkan perusahaan untuk melakukan advertisement/promosi melalui TV (dalam juta dolar) + 2. Radio : budget yang dikeluarkan perusahaan untuk melakukan advertisement/promosi melalui Radio (dalam juta dolar) + 3. Social.Media : budget yang dikeluarkan perusahaan untuk melakukan advertisement/promosi di Sosial Media (dalam juta dolar) + 4. Influencer : budget yang dikeluarkan perusahaan untuk melakukan advertisement/promosi dengan berkolaborasi dengan Influencer (Mega, Macro, Nano, Micro influencer) + 5. Sales : Penjualan yang didapatkan perusahaan (salam juta dolar)
Setelah dilakukan pengecekan tipe data kemudian disesuaikan tipe data nya agar dapat diolah lebih lanjut dalam proses analisis regresi.
advertising <- advertising %>%
mutate(Influencer = as.factor(Influencer))
Tahapan ini perlu dilakukan untuk mengetahui apakah terdapat missing value dari data yang kita miliki
# cek missing value
colSums(is.na(advertising))
## TV Radio Social.Media Influencer Sales
## 10 4 6 0 6
Keterangan : - Dataset memiliki missing value di kolom TV, Radio, Social.Media, dan Sales. - banyaknya missinging value kurang dari 5% dari data sehingga treatment yang diambil adalah dengan menghapus pada objek pengamatan tersebut yang menganundg missing value.
Pemilihan variabel Target & Prediktor dari data yang kita miliki merupakan tahapan penting dimana kita menentukan kolom/variabel yang akan digunakan sebagai variabel target dan prediktor. Biasanya tahapan ini bergantung pada Business Question yang dimiliki.
Pada data Marketing Sales ini akan memprediksi nilai Sales suatu negara berdasarkan buget yang dikeluarkan untuk melakukan advertising di TV maka - Variabel Target : Sales - Variabel Prediktor : TV
Dikarenakan data advertising ini terdapat missing value sehingga data harus dibersihkan terlebih dahulu agar tidak terdapat informasi yang kosong dan tidak bias.
terlebih dahulu dilakukan pengecekan row data sebelum dihapus objek pengamatan yang terdapaat missing value
# Jumlah data sebelum menghandle Missing value
nrow(advertising)
## [1] 4572
Dikarenakan jumlah datayang missing alue kurang dari 5% maka objek-objek yang mengandung missing valiue akan dihapus dengan menggunakan fungsi na.omit
# Hapus objek Missing Value
advertising_clean <- advertising %>%
na.omit(TV, Radio, Social.Media, Sales)
# Melakukan pengecekan ulang data
anyNA(advertising_clean)
## [1] FALSE
nrow(advertising_clean)
## [1] 4546
Keterangan :
Tahap selanjutnya setelah data sudah bersih dan sesuai maka perlu menggali data untuk mlebih mengenali data dan mengetahui mengenai informasi yang ada di dalam data untuk lebih mempermudah proses lebih lanjut.
Mengecek persebaran data, mean, median, nilai minimal, nilai maksimal pada data numerik dan mengecek distribusi frekuensi pada setiap level di data kategorik
summary(advertising_clean)
## TV Radio Social.Media Influencer
## Min. : 10.00 Min. : 0.00068 Min. : 0.000031 Macro:1112
## 1st Qu.: 32.00 1st Qu.:10.55536 1st Qu.: 1.530822 Mega :1152
## Median : 53.00 Median :17.85951 Median : 3.055565 Micro:1148
## Mean : 54.06 Mean :18.15753 Mean : 3.323473 Nano :1134
## 3rd Qu.: 77.00 3rd Qu.:25.64060 3rd Qu.: 4.804919
## Max. :100.00 Max. :48.87116 Max. :13.981662
## Sales
## Min. : 31.2
## 1st Qu.:112.4
## Median :189.0
## Mean :192.4
## 3rd Qu.:272.3
## Max. :364.1
# Persebaran Data Variabel Target
boxplot(advertising_clean$Sales)
Insight:
# cek persebaran data Numerik
boxplot(advertising_clean$TV, advertising_clean$Radio, advertising_clean$Social.Media)
Insight: - Pada kolom TV : + perusahaan rata-rata menghabiskan budget sebesar 53 juta dolar + persebaran budget yang dikeluarkan untuk promosi di TV adalah 10 hingga 100 juta dolar + Budget terendah yang dikeluarkan perusahaan untuk promosi di TV adalah 10 juta dolar + Budget tertinggi yang dikeluarkan perusahaan untuk promosi di TV adalah 100 juta dolar + Tidak ada data outlier + Data sudah berdistribusi normal
plot(advertising$Influencer)
Insight :
Tahapan ini dilakukan untuk mengetahui seberapa kuat hubungan antara variabel target dengan prediktor yang kita miliki. Variabel yang baik digunakan sebagai prediktor adalah variabel dengan nilai korelasi yang kuat terhadap variabel terikat.
# cek korelasi antara variabel Sales dengan TV
cor(x = advertising_clean$TV,
y= advertising_clean$Sales)
## [1] 0.9994974
Interpretasi :
Kesimpulan: Sehingga dapat disimpulkan bahwa variabel TV merupakan variabel yang kuat untuk digunakan sebagai prediktor dalam anlaisis regresi terhadap nilai sales suatu perusahaan.
# membuat model
model_none <- lm(formula = Sales ~ 1 ,
data = advertising_clean)
# menampilkan summary model
summary(model_none)
##
## Call:
## lm(formula = Sales ~ 1, data = advertising_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -161.21 -79.98 -3.45 79.91 171.67
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 192.41 1.38 139.5 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 93.02 on 4545 degrees of freedom
Simple Linear regression adalah model regresi yang terbeentuk hanya dengan Satu Prediktor (one) saja. Karena di awal tadi GDP adalah salah satu variabel yang memiliki korelasi cukup tinggi sehingga memakai variabel TV untuk prediktor nya
# membuat model satu prediktor yaitu TV
model_tv <- lm(formula = Sales ~ TV,
data = advertising_clean)
# menampilkan summary model
summary(model_tv)
##
## Call:
## lm(formula = Sales ~ TV, data = advertising_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.6062 -2.0062 -0.0125 2.0249 11.2566
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.132493 0.100605 -1.317 0.188
## TV 3.561514 0.001676 2125.272 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.949 on 4544 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 4.517e+06 on 1 and 4544 DF, p-value: < 2.2e-16
Visualisasi :
# plot garis linear regresi
plot(advertising_clean$TV, advertising_clean$Sales)
abline(model_tv, col = "red")
Interpretasi:
Terdapat korelasi hubungan yang sangat kuat dan nyaris sempurna antara budget yang dikeluarkan untuk advertising di TV dengan nilai sales perusahaan. artinya semakin tinggi perusahaan mengeluarkan uangnya untuk iklan di TV maka semakin tinggi juga nilai saless yang akan didaatkan oleh perusahaan.
Linear regression dengan lebih dari satu prediktor dapat meningkatkan performa model karena lebih banyak informasi yang dapat menjelaskan target. dalam analaisis ini akan digunakan semua prediktor.
# membuat model semua prediktor
model_all <- lm(formula = Sales ~ .,
data = advertising_clean)
# menampilkan summary model
summary(model_all)
##
## Call:
## lm(formula = Sales ~ ., data = advertising_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.5722 -2.0027 -0.0163 2.0301 11.2869
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.103304 0.129691 -0.797 0.426
## TV 3.562565 0.003391 1050.472 <2e-16 ***
## Radio -0.003908 0.009785 -0.399 0.690
## Social.Media 0.004464 0.024899 0.179 0.858
## InfluencerMega 0.011603 0.124085 0.094 0.926
## InfluencerMicro -0.056881 0.124199 -0.458 0.647
## InfluencerNano -0.073898 0.124548 -0.593 0.553
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.951 on 4539 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 7.521e+05 on 6 and 4539 DF, p-value: < 2.2e-16
Untuk memilih prediktor yang cocok agar menghasilkan model yang baik adalah dilakukan feture selection terdapat beberapa macam feature selection diantaranya:
library(GGally)
## Warning: package 'GGally' was built under R version 4.2.3
## Loading required package: ggplot2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
ggcorr(advertising_clean, label = T)
## Warning in ggcorr(advertising_clean, label = T): data in column(s) 'Influencer'
## are not numeric and were ignored
Insight : - Variabel TV dengan target memiliki korelasi sempurna karena bernilai 1 - Variabel Radio dengan target memiliki korelasi yang sangat kuat karena bernilai 0.9
Kesimpulan: Sehingga pada model korelasi ini akan menggunakan variabel TV dan Radio karena memiliki nilai korelasi > 0.5
# membuat model semua prediktor
model_corr <- lm(formula = Sales ~ TV + Radio,
data = advertising_clean)
# menampilkan summary model
summary(model_corr)
##
## Call:
## lm(formula = Sales ~ TV + Radio, data = advertising_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.6178 -2.0018 -0.0075 2.0231 11.2751
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.129985 0.100857 -1.289 0.198
## TV 3.562571 0.003389 1051.231 <2e-16 ***
## Radio -0.003284 0.009155 -0.359 0.720
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.95 on 4543 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 2.258e+06 on 2 and 4543 DF, p-value: < 2.2e-16
Step-wise regression membantu kita memilih prediktor yang baik, dengan cara mencari kombinasi prediktor yang menghasilkan model terbaik berdasarkan nilai AIC.
AIC (Akaike Information Criterion) = banyaknya informasi yang hilang pada model.
Model regresi yang baik adalah AIC yang paling kecil.
Terdapat 3 metode Stepwise:
Model Backward akan dimulai dari keseluruhan variabel kemudian menghilangkan variabel yang menghasilkan AIC terkecil pengurangan berhenti apabila ketika pengurangan variabel malah AiC bertmah tinggi.
# Membuat model Backward
model_back <- step(object = model_all,
direction = "backward",
trace = T)
## Start: AIC=9844.57
## Sales ~ TV + Radio + Social.Media + Influencer
##
## Df Sum of Sq RSS AIC
## - Influencer 3 6 39522 9839
## - Social.Media 1 0 39517 9843
## - Radio 1 1 39518 9843
## <none> 39516 9845
## - TV 1 9606941 9646457 34835
##
## Step: AIC=9839.26
## Sales ~ TV + Radio + Social.Media
##
## Df Sum of Sq RSS AIC
## - Social.Media 1 0 39523 9837
## - Radio 1 1 39524 9837
## <none> 39522 9839
## - TV 1 9613855 9653377 34832
##
## Step: AIC=9837.3
## Sales ~ TV + Radio
##
## Df Sum of Sq RSS AIC
## - Radio 1 1 39524 9835
## <none> 39523 9837
## - TV 1 9613890 9653413 34830
##
## Step: AIC=9835.43
## Sales ~ TV
##
## Df Sum of Sq RSS AIC
## <none> 39524 9835
## - TV 1 39286983 39326507 41213
summary(model_back)
##
## Call:
## lm(formula = Sales ~ TV, data = advertising_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.6062 -2.0062 -0.0125 2.0249 11.2566
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.132493 0.100605 -1.317 0.188
## TV 3.561514 0.001676 2125.272 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.949 on 4544 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 4.517e+06 on 1 and 4544 DF, p-value: < 2.2e-16
# Summary Model Backward
summary(model_back)
##
## Call:
## lm(formula = Sales ~ TV, data = advertising_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.6062 -2.0062 -0.0125 2.0249 11.2566
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.132493 0.100605 -1.317 0.188
## TV 3.561514 0.001676 2125.272 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.949 on 4544 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 4.517e+06 on 1 and 4544 DF, p-value: < 2.2e-16
Perbedaan dengan backward adalah : Dimulai dari model tanpa prediktor kemudian diisi dengan prediktor yang menghasilkan nilai AIC terkecil Perulangan berhenti apbila ketika penambahan varibel malah menghasilkan AIC yang lebih tinggi
model_forw <- step(object = model_none,
direction = "forward",
scope = list(upper = model_all),
trace = T )
## Start: AIC=41213.34
## Sales ~ 1
##
## Df Sum of Sq RSS AIC
## + TV 1 39286983 39524 9835
## + Radio 1 29673094 9653413 34830
## + Social.Media 1 10940623 28385884 39733
## <none> 39326507 41213
## + Influencer 3 20811 39305696 41217
##
## Step: AIC=9835.43
## Sales ~ TV
##
## Df Sum of Sq RSS AIC
## <none> 39524 9835.4
## + Radio 1 1.1197 39523 9837.3
## + Social.Media 1 0.0320 39524 9837.4
## + Influencer 3 6.0682 39518 9840.7
# Menampilkan summary dari model forward
summary(model_forw)
##
## Call:
## lm(formula = Sales ~ TV, data = advertising_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.6062 -2.0062 -0.0125 2.0249 11.2566
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.132493 0.100605 -1.317 0.188
## TV 3.561514 0.001676 2125.272 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.949 on 4544 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 4.517e+06 on 1 and 4544 DF, p-value: < 2.2e-16
Merupakan gabungan dari bacward dan forward, sehingga memilkiki konse variabel akan ditambahkan jika menghasilkan AIC terksecil dan jika variabel tersebut dikurangi akan menghasilkan AIC yang besar maka variabel tetap dipertahankan.
# membuat model both
model_both <- step(object = model_none ,
direction = "both",
scope = list(upper = model_all),
trace = T)
## Start: AIC=41213.34
## Sales ~ 1
##
## Df Sum of Sq RSS AIC
## + TV 1 39286983 39524 9835
## + Radio 1 29673094 9653413 34830
## + Social.Media 1 10940623 28385884 39733
## <none> 39326507 41213
## + Influencer 3 20811 39305696 41217
##
## Step: AIC=9835.43
## Sales ~ TV
##
## Df Sum of Sq RSS AIC
## <none> 39524 9835
## + Radio 1 1 39523 9837
## + Social.Media 1 0 39524 9837
## + Influencer 3 6 39518 9841
## - TV 1 39286983 39326507 41213
# menampilkan model summary both
summary(model_both)
##
## Call:
## lm(formula = Sales ~ TV, data = advertising_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.6062 -2.0062 -0.0125 2.0249 11.2566
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.132493 0.100605 -1.317 0.188
## TV 3.561514 0.001676 2125.272 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.949 on 4544 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 4.517e+06 on 1 and 4544 DF, p-value: < 2.2e-16
Dari tahap di atas kita telah membangun banyak model di antaranya yaitu model all, model_corr, model_back, model_forw, model_both. Dari model-model tersebut dibandingkan model mana yang lebih baik dilihat dari :
Setelah emmbuat model kemudian melakukan prediksi untuk mengetahui sejauh mana kebaikan model.
# menambahkan hasil prediksi dari 5 model ke dalam data
advertising_clean$pred_all <- predict(object = model_all , newdata= advertising_clean)
advertising_clean$pred_corr <- predict(object = model_corr, newdata= advertising_clean)
advertising_clean$pred_back <- predict(object = model_back, newdata= advertising_clean)
advertising_clean$pred_forw <- predict(object = model_forw, newdata= advertising_clean)
advertising_clean$pred_both <- predict(object = model_both, newdata= advertising_clean)
head(advertising_clean)
## TV Radio Social.Media Influencer Sales pred_all pred_corr pred_back
## 1 16 6.566231 2.907983 Mega 54.73276 56.89665 56.84958 56.85173
## 2 13 9.237765 2.409567 Mega 46.67790 46.19629 46.15310 46.16719
## 3 41 15.886446 2.913410 Mega 150.17783 145.92437 145.88324 145.88959
## 4 83 30.020028 6.922304 Mega 298.24634 295.51474 295.46479 295.47318
## 5 15 8.437408 1.405998 Micro 56.59418 53.25159 53.28087 53.29022
## 6 29 9.614382 1.027163 Mega 105.88915 103.18968 103.15299 103.15142
## pred_forw pred_both
## 1 56.85173 56.85173
## 2 46.16719 46.16719
## 3 145.88959 145.88959
## 4 295.47318 295.47318
## 5 53.29022 53.29022
## 6 103.15142 103.15142
Dari ke - 5 model yang telah dibuat, dilihat seberapa baik prediktor dalam menjelaskan model yang telah dibentuk.
# Periksa nilai R-Square untuk setiap model
summary(model_all)$r.squared
## [1] 0.9989952
summary(model_corr)$r.squared
## [1] 0.998995
summary(model_back)$r.squared
## [1] 0.998995
summary(model_forw)$r.squared
## [1] 0.998995
summary(model_both)$r.squared
## [1] 0.998995
Interpretasi
Dari ke 5 model ternyata memiliki r-squre yang sama yaitu sebesar 0.998995. Artinya bahwa kebaikan prediktor dalam menjelaskan model sangat tinggi yaitu sebesar 99%.
Adalah untuk mengevaluasi hasil dari model kita apakah sudah cukup baik antara data kenyataan dengan hasil prediksi. Cara ini dilakukan dengan melihat nilai error. semakin kecil nilai eror maka semakin bagus model nya.
terdapat 4 jenis metrik eror: MAE, MAPE, MSE, dan RMSE tetapi yang paling bagus dansnsitif terhadap outlier adalah RMSE
# RMSE ( Root Mean Squared Error)
library(MLmetrics)
## Warning: package 'MLmetrics' was built under R version 4.2.3
##
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:base':
##
## Recall
RMSE (y_pred = advertising_clean$pred_all,
y_true = advertising_clean$Sales)
## [1] 2.948311
RMSE (y_pred = advertising_clean$pred_corr,
y_true = advertising_clean$Sales)
## [1] 2.948548
RMSE (y_pred = advertising_clean$pred_back,
y_true = advertising_clean$Sales)
## [1] 2.94859
RMSE (y_pred = advertising_clean$pred_forw,
y_true = advertising_clean$Sales)
## [1] 2.94859
RMSE (y_pred = advertising_clean$pred_both,
y_true = advertising_clean$Sales)
## [1] 2.94859
Keterangan:
Model yang menghasilkan eror yang paling kecil adalah model-all yaitu model dengan semua prediktor yang memiliki nilai error sebesar 2.948311.
Sehingga model terbaik di antara 5 model tersebut yang memilki r-squared terbesar dan nilai error yang paling kecil adalah model_all dengan semua prediktor.
Untuk lebih mengetahui informasi detail analisis regresi dang diperoleh dari model_all memanggil summary nya.
# menampilkan summary
summary(model_all)
##
## Call:
## lm(formula = Sales ~ ., data = advertising_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.5722 -2.0027 -0.0163 2.0301 11.2869
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.103304 0.129691 -0.797 0.426
## TV 3.562565 0.003391 1050.472 <2e-16 ***
## Radio -0.003908 0.009785 -0.399 0.690
## Social.Media 0.004464 0.024899 0.179 0.858
## InfluencerMega 0.011603 0.124085 0.094 0.926
## InfluencerMicro -0.056881 0.124199 -0.458 0.647
## InfluencerNano -0.073898 0.124548 -0.593 0.553
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.951 on 4539 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.999
## F-statistic: 7.521e+05 on 6 and 4539 DF, p-value: < 2.2e-16
unique(advertising_clean$Influencer)
## [1] Mega Micro Nano Macro
## Levels: Macro Mega Micro Nano
\[ \hat{Sales} = -0.103304 + 3.562565(TV) - 0.003908(Radio) + 0.004464(Social Media) + 0.011603(InfluencerMega) - 0.056881(InfluencerMicro) - 0.073898(InfluencerNano)\]
Konstanta/Intercept Variabel Numerik:
Nilai Sales akan sebesar -0.103304 juta dolar jika perusahaan menggunakan influencer dengan tipe Macro dan tidak melakukan promosi baik di TV, Radio, maupun Social Media. Artinya jika tidak ada promosoi melalui platform-platform tersebut dan menggunakan Influencer tipe Macro maka perusahaan akan mengalami kerugian.
Koefisien/Slope Variabel Numerik :
TV 3.562565 , artinya nilai sales akan meningkat sebesar 3.562565 juta dolar jika budget yang dihabiskan untuk advertising di TV bertambah 1 juta dolar dengan catatan variabel lainnya bernilai tetap.
Radio -0.003908, artinya nilai sales akan berkurang sebesar 0.003908 juta dolar jika budget yang dihabiskan untuk advertising di Radio bertambah 1 juta dolar dengan catatan variabel lainnya bernilai tetap.
Social Media 0.004464, artinya nilai sales akan meningkat sebesar 0.004464 juta dolar jika budget yang dihabiskan untuk advertising di Social Media bertambah 1 juta dolar dengan catatan variabel lainnya bernilai tetap.
Koefisien/Slope Variabel Kategorik:
InfluencerMega 0.011603, artinya nilai sales akan meningkat sebesar 0.011603 juta dolar jika perusahaan melakukan advertisingnya berkolaborasi dengan Influencer yang bertipe Mega dengan catatan variabel lainnya bernilai tetap.
InfluencerMicro -0.056881, artinya nilai sales akan berkurang sebesar 0.056881 juta dolar jika perusahaan melakukan advertisingnya berkolaborasi dengan Influencer yang bertipe Micro dengan catatan variabel lainnya bernilai tetap.
InfluencerNano -0.073898, artinya nilai sales akan berkurang sebesar 0.073898 juta dolar jika perusahaan melakukan advertisingnya berkolaborasi dengan Influencer yang bertipe Nano dengan catatan variabel lainnya bernilai tetap.
P-Value:
Terdapat hanya satu variabel yaitu budget TV yang berpengaruh secara signifikan terhadap nilai Sales. karena nilai p-value TV kurang dari 0.05.
R-Squared:
Nilai r-Squared sebesar 0.999 artinya Prediktor sudah sangat baik dalam menjelaskan kebaikan model yaitu sebesar 99%.
Menjelaskan seberapa akurat model dalam melakukan prediksi terhadap data asli, dapat dilihat dengan menghitung nilai errornya.
RMSE(y_pred = advertising_clean$pred_all,
y_true = advertising_clean$Sales)
## [1] 2.948311
range(advertising_clean$Sales)
## [1] 31.19941 364.07975
Model dengan semua prediktor memiliki nilai eror yang kecil karena rentang nilai sales yaitu dari 31 hingga 364. sedangkan akumulasi kekeliruan model atau silisih prediksi dengan data aktual adalah sebesar 2. yng menunjukkan bahwa nilai error model ini sangatlah kecil. sehingga model sudah sangat baik dalam melakukan prediksi data baru di masa datang.
Beberapa asumsi yang harus dicek untuk memastikan apakah model yang kita buat dianggap sebagai Best Linear Unbiased Estimator (BLUE) model, yaitu model yang dapat memprediksi data baru secara konsisten.
Linearity artinya target variabel dengan prediktornya memiliki hubungan yang linear atau hubungannya bersifat garis lurus. Sumbu x = fitted values atau nilai hasoil prediksi variabel target Sumbu Y = nilai residual/error yang dihasilkan oleh model.
plot(model_all, which = 1)
Interpretasi: Dikarenakan nilai residual tersebar di angka 0 maka model sudah memenuhi asumsi linearitas.
Model linear regression diharapkan menghasilkan error yang berdistribusi normal.
hist(model_all$residuals)
Interpretasi: Nilai residual menyebar di angka 0 dan berdistribusi normal. sehingga asumsi normalitas resdiual sudah terpenuhi. Atau bisa juga dengan menggunakan msaphro test
shapiro.test(model_all$residuals)
##
## Shapiro-Wilk normality test
##
## data: model_all$residuals
## W = 0.99975, p-value = 0.8976
dikarenakan nilai p-value > 0.05 maka eror data berdistribusi normal. sehigga asumsi normalitas residual terpenuhi.
Diharapkan error yang dihasilkan oleh model menyebar secara acak atau dengan variasi konstan. Apabila divisualisasikan maka error tidak berpola. Kondisi ini disebut juga sebagai homoscedasticity
# scatter plot
plot(x = model_all$fitted.values, #hasil prediksi
y = model_all$residuals) #nilai error
abline(h = 0, col = "red")
eror menyebar secara homogen dan tidak berpola, sehingga asumsi homoskedastisidas sudah terpenuhi.
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.2.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.2.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
bptest(model_all)
##
## studentized Breusch-Pagan test
##
## data: model_all
## BP = 2.9542, df = 6, p-value = 0.8146
Dikarenakan nilai p-value > 0.05 maka error tersebar secara acak sehingga asumsi homoskedastisitas residual terpenuhi
Multicollinearity adalah kondisi adanya korelasi antar prediktor yang kuat. Hal ini tidak diinginkan karena menandakan prediktor redundan pada model, yang seharusnya dapat dipilih salah satu saja dari variable yang hubungannya amat kuat tersebut. Harapannya tidak terjadi multicollinearity
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
vif(model_all)
## GVIF Df GVIF^(1/(2*Df))
## TV 4.091850 1 2.022832
## Radio 4.667926 1 2.160538
## Social.Media 1.582523 1 1.257984
## Influencer 1.001646 3 1.000274
Nilai Vif < 10 sehingga dikatakan tidak terdapat korelasi yang kuat antar variabel pada model sehingga memenuhi asumsi tidak terjadi multikolinearitas
Dari penjelasan di atas dapat disimpulkan bahwa budget advertising TV memiliki pengaruh yang paling besar terhadap nilai sales perusahaan daripada melalui advertising di Radio, Sosial Media, maupun Influencer. Artinya semakin tinggi budget yang dikeluarkan untuk iklan di TV maka semakin tinggi juga nilai Sales nya. Sehingga dapat dijadikan rekomendasi untuk kedepannya bahwa jika ingin melakukan advertising opsi yang diprioritaskan adalah untuk melakukan advertising di TV karena dapat meningkatkan nilai penjualan.