Regresi Dengan Peubah Lag

Pendahuluan

Latar Belakang

Perkembangan teknologi dan peningkatan jumlah pengguna internet yang sangat cepat menciptakan kompetisi yang sangat tinggi antar penyedia layanan online atau web developer. Sering kali sebuah website sepi pengunjung karena banyak faktor. Seperti konten yang kurang menarik, tampilan yang monoton, dan kurang terpenuhinya ekspetasi pengunjung terhadap informasi yang dibutuhkan. Untuk mendapatkan informasi tentang akses pengguna internet terhadap sebuah website dapat menggunakan beberapa cara yaitu dengan metode survei, page rank pada halaman web, dan melihat log aksesnya. (Yusriani dan Suprapto 2016).

Pada penelitian ini, akan dilakukan analisis regresi pada data pengunjung harian website. Analisis yang dilakukan adalah menganalisis hubungan antara jumlah halaman harian yang dimuat dengan Jumlah pengunjung harian yang alamat IP-nya belum pernah dikunjungi di halaman mana pun selama lebih dari 6 jam. Analisis regresi dilakukan dengan menggunakan metode model koyck, distribusi lag dan model autoregressive.

Tujuan

  1. Menganalisis hubungan antara jumlah halaman harian yang dimuat dengan Jumlah pengunjung harian yang alamat IP-nya belum pernah dikunjungi di halaman mana pun selama lebih dari 6 jam.

    1. Melakukan penanganan autokorelasi model regresi deret waktu dengan metode distribusi lag.

      1. Membandingkan keakuratan ramalan anatara model koyck, distibute lag, dan model autoregressive.

Tinjauan Pustaka

Analisis regresi adalah teknik analisis data untuk menentukan hubungan sebab akibat antara variabel dependent (Y) dan satu atau lebih variabel independent (X). Analisis regresi dengan serangkaian pengamatan terhadap suatu peristiwa diambil dari waktu ke waktu merupakan analisis regresi deret waktu (Gujarati 2006). Waktu yang diperlukan bagi variabel bebas (X) dalam memengaruhi variabel takbebas (Y) disebut beda kala atau lag (Sarwoko 2005). Model regresi dengan memasukkan nilai variabel yang menjelaskan nilai masa kini atau nilai masa lalu dari variabel bebas (X) sebagai tambahan pada model yang memasukkan lag dari variabel tak bebas (X) disebut autoregressive distributed lag (ARDL). Metode Koyck didasari asumsi bahwa semakin jauh jarak lag pada variabel bebas dari periode sekarang maka semakin kecil pengaruh variabel lag terhadap variabel tak bebas (Gujarati 2004).

Asumsi Klasik Model Regresi

Asumsi-asumsi klasik menurut Gujarati (2006) yaitu sebagai berikut:

  1. Variabel Xi dan Xj dengan , tidak berkorelasi dengan faktor galat u.

    1. Faktor galat u mempunyai nilai tengah sebesar nol, atau E(u)=0.

      1. Homoskedastisitas atau Var(u)=σ^2

        1. Tidak ada autokorelasi antarfaktor galat ui dan uj atau cov(ui,uj)=0, i/=j.

          1. Tidak ada kolinearitas antara Xi dan Xj.

            .

Data Preparation

PACKAGE

library(dLagM) 
library(dynlm) 
library(MLmetrics) 
library(lmtest)
library(car)
library(readxl)
library(readr)
library(dplyr)
library(caTools)
library(ggplot2)
library(hrbrthemes)

Data

Data yang digunakan adalah data pengunjung harian situs web dari 14 September 2014 hingga 19 Agustus 2020. Data ini berasal dari situs web kaggle https://www.kaggle.com/code/chitwanmanchanda/daily-website-visitors-eda/data. Variabel yang akan digunakan untuk analisis adalah Date, Page Loads, dan Unique visits dengan jumlah amatan 2167.

