“R” adalah seleb beauty-vlogger ternama Indonesia. Debut pertama sebagai vlogger dimulai pada tahun 2018, dengan memperkenalkan tutorial make-up dengan mempergunakan alat sederhana. Video ini sontak membawa “R” menuju ketenaran. Melebarkan sayapnya di dunia showbiz di Indonesia, pada pertengahan tahun, “R” membuat video klip yang bercerita tentang kisah cintanya dengan aktor muda Indonesia. Video klip ini semakin melejitkan nama “R”, khususnya di jagad maya Indonesia. Dengan subscriber hingga 1 juta user, hingga kini “R” secara kontinyu membuat konten vlog di kanal YouTube-nya.
Melalui kanal YouTube nya, setidaknya “R” membuat konten video dengan kategori sebagai berikut :
1. Video Musik
2. Personal Vlog : Vlog keseharian "R"
3. Video Endorse : Vlog niaga "R" (terkait kosmetik/alat kecantikan)
4. Video Endorse & Kuliner : Vlog niaga "R" yang berkonsep kuliner
Dengan membuat video tersebut, bagaimanakah konten-konten tersebut akan berdampak pada popularitas “R” diukur dari tren pada Google Trends?
Google Trends merupakan produk besutan Google.com dalam mencari tren yang terjadi di masyarakat. Google Trends menghitung tren berdasarkan banyaknya kata kunci pencarian pada topik tersebut, pada mesin pencarian Google Search.
Tren Pencarian “Piala Dunia” di Seluruh Dunia selama 7 hari terakhir
Berdasarkan data tren yang diunduh dari Google Trend dari tanggal 6 April 2020 sampai dengan 5 Juli 2020, pencarian netizen Indonesia terkait “R” dapat ditampilkan sebagai berikut :
library(gsheet)
## Warning: package 'gsheet' was built under R version 3.6.3
library(TSstudio)
## Warning: package 'TSstudio' was built under R version 3.6.3
URI<-"https://docs.google.com/spreadsheets/d/1AluMeQi7UTLt0pm3eztgW2FE9Kk2m1MhBG5DZuf7LZs/edit?usp=sharing"
a<-gsheet2text(URI,sheetid = "0")
## No encoding supplied: defaulting to UTF-8.
trend.data<-read.csv(text=a)
trend.data[[1]] <- as.Date(trend.data[[1]],format='%m/%d/%Y')
trend.ts<-ts(trend.data,frequency = 365,start = c(2020,97))
x <- as.Date("2020-04-06")+0:92
y <- trend.ts[,2]
plot(x,y,type = "b",main = "Tren Pencarian 'R' pada Google Search selama 6 April 2020 sampai dengan 5 Juli 2020",xlab = "Tanggal (MMM dd)", ylab="Tren Pencarian")
Seperti dapat dilihat pada grafik diatas, terjadi peningkatan pencarian dengan kata kunci “R” dari 6 April 2020 sampai dengan 14 April 2020, kemudian konstan pada rerata tertentu sampai dengan 28 Mei 2020. Lonjakan pencarian terjadi pada 29 Mei 2020, hingga puncaknya terjadi pada tanggal 5 Juni 2020. Hal ini kemudian diikuti dengan penurunan tren secara berangsur-angsur sampai dengan 5 Juli 2020.
Adapun sebaran tanggal dimana “R” mengunggah video di kanal YouTube dapat dilihat pada gambar dbawah
x <- as.Date("2020-04-06")+0:92
y <- trend.ts[,2]
plot(x,y,type = "b",main = "Tanggal 'R' mengunggah video pada YouTube",xlab = "Tanggal (MMM dd)", ylab="Tren Pencarian")+
abline(col="red",
v=c(as.Date("2020-04-06"),as.Date("2020-04-10"),as.Date("2020-04-13"),
as.Date("2020-04-14"),as.Date("2020-04-23"),as.Date("2020-04-25"),
as.Date("2020-04-26"),as.Date("2020-04-28"),as.Date("2020-04-30"),
as.Date("2020-05-07"),as.Date("2020-05-08"),as.Date("2020-05-10"),
as.Date("2020-05-19"),as.Date("2020-05-24"),as.Date("2020-05-27"),
as.Date("2020-05-29"),as.Date("2020-06-12"),as.Date("2020-06-18"),
as.Date("2020-06-22"),as.Date("2020-06-25"),as.Date("2020-06-30")
)
)
## integer(0)
Untuk memprediksi tren “R” selama beberapa waktu kedepan, maka diperlukan analisa time-series, yakni ARIMAX (Autoregressive (AR) Integrated (I) Moving Average (MA) + exogenous input (X)).
Sebelum dilakukan pemodelan, data perlu dilakukan splitting yang kemudian digunakan untuk memodelkan data, dan sebagian digunakan untuk melakukan validasi data. Data yang digunakan untuk validasi menggunakan 18 data terakhir (20% dari data).
trend.ts.split<-ts_split(trend.ts,sample.out = 18)
par(mfrow=c(1,2))
forecast::Acf(trend.ts.split$train[,2],main = "Grafik ACF")
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Registered S3 methods overwritten by 'forecast':
## method from
## fitted.fracdiff fracdiff
## residuals.fracdiff fracdiff
forecast::Pacf(trend.ts.split$train[,2],main = "Grafik PACF")
Dari grafik ACF dan PACF diatas, diketahui adanya autokorelasi pada data trend. Artinya, penggunaan ARIMA (atau ARIMAX secara spesifik) sebagai pemodelan dan metode peramalan merupakan hal yang valid.
tseries::adf.test(trend.ts.split$train[,2])
##
## Augmented Dickey-Fuller Test
##
## data: trend.ts.split$train[, 2]
## Dickey-Fuller = -2.2393, Lag order = 4, p-value = 0.4778
## alternative hypothesis: stationary
Hasil uji stasioner menyatakan bahwa data tidak stasioner. Karena ARIMAX mempersyaratkan data harus stasioner, maka data harus dilakukan proses differencing terlebih dahulu.
Sebelum melakukan pemodelan dengan ARIMAX, perlu diujicoba apakah dengan model sederhana, dapat menghasilkan akurasi model yang optimal. Untuk itu dilakukan pemodelan ARIMA, dengan menggunakan package forecast dengan fungsi auto.arima(). Hasil pemodelan ARIMA adalah sebagai berikut :
arima.model<-forecast::auto.arima(trend.ts.split$train[,2])
arima.model
## Series: trend.ts.split$train[, 2]
## ARIMA(0,1,1)
##
## Coefficients:
## ma1
## 0.2812
## s.e. 0.1063
##
## sigma^2 estimated as 56.42: log likelihood=-253.76
## AIC=511.51 AICc=511.68 BIC=516.12
Akurasi model ARIMA yang dibentuk adalah sebagai berikut :
forecast.arima<-forecast::forecast(arima.model,h=18)
forecast::accuracy(forecast.arima, trend.ts.split$test[,2])
## ME RMSE MAE MPE MAPE MASE
## Training set 0.1946289 7.410783 4.361602 -2.612613 25.71585 NaN
## Test set -8.2560022 9.034459 8.256002 -67.765180 67.76518 NaN
## ACF1 Theil's U
## Training set 0.006094756 NA
## Test set 0.473808250 2.512078
Nilai peramalan tren pencarian ‘R’ selama 12 hari kedepan adalah sebagai berikut :
plot(forecast.arima,main = "Prediksi tren 'R' selama 12 hari kedepan dengan ARIMA")
Video unggahan “R” memiliki kecenderungan dalam mempengaruhi tren pencarian “R”, baik mempengaruhi dalam konteks meningkatkan tren, maupun menurunkan tren. Hal ini perlu diakomodir dalam pemodelan, untuk menuju model fitness yang optimum. Setidaknya ada 4 (empat) exogenous input yang diasumsikan dalam model : 1. Model dipengaruhi oleh unggahan video musik. 2. Model dipengaruhi oleh unggahan Personal Vlog “R” 3. Model dipengaruhi oleh unggahan Video Endorse “R” (terkait kosmetik/alat kecantikan) 4. Model dipengaruhi oleh unggahan Video Endorse & Kuliner “R”
Berdasarkan hasil uji coba, exogenous input nomor (1) setidaknya mempengaruhi tren pencarian “R” selama 20 hari kedepan, setelah pengunggahan video. Exogenous input nomor (2) mempengaruhi pencarian selama 2 hari kedepan, sedangkan exogenous input nomor (3) dan (4) diasumsikan mempengaruhi pencarian selama 3 hari kedepan. Untuk setiap atribut exogenous input yang sesuai, akan diberikan nilai 1, sedangkan yang tidak akan diberi nilai 0. Struktur data kemudian disusun sebagai berikut :
head(trend.ts.split$train[,2:38])
## Time Series:
## Start = c(2020, 97)
## End = c(2020, 102)
## Frequency = 365
## Trend Music_Video Music_Video1 Music_Video2 Music_Video3
## 2020.263 4 0 0 0 0
## 2020.266 2 0 0 0 0
## 2020.268 3 0 0 0 0
## 2020.271 3 0 0 0 0
## 2020.274 4 0 0 0 0
## 2020.277 4 0 0 0 0
## Music_Video4 Music_Video5 Music_Video6 Music_Video7 Music_Video8
## 2020.263 0 0 0 0 0
## 2020.266 0 0 0 0 0
## 2020.268 0 0 0 0 0
## 2020.271 0 0 0 0 0
## 2020.274 0 0 0 0 0
## 2020.277 0 0 0 0 0
## Music_Video9 Music_Video10 Music_Video11 Music_Video12
## 2020.263 0 0 0 0
## 2020.266 0 0 0 0
## 2020.268 0 0 0 0
## 2020.271 0 0 0 0
## 2020.274 0 0 0 0
## 2020.277 0 0 0 0
## Music_Video13 Music_Video14 Music_Video15 Music_Video16
## 2020.263 0 0 0 0
## 2020.266 0 0 0 0
## 2020.268 0 0 0 0
## 2020.271 0 0 0 0
## 2020.274 0 0 0 0
## 2020.277 0 0 0 0
## Music_Video17 Music_Video18 Music_Video19 Music_Video20
## 2020.263 0 0 0 0
## 2020.266 0 0 0 0
## 2020.268 0 0 0 0
## 2020.271 0 0 0 0
## 2020.274 0 0 0 0
## 2020.277 0 0 0 0
## Kuliner_Endorse Kuliner_Endorse_Day1 Kuliner_Endorse_Day2
## 2020.263 0 0 0
## 2020.266 0 0 0
## 2020.268 0 0 0
## 2020.271 0 0 0
## 2020.274 0 0 0
## 2020.277 0 0 0
## Kuliner_Endorse_Day3 Kuliner Kuliner_Day1 Kuliner_Day2
## 2020.263 0 0 0 0
## 2020.266 0 0 0 0
## 2020.268 0 0 0 0
## 2020.271 0 0 0 0
## 2020.274 0 0 0 0
## 2020.277 0 0 0 0
## Kuliner_Day3 Personal_Vlog Personal_Vlog_Day1 Personal_Vlog_Day2
## 2020.263 0 0 0 0
## 2020.266 0 0 0 0
## 2020.268 0 0 0 0
## 2020.271 0 0 0 0
## 2020.274 0 1 0 0
## 2020.277 0 0 1 0
## Endorse Endorse_Day1 Endorse_Day2 Endorse_Day3
## 2020.263 0 0 0 0
## 2020.266 0 0 0 0
## 2020.268 0 0 0 0
## 2020.271 0 0 0 0
## 2020.274 0 0 0 0
## 2020.277 0 0 0 0
auto.arima()Dengan menggunakan ARIMAX, didapatkan hasil pemodelan sebagai berikut :
arimax.model<-forecast::auto.arima(trend.ts.split$train[,2],
xreg = trend.ts.split$train[,c(3:38)])
forecast.arimax<-forecast::forecast(arimax.model,
xreg = trend.ts.split$test[,c(3:38)])
forecast::accuracy(forecast.arimax,trend.ts.split$test[,2])
## ME RMSE MAE MPE MAPE MASE
## Training set 0.1700949 1.727298 1.236618 -3.047332 13.54523 NaN
## Test set -3.5453781 4.769098 4.126639 -30.294485 33.34955 NaN
## ACF1 Theil's U
## Training set -0.1467710 NA
## Test set 0.1887836 1.24099
plot(forecast.arimax,main = "nganu")
Nilai in-sample error berada pada nilai 13%, sedangkan out-sample error berada pada nilai 33.3%. Hal ini menyatakan bahwa ARIMAX dapat memodelkan data lebih baik dari ARIMA. Untuk itu, model ARIMAX (1,0,0) akan digunakan untuk melakukan forecasting.
Model yang sudah didapatkan, kemudian dilakukan prediksi untuk mengetahui pengaruh konten yang diunggah di kanal YouTube ‘R’ terhadap tren pencarian di Google Search. Pertama-tama dilakukan pembentukan model ARIMAX(1,0,0)
arimax.model.full<-forecast::Arima(trend.ts[,2],order = c(1,0,0),xreg = trend.ts[,3:38])
forecast::accuracy(arimax.model.full)
## ME RMSE MAE MPE MAPE MASE
## Training set 0.1130231 2.026266 1.432672 -4.515579 14.95736 NaN
## ACF1
## Training set -0.09161395
Apabila ‘R’ mengunggah video endorse bertema kuliner, maka tren pencarian ‘R’ selama 12 hari kedepan adalah sebagai berikut :
b<-gsheet2text(URI,sheetid = "1260070330")
## No encoding supplied: defaulting to UTF-8.
trend.data.forecast<-read.csv(text=b)
trend.data.forecast[[1]] <- as.Date(trend.data.forecast[[1]],format='%m/%d/%Y')
trend.data.forecast.ts<-ts(trend.data.forecast,frequency = 365,start = c(2020,187))
forecast.arimax.data.forecast<-forecast::forecast(arimax.model.full,
xreg = trend.data.forecast.ts[,c(2:37)])
plot(forecast.arimax.data.forecast,main="Tren Pencarian R pada Google Search\n karena Unggahan Video Kuliner Endorse R")
Apabila ‘R’ mengunggah music video, maka tren pencarian ‘R’ selama 12 hari kedepan adalah sebagai berikut :
c<-gsheet2text(URI,sheetid = "1320703374")
## No encoding supplied: defaulting to UTF-8.
trend.data.forecast<-read.csv(text=c)
trend.data.forecast[[1]] <- as.Date(trend.data.forecast[[1]],format='%m/%d/%Y')
trend.data.forecast.ts<-ts(trend.data.forecast,frequency = 365,start = c(2020,187))
forecast.arimax.data.forecast<-forecast::forecast(arimax.model.full,
xreg = trend.data.forecast.ts[,c(2:37)])
plot(forecast.arimax.data.forecast,main="Tren Pencarian R pada Google Search\n akibat Unggahan Video Musik R")
Forecasting dapat digunakan untuk melakukan peramalan tren pencarian sebuah objek pada Google Search. Dalam kasus ini, penggunaan model ARIMAX cenderung dapat memberikan performa forecasting lebih baik dari ARIMA. R sebaiknya mengunggah video musik untuk menjaga popularitas diri.
Untuk yang penasaran siapakah R, inilah dia :