Maitreya Zahwa - 5003231043

input data and library

library(forecast)
library(tseries)
library(gridExtra)
library(tidyverse)
library(lmtest)
library(BETS)
library(Metrics)
library(readxl)
sim_data <- read_excel("Data_ARIMA.xlsx")
View(sim_data)

Data Split

sim_train <- sim_data[1:47, ]    
sim_test  <- sim_data[48:93, ]

PACF and ACF plot

p1 <- ggAcf(sim_train$`pencarian "Indihome"`) + ggtitle(label = "")
p2 <- ggPacf(sim_train$`pencarian "Indihome"`) + ggtitle(label = "")
grid.arrange(p1, p2, nrow = 1, top = "ACF & PACF of original series")

Based on the ACF plot results, it is known that lags 1, 2, and 3 are significantly positive, then the ACF value decreases slowly towards zero. This pattern indicates a gradual decrease in autocorrelation. Such a pattern usually indicates the data has an AR model rather than an MA. This is supported by the PACF plot, where only lag 1 is significantly large, while subsequent lags immediately decrease and are insignificant. The PACF pattern, which cuts oA at lag 1, while the ACF decreases slowly, is a characteristic of the AR(1,0,0) model. Therefore, based on the results of the ADF, PACF, and ACF plots, it is feared that the following time series data has an ARIMA(1,0,0) model.

Stationarity Test

adf.test(sim_train$`pencarian "Indihome"`)

    Augmented Dickey-Fuller Test

data:  sim_train$`pencarian "Indihome"`
Dickey-Fuller = -4.1318, Lag order = 4, p-value = 0.01
alternative hypothesis: stationary
pp.test(sim_train$`pencarian "Indihome"`)

    Phillips-Perron Unit Root Test

data:  sim_train$`pencarian "Indihome"`
Dickey-Fuller Z(alpha) = -50.247, Truncation lag parameter = 3, p-value =
0.01
alternative hypothesis: stationary

Based on the ADF and PP test, it was found that the data was stationary so there was no need for diAerencing.

Parameter Estimation

m1 <- Arima(y = sim_train$`pencarian "Indihome"`, order = c(1, 0, 0), include.drift = TRUE)
summary(m1)
Series: sim_train$`pencarian "Indihome"` 
ARIMA(1,0,0) with drift 

Coefficients:
         ar1  intercept    drift
      0.3760    61.7512  -0.2010
s.e.  0.1014     1.9291   0.0398

sigma^2 = 31.71:  log likelihood = -259.77
AIC=527.54   AICc=528.05   BIC=537.22

Training set error measures:
                      ME     RMSE      MAE        MPE     MAPE      MASE        ACF1
Training set -0.02943456 5.528426 3.783465 -0.9132091 6.810149 0.8317536 -0.02823317

The AR(1) coefficient = 0.3760 (p < 0.05) indicates that today’s search value is influenced by 37.6% of the previous day’s search value. Meanwhile, the average Indihome search scale is around 61.75. The error variance of 31.71 illustrates the large amount of noise variation that cannot be explained by the model.

coeftest(m1)

z test of coefficients:

          Estimate Std. Error z value  Pr(>|z|)    
ar1        0.37601    0.10136  3.7097 0.0002075 ***
intercept 61.75118    1.92907 32.0109 < 2.2e-16 ***
drift     -0.20101    0.03975 -5.0568 4.264e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
t_test(m1)

Residual Diagnostics

checkresiduals(m1)

    Ljung-Box test

data:  Residuals from ARIMA(1,0,0) with drift
Q* = 6.2352, df = 9, p-value = 0.7162

Model df: 1.   Total lags used: 10

Based on the residual plot, it is known that the errors are randomly distributed around zero without any particular pattern. This is evidenced by the Ljung–Box test, which produces a p-value of 0.7162, indicating there is no evidence that the residuals still exhibit serial dependence.

shapiro.test(m1$residuals)

    Shapiro-Wilk normality test

data:  m1$residuals
W = 0.81953, p-value = 1.121e-08

Forecasting