#Input Data
web<- read_csv("C:/Users/indri/Downloads/daily-website-visitors.csv")
## Rows: 2167 Columns: 8
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (2): Day, Date
## dbl (2): Row, Day.Of.Week
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(web)
## # A tibble: 6 x 8
##     Row Day       Day.Of.Week Date     Page.Loads Unique.Visits First.Time.Visi~
##   <dbl> <chr>           <dbl> <chr>         <dbl>         <dbl>            <dbl>
## 1     1 Sunday              1 9/14/20~       2146          1582             1430
## 2     2 Monday              2 9/15/20~       3621          2528             2297
## 3     3 Tuesday             3 9/16/20~       3698          2630             2352
## 4     4 Wednesday           4 9/17/20~       3667          2614             2327
## 5     5 Thursday            5 9/18/20~       3316          2366             2130
## 6     6 Friday              6 9/19/20~       2815          1863             1622
## # ... with 1 more variable: Returning.Visits <dbl>
tail(web)
## # A tibble: 6 x 8
##     Row Day       Day.Of.Week Date     Page.Loads Unique.Visits First.Time.Visi~
##   <dbl> <chr>           <dbl> <chr>         <dbl>         <dbl>            <dbl>
## 1  2162 Friday              6 8/14/20~       2971          2308             1922
## 2  2163 Saturday            7 8/15/20~       2221          1696             1373
## 3  2164 Sunday              1 8/16/20~       2724          2037             1686
## 4  2165 Monday              2 8/17/20~       3456          2638             2181
## 5  2166 Tuesday             3 8/18/20~       3581          2683             2184
## 6  2167 Wednesday           4 8/19/20~       2064          1564             1297
## # ... with 1 more variable: Returning.Visits <dbl>
str(web)
## spec_tbl_df [2,167 x 8] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ Row              : num [1:2167] 1 2 3 4 5 6 7 8 9 10 ...
##  $ Day              : chr [1:2167] "Sunday" "Monday" "Tuesday" "Wednesday" ...
##  $ Day.Of.Week      : num [1:2167] 1 2 3 4 5 6 7 1 2 3 ...
##  $ Date             : chr [1:2167] "9/14/2014" "9/15/2014" "9/16/2014" "9/17/2014" ...
##  $ Page.Loads       : num [1:2167] 2146 3621 3698 3667 3316 ...
##  $ Unique.Visits    : num [1:2167] 1582 2528 2630 2614 2366 ...
##  $ First.Time.Visits: num [1:2167] 1430 2297 2352 2327 2130 ...
##  $ Returning.Visits : num [1:2167] 152 231 278 287 236 241 133 175 274 268 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   Row = col_double(),
##   ..   Day = col_character(),
##   ..   Day.Of.Week = col_double(),
##   ..   Date = col_character(),
##   ..   Page.Loads = col_number(),
##   ..   Unique.Visits = col_number(),
##   ..   First.Time.Visits = col_number(),
##   ..   Returning.Visits = col_number()
##   .. )
##  - attr(*, "problems")=<externalptr>
dim(web)
## [1] 2167    8
web$Date <- as.Date(web$Date,"%y/%m/%d")

t<-web$Date
Xt<-web$Unique.Visits
Yt<-web$Page.Loads

datareg1<-cbind(t, Xt, Yt)
datareg <- as.data.frame(datareg1)

Dilakukan splitting data dengan data train dengan jumlah amatan 80% dari jumlah seluruh amatan yaitu 1733 dan data test yaitu 20% dari jumlah seluruh amatan yaitu 434 amatan.

#SPLIT DATA
train<-datareg[1:1733, ]
test<-datareg[1734:2167, ]
#data time series
train.ts<-ts(train)
test.ts<-ts(test)
data.ts<-ts(datareg)

Exploratory Data Analysis

Plot Time Series

Time Series Plot Of Daily number of pages loaded

data.ts1<-ts(Yt)
plot(data.ts1, main = "Time Series Plot of Daily number of pages loaded", xlab = "Period", ylab="Page Loads")
points(data.ts1)

Berdasarkan plot diatas, terlihat bahwa peubah Page Loads atau Jumlah halaman harian yang dimuat memiliki pola data yang stasioner. Peubah page loads ini akan dijadikan peubah respon untuk analisis regresi.

Time Series Plot Of Unique Visits

#Time Series Plot
data.ts<-ts(Xt)
plot(data.ts, main = "Time Series Plot of Unique Visits", xlab = "Period", ylab="Unique visits")
points(data.ts)

Berdasarkan plot diatas, terlihat bahwa peubah unique visits atau Jumlah pengunjung harian yang alamat IP-nya belum pernah dikunjungi di halaman mana pun selama lebih dari 6 jam memiliki pola data yang stasioner. Peubah unique visits ini akan dijadikan peubah penjelas untuk analisis regresi.

Korelasi Peubah Unique Visits (X) dan Page Loads (Y)

cor(Xt, Yt)
## [1] 0.988691

Scatter Plot Peubah Unique Visits (X) dan Page Loads (Y)

plot(Xt, Yt, pch = 20, col = "blue", main = "Scatter Plot Page Loads dan Unique Visits")

Berdasarkan scatter plot terlihat bahwa hubungan antara Peubah Unique Visits (X) dan Page Loads (Y) memiliki hubungan linier positif dengan nilai korelasi 0.988691.

Model Regresi Linier Awal

model1 <- lm(web$Page.Loads~web$Unique.Visits, data = web)
summary(model1)
## 
## Call:
## lm(formula = web$Page.Loads ~ web$Unique.Visits, data = web)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -706.59 -120.19   -5.43  127.91  875.65 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       96.248916  13.811258   6.969 4.22e-12 ***
## web$Unique.Visits  1.365905   0.004453 306.757  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 202.6 on 2165 degrees of freedom
## Multiple R-squared:  0.9775, Adjusted R-squared:  0.9775 
## F-statistic: 9.41e+04 on 1 and 2165 DF,  p-value: < 2.2e-16

Berdasarkan output diatas, diperoleh model regresi linier data deret waktu yaitu:

      Yt^ = 96.248916 + 1.365905 (Xt)
  • Uji t : Uji t dilakukan untuk menguji signifikansi peubah penjelas terhdap variabel dependent. Berdasarkan output, diperoleh bahwa pada peubah penjelas unique visits memiliki P-Value<0.05 sehingga dapat disimpulkan bahwa peubah penjelas unique visits berpengaruh signifikan pada taraf nyata 5%.

  • Nilai R-Squared pada model regresi linier deret waktu yaitu 97,75%, artinya keragaman Y(IPM) yang mampu dijelaskan oleh peubah penjelas (Tahun) adalah sebesar 97.75%.

  • Interpretasi Model Regresi

    Nilai intersep sebesar 96.248916 yang artinya jika peubah penjelas tahun bernilai nol, maka dugaan nilai IPM sebesar 96.24891.

    Pengaruh peubah unique visits terhadap page loads bernilai positif sebesar 1.365905, hal ini menunjukkan bahwa jika jumlah unique visits bertambah satu maka dugaan jumlah page loads bertambah sebesar 1.365905.

Uji Asumsi Autokorelasi

bgtest(model1)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  model1
## LM test = 1236.7, df = 1, p-value < 2.2e-16

Diperoleh p-value =< 2.2e-16 < 0.05 Tolak H0, artinya cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada model awal dengan taraf nyata 5%. Karena ada autokorelasi, akan dilakukan penanganan dengan menambahkan lag tertentu. Metode yang digunakan adalah Model Koyck, Distributed Lag, dan Autoregressive Distributed Lag.

Model KOYCK

Modelling Koyck

#MODEL KOYCK
model.koyck <- dLagM :: koyckDlm(x=train$Xt , y=train$Yt)
summary(model.koyck)
## 
## Call:
## "Y ~ (Intercept) + Y.1 + X.t"
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -1014.6652  -349.5353     0.7384   275.9751  1485.1909 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 559.46097   65.44295   8.549   <2e-16 ***
## Y.1           0.38230    0.03974   9.619   <2e-16 ***
## X.t           0.68249    0.07341   9.297   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 488.1 on 1729 degrees of freedom
## Multiple R-Squared: 0.8766,  Adjusted R-squared: 0.8765 
## Wald test:  3920 on 2 and 1729 DF,  p-value: < 2.2e-16 
## 
## Diagnostic tests:
## NULL
## 
##                             alpha      beta       phi
## Geometric coefficients:  905.7201 0.6824866 0.3823026
AIC(model.koyck)
## [1] 26363.83
BIC(model.koyck)
## [1] 26385.66

Forecasting Koyck