m1_forecast <- m1 %>% forecast(h = 10) 
m1_forecast
forecast_ts <- ts(data.frame(forecast = m1_forecast$mean, actual = sim_test$`pencarian "Indihome"`))
autoplot(forecast_ts, ylab = "", main = "Testing Data Forecast")

rmse(actual = sim_test$`pencarian "Indihome"`, predicted = m1_forecast$mean)
[1] 5.837716

The RMSE value for the testing data is 5.84, indicating that the prediction error is approximately 5.8 units from the actual search scale. This is a relatively small value and indicates that the model has fairly good predictive ability.

mape(actual = sim_test$`pencarian "Indihome"`, predicted = m1_forecast$mean)
[1] 0.09475074
smape(actual = sim_test$`pencarian "Indihome"`, predicted = m1_forecast$mean)
[1] 0.1015342
LS0tDQp0aXRsZTogIkluZGlob21lIFRpbWUgU2VyaWVzIEFuYWx5c2lzIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KTWFpdHJleWEgWmFod2EgLSA1MDAzMjMxMDQzDQoNCg0KIyMgKippbnB1dCBkYXRhIGFuZCBsaWJyYXJ5KioNCmBgYHtyIGVjaG89VFJVRX0NCmxpYnJhcnkoZm9yZWNhc3QpDQpsaWJyYXJ5KHRzZXJpZXMpDQpsaWJyYXJ5KGdyaWRFeHRyYSkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShsbXRlc3QpDQpsaWJyYXJ5KEJFVFMpDQpsaWJyYXJ5KE1ldHJpY3MpDQpsaWJyYXJ5KHJlYWR4bCkNCnNpbV9kYXRhIDwtIHJlYWRfZXhjZWwoIkRhdGFfQVJJTUEueGxzeCIpDQpWaWV3KHNpbV9kYXRhKQ0KYGBgDQojIyAqKkRhdGEgU3BsaXQqKg0KDQpgYGB7ciBlY2hvPVRSVUV9DQpzaW1fdHJhaW4gPC0gc2ltX2RhdGFbMTo4MywgXSAgICANCnNpbV90ZXN0ICA8LSBzaW1fZGF0YVs4NDo5MywgXQ0KYGBgDQoNCiMjICoqUEFDRiBhbmQgQUNGIHBsb3QqKg0KDQpgYGB7ciBlY2hvPVRSVUV9DQpwMSA8LSBnZ0FjZihzaW1fdHJhaW4kYHBlbmNhcmlhbiAiSW5kaWhvbWUiYCkgKyBnZ3RpdGxlKGxhYmVsID0gIiIpDQpwMiA8LSBnZ1BhY2Yoc2ltX3RyYWluJGBwZW5jYXJpYW4gIkluZGlob21lImApICsgZ2d0aXRsZShsYWJlbCA9ICIiKQ0KZ3JpZC5hcnJhbmdlKHAxLCBwMiwgbnJvdyA9IDEsIHRvcCA9ICJBQ0YgJiBQQUNGIG9mIG9yaWdpbmFsIHNlcmllcyIpDQpgYGANCkJhc2VkIG9uIHRoZSBBQ0YgcGxvdCByZXN1bHRzLCBpdCBpcyBrbm93biB0aGF0IGxhZ3MgMSwgMiwgYW5kIDMgYXJlIHNpZ25pZmljYW50bHkgDQpwb3NpdGl2ZSwgdGhlbiB0aGUgQUNGIHZhbHVlIGRlY3JlYXNlcyBzbG93bHkgdG93YXJkcyB6ZXJvLiBUaGlzIHBhdHRlcm4gDQppbmRpY2F0ZXMgYSBncmFkdWFsIGRlY3JlYXNlIGluIGF1dG9jb3JyZWxhdGlvbi4gU3VjaCBhIHBhdHRlcm4gdXN1YWxseSBpbmRpY2F0ZXMgDQp0aGUgZGF0YSBoYXMgYW4gQVIgbW9kZWwgcmF0aGVyIHRoYW4gYW4gTUEuIFRoaXMgaXMgc3VwcG9ydGVkIGJ5IHRoZSBQQUNGIHBsb3QsIA0Kd2hlcmUgb25seSBsYWcgMSBpcyBzaWduaWZpY2FudGx5IGxhcmdlLCB3aGlsZSBzdWJzZXF1ZW50IGxhZ3MgaW1tZWRpYXRlbHkgDQpkZWNyZWFzZSBhbmQgYXJlIGluc2lnbmlmaWNhbnQuIFRoZSBQQUNGIHBhdHRlcm4sIHdoaWNoIGN1dHMgb0EgYXQgbGFnIDEsIHdoaWxlIA0KdGhlIEFDRiBkZWNyZWFzZXMgc2xvd2x5LCBpcyBhIGNoYXJhY3RlcmlzdGljIG9mIHRoZSBBUigxLDAsMCkgbW9kZWwuIFRoZXJlZm9yZSwgDQpiYXNlZCBvbiB0aGUgcmVzdWx0cyBvZiB0aGUgQURGLCBQQUNGLCBhbmQgQUNGIHBsb3RzLCBpdCBpcyBmZWFyZWQgdGhhdCB0aGUgDQpmb2xsb3dpbmcgdGltZSBzZXJpZXMgZGF0YSBoYXMgYW4gQVJJTUEoMSwwLDApIG1vZGVsLiANCg0KDQojIyAqKlN0YXRpb25hcml0eSBUZXN0KioNCg0KYGBge3IgZWNobz1UUlVFfQ0KYWRmLnRlc3Qoc2ltX3RyYWluJGBwZW5jYXJpYW4gIkluZGlob21lImApDQpgYGANCmBgYHtyIGVjaG89VFJVRX0NCnBwLnRlc3Qoc2ltX3RyYWluJGBwZW5jYXJpYW4gIkluZGlob21lImApDQpgYGANCkJhc2VkIG9uIHRoZSBBREYgYW5kIFBQIHRlc3QsIGl0IHdhcyBmb3VuZCB0aGF0IHRoZSBkYXRhIHdhcyBzdGF0aW9uYXJ5IHNvIHRoZXJlIHdhcyBubyANCm5lZWQgZm9yIGRpQWVyZW5jaW5nLg0KDQojIyAqKlBhcmFtZXRlciBFc3RpbWF0aW9uKioNCmBgYHtyIGVjaG89VFJVRX0NCm0xIDwtIEFyaW1hKHkgPSBzaW1fdHJhaW4kYHBlbmNhcmlhbiAiSW5kaWhvbWUiYCwgb3JkZXIgPSBjKDEsIDAsIDApLCBpbmNsdWRlLmRyaWZ0ID0gVFJVRSkNCnN1bW1hcnkobTEpDQpgYGANClRoZSBBUigxKSBjb2VmZmljaWVudCA9IDAuMzc2MCAocCA8IDAuMDUpIGluZGljYXRlcyB0aGF0IHRvZGF5J3Mgc2VhcmNoIHZhbHVlIGlzIGluZmx1ZW5jZWQgYnkgMzcuNiUgb2YgdGhlIHByZXZpb3VzIGRheSdzIHNlYXJjaCB2YWx1ZS4gTWVhbndoaWxlLCB0aGUgYXZlcmFnZSBJbmRpaG9tZSBzZWFyY2ggc2NhbGUgaXMgYXJvdW5kIDYxLjc1LiBUaGUgZXJyb3IgdmFyaWFuY2Ugb2YgMzEuNzEgaWxsdXN0cmF0ZXMgdGhlIGxhcmdlIGFtb3VudCBvZiBub2lzZSB2YXJpYXRpb24gdGhhdCBjYW5ub3QgYmUgZXhwbGFpbmVkIGJ5IHRoZSBtb2RlbC4NCg0KYGBge3IgZWNobz1UUlVFfQ0KY29lZnRlc3QobTEpDQpgYGANCg0KYGBge3IgZWNobz1UUlVFfQ0KdF90ZXN0KG0xKQ0KYGBgDQoNCiMjICoqUmVzaWR1YWwgRGlhZ25vc3RpY3MqKg0KYGBge3IgZWNobz1UUlVFfQ0KY2hlY2tyZXNpZHVhbHMobTEpDQpgYGANCkJhc2VkIG9uIHRoZSByZXNpZHVhbCBwbG90LCBpdCBpcyBrbm93biB0aGF0IHRoZSBlcnJvcnMgYXJlIHJhbmRvbWx5IGRpc3RyaWJ1dGVkIGFyb3VuZCB6ZXJvIHdpdGhvdXQgYW55IHBhcnRpY3VsYXIgcGF0dGVybi4gVGhpcyBpcyBldmlkZW5jZWQgYnkgdGhlIExqdW5n4oCTQm94IHRlc3QsIHdoaWNoIHByb2R1Y2VzIGEgcC12YWx1ZSBvZiAwLjcxNjIsIGluZGljYXRpbmcgdGhlcmUgaXMgbm8gZXZpZGVuY2UgdGhhdCB0aGUgcmVzaWR1YWxzIHN0aWxsIGV4aGliaXQgc2VyaWFsIGRlcGVuZGVuY2UuDQpgYGB7ciBlY2hvPVRSVUV9DQpzaGFwaXJvLnRlc3QobTEkcmVzaWR1YWxzKQ0KYGBgDQojIyAqKkZvcmVjYXN0aW5nKioNCg0KYGBge3IgZWNobz1UUlVFfQ0KbTFfZm9yZWNhc3QgPC0gbTEgJT4lIGZvcmVjYXN0KGggPSAxMCkgDQptMV9mb3JlY2FzdA0KYGBgDQoNCmBgYHtyIGVjaG89VFJVRX0NCmZvcmVjYXN0X3RzIDwtIHRzKGRhdGEuZnJhbWUoZm9yZWNhc3QgPSBtMV9mb3JlY2FzdCRtZWFuLCBhY3R1YWwgPSBzaW1fdGVzdCRgcGVuY2FyaWFuICJJbmRpaG9tZSJgKSkNCmF1dG9wbG90KGZvcmVjYXN0X3RzLCB5bGFiID0gIiIsIG1haW4gPSAiVGVzdGluZyBEYXRhIEZvcmVjYXN0IikNCmBgYA0KYGBge3IgZWNobz1UUlVFfQ0Kcm1zZShhY3R1YWwgPSBzaW1fdGVzdCRgcGVuY2FyaWFuICJJbmRpaG9tZSJgLCBwcmVkaWN0ZWQgPSBtMV9mb3JlY2FzdCRtZWFuKQ0KYGBgDQpUaGUgUk1TRSB2YWx1ZSBmb3IgdGhlIHRlc3RpbmcgZGF0YSBpcyA1Ljg0LCBpbmRpY2F0aW5nIHRoYXQgdGhlIHByZWRpY3Rpb24gZXJyb3IgaXMgYXBwcm94aW1hdGVseSA1LjggdW5pdHMgZnJvbSB0aGUgYWN0dWFsIHNlYXJjaCBzY2FsZS4gVGhpcyBpcyBhIHJlbGF0aXZlbHkgc21hbGwgdmFsdWUgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBtb2RlbCBoYXMgZmFpcmx5IGdvb2QgcHJlZGljdGl2ZSBhYmlsaXR5Lg0KYGBge3IgZWNobz1UUlVFfQ0KbWFwZShhY3R1YWwgPSBzaW1fdGVzdCRgcGVuY2FyaWFuICJJbmRpaG9tZSJgLCBwcmVkaWN0ZWQgPSBtMV9mb3JlY2FzdCRtZWFuKQ0KYGBgDQpgYGB7ciBlY2hvPVRSVUV9DQpzbWFwZShhY3R1YWwgPSBzaW1fdGVzdCRgcGVuY2FyaWFuICJJbmRpaG9tZSJgLCBwcmVkaWN0ZWQgPSBtMV9mb3JlY2FzdCRtZWFuKQ0KYGBgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K