#ramalan
(fore.koyck <- forecast(model = model.koyck, x=test$Xt, h=434))
## $forecasts
##   [1] 4186.407 3705.767 2977.393 2890.030 3660.600 4015.250 4061.428 3896.858
##   [9] 3601.897 2864.657 2760.937 3383.297 3743.392 3816.221 3841.334 3407.318
##  [17] 2680.389 2603.815 3250.885 3601.317 3696.387 3317.780 3049.508 2606.386
##  [25] 2563.922 3520.913 3815.795 4002.238 3911.083 3608.018 2829.460 2838.252
##  [33] 3631.251 3848.422 4009.934 3985.687 3501.406 2765.498 2720.299 3571.824
##  [41] 3882.350 4065.901 3994.116 3631.571 2840.512 2675.268 3315.056 3810.122
##  [49] 3888.141 3937.078 3620.685 2839.081 2757.302 3431.729 3804.904 3839.737
##  [57] 3769.791 3388.157 2718.108 2623.695 3319.227 3648.602 3672.149 3635.425
##  [65] 3329.281 2703.107 2767.425 3560.494 3831.609 3667.040 3298.371 3283.005
##  [73] 2756.394 2835.571 3495.776 3994.551 4219.359 4207.708 3602.665 2882.695
##  [81] 2784.213 3174.482 3766.617 4284.413 4298.097 3897.249 3118.163 3197.049
##  [89] 4025.034 4317.006 4506.431 4572.706 4019.295 3267.195 3423.964 4488.517
##  [97] 4879.119 4967.706 4847.331 4338.585 3578.991 3729.483 4581.431 4922.147
## [105] 5060.594 5031.624 4437.023 3583.183 3905.119 4614.453 4803.734 4909.539
## [113] 4793.699 4339.921 3664.130 3905.354 4733.978 5226.162 5243.703 5158.956
## [121] 4679.528 3789.186 4064.408 4858.256 5226.582 5264.338 5237.141 4675.294
## [129] 3864.006 4139.421 4970.197 5279.614 5612.206 5431.556 4656.801 3743.643
## [137] 3938.482 4876.997 5249.444 5336.550 5117.331 4570.114 3787.623 4097.935
## [145] 4981.636 5314.017 5560.522 5748.945 5048.405 4084.450 4219.603 5034.975
## [153] 5616.276 5624.208 5556.944 5039.839 4196.516 4475.382 5477.415 5910.317
## [161] 6081.959 5929.864 5019.975 4167.082 4365.169 5276.944 5385.282 5227.414
## [169] 4757.569 4389.580 3904.923 4309.989 5397.123 6018.166 6244.672 6134.710
## [177] 5495.495 4544.066 4778.190 5969.230 6111.306 6241.378 6039.267 5101.384
## [185] 4038.503 3926.995 4553.885 4648.859 4650.361 4262.601 3489.884 2696.939
## [193] 2553.496 2721.831 2416.960 2184.385 2319.326 2346.345 2288.426 2320.882
## [201] 2649.281 2385.812 2225.711 2831.975 3129.953 2797.525 2849.248 3539.224
## [209] 3901.964 3992.183 4388.393 3885.360 3296.524 3347.136 4051.701 4076.728
## [217] 4072.646 4130.462 3789.482 3323.341 3216.113 3800.960 4401.963 4666.535
## [225] 4592.283 4010.399 3310.203 3544.826 4329.977 4708.628 4778.314 4774.243
## [233] 4230.110 3538.204 3556.235 4440.124 4974.593 5232.839 5095.426 4515.331
## [241] 3782.377 3949.878 4810.375 5159.138 5274.726 5185.149 4554.409 3681.976
## [249] 3883.512 4740.642 4969.365 5217.873 5112.227 4502.644 3662.869 3807.959
## [257] 4727.455 5240.048 5302.246 5151.990 4612.029 3802.965 3892.912 4641.863
## [265] 5033.974 4934.771 5171.888 4476.996 3700.838 3846.361 4643.858 4872.305
## [273] 4954.863 4847.881 4196.156 3452.197 3415.522 3337.347 3887.575 4076.771
## [281] 4085.630 3927.950 3459.541 3567.112 4083.929 4336.792 4515.360 4602.054
## [289] 4367.663 3893.132 4127.352 4766.296 4990.092 5059.952 5113.277 4901.618
## [297] 4164.148 4229.597 4852.477 5242.800 5432.288 5353.900 4895.331 4281.862
## [305] 4329.198 4891.237 5373.640 5633.138 5581.515 5206.204 4602.043 4824.242
## [313] 5486.573 5644.236 5802.106 6024.892 5510.158 4907.294 5140.909 5780.987
## [321] 6127.381 6133.548 5890.211 5282.588 4725.428 4855.715 5532.730 6018.822
## [329] 6492.666 6356.461 5857.361 5154.689 5203.412 6037.610 6126.528 6038.357
## [337] 5995.776 5464.903 4578.097 4555.742 5188.734 5477.819 5455.935 5368.400
## [345] 4893.367 4270.191 4218.269 4635.892 5108.812 5314.180 5297.828 4963.982
## [353] 4220.067 4164.982 4681.722 4867.671 5060.925 5041.988 4703.060 4012.483
## [361] 4174.345 4739.900 4858.518 5049.236 4919.449 4686.925 3923.733 3891.308
## [369] 4332.083 4577.714 4664.111 4852.066 4401.137 3736.672 3808.875 4399.529
## [377] 4625.338 4730.775 4562.243 4129.270 3502.382 3696.783 4101.426 4183.779
## [385] 4239.832 4146.603 3704.882 3138.804 3259.539 3999.786 4134.684 4253.140
## [393] 4259.524 3976.003 3431.503 3653.306 3946.260 4015.260 3887.398 4035.754
## [401] 3847.458 3321.619 3328.747 3798.293 3983.262 4156.349 4218.426 3962.338
## [409] 3280.227 3319.748 3897.226 4075.683 4171.890 3988.227 3665.492 3155.139
## [417] 3125.875 3675.008 3906.100 3945.991 3859.551 3648.375 3065.332 3056.052
## [425] 3601.223 3807.596 3997.056 3984.858 3658.062 3115.445 3140.729 3560.569
## [433] 3751.787 3061.188
## 
## $call
## forecast.koyckDlm(model = model.koyck, x = test$Xt, h = 434)
## 
## attr(,"class")
## [1] "forecast.koyckDlm" "dLagM"

Akurasi Model Koyck

#mape data testing
mape.koyck <- MAPE(fore.koyck$forecasts, test$Yt)

#akurasi data training
mape_train <- dLagM::GoF(model.koyck)["MAPE"]

c("MAPE_testing" = mape.koyck, "MAPE_training" = mape_train)
## $MAPE_testing
## [1] 0.1251371
## 
## $MAPE_training.MAPE
## [1] 0.1122183

Regression with Distributed Lag

Modelling DLM with Optimum Lag

#penentuan lag optimum 
lagop<-finiteDLMauto(formula=Yt ~ Xt,
              data = data.frame(train),model.type = "dlm",error.type = "AIC");lagop
##    q - k    MASE      AIC      BIC   GMRAE    MBRAE R.Adj.Sq Ljung-Box
## 10    10 0.17312 22634.41 22705.28 0.18882 -0.06729  0.98475         0

Diperolah lag optimum untuk peubah unique visits adalah 10 hari sebelumnya.

model.dlm2 = dLagM::dlm(x = train$Xt,y = train$Yt , q = 10) 
summary(model.dlm2)
## 
## Call:
## lm(formula = model.formula, data = design)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -460.01 -117.49  -14.92  107.61  883.73 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 134.181164  18.291026   7.336 3.39e-13 ***
## x.t           1.375252   0.017426  78.919  < 2e-16 ***
## x.1           0.025309   0.023557   1.074   0.2828    
## x.2          -0.027753   0.023841  -1.164   0.2445    
## x.3          -0.007895   0.021792  -0.362   0.7172    
## x.4          -0.012271   0.018453  -0.665   0.5061    
## x.5           0.015212   0.018198   0.836   0.4033    
## x.6          -0.041082   0.018444  -2.227   0.0261 *  
## x.7           0.048076   0.021797   2.206   0.0275 *  
## x.8          -0.026523   0.023844  -1.112   0.2661    
## x.9           0.012151   0.023538   0.516   0.6058    
## x.10          0.007996   0.017399   0.460   0.6459    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 171.6 on 1711 degrees of freedom
## Multiple R-squared:  0.9848, Adjusted R-squared:  0.9847 
## F-statistic: 1.011e+04 on 11 and 1711 DF,  p-value: < 2.2e-16
## 
## AIC and BIC values for the model:
##        AIC      BIC
## 1 22634.41 22705.28

Terdapat 3 peubah yang berpengaruh terhadap model dalam tingkat kepercayaan 95%, yaitu X.t dan X.6, dan X.7 Artinya, berdasarkan metode DLM, jumlah page loads saat ini dipengaruhi oleh jumlah unique visits saat ini, pada 6 hari sebelumnya, dan 7 hari sebelumnya. Model tersebut merupakan model yang baik karena memiliki yaitu R-Squared 98.48%.

AIC(model.dlm2)
## [1] 22634.41
BIC(model.dlm2)
## [1] 22705.28
#ramalan
(fore.dlm2 <- forecast(model = model.dlm2, x=test$Xt, h=434))
## $forecasts
##   [1] 4038.862 3229.731 2104.150 2477.905 4152.488 4293.747 4091.701 3723.797
##   [9] 3252.446 1972.034 2299.746 3700.974 3947.175 3817.020 3794.462 2921.174
##  [17] 1737.700 2135.257 3550.668 3772.266 3672.788 2846.015 2577.325 1881.834
##  [25] 2125.164 4131.283 3996.426 4137.279 3783.934 3249.029 1897.759 2457.085
##  [33] 4154.616 3958.035 4119.824 3935.512 2993.372 1830.931 2296.458 4121.049
##  [41] 4082.627 4205.669 3923.264 3233.354 1895.680 2137.956 3631.516 4126.159
##  [49] 3917.302 3933.920 3273.588 1898.628 2317.525 3789.070 4044.745 3800.336
##  [57] 3635.612 2928.965 1830.357 2149.501 3672.929 3815.284 3589.282 3497.718
##  [65] 2910.511 1856.338 2445.538 4055.899 3996.472 3430.684 2808.272 3064.978
##  [73] 2008.751 2546.393 3877.171 4366.004 4445.201 4205.608 3029.377 1968.577
##  [81] 2337.807 3246.823 4152.032 4744.849 4387.023 3535.580 2242.051 2995.107
##  [89] 4637.580 4607.222 4752.587 4727.179 3578.514 2434.579 3324.929 5423.436
##  [97] 5388.095 5241.340 4937.580 3987.042 2819.308 3689.549 5374.528 5392.771
## [105] 5401.007 5236.784 4059.084 2743.814 4047.088 5308.797 5125.976 5181.478
## [113] 4877.323 4049.986 2981.277 4008.750 5542.932 5886.692 5546.543 5337.853
## [121] 4443.574 2969.255 4210.991 5661.375 5803.722 5571.722 5485.427 4391.101
## [129] 3112.632 4317.044 5832.595 5821.756 6227.639 5626.953 4182.517 2881.691
## [137] 3993.565 5810.129 5822.287 5719.053 5194.900 4253.526 3059.302 4283.321
## [145] 5899.213 5874.301 6109.117 6293.587 4746.182 3262.510 4287.639 5898.340
## [153] 6440.274 6000.574 5863.970 4860.156 3512.201 4734.426 6586.031 6712.938
## [161] 6682.608 6253.247 4531.657 3443.891 4523.486 6281.507 5794.894 5369.035
## [169] 4562.982 4155.316 3459.284 4635.257 6588.845 6977.597 6961.430 6523.288
## [177] 5324.104 3840.331 5040.850 7343.662 6728.872 6844.195 6350.128 4611.003
## [185] 3133.163 3721.072 5179.573 4851.792 4798.420 4030.197 2744.301 1714.791
## [193] 2035.004 2546.088 1775.068 1553.608 2015.715 1981.779 1819.481 1920.720
## [201] 2571.501 1772.642 1624.312 2994.566 3142.454 2228.563 2543.974 3947.213
## [209] 4147.119 4010.348 4754.612 3441.896 2584.023 3149.027 4583.251 4111.322
## [217] 4021.239 4204.968 3436.744 2750.844 2876.468 4194.222 4944.039 5020.236
## [225] 4666.985 3518.922 2536.694 3538.096 4996.242 5168.827 4992.939 4931.013
## [233] 3839.009 2814.948 3392.056 5204.319 5622.459 5707.845 5242.963 4148.882
## [241] 3092.812 3979.516 5657.370 5694.597 5648.737 5375.869 4171.135 2853.919
## [249] 3926.573 5575.143 5371.439 5677.931 5287.744 4126.934 2852.603 3792.849
## [257] 5611.545 5917.118 5658.664 5285.810 4311.415 3053.797 3855.523 5356.037
## [265] 5578.242 5062.240 5609.025 4049.820 2945.325 3851.059 5393.777 5270.160
## [273] 5193.270 4975.709 3698.826 2672.640 3173.905 3104.771 4242.866 4246.134
## [281] 4113.644 3778.716 2912.755 3523.865 4447.143 4613.970 4743.685 4777.475
## [289] 4255.033 3436.259 4273.747 5426.368 5379.056 5334.814 5387.067 4926.443
## [297] 3566.109 4257.339 5517.291 5825.418 5903.243 5589.346 4735.310 3794.909
## [305] 4378.661 5516.620 6057.397 6212.256 5902.427 5175.226 4212.934 5124.579
## [313] 6330.516 6142.398 6324.109 6652.825 5459.872 4578.487 5524.204 6690.395
## [321] 6883.591 6615.505 6136.654 5071.491 4390.496 5105.048 6402.785 6874.442
## [329] 7445.307 6813.423 5874.694 4816.741 5446.002 7144.656 6682.025 6435.476
## [337] 6400.626 5382.839 3969.777 4582.112 5962.403 6044.284 5769.411 5615.258
## [345] 4723.286 3786.501 4168.874 5090.703 5725.855 5773.873 5587.136 4911.906
## [353] 3637.476 4092.829 5207.821 5207.695 5437.931 5254.602 4595.210 3421.123
## [361] 4271.371 5348.002 5130.877 5424.377 5014.073 4649.692 3251.218 3768.293
## [369] 4738.429 4872.472 4887.015 5166.093 4152.467 3086.116 3758.124 4930.963
## [377] 4942.113 4949.400 4555.291 3788.823 2834.994 3710.323 4431.347 4264.488
## [385] 4320.705 4084.934 3276.246 2426.033 3126.078 4558.894 4264.744 4382.403
## [393] 4307.566 3723.271 2818.575 3665.219 4156.725 4029.554 3734.298 4125.284
## [401] 3658.568 2688.717 3129.995 4082.120 4116.732 4292.207 4304.581 3731.740
## [409] 2520.163 3115.466 4302.674 4212.219 4262.956 3814.725 3311.140 2496.716
## [417] 2832.900 4008.190 4040.942 3951.125 3729.886 3376.595 2343.583 2751.087
## [425] 3909.851 3905.184 4121.980 3946.632 3305.822 2422.953 2885.647 3764.946
## [433] 3811.111 2279.534
## 
## $call
## forecast.dlm(model = model.dlm2, x = test$Xt, h = 434)
## 
## attr(,"class")
## [1] "forecast.dlm" "dLagM"
#akurasi testing
mape.dlm2 <- MAPE(fore.dlm2$forecasts, test$Yt)

#akurasi data training
mape_train <- GoF(model.dlm2)["MAPE"]

c("MAPE_testing" = mape.dlm2, "MAPE_training" = mape_train)
## $MAPE_testing
## [1] 0.0615026
## 
## $MAPE_training.MAPE
## [1] 0.03360024

Model Autoregressive / Dynamic Regression

Modelling ARDLM

pqop<-ardlBoundOrders(data = data.frame(datareg) , formula = Yt ~ Xt )
c(p=pqop$p$Xt, q=pqop$q)
##  p  q 
## 14 15

Diperoleh lag optimum untuk peubah Xt atau unique visits adalah 14 hari sebelumnya, dan lag optimum untuk peubah Yt atau page loads adalah 15 hari sebelumnya.

model.ardl = ardlDlm(x = train$Xt, y = train$Yt, p = 14 , q = 15)
summary(model.ardl)
## 
## Time series regression with "ts" data:
## Start = 16, End = 1733
## 
## Call:
## dynlm(formula = as.formula(model.text), data = data, start = 1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -329.36  -77.02   -7.65   70.14  778.40 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  6.251255  12.798861   0.488 0.625314    
## X.t          1.362068   0.012005 113.462  < 2e-16 ***
## X.1         -0.357233   0.037514  -9.523  < 2e-16 ***
## X.2         -0.111113   0.038460  -2.889 0.003913 ** 
## X.3         -0.019748   0.038564  -0.512 0.608666    
## X.4         -0.084978   0.038560  -2.204 0.027674 *  
## X.5         -0.024592   0.038602  -0.637 0.524160    
## X.6         -0.133175   0.038619  -3.448 0.000578 ***
## X.7         -0.193303   0.039002  -4.956 7.91e-07 ***
## X.8         -0.092381   0.038905  -2.375 0.017681 *  
## X.9         -0.005272   0.038781  -0.136 0.891878    
## X.10        -0.037837   0.038756  -0.976 0.329074    
## X.11        -0.012857   0.038730  -0.332 0.739951    
## X.12        -0.038196   0.038757  -0.986 0.324509    
## X.13        -0.120611   0.038750  -3.113 0.001886 ** 
## X.14        -0.048061   0.036520  -1.316 0.188345    
## Y.1          0.280842   0.024362  11.528  < 2e-16 ***
## Y.2          0.056321   0.025207   2.234 0.025593 *  
## Y.3          0.021052   0.025228   0.834 0.404123    
## Y.4          0.050471   0.025229   2.000 0.045609 *  
## Y.5          0.029117   0.025254   1.153 0.249089    
## Y.6          0.076213   0.025280   3.015 0.002610 ** 
## Y.7          0.170735   0.025307   6.747 2.07e-11 ***
## Y.8          0.040657   0.025380   1.602 0.109358    
## Y.9          0.023342   0.025232   0.925 0.355036    
## Y.10         0.022490   0.025245   0.891 0.373120    
## Y.11         0.012868   0.025223   0.510 0.609992    
## Y.12         0.034431   0.025253   1.363 0.172911    
## Y.13         0.071856   0.025244   2.846 0.004474 ** 
## Y.14         0.058552   0.024567   2.383 0.017263 *  
## Y.15        -0.008855   0.008128  -1.090 0.276084    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 112.7 on 1687 degrees of freedom
## Multiple R-squared:  0.9935, Adjusted R-squared:  0.9934 
## F-statistic:  8639 on 30 and 1687 DF,  p-value: < 2.2e-16

Terdapat 15 peubah yang berpengaruh terhadap model dalam tingkat kepercayaan 95%. Model tersebut merupakan model yang baik karena memiliki yaitu R-Squared 99,35%.

AIC(model.ardl)
## [1] 21143.53
BIC(model.ardl)
## [1] 21317.9

Ramalan Model Autoregressive

(fore.ardl <- forecast(model = model.ardl, x=test$Xt, h=434))
## $forecasts
##   [1] 4107.623 3265.175 2140.257 2531.715 4222.953 4387.099 4158.279 3781.218
##   [9] 3281.178 2014.855 2362.822 3776.256 4022.362 3880.173 3847.094 2967.438
##  [17] 1789.396 2191.919 3617.046 3835.126 3737.551 2897.329 2634.259 1933.317
##  [25] 2173.559 4185.256 4057.330 4179.974 3843.588 3300.922 1943.826 2516.620
##  [33] 4202.190 4002.686 4177.395 3967.131 3032.965 1885.645 2336.516 4167.863
##  [41] 4123.383 4253.117 3953.043 3280.414 1935.440 2179.396 3683.735 4161.083
##  [49] 3957.830 3967.520 3310.755 1934.083 2351.743 3840.764 4074.960 3846.782
##  [57] 3671.453 2965.355 1866.332 2183.935 3705.726 3855.750 3625.918 3532.711
##  [65] 2949.665 1886.839 2477.455 4087.825 4030.606 3471.252 2850.328 3096.096
##  [73] 2039.473 2568.899 3910.975 4392.550 4466.056 4235.097 3062.472 2001.437
##  [81] 2372.092 3282.425 4178.733 4766.376 4378.566 3566.378 2268.447 3012.823
##  [89] 4663.624 4633.941 4769.232 4752.506 3591.214 2449.686 3349.257 5416.247
##  [97] 5395.556 5264.593 4946.006 4005.849 2831.392 3698.453 5383.799 5396.352
## [105] 5408.443 5242.396 4066.013 2754.692 4045.851 5320.468 5134.404 5195.150
## [113] 4878.448 4054.542 2990.099 4004.996 5549.473 5892.857 5549.303 5344.273
## [121] 4456.501 2966.871 4219.741 5672.364 5796.795 5579.136 5485.022 4390.452
## [129] 3118.237 4321.838 5830.403 5830.131 6226.127 5622.641 4192.391 2887.644
## [137] 4000.498 5806.637 5832.186 5713.727 5196.234 4262.867 3056.321 4287.538
## [145] 5907.693 5871.767 6116.910 6290.609 4746.234 3266.009 4295.876 5903.672
## [153] 6438.990 6009.919 5851.875 4864.356 3508.185 4729.613 6592.815 6704.566
## [161] 6677.982 6262.887 4532.962 3445.751 4528.212 6269.275 5808.695 5372.851
## [169] 4565.994 4162.954 3451.431 4627.162 6590.668 6976.238 6956.650 6534.525
## [177] 5328.343 3845.835 5047.717 7349.317 6721.619 6845.521 6336.131 4606.436
## [185] 3141.373 3737.359 5181.318 4870.265 4812.665 4027.447 2763.734 1723.630
## [193] 2043.864 2598.618 1817.401 1598.799 2048.903 2006.240 1829.088 1944.867
## [201] 2626.746 1829.646 1693.342 3039.347 3174.377 2252.286 2584.819 3986.600
## [209] 4169.153 4047.333 4783.252 3471.666 2628.300 3180.993 4604.307 4126.235
## [217] 4034.159 4215.814 3460.300 2776.115 2890.767 4209.376 4959.572 5014.092
## [225] 4686.227 3541.582 2557.659 3543.679 5019.571 5166.726 4996.592 4943.108
## [233] 3845.281 2836.132 3402.481 5204.320 5625.537 5710.242 5247.074 4156.560
## [241] 3097.957 3986.557 5660.751 5697.807 5647.445 5379.224 4172.121 2862.557
## [249] 3925.265 5575.006 5373.319 5684.459 5285.472 4126.077 2861.343 3794.851
## [257] 5612.354 5920.564 5659.540 5286.284 4320.529 3051.133 3858.730 5371.686
## [265] 5572.895 5074.447 5606.321 4053.352 2943.362 3857.806 5398.824 5276.127
## [273] 5211.360 4973.903 3706.738 2683.899 3179.853 3126.770 4270.837 4244.985
## [281] 4122.880 3787.555 2917.100 3515.692 4487.113 4632.978 4754.045 4808.648
## [289] 4259.288 3435.364 4297.785 5410.209 5394.359 5347.925 5391.659 4931.883
## [297] 3572.784 4265.369 5517.563 5821.173 5901.251 5588.642 4735.922 3797.349
## [305] 4382.032 5516.610 6055.932 6204.032 5891.261 5182.951 4205.974 5117.973
## [313] 6328.715 6140.521 6322.269 6644.856 5450.570 4571.610 5520.327 6671.589
## [321] 6876.140 6618.294 6123.161 5075.766 4384.299 5091.250 6399.762 6860.354
## [329] 7419.098 6808.315 5868.460 4810.945 5444.104 7138.512 6683.469 6427.664
## [337] 6397.909 5370.027 3960.691 4588.994 5956.359 6033.049 5787.122 5609.320
## [345] 4724.113 3792.067 4168.080 5112.091 5733.125 5778.078 5589.655 4924.815
## [353] 3644.240 4099.715 5231.751 5225.366 5447.677 5271.309 4599.300 3433.336
## [361] 4286.003 5351.829 5152.737 5443.413 5028.318 4664.648 3268.688 3781.533
## [369] 4757.400 4890.208 4903.371 5177.364 4173.559 3095.559 3780.832 4951.163
## [377] 4953.358 4981.232 4565.307 3819.031 2854.335 3725.136 4449.938 4291.589
## [385] 4338.452 4112.174 3301.061 2448.985 3145.503 4579.570 4289.443 4407.015
## [393] 4329.881 3749.592 2834.888 3695.530 4182.648 4055.447 3769.085 4142.772
## [401] 3677.194 2708.808 3144.379 4116.373 4135.617 4316.532 4325.142 3754.430
## [409] 2540.232 3147.428 4320.695 4236.698 4276.360 3840.176 3334.392 2519.026
## [417] 2855.783 4028.191 4062.760 3970.118 3750.807 3405.583 2358.575 2775.132
## [425] 3938.045 3921.514 4146.637 3964.393 3324.872 2446.711 2907.235 3787.079
## [433] 3835.827 2319.445
## 
## $call
## forecast.ardlDlm(model = model.ardl, x = test$Xt, h = 434)
## 
## attr(,"class")
## [1] "forecast.ardlDlm" "dLagM"

Akurasi

#akurasi testing
mape.ardl <- MAPE(fore.ardl$forecasts, test$Yt) #data testing

#akurasi data training
mape_train <- GoF(model.ardl)["MAPE"]

c("MAPE_testing" = mape.ardl, "MAPE_training" = mape_train)
## $MAPE_testing
## [1] 0.06458884
## 
## $MAPE_training.MAPE
## [1] 0.0227888

Perbandingan Tiga Metode Penanganan Autokorelasi

Plot Perbandingan Data Aktual dengan Tiga Metode Penanganan Autokorelasi

#PLOT
par(mfrow=c(1,1))
plot(test$Xt, test$Yt, type="b", col="black")
points(test$Xt, fore.koyck$forecasts,col="red")
points(test$Xt, fore.dlm2$forecasts,col="blue")
points(test$Xt, fore.ardl$forecasts,col="green")
legend("topleft",c("aktual", "koyck","DLM", "autoregressive"), lty=1, col=c("black","red","blue","green"), cex=0.8)

Secara eksploratif, terlihat bahwa metode Distributel Lag Model merupakan metode yang sesuai untuk peramalan karena memiliki tren data yang paling mendekati pola data aktual dibandingkan dengan metode Koyck dan Autoregressive Model.

Perbandingan Keakuratan ramalan

#PERBANDINGAN
akurasi <- matrix(c(mape.koyck,mape.dlm2, mape.ardl))
row.names(akurasi)<- c("Koyck","DLM","Autoregressive")
colnames(akurasi) <- c("MAPE")
akurasi
##                      MAPE
## Koyck          0.12513709
## DLM            0.06150260
## Autoregressive 0.06458884

Diagnostik Model

Uji Non Autokorelasi

bgtest(model.dlm2$model)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  model.dlm2$model
## LM test = 758.41, df = 1, p-value < 2.2e-16

Uji Heterogenitas

bptest(model.dlm2$model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model.dlm2$model
## BP = 193.78, df = 11, p-value < 2.2e-16

Diperoleh p-value =< 2.2e-16 < 0.05 Tolak H0, artinya cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada model awal dengan taraf nyata 5%. Autokorelasi pada model masih belum berhasik ditangani, sehingga perlu dilakukan penanganan dengan metode lain.

Kesimpulan

Metode yang paling cocok untuk metode peramalan terbaik yaitu metode Distributed lag Model

Hasil uji diagnostik menunjukkan bahwa dengan metode Distributed lag Model autokorelasi pada model regresi deret waktu belum berhasil ditangani, sehingga perlu dilakukan uji lanjut atau penanganan dengan metode lain.

Daftar Pustaka

https://www.kaggle.com/code/chitwanmanchanda/daily-website-visitors-eda/data

Gujarati, D. N. (2004). Basic Econometrics.Fourth Edition. New York: The McGrawHill.

Gujarati, D. N. (2006). Essentials of Econometrics. Third Edition. New York: The McGraw-Hill.

Yusriani E, Suprapto YK. 2016. Pemodelan prediksi pola akses website pemerintahan menggunakan classification-via-regression. Jurnal Masyarakat Telematika dan Informasi. 7(1):1-12.