MPDW

Pertemuan 1

Library / Packages

Package R yang akan digunakan pada perkuliahan Analisis Deret Waktu sesi UTS adalah: forecast, graphics, TTR, TSA . Jika package tersebut belum ada, silakan install terlebih dahulu.

#install.packages("forecast")
#install.packages("graphics")
#install.packages("TTR")
#install.packages("TSA")

Jika sudah ada, silakan panggil library package tersebut.

library("forecast")
## Warning: package 'forecast' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library("graphics")
library("TTR")
library("TSA")
## Warning: package 'TSA' was built under R version 4.3.3
## Registered S3 methods overwritten by 'TSA':
##   method       from    
##   fitted.Arima forecast
##   plot.Arima   forecast
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar

Impor Data

#install.packages("rio") #install jika belum ada
library(rio)
data1 <- import("https://raw.githubusercontent.com/rizkynurhambali/Praktikum-MPDW-2324/main/Pertemuan%201/Data_1.csv")
data2 <- import("https://raw.githubusercontent.com/rizkynurhambali/Praktikum-MPDW-2324/main/Pertemuan%201/Data_2.csv")

Eksplorasi Data

Melihat data menggunakan fungsi View(), struktur data menggunakan fungsi str(), dan dimensi data menggunakan fungsi dim().

str(data1)
## 'data.frame':    50 obs. of  2 variables:
##  $ Periode: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Yt     : num  48.7 45.8 46.4 46.2 44 53.8 47.6 47 47.6 51.1 ...
dim(data1)
## [1] 50  2

Mengubah data agar terbaca sebagai data deret waktu dengan fungsi ts() .

data1.ts <- ts(data1$Yt)
data2.ts <- ts(data2$Sales)

Menampilkan ringkasan data

summary(data1.ts)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   43.30   46.40   48.65   48.92   51.55   54.80
summary(data2.ts)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    9815   10210   10392   10379   10535   10827

Membuat plot data deret waktu

ts.plot(data1.ts, xlab="Time Period ", ylab="Reading", 
        main = "Time Series Plot")
points(data1.ts)

ts.plot(data2.ts, xlab="Time Period ", ylab="Sales", 
        main = "Time Series Plot of Sales")
points(data2.ts)

Menyimpan plot

#menyimpan plot
#dev.copy(png, "eksplorasi.png")
#dev.off()

Single Moving Average & Double Moving Average

Pembagian Data

Pembagian data latih dan data uji dilakukan dengan perbandingan 80% data latih dan 20% data uji.

#membagi data latih dan data uji
training_ma <- data2[1:96,]
testing_ma <- data2[97:120,]
train_ma.ts <- ts(training_ma$Sales)
test_ma.ts <- ts(testing_ma$Sales)

Eksplorasi Data

Eksplorasi data dilakukan pada keseluruhan data, data latih serta data uji menggunakan plot data deret waktu.

#eksplorasi keseluruhan data
plot(data2.ts, col="red",main="Plot semua data")
points(data2.ts)

#eksplorasi data latih
plot(train_ma.ts, col="blue",main="Plot data latih")
points(train_ma.ts)

#eksplorasi data uji
plot(test_ma.ts, col="blue",main="Plot data uji")
points(test_ma.ts)

Eksplorasi data juga dapat dilakukan menggunakan package ggplot2 dengan terlebih dahulu memanggil library package ggplot2.

#Eksplorasi dengan GGPLOT
library(ggplot2)
ggplot() + 
  geom_line(data = training_ma, aes(x = Period, y = Sales, col = "Data Latih")) +
  geom_line(data = testing_ma, aes(x = Period, y = Sales, col = "Data Uji")) +
  labs(x = "Periode Waktu", y = "Sales", color = "Legend") +
  scale_colour_manual(name="Keterangan:", breaks = c("Data Latih", "Data Uji"),
                      values = c("blue", "red")) + 
  theme_bw() + theme(legend.position = "bottom",
                     plot.caption = element_text(hjust=0.5, size=12))

Single Moving Average (SMA)

Ide dasar dari Single Moving Average (SMA) adalah data suatu periode dipengaruhi oleh data periode sebelumnya. Metode pemulusan ini cocok digunakan untuk pola data stasioner atau konstan. Prinsip dasar metode pemulusan ini adalah data pemulusan pada periode ke-t merupakan rata rata dari m buah data pada periode ke-t hingga periode ke (t-m+1). Data pemulusan pada periode ke-t selanjutnya digunakan sebagai nilai peramalan pada periode ke t+1

Pemulusan menggunakan metode SMA dilakukan dengan fungsi SMA(). Dalam hal ini akan dilakukan pemulusan dengan parameter m=4.

data.sma<-SMA(train_ma.ts, n=4)
data.sma
## Time Series:
## Start = 1 
## End = 96 
## Frequency = 1 
##  [1]       NA       NA       NA 10479.58 10308.78 10307.93 10304.73 10294.43
##  [9] 10333.10 10292.28 10303.00 10293.15 10477.55 10544.95 10614.55 10535.00
## [17] 10320.50 10225.40 10280.20 10349.15 10529.10 10571.60 10387.95 10314.38
## [25] 10166.18 10130.75 10202.43 10315.98 10429.90 10409.80 10421.15 10393.70
## [33] 10352.63 10351.20 10322.40 10298.05 10406.28 10445.30 10514.13 10542.85
## [41] 10445.60 10467.88 10515.33 10435.05 10481.18 10526.15 10526.05 10543.60
## [49] 10455.85 10321.53 10120.80 10171.55 10174.38 10195.58 10278.43 10264.88
## [57] 10332.28 10447.40 10460.58 10499.60 10497.68 10410.30 10386.83 10347.20
## [65] 10253.23 10222.80 10261.73 10254.73 10403.13 10477.90 10416.28 10444.90
## [73] 10251.15 10145.05 10186.45 10158.55 10274.90 10398.93 10534.13 10436.08
## [81] 10364.73 10336.43 10329.00 10451.00 10487.53 10415.68 10278.30 10284.35
## [89] 10273.18 10435.98 10477.90 10386.75 10436.85 10291.75 10328.58 10361.03

Data pemulusan pada periode ke-t selanjutnya digunakan sebagai nilai peramalan pada periode ke t+1 sehingga hasil peramalan 1 periode kedepan adalah sebagai berikut.

data.ramal<-c(NA,data.sma)
data.ramal #forecast 1 periode ke depan
##  [1]       NA       NA       NA       NA 10479.58 10308.78 10307.93 10304.73
##  [9] 10294.43 10333.10 10292.28 10303.00 10293.15 10477.55 10544.95 10614.55
## [17] 10535.00 10320.50 10225.40 10280.20 10349.15 10529.10 10571.60 10387.95
## [25] 10314.38 10166.18 10130.75 10202.43 10315.98 10429.90 10409.80 10421.15
## [33] 10393.70 10352.63 10351.20 10322.40 10298.05 10406.28 10445.30 10514.13
## [41] 10542.85 10445.60 10467.88 10515.33 10435.05 10481.18 10526.15 10526.05
## [49] 10543.60 10455.85 10321.53 10120.80 10171.55 10174.38 10195.58 10278.43
## [57] 10264.88 10332.28 10447.40 10460.58 10499.60 10497.68 10410.30 10386.83
## [65] 10347.20 10253.23 10222.80 10261.73 10254.73 10403.13 10477.90 10416.28
## [73] 10444.90 10251.15 10145.05 10186.45 10158.55 10274.90 10398.93 10534.13
## [81] 10436.08 10364.73 10336.43 10329.00 10451.00 10487.53 10415.68 10278.30
## [89] 10284.35 10273.18 10435.98 10477.90 10386.75 10436.85 10291.75 10328.58
## [97] 10361.03

Selanjutnya akan dilakukan peramalan sejumlah data uji yaitu 24 periode. Pada metode SMA, hasil peramalan 24 periode ke depan akan bernilai sama dengan hasil peramalan 1 periode kedepan. Dalam hal ini akan dilakukan pengguabungan data aktual train, data hasil pemulusan dan data hasil ramalan 24 periode kedepan.

data.gab<-cbind(aktual=c(train_ma.ts,rep(NA,24)),pemulusan=c(data.sma,rep(NA,24)),ramalan=c(data.ramal,rep(data.ramal[length(data.ramal)],23)))
data.gab #forecast 24 periode ke depan
##         aktual pemulusan  ramalan
##   [1,] 10618.1        NA       NA
##   [2,] 10537.9        NA       NA
##   [3,] 10209.3        NA       NA
##   [4,] 10553.0  10479.58       NA
##   [5,]  9934.9  10308.78 10479.58
##   [6,] 10534.5  10307.93 10308.78
##   [7,] 10196.5  10304.73 10307.93
##   [8,] 10511.8  10294.43 10304.73
##   [9,] 10089.6  10333.10 10294.43
##  [10,] 10371.2  10292.28 10333.10
##  [11,] 10239.4  10303.00 10292.28
##  [12,] 10472.4  10293.15 10303.00
##  [13,] 10827.2  10477.55 10293.15
##  [14,] 10640.8  10544.95 10477.55
##  [15,] 10517.8  10614.55 10544.95
##  [16,] 10154.2  10535.00 10614.55
##  [17,]  9969.2  10320.50 10535.00
##  [18,] 10260.4  10225.40 10320.50
##  [19,] 10737.0  10280.20 10225.40
##  [20,] 10430.0  10349.15 10280.20
##  [21,] 10689.0  10529.10 10349.15
##  [22,] 10430.4  10571.60 10529.10
##  [23,] 10002.4  10387.95 10571.60
##  [24,] 10135.7  10314.38 10387.95
##  [25,] 10096.2  10166.18 10314.38
##  [26,] 10288.7  10130.75 10166.18
##  [27,] 10289.1  10202.43 10130.75
##  [28,] 10589.9  10315.98 10202.43
##  [29,] 10551.9  10429.90 10315.98
##  [30,] 10208.3  10409.80 10429.90
##  [31,] 10334.5  10421.15 10409.80
##  [32,] 10480.1  10393.70 10421.15
##  [33,] 10387.6  10352.63 10393.70
##  [34,] 10202.6  10351.20 10352.63
##  [35,] 10219.3  10322.40 10351.20
##  [36,] 10382.7  10298.05 10322.40
##  [37,] 10820.5  10406.28 10298.05
##  [38,] 10358.7  10445.30 10406.28
##  [39,] 10494.6  10514.13 10445.30
##  [40,] 10497.6  10542.85 10514.13
##  [41,] 10431.5  10445.60 10542.85
##  [42,] 10447.8  10467.88 10445.60
##  [43,] 10684.4  10515.33 10467.88
##  [44,] 10176.5  10435.05 10515.33
##  [45,] 10616.0  10481.18 10435.05
##  [46,] 10627.7  10526.15 10481.18
##  [47,] 10684.0  10526.05 10526.15
##  [48,] 10246.7  10543.60 10526.05
##  [49,] 10265.0  10455.85 10543.60
##  [50,] 10090.4  10321.53 10455.85
##  [51,]  9881.1  10120.80 10321.53
##  [52,] 10449.7  10171.55 10120.80
##  [53,] 10276.3  10174.38 10171.55
##  [54,] 10175.2  10195.58 10174.38
##  [55,] 10212.5  10278.43 10195.58
##  [56,] 10395.5  10264.88 10278.43
##  [57,] 10545.9  10332.28 10264.88
##  [58,] 10635.7  10447.40 10332.28
##  [59,] 10265.2  10460.58 10447.40
##  [60,] 10551.6  10499.60 10460.58
##  [61,] 10538.2  10497.68 10499.60
##  [62,] 10286.2  10410.30 10497.68
##  [63,] 10171.3  10386.83 10410.30
##  [64,] 10393.1  10347.20 10386.83
##  [65,] 10162.3  10253.23 10347.20
##  [66,] 10164.5  10222.80 10253.23
##  [67,] 10327.0  10261.73 10222.80
##  [68,] 10365.1  10254.73 10261.73
##  [69,] 10755.9  10403.13 10254.73
##  [70,] 10463.6  10477.90 10403.13
##  [71,] 10080.5  10416.28 10477.90
##  [72,] 10479.6  10444.90 10416.28
##  [73,]  9980.9  10251.15 10444.90
##  [74,] 10039.2  10145.05 10251.15
##  [75,] 10246.1  10186.45 10145.05
##  [76,] 10368.0  10158.55 10186.45
##  [77,] 10446.3  10274.90 10158.55
##  [78,] 10535.3  10398.93 10274.90
##  [79,] 10786.9  10534.13 10398.93
##  [80,]  9975.8  10436.08 10534.13
##  [81,] 10160.9  10364.73 10436.08
##  [82,] 10422.1  10336.43 10364.73
##  [83,] 10757.2  10329.00 10336.43
##  [84,] 10463.8  10451.00 10329.00
##  [85,] 10307.0  10487.53 10451.00
##  [86,] 10134.7  10415.68 10487.53
##  [87,] 10207.7  10278.30 10415.68
##  [88,] 10488.0  10284.35 10278.30
##  [89,] 10262.3  10273.18 10284.35
##  [90,] 10785.9  10435.98 10273.18
##  [91,] 10375.4  10477.90 10435.98
##  [92,] 10123.4  10386.75 10477.90
##  [93,] 10462.7  10436.85 10386.75
##  [94,] 10205.5  10291.75 10436.85
##  [95,] 10522.7  10328.58 10291.75
##  [96,] 10253.2  10361.03 10328.58
##  [97,]      NA        NA 10361.03
##  [98,]      NA        NA 10361.03
##  [99,]      NA        NA 10361.03
## [100,]      NA        NA 10361.03
## [101,]      NA        NA 10361.03
## [102,]      NA        NA 10361.03
## [103,]      NA        NA 10361.03
## [104,]      NA        NA 10361.03
## [105,]      NA        NA 10361.03
## [106,]      NA        NA 10361.03
## [107,]      NA        NA 10361.03
## [108,]      NA        NA 10361.03
## [109,]      NA        NA 10361.03
## [110,]      NA        NA 10361.03
## [111,]      NA        NA 10361.03
## [112,]      NA        NA 10361.03
## [113,]      NA        NA 10361.03
## [114,]      NA        NA 10361.03
## [115,]      NA        NA 10361.03
## [116,]      NA        NA 10361.03
## [117,]      NA        NA 10361.03
## [118,]      NA        NA 10361.03
## [119,]      NA        NA 10361.03
## [120,]      NA        NA 10361.03

Adapun plot data deret waktu dari hasil peramalan yang dilakukan adalah sebagai berikut.

ts.plot(data2.ts, xlab="Time Period ", ylab="Sales", main= "SMA N=4 Data Sales")
points(data2.ts)
lines(data.gab[,2],col="green",lwd=2)
lines(data.gab[,3],col="red",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), lty=8, col=c("black","green","red"), cex=0.5)

Selanjutnya perhitungan akurasi dilakukan dengan ukuran akurasi Sum Squares Error (SSE), Mean Square Error (MSE) dan Mean Absolute Percentage Error (MAPE). Perhitungan akurasi dilakukan baik pada data latih maupun pada data uji.

#Menghitung nilai keakuratan data latih
error_train.sma = train_ma.ts-data.ramal[1:length(train_ma.ts)]
SSE_train.sma = sum(error_train.sma[5:length(train_ma.ts)]^2)
MSE_train.sma = mean(error_train.sma[5:length(train_ma.ts)]^2)
MAPE_train.sma = mean(abs((error_train.sma[5:length(train_ma.ts)]/train_ma.ts[5:length(train_ma.ts)])*100))

akurasi_train.sma <- matrix(c(SSE_train.sma, MSE_train.sma, MAPE_train.sma))
row.names(akurasi_train.sma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_train.sma) <- c("Akurasi m = 4")
akurasi_train.sma
##      Akurasi m = 4
## SSE   6.396116e+06
## MSE   6.952300e+04
## MAPE  2.049321e+00

Dalam hal ini nilai MAPE data latih pada metode pemulusan SMA kurang dari 2%, nilai ini dapat dikategorikan sebagai nilai akurasi yang sangat baik. Selanjutnya dilakukan perhitungan nilai MAPE data uji pada metde pemulusan SMA.

#Menghitung nilai keakuratan data uji
error_test.sma = test_ma.ts-data.gab[97:120,3]
SSE_test.sma = sum(error_test.sma^2)
MSE_test.sma = mean(error_test.sma^2)
MAPE_test.sma = mean(abs((error_test.sma/test_ma.ts*100)))

akurasi_test.sma <- matrix(c(SSE_test.sma, MSE_test.sma, MAPE_test.sma))
row.names(akurasi_test.sma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_test.sma) <- c("Akurasi m = 4")
akurasi_test.sma
##      Akurasi m = 4
## SSE   1.068022e+06
## MSE   4.450094e+04
## MAPE  1.591089e+00

Perhitungan akurasi menggunakan data latih menghasilkan nilai MAPE yang kurang dari 10% sehingga nilai akurasi ini dapat dikategorikan sebagai sangat baik.

Double Moving Average (DMA)

Metode pemulusan Double Moving Average (DMA) pada dasarnya mirip dengan SMA. Namun demikian, metode ini lebih cocok digunakan untuk pola data trend. Proses pemulusan dengan rata rata dalam metode ini dilakukan sebanyak 2 kali.

dma <- SMA(data.sma, n = 4)
At <- 2*data.sma - dma
Bt <- 2/(4-1)*(data.sma - dma)
data.dma<- At+Bt
data.ramal2<- c(NA, data.dma)

t = 1:24
f = c()

for (i in t) {
  f[i] = At[length(At)] + Bt[length(Bt)]*(i)
}

data.gab2 <- cbind(aktual = c(train_ma.ts,rep(NA,24)), pemulusan1 = c(data.sma,rep(NA,24)),pemulusan2 = c(data.dma, rep(NA,24)),At = c(At, rep(NA,24)), Bt = c(Bt,rep(NA,24)),ramalan = c(data.ramal2, f[-1]))
data.gab2
##         aktual pemulusan1 pemulusan2        At           Bt   ramalan
##   [1,] 10618.1         NA         NA        NA           NA        NA
##   [2,] 10537.9         NA         NA        NA           NA        NA
##   [3,] 10209.3         NA         NA        NA           NA        NA
##   [4,] 10553.0   10479.58         NA        NA           NA        NA
##   [5,]  9934.9   10308.78         NA        NA           NA        NA
##   [6,] 10534.5   10307.93         NA        NA           NA        NA
##   [7,] 10196.5   10304.73  10228.850 10259.200  -30.3500000        NA
##   [8,] 10511.8   10294.43  10278.529 10284.888   -6.3583333 10228.850
##   [9,] 10089.6   10333.10  10371.527 10356.156   15.3708333 10278.529
##  [10,] 10371.2   10292.28  10269.181 10278.419   -9.2375000 10371.527
##  [11,] 10239.4   10303.00  10298.500 10300.300   -1.8000000 10269.181
##  [12,] 10472.4   10293.15  10272.765 10280.919   -8.1541667 10298.500
##  [13,] 10827.2   10477.55  10704.310 10613.606   90.7041667 10272.765
##  [14,] 10640.8   10544.95  10778.763 10685.238   93.5250000 10704.310
##  [15,] 10517.8   10614.55  10834.550 10746.550   88.0000000 10778.763
##  [16,] 10154.2   10535.00  10521.646 10526.988   -5.3416667 10834.550
##  [17,]  9969.2   10320.50  10015.083 10137.250 -122.1666667 10521.646
##  [18,] 10260.4   10225.40   9894.629 10026.938 -132.3083333 10015.083
##  [19,] 10737.0   10280.20  10180.075 10220.125  -40.0500000  9894.629
##  [20,] 10430.0   10349.15  10441.379 10404.488   36.8916667 10180.075
##  [21,] 10689.0   10529.10  10834.329 10712.238  122.0916667 10441.379
##  [22,] 10430.4   10571.60  10803.413 10710.688   92.7250000 10834.329
##  [23,] 10002.4   10387.95  10268.783 10316.450  -47.6666667 10803.413
##  [24,] 10135.7   10314.38  10087.073 10177.994  -90.9208333 10268.783
##  [25,] 10096.2   10166.18   9843.092  9972.325 -129.2333333 10087.073
##  [26,] 10288.7   10130.75   9932.313 10011.688  -79.3750000  9843.092
##  [27,] 10289.1   10202.43  10200.748 10201.419   -0.6708333  9932.313
##  [28,] 10589.9   10315.98  10502.881 10428.119   74.7625000 10200.748
##  [29,] 10551.9   10429.90  10696.796 10590.038  106.7583333 10502.881
##  [30,] 10208.3   10409.80  10526.925 10480.075   46.8500000 10696.796
##  [31,] 10334.5   10421.15  10466.056 10448.094   17.9625000 10526.925
##  [32,] 10480.1   10393.70  10360.471 10373.763  -13.2916667 10466.056
##  [33,] 10387.6   10352.63  10283.135 10310.931  -27.7958333 10360.471
##  [34,] 10202.6   10351.20  10303.752 10322.731  -18.9791667 10283.135
##  [35,] 10219.3   10322.40  10268.098 10289.819  -21.7208333 10303.752
##  [36,] 10382.7   10298.05  10243.019 10265.031  -22.0125000 10268.098
##  [37,] 10820.5   10406.28  10509.265 10468.069   41.1958333 10243.019
##  [38,] 10358.7   10445.30  10574.123 10522.594   51.5291667 10509.265
##  [39,] 10494.6   10514.13  10677.771 10612.313   65.4583333 10574.123
##  [40,] 10497.6   10542.85  10652.371 10608.563   43.8083333 10677.771
##  [41,] 10431.5   10445.60  10376.652 10404.231  -27.5791667 10652.371
##  [42,] 10447.8   10467.88  10426.646 10443.138  -16.4916667 10376.652
##  [43,] 10684.4   10515.33  10552.679 10537.738   14.9416667 10426.646
##  [44,] 10176.5   10435.05  10383.529 10404.138  -20.6083333 10552.679
##  [45,] 10616.0   10481.18  10491.706 10487.494    4.2125000 10383.529
##  [46,] 10627.7   10526.15  10587.358 10562.875   24.4833333 10491.706
##  [47,] 10684.0   10526.05  10582.623 10559.994   22.6291667 10587.358
##  [48,] 10246.7   10543.60  10584.194 10567.956   16.2375000 10582.623
##  [49,] 10265.0   10455.85  10360.746 10398.788  -38.0416667 10584.194
##  [50,] 10090.4   10321.53  10087.806 10181.294  -93.4875000 10360.746
##  [51,]  9881.1   10120.80   9721.394  9881.156 -159.7625000 10087.806
##  [52,] 10449.7   10171.55  10011.748 10075.669  -63.9208333  9721.394
##  [53,] 10276.3   10174.38  10136.563 10151.688  -15.1250000 10011.748
##  [54,] 10175.2   10195.58  10245.575 10225.575   20.0000000 10136.563
##  [55,] 10212.5   10278.43  10400.831 10351.869   48.9625000 10245.575
##  [56,] 10395.5   10264.88  10325.813 10301.438   24.3750000 10400.831
##  [57,] 10545.9   10332.28  10439.754 10396.763   42.9916667 10325.813
##  [58,] 10635.7   10447.40  10641.827 10564.056   77.7708333 10439.754
##  [59,] 10265.2   10460.58  10601.065 10544.869   56.1958333 10641.827
##  [60,] 10551.6   10499.60  10607.329 10564.238   43.0916667 10601.065
##  [61,] 10538.2   10497.68  10533.279 10519.038   14.2416667 10607.329
##  [62,] 10286.2   10410.30  10315.738 10353.563  -37.8250000 10533.279
##  [63,] 10171.3   10386.83  10283.867 10325.050  -41.1833333 10315.738
##  [64,] 10393.1   10347.20  10241.700 10283.900  -42.2000000 10283.867
##  [65,] 10162.3   10253.23  10092.954 10157.063  -64.1083333 10241.700
##  [66,] 10164.5   10222.80  10089.946 10143.088  -53.1416667 10092.954
##  [67,] 10327.0   10261.73  10245.871 10252.213   -6.3416667 10089.946
##  [68,] 10365.1   10254.73  10265.735 10261.331    4.4041667 10245.871
##  [69,] 10755.9   10403.13  10599.010 10520.656   78.3541667 10265.735
##  [70,] 10463.6   10477.90  10692.119 10606.431   85.6875000 10599.010
##  [71,] 10080.5   10416.28  10463.390 10444.544   18.8458333 10692.119
##  [72,] 10479.6   10444.90  10460.483 10454.250    6.2333333 10463.390
##  [73,]  9980.9   10251.15  10007.140 10104.744  -97.6041667 10460.483
##  [74,] 10039.2   10145.05   9862.894  9975.756 -112.8625000 10007.140
##  [75,] 10246.1   10186.45  10069.054 10116.013  -46.9583333  9862.894
##  [76,] 10368.0   10158.55  10113.967 10131.800  -17.8333333 10069.054
##  [77,] 10446.3   10274.90  10414.338 10358.563   55.7750000 10113.967
##  [78,] 10535.3   10398.93  10639.290 10543.144   96.1458333 10414.338
##  [79,] 10786.9   10534.13  10854.958 10726.625  128.3333333 10639.290
##  [80,]  9975.8   10436.08  10477.856 10461.144   16.7125000 10854.958
##  [81,] 10160.9   10364.73  10250.163 10295.988  -45.8250000 10477.856
##  [82,] 10422.1   10336.43  10200.738 10255.013  -54.2750000 10250.163
##  [83,] 10757.2   10329.00  10266.406 10291.444  -25.0375000 10200.738
##  [84,] 10463.8   10451.00  10585.521 10531.713   53.8083333 10266.406
##  [85,] 10307.0   10487.53  10631.754 10574.063   57.6916667 10585.521
##  [86,] 10134.7   10415.68  10407.133 10410.550   -3.4166667 10631.754
##  [87,] 10207.7   10278.30  10061.925 10148.475  -86.5500000 10407.133
##  [88,] 10488.0   10284.35  10147.496 10202.238  -54.7416667 10061.925
##  [89,] 10262.3   10273.18  10207.008 10233.475  -26.4666667 10147.496
##  [90,] 10785.9   10435.98  10632.683 10554.000   78.6833333 10207.008
##  [91,] 10375.4   10477.90  10661.317 10587.950   73.3666667 10632.683
##  [92,] 10123.4   10386.75  10375.583 10380.050   -4.4666667 10661.317
##  [93,] 10462.7   10436.85  10440.985 10439.331    1.6541667 10375.583
##  [94,] 10205.5   10291.75  10114.146 10185.188  -71.0416667 10440.985
##  [95,] 10522.7   10328.58  10274.565 10296.169  -21.6041667 10114.146
##  [96,] 10253.2   10361.03  10371.817 10367.500    4.3166667 10274.565
##  [97,]      NA         NA         NA        NA           NA 10371.817
##  [98,]      NA         NA         NA        NA           NA 10376.133
##  [99,]      NA         NA         NA        NA           NA 10380.450
## [100,]      NA         NA         NA        NA           NA 10384.767
## [101,]      NA         NA         NA        NA           NA 10389.083
## [102,]      NA         NA         NA        NA           NA 10393.400
## [103,]      NA         NA         NA        NA           NA 10397.717
## [104,]      NA         NA         NA        NA           NA 10402.033
## [105,]      NA         NA         NA        NA           NA 10406.350
## [106,]      NA         NA         NA        NA           NA 10410.667
## [107,]      NA         NA         NA        NA           NA 10414.983
## [108,]      NA         NA         NA        NA           NA 10419.300
## [109,]      NA         NA         NA        NA           NA 10423.617
## [110,]      NA         NA         NA        NA           NA 10427.933
## [111,]      NA         NA         NA        NA           NA 10432.250
## [112,]      NA         NA         NA        NA           NA 10436.567
## [113,]      NA         NA         NA        NA           NA 10440.883
## [114,]      NA         NA         NA        NA           NA 10445.200
## [115,]      NA         NA         NA        NA           NA 10449.517
## [116,]      NA         NA         NA        NA           NA 10453.833
## [117,]      NA         NA         NA        NA           NA 10458.150
## [118,]      NA         NA         NA        NA           NA 10462.467
## [119,]      NA         NA         NA        NA           NA 10466.783
## [120,]      NA         NA         NA        NA           NA 10471.100

Hasil pemulusan menggunakan metode DMA divisualisasikan sebagai berikut

ts.plot(data2.ts, xlab="Time Period ", ylab="Sales", main= "DMA N=4 Data Sales")
points(data2.ts)
lines(data.gab2[,3],col="green",lwd=2)
lines(data.gab2[,6],col="red",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), lty=8, col=c("black","green","red"), cex=0.8)

Selanjutnya perhitungan akurasi dilakukan baik pada data latih maupun data uji. Perhitungan akurasi dilakukan dengan ukuran akurasi SSE, MSE dan MAPE.

#Menghitung nilai keakuratan data latih
error_train.dma = train_ma.ts-data.ramal2[1:length(train_ma.ts)]
SSE_train.dma = sum(error_train.dma[8:length(train_ma.ts)]^2)
MSE_train.dma = mean(error_train.dma[8:length(train_ma.ts)]^2)
MAPE_train.dma = mean(abs((error_train.dma[8:length(train_ma.ts)]/train_ma.ts[8:length(train_ma.ts)])*100))

akurasi_train.dma <- matrix(c(SSE_train.dma, MSE_train.dma, MAPE_train.dma))
row.names(akurasi_train.dma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_train.dma) <- c("Akurasi m = 4")
akurasi_train.dma
##      Akurasi m = 4
## SSE   9.856243e+06
## MSE   1.107443e+05
## MAPE  2.524911e+00

Perhitungan akurasi pada data latih menggunakan nilai MAPE menghasilkan nilai MAPE yang kurang dari 10% sehingga dikategorikan sangat baik. Selanjutnya, perhitungan nilai akurasi dilakukan pada data uji.

#Menghitung nilai keakuratan data uji
error_test.dma = test_ma.ts-data.gab2[97:120,6]
SSE_test.dma = sum(error_test.dma^2)
MSE_test.dma = mean(error_test.dma^2)
MAPE_test.dma = mean(abs((error_test.dma/test_ma.ts*100)))

akurasi_test.dma <- matrix(c(SSE_test.dma, MSE_test.dma, MAPE_test.dma))
row.names(akurasi_test.dma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_test.dma) <- c("Akurasi m = 4")
akurasi_test.dma
##      Akurasi m = 4
## SSE   1.022231e+06
## MSE   4.259296e+04
## MAPE  1.551109e+00

Perhitungan akurasi menggunakan data latih menghasilkan nilai MAPE yang kurang dari 10% sehingga nilai akurasi ini dapat dikategorikan sebagai sangat baik.

Pada data latih, metode SMA lebih baik dibandingkan dengan metode DMA, sedangkan pada data uji, metode DMA lebih baik dibandingkan SMA

Single Exponential Smoothing & Double Exponential Smoothing

Metode Exponential Smoothing adalah metode pemulusan dengan melakukan pembobotan menurun secara eksponensial. Nilai yang lebih baru diberi bobot yang lebih besar dari nilai terdahulu. Terdapat satu atau lebih parameter pemulusan yang ditentukan secara eksplisit, dan hasil pemilihan parameter tersebut akan menentukan bobot yang akan diberikan pada nilai pengamatan. Ada dua macam model, yaitu model tunggal dan ganda.

Pembagian Data

Pembagian data latih dan data uji dilakukan dengan perbandingan 80% data latih dan 20% data uji.

#membagi training dan testing
training<-data1[1:40,]
testing<-data1[41:50,]
train.ts <- ts(training$Yt)
test.ts <- ts(testing$Yt)

Eksplorasi

Eksplorasi dilakukan dengan membuat plot data deret waktu untuk keseluruhan data, data latih, dan data uji.

#eksplorasi data
plot(data1.ts, col="black",main="Plot semua data")
points(data1.ts)

plot(train.ts, col="red",main="Plot data latih")
points(train.ts)

plot(test.ts, col="blue",main="Plot data uji")
points(test.ts)

Eksplorasi data juga dapat dilakukan menggunakan package ggplot2 .

#Eksplorasi dengan GGPLOT
library(ggplot2)
ggplot() + 
  geom_line(data = training, aes(x = Periode, y = Yt, col = "Data Latih")) +
  geom_line(data = testing, aes(x = Periode, y = Yt, col = "Data Uji")) +
  labs(x = "Periode Waktu", y = "Membaca", color = "Legend") +
  scale_colour_manual(name="Keterangan:", breaks = c("Data Latih", "Data Uji"),
                      values = c("blue", "red")) + 
  theme_bw() + theme(legend.position = "bottom",
                     plot.caption = element_text(hjust=0.5, size=12))

SES

Single Exponential Smoothing merupakan metode pemulusan yang tepat digunakan untuk data dengan pola stasioner atau konstan.

Nilai pemulusan pada periode ke-t didapat dari persamaan:

\[ \tilde{y}_T=\lambda y_t+(1-\lambda)\tilde{y}_{T-1} \]

Nilai parameter \(\lambda\) adalah nilai antara 0 dan 1.

Nilai pemulusan periode ke-t bertindak sebagai nilai ramalan pada periode ke-\((T+\tau)\).

\[ \tilde{y}_{T+\tau}(T)=\tilde{y}_T \]

Pemulusan dengan metode SES dapat dilakukan dengan dua fungsi dari packages berbeda, yaitu (1) fungsi ses() dari packages forecast dan (2) fungsi HoltWinters dari packages stats .

#Cara 1 (fungsi ses)
ses.1 <- ses(train.ts, h = 10, alpha = 0.2)
plot(ses.1)

ses.1
##    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 41        51.2589 47.18575 55.33206 45.02955 57.48826
## 42        51.2589 47.10508 55.41272 44.90618 57.61162
## 43        51.2589 47.02596 55.49185 44.78517 57.73264
## 44        51.2589 46.94828 55.56953 44.66637 57.85143
## 45        51.2589 46.87198 55.64583 44.54968 57.96812
## 46        51.2589 46.79698 55.72082 44.43499 58.08282
## 47        51.2589 46.72323 55.79458 44.32219 58.19562
## 48        51.2589 46.65065 55.86715 44.21119 58.30661
## 49        51.2589 46.57920 55.93860 44.10192 58.41589
## 50        51.2589 46.50883 56.00898 43.99429 58.52352
ses.2<- ses(train.ts, h = 10, alpha = 0.7)
plot(ses.2)

ses.2
##    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 41       51.64682 46.89683 56.39681 44.38234 58.91130
## 42       51.64682 45.84872 57.44492 42.77939 60.51425
## 43       51.64682 44.96299 58.33065 41.42479 61.86885
## 44       51.64682 44.18162 59.11201 40.22979 63.06385
## 45       51.64682 43.47463 59.81901 39.14853 64.14511
## 46       51.64682 42.82411 60.46953 38.15364 65.14000
## 47       51.64682 42.21836 61.07528 37.22723 66.06640
## 48       51.64682 41.64925 61.64439 36.35685 66.93679
## 49       51.64682 41.11083 62.18281 35.53342 67.76022
## 50       51.64682 40.59863 62.69501 34.75006 68.54357

Untuk mendapatkan gambar hasil pemulusan pada data latih dengan fungsi ses() , perlu digunakan fungsi autoplot() dan autolayer() dari library packages ggplot2 .

autoplot(ses.1) +
  autolayer(fitted(ses.1), series="Fitted") +
  ylab("Membaca") + xlab("Periode")

Pada fungsi ses() , terdapat beberapa argumen yang umum digunakan, yaitu nilia y , gamma , beta , alpha , dan h .

Nilai y adalah nilai data deret waktu, gamma adalah parameter pemulusan untuk komponen musiman, beta adalah parameter pemulusan untuk tren, dan alpha adalah parameter pemulusan untuk stasioner, serta h adalah banyaknya periode yang akan diramalkan.

Kasus di atas merupakan contoh inisialisasi nilai parameter \(\lambda\) dengan nilai alpha 0,2 dan 0,7 dan banyak periode data yang akan diramalkan adalah sebanyak 10 periode. Selanjutnya akan digunakan fungsi HoltWinters() dengan nilai inisialisasi parameter dan panjang periode peramalan yang sama dengan fungsi ses() .

#Cara 2 (fungsi Holtwinter)
ses1<- HoltWinters(train.ts, gamma = FALSE, beta = FALSE, alpha = 0.2)
plot(ses1)

#ramalan
ramalan1<- forecast(ses1, h=10)
ramalan1
##    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 41       51.25907 47.18474 55.33340 45.02791 57.49023
## 42       51.25907 47.10405 55.41409 44.90451 57.61363
## 43       51.25907 47.02490 55.49324 44.78346 57.73468
## 44       51.25907 46.94720 55.57094 44.66463 57.85351
## 45       51.25907 46.87088 55.64726 44.54791 57.97023
## 46       51.25907 46.79586 55.72228 44.43318 58.08496
## 47       51.25907 46.72208 55.79606 44.32035 58.19779
## 48       51.25907 46.64949 55.86865 44.20932 58.30882
## 49       51.25907 46.57802 55.94012 44.10002 58.41812
## 50       51.25907 46.50762 56.01052 43.99236 58.52579
ses2<- HoltWinters(train.ts, gamma = FALSE, beta = FALSE, alpha = 0.7)
plot(ses2)

#ramalan
ramalan2<- forecast(ses2, h=10)
ramalan2
##    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 41       51.64682 46.89554 56.39810 44.38036 58.91328
## 42       51.64682 45.84714 57.44650 42.77697 60.51667
## 43       51.64682 44.96117 58.33247 41.42200 61.87164
## 44       51.64682 44.17959 59.11405 40.22668 63.06696
## 45       51.64682 43.47240 59.82124 39.14513 64.14851
## 46       51.64682 42.82170 60.47194 38.14997 65.14367
## 47       51.64682 42.21579 61.07785 37.22331 66.07033
## 48       51.64682 41.64652 61.64711 36.35269 66.94095
## 49       51.64682 41.10796 62.18568 35.52903 67.76461
## 50       51.64682 40.59562 62.69802 34.74546 68.54818

Fungsi HoltWinters memiliki argumen yang sama dengan fungsi ses() . Argumen-argumen kedua fungsi dapat dilihat lebih lanjut dengan ?ses() atau ?HoltWinters .

Nilai parameter \(\alpha\) dari kedua fungsi dapat dioptimalkan menyesuaikan dari error-nya paling minimumnya. Caranya adalah dengan membuat parameter \(\alpha =\) NULL .

#SES
ses.opt <- ses(train.ts, h = 10, alpha = NULL)
plot(ses.opt)

ses.opt
##    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 41       50.98117 46.91751 55.04483 44.76633 57.19601
## 42       50.98117 46.86658 55.09576 44.68845 57.27389
## 43       50.98117 46.81628 55.14606 44.61153 57.35081
## 44       50.98117 46.76658 55.19575 44.53552 57.42682
## 45       50.98117 46.71746 55.24487 44.46039 57.50194
## 46       50.98117 46.66890 55.29344 44.38613 57.57621
## 47       50.98117 46.62088 55.34146 44.31269 57.64965
## 48       50.98117 46.57339 55.38895 44.24005 57.72229
## 49       50.98117 46.52640 55.43594 44.16818 57.79416
## 50       50.98117 46.47990 55.48244 44.09707 57.86527
#Lamda Optimum Holt Winter
sesopt<- HoltWinters(train.ts, gamma = FALSE, beta = FALSE,alpha = NULL)
sesopt
## Holt-Winters exponential smoothing without trend and without seasonal component.
## 
## Call:
## HoltWinters(x = train.ts, alpha = NULL, beta = FALSE, gamma = FALSE)
## 
## Smoothing parameters:
##  alpha: 0.161055
##  beta : FALSE
##  gamma: FALSE
## 
## Coefficients:
##     [,1]
## a 51.001
plot(sesopt)

#ramalan
ramalanopt<- forecast(sesopt, h=10)
ramalanopt
##    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 41         51.001 46.94040 55.06161 44.79084 57.21117
## 42         51.001 46.88807 55.11394 44.71082 57.29119
## 43         51.001 46.83640 55.16561 44.63179 57.37021
## 44         51.001 46.78537 55.21664 44.55374 57.44827
## 45         51.001 46.73494 55.26707 44.47662 57.52539
## 46         51.001 46.68511 55.31690 44.40041 57.60160
## 47         51.001 46.63584 55.36617 44.32506 57.67695
## 48         51.001 46.58712 55.41489 44.25055 57.75146
## 49         51.001 46.53894 55.46307 44.17686 57.82515
## 50         51.001 46.49126 55.51074 44.10395 57.89806

Setelah dilakukan peramalan, akan dilakukan perhitungan keakuratan hasil peramalan. Perhitungan akurasi ini dilakukan baik pada data latih dan data uji.

Akurasi Data Latih

Perhitungan akurasi data dapat dilakukan dengan cara langsung maupun manual. Secara langsung, nilai akurasi dapat diambil dari objek yang tersimpan pada hasil SES, yaitu sum of squared errors (SSE). Nilai akurasi lain dapat dihitung pula dari nilai SSE tersebut.

#Keakuratan Metode
#Pada data training
SSE1<-ses1$SSE
MSE1<-ses1$SSE/length(train.ts)
RMSE1<-sqrt(MSE1)

akurasi1 <- matrix(c(SSE1,MSE1,RMSE1))
row.names(akurasi1)<- c("SSE", "MSE", "RMSE")
colnames(akurasi1) <- c("Akurasi lamda=0.2")
akurasi1
##      Akurasi lamda=0.2
## SSE         388.280675
## MSE           9.707017
## RMSE          3.115609
SSE2<-ses2$SSE
MSE2<-ses2$SSE/length(train.ts)
RMSE2<-sqrt(MSE2)

akurasi2 <- matrix(c(SSE2,MSE2,RMSE2))
row.names(akurasi2)<- c("SSE", "MSE", "RMSE")
colnames(akurasi2) <- c("Akurasi lamda=0.7")
akurasi2
##      Akurasi lamda=0.7
## SSE         522.770369
## MSE          13.069259
## RMSE          3.615143
#Cara Manual
fitted1<-ramalan1$fitted
sisaan1<-ramalan1$residuals
head(sisaan1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA -2.90000 -1.72000 -1.57600 -3.46080  7.03136
resid1<-training$Yt-ramalan1$fitted
head(resid1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA -2.90000 -1.72000 -1.57600 -3.46080  7.03136
#Cara Manual
SSE.1=sum(sisaan1[2:length(train.ts)]^2)
SSE.1
## [1] 388.2807
MSE.1 = SSE.1/length(train.ts)
MSE.1
## [1] 9.707017
MAPE.1 = sum(abs(sisaan1[2:length(train.ts)]/train.ts[2:length(train.ts)])*
               100)/length(train.ts)
MAPE.1
## [1] 5.249856
akurasi.1 <- matrix(c(SSE.1,MSE.1,MAPE.1))
row.names(akurasi.1)<- c("SSE", "MSE", "MAPE")
colnames(akurasi.1) <- c("Akurasi lamda=0.2")
akurasi.1
##      Akurasi lamda=0.2
## SSE         388.280675
## MSE           9.707017
## MAPE          5.249856
fitted2<-ramalan2$fitted
sisaan2<-ramalan2$residuals
head(sisaan2)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA -2.90000 -0.27000 -0.28100 -2.28430  9.11471
resid2<-training$Yt-ramalan2$fitted
head(resid2)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA -2.90000 -0.27000 -0.28100 -2.28430  9.11471
SSE.2=sum(sisaan2[2:length(train.ts)]^2)
SSE.2
## [1] 522.7704
MSE.2 = SSE.2/length(train.ts)
MSE.2
## [1] 13.06926
MAPE.2 = sum(abs(sisaan2[2:length(train.ts)]/train.ts[2:length(train.ts)])*
               100)/length(train.ts)
MAPE.2
## [1] 5.767118
akurasi.2 <- matrix(c(SSE.2,MSE.2,MAPE.2))
row.names(akurasi.2)<- c("SSE", "MSE", "MAPE")
colnames(akurasi.2) <- c("Akurasi lamda=0.7")
akurasi.2
##      Akurasi lamda=0.7
## SSE         522.770369
## MSE          13.069259
## MAPE          5.767118

Berdasarkan nilai SSE, MSE, RMSE, dan MAPE di antara kedua parameter, nilai parameter \(\lambda=0,2\) menghasilkan akurasi yang lebih baik dibanding \(\lambda=0,7\) . Hal ini dilihat dari nilai masing-masing ukuran akurasi yang lebih kecil. Berdasarkan nilai MAPE-nya, hasil ini dapat dikategorikan sebagai peramalan sangat baik.

Akurasi Data Uji

Akurasi data uji dapat dihitung dengan cara yang hampir sama dengan perhitungan akurasi data latih.

selisih1<-ramalan1$mean-testing$Yt
SSEtesting1<-sum(selisih1^2)
MSEtesting1<-SSEtesting1/length(testing)

selisih2<-ramalan2$mean-testing$Yt
SSEtesting2<-sum(selisih2^2)
MSEtesting2<-SSEtesting2/length(testing)

selisihopt<-ramalanopt$mean-testing$Yt
SSEtestingopt<-sum(selisihopt^2)
MSEtestingopt<-SSEtestingopt/length(testing)

akurasitesting1 <- matrix(c(SSEtesting1,SSEtesting2,SSEtestingopt))
row.names(akurasitesting1)<- c("SSE1", "SSE2", "SSEopt")
akurasitesting1
##             [,1]
## SSE1    95.28706
## SSE2   108.02806
## SSEopt  88.47392
akurasitesting2 <- matrix(c(MSEtesting1,MSEtesting2,MSEtestingopt))
row.names(akurasitesting2)<- c("MSE1", "MSE2", "MSEopt")
akurasitesting2
##            [,1]
## MSE1   47.64353
## MSE2   54.01403
## MSEopt 44.23696

Selain dengan cara di atas, perhitungan nilai akurasi dapat menggunakan fungsi accuracy() dari package forecast . Penggunaannya yaitu dengan menuliskan accuracy(hasil ramalan, kondisi aktual) . Contohnya adalah sebagai berikut.

#cara lain
accuracy(ramalanopt,testing$Yt)
##                      ME     RMSE      MAE       MPE     MAPE      MASE
## Training set  0.3663352 3.149004 2.666641  0.357541 5.419489 0.7981504
## Test set     -1.1910047 2.974457 2.330201 -2.710010 4.861054 0.6974508
##                     ACF1
## Training set -0.07140176
## Test set              NA

DES

Metode pemulusan Double Exponential Smoothing (DES) digunakan untuk data yang memiliki pola tren. Metode DES adalah metode semacam SES, hanya saja dilakukan dua kali, yaitu pertama untuk tahapan ‘level’ dan kedua untuk tahapan ‘tren’. Pemulusan menggunakan metode ini akan menghasilkan peramalan tidak konstan untuk periode berikutnya.

Pemulusan dengan metode DES kali ini akan menggunakan fungsi HoltWinters() . Jika sebelumnya nilai argumen beta dibuat FALSE , kali ini argumen tersebut akan diinisialisasi bersamaan dengan nilai alpha .

#Lamda=0.2 dan gamma=0.2
des.1<- HoltWinters(train.ts, gamma = FALSE, beta = 0.2, alpha = 0.2)
plot(des.1)

#ramalan
ramalandes1<- forecast(des.1, h=10)
ramalandes1
##    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 41       52.93449 46.89794 58.97104 43.70238 62.16660
## 42       53.23737 47.02939 59.44534 43.74309 62.73164
## 43       53.54024 47.10629 59.97420 43.70036 63.38013
## 44       53.84312 47.12544 60.56081 43.56931 64.11693
## 45       54.14600 47.08556 61.20645 43.34798 64.94402
## 46       54.44888 46.98696 61.91080 43.03685 65.86090
## 47       54.75176 46.83121 62.67230 42.63833 66.86519
## 48       55.05464 46.62073 63.48854 42.15608 67.95319
## 49       55.35751 46.35839 64.35663 41.59454 69.12048
## 50       55.66039 46.04729 65.27350 40.95842 70.36236
#Lamda=0.6 dan gamma=0.3
des.2<- HoltWinters(train.ts, gamma = FALSE, beta = 0.3, alpha = 0.6)
plot(des.2)

#ramalan
ramalandes2<- forecast(des.2, h=10)
ramalandes2
##    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 41       51.35923 46.08547 56.63298 43.29371 59.42474
## 42       51.24032 44.55201 57.92864 41.01142 61.46922
## 43       51.12142 42.73300 59.50984 38.29244 63.95040
## 44       51.00252 40.68212 61.32292 35.21883 66.78621
## 45       50.88362 38.43488 63.33236 31.84491 69.92232
## 46       50.76472 36.01516 65.51427 28.20722 73.32221
## 47       50.64581 33.43979 67.85184 24.33147 76.96015
## 48       50.52691 30.72117 70.33265 20.23665 80.81717
## 49       50.40801 27.86889 72.94712 15.93741 84.87861
## 50       50.28911 24.89063 75.68759 11.44548 89.13273

Selanjutnya jika ingin membandingkan plot data latih dan data uji adalah sebagai berikut.

#Visually evaluate the prediction
plot(data1.ts)
lines(des.1$fitted[,1], lty=2, col="blue")
lines(ramalandes1$mean, col="red")

Untuk mendapatkan nilai parameter optimum dari DES, argumen alpha dan beta dapat dibuat NULL seperti berikut.

#Lamda dan gamma optimum
des.opt<- HoltWinters(train.ts, gamma = FALSE)
des.opt
## Holt-Winters exponential smoothing with trend and without seasonal component.
## 
## Call:
## HoltWinters(x = train.ts, gamma = FALSE)
## 
## Smoothing parameters:
##  alpha: 0.4635085
##  beta : 0.2628024
##  gamma: FALSE
## 
## Coefficients:
##          [,1]
## a 51.81211440
## b -0.03605837
plot(des.opt)

#ramalan
ramalandesopt<- forecast(des.opt, h=10)
ramalandesopt
##    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 41       51.77606 46.66859 56.88352 43.96486 59.58725
## 42       51.74000 45.82194 57.65805 42.68912 60.79088
## 43       51.70394 44.77088 58.63700 41.10074 62.30714
## 44       51.66788 43.54431 59.79145 39.24395 64.09181
## 45       51.63182 42.16755 61.09610 37.15746 66.10618
## 46       51.59576 40.66041 62.53112 34.87158 68.31995
## 47       51.55971 39.03793 64.08148 32.40931 70.71011
## 48       51.52365 37.31150 65.73580 29.78804 73.25926
## 49       51.48759 35.48986 67.48532 27.02118 75.95400
## 50       51.45153 33.57990 69.32316 24.11923 78.78383

Selanjutnya akan dilakukan perhitungan akurasi pada data latih maupun data uji dengan ukuran akurasi SSE, MSE dan MAPE.

Akurasi Data Latih

#Akurasi Data Training
ssedes.train1<-des.1$SSE
msedes.train1<-ssedes.train1/length(train.ts)
sisaandes1<-ramalandes1$residuals
head(sisaandes1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA       NA  3.50000  5.36000  4.63360 15.86714
mapedes.train1 <- sum(abs(sisaandes1[3:length(train.ts)]/train.ts[3:length(train.ts)])
                      *100)/length(train.ts)

akurasides.1 <- matrix(c(ssedes.train1,msedes.train1,mapedes.train1))
row.names(akurasides.1)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.1) <- c("Akurasi lamda=0.2 dan gamma=0.2")
akurasides.1
##      Akurasi lamda=0.2 dan gamma=0.2
## SSE                        989.65686
## MSE                         24.74142
## MAPE                         7.75642
ssedes.train2<-des.2$SSE
msedes.train2<-ssedes.train2/length(train.ts)
sisaandes2<-ramalandes2$residuals
head(sisaandes2)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA       NA  3.50000  3.47000  0.83340 11.62875
mapedes.train2 <- sum(abs(sisaandes2[3:length(train.ts)]/train.ts[3:length(train.ts)])
                      *100)/length(train.ts)

akurasides.2 <- matrix(c(ssedes.train2,msedes.train2,mapedes.train2))
row.names(akurasides.2)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.2) <- c("Akurasi lamda=0.6 dan gamma=0.3")
akurasides.2
##      Akurasi lamda=0.6 dan gamma=0.3
## SSE                       632.851720
## MSE                        15.821293
## MAPE                        6.232456

Hasil akurasi dari data latih didapatkan skenario 2 dengan lamda=0.6 dan gamma=0.3 memiliki hasil yang lebih baik. Namun untuk kedua skenario dapat dikategorikan peramalan sangat baik berdasarkan nilai MAPE-nya.

Akurasi Data Uji

#Akurasi Data Testing
selisihdes1<-ramalandes1$mean-testing$Yt
selisihdes1
## Time Series:
## Start = 41 
## End = 50 
## Frequency = 1 
##  [1] 5.03448806 3.73736622 9.54024438 0.04312254 1.64600071 2.44887887
##  [7] 4.15175703 6.35463519 3.95751335 7.96039151
SSEtestingdes1<-sum(selisihdes1^2)
MSEtestingdes1<-SSEtestingdes1/length(testing$Yt)
MAPEtestingdes1<-sum(abs(selisihdes1/testing$Yt)*100)/length(testing$Yt)

selisihdes2<-ramalandes2$mean-testing$Yt
selisihdes2
## Time Series:
## Start = 41 
## End = 50 
## Frequency = 1 
##  [1]  3.45922576  1.74032361  7.12142147 -2.79748068 -1.61638283 -1.23528497
##  [7]  0.04581288  1.82691074 -0.99199141  2.58910645
SSEtestingdes2<-sum(selisihdes2^2)
MSEtestingdes2<-SSEtestingdes2/length(testing$Yt)
MAPEtestingdes2<-sum(abs(selisihdes2/testing$Yt)*100)/length(testing$Yt)

selisihdesopt<-ramalandesopt$mean-testing$Yt
selisihdesopt
## Time Series:
## Start = 41 
## End = 50 
## Frequency = 1 
##  [1]  3.87605603  2.23999765  7.70393928 -2.13211910 -0.86817747 -0.40423584
##  [7]  0.95970578  2.82364741  0.08758903  3.75153066
SSEtestingdesopt<-sum(selisihdesopt^2)
MSEtestingdesopt<-SSEtestingdesopt/length(testing$Yt)
MAPEtestingdesopt<-sum(abs(selisihdesopt/testing$Yt)*100)/length(testing$Yt)

akurasitestingdes <-
  matrix(c(SSEtestingdes1,MSEtestingdes1,MAPEtestingdes1,SSEtestingdes2,MSEtestingdes2,
           MAPEtestingdes2,SSEtestingdesopt,MSEtestingdesopt,MAPEtestingdesopt),
         nrow=3,ncol=3)
row.names(akurasitestingdes)<- c("SSE", "MSE", "MAPE")
colnames(akurasitestingdes) <- c("des ske1","des ske2","des opt")
akurasitestingdes
##        des ske1  des ske2    des opt
## SSE  275.686644 88.701354 107.830825
## MSE   27.568664  8.870135  10.783082
## MAPE   9.330928  4.877651   5.225022

Perbandingan SES dan DES

MSEfull <-
  matrix(c(MSEtesting1,MSEtesting2,MSEtestingopt,MSEtestingdes1,MSEtestingdes2,
           MSEtestingdesopt),nrow=3,ncol=2)
row.names(MSEfull)<- c("ske 1", "ske 2", "ske opt")
colnames(MSEfull) <- c("ses","des")
MSEfull
##              ses       des
## ske 1   47.64353 27.568664
## ske 2   54.01403  8.870135
## ske opt 44.23696 10.783082

Kedua metode dapat dibandingkan dengan menggunakan ukuran akurasi yang sama. Contoh di atas adalah perbandingan kedua metode dengan ukuran akurasi MSE. Hasilnya didapatkan metode DES lebih baik dibandingkan metode SES dilihat dari MSE yang lebih kecil nilainya.

Pemulusan Data Musiman

Pertama impor kembali data baru untuk latihan data musiman.

#Import data
library(rio)
data3 <- import("https://raw.githubusercontent.com/rizkynurhambali/Praktikum-MPDW-2324/main/Pertemuan%201/Electric_Production.csv")
data3.ts <- ts(data3$Yt)

Selanjutnya melakukan pembagian data dan mengubahnya menjadi data deret waktu.

#membagi data menjadi training dan testing
training<-data3[1:192,2]
testing<-data3[193:241,2]
training.ts<-ts(training, frequency = 13)
testing.ts<-ts(testing, frequency = 13)

Kemudian akan dilakukan eskplorasi dengan plot data deret waktu sebagai berikut.

#Membuat plot time series
plot(data3.ts, col="red",main="Plot semua data")
points(data3.ts)

plot(training.ts, col="blue",main="Plot data latih")
points(training.ts)

plot(testing.ts, col="green",main="Plot data uji")
points(testing.ts)

Metode Holt-Winter untuk peramalan data musiman menggunakan tiga persamaan pemulusan yang terdiri atas persamaan untuk level \((L_t)\), trend \((B_t)\), dan komponen seasonal / musiman \((S_t)\) dengan parameter pemulusan berupa \(\alpha\), \(\beta\), dan \(\gamma\). Metode Holt-Winter musiman terbagi menjadi dua, yaitu metode aditif dan metode multiplikatif. Perbedaan persamaan dan contoh datanya adalah sebagai berikut.

Pemulusan data musiman dengan metode Winter dilakukan menggunakan fungsi HoltWinters() dengan memasukkan argumen tambahan, yaitu gamma() dan seasonal() . Arguman seasonal() diinisialisasi menyesuaikan jenis musiman, aditif atau multiplikatif.

Winter Aditif

Perhitungan dengan model aditif dilakukan jika plot data asli menunjukkan fluktuasi musiman yang relatif stabil (konstan).

Pemulusan

#Pemulusan dengan winter aditif 
winter1 <- HoltWinters(training.ts,alpha=0.2,beta=0.1,gamma=0.1,seasonal = "additive")
winter1$fitted
## Time Series:
## Start = c(2, 1) 
## End = c(15, 10) 
## Frequency = 13 
##                xhat     level        trend        season
##  2.000000  88.54720  87.09424  0.182710904  1.2702538462
##  2.076923  89.35006  87.80409  0.235424883  1.3105461538
##  2.153846  80.20116  88.31712  0.263185721 -8.3791461538
##  2.230769  79.24275  88.64359  0.269514524 -9.6703615385
##  2.307692  86.99289  88.94230  0.272433583 -2.2218384615
##  2.384615  96.28834  89.38477  0.289437697  6.6141307692
##  2.461538  96.00536  89.91460  0.313476850  5.7772846154
##  2.538462  96.01483  90.31015  0.321683558  5.3830000000
##  2.615385  88.18864  88.87382  0.145882946 -0.8310692308
##  2.692308  79.68943  87.51016 -0.005071818 -7.8156615385
##  2.769231  81.37692  88.00770  0.045189654 -6.6759769231
##  2.846154  93.80604  90.67977  0.307877345  2.8183923077
##  2.923077 105.56926  92.67246  0.476358567 12.4204461538
##  3.000000  92.62681  90.89474  0.250951296  1.4811097582
##  3.076923  91.82073  90.23887  0.160269181  1.4215895083
##  3.153846  79.92237  88.32350 -0.047295489 -8.3538309434
##  3.230769  79.56744  89.18277  0.043361094 -9.6586853012
##  3.307692  89.63976  91.52076  0.272824225 -2.1538220045
##  3.384615 100.17500  93.06477  0.399942979  6.7102873806
##  3.461538  99.49776  93.30379  0.383850936  5.8101114488
##  3.538462  96.86370  91.97165  0.212251801  4.6797975513
##  3.615385  87.94223  89.43933 -0.062206265 -1.4348882870
##  3.692308  81.72203  89.39687 -0.060230876 -7.6146156534
##  3.769231  88.21262  93.48340  0.354444600 -5.6252261566
##  3.846154 102.28161  98.01694  0.772354299  3.4923171948
##  3.923077 109.95628  97.76731  0.670156106 11.5188170705
##  4.000000  96.45785  95.01187  0.327596431  1.1183812995
##  4.076923  93.27897  92.63090  0.056739478  0.5913308268
##  4.153846  82.39203  90.54114 -0.157909864 -7.9912046133
##  4.230769  83.24525  91.98393  0.002159568 -8.7408327760
##  4.307692  93.16522  94.55184  0.258734485 -1.6453469861
##  4.384615 103.12062  96.08821  0.386498014  6.6459192062
##  4.461538  98.72020  93.50678  0.089705553  5.1237149089
##  4.538462  93.74063  90.38964 -0.230978441  3.5819652871
##  4.615385  86.12278  87.99692 -0.447153075 -1.4269867301
##  4.692308  82.66807  88.93283 -0.308846681 -5.9559137485
##  4.769231  88.83358  92.68947  0.097701909 -3.9535873604
##  4.846154  97.37066  94.06196  0.225180215  3.0835244197
##  4.923077 103.75558  93.46412  0.142879019 10.1485783719
##  5.000000  89.83351  90.01489 -0.216332596  0.0349534879
##  5.076923  88.30330  88.87887 -0.308300739 -0.2672665429
##  5.153846  81.98633  89.54783 -0.210574838 -7.3509268847
##  5.230769  85.90162  93.41859  0.197558586 -7.7145331056
##  5.307692  96.13950  96.76169  0.512112279 -1.1342928718
##  5.384615 102.62193  96.70768  0.455500182  5.4587493611
##  5.461538  98.00088  94.01883  0.141065657  3.8409789325
##  5.538462  94.94451  92.27470 -0.047453868  2.7172667510
##  5.615385  92.59431  93.39841  0.069661833 -0.8737611515
##  5.692308  93.07702  96.98535  0.421389715 -4.3297193897
##  5.769231  96.75259  99.55959  0.636675391 -3.4436741371
##  5.846154 103.10340  99.75639  0.592687520  2.7543196387
##  5.923077 105.68439  96.74080  0.231859596  8.7117319094
##  6.000000  92.42340  92.92884 -0.172522180 -0.3329190837
##  6.076923  92.41103  92.48686 -0.199468137  0.1236370614
##  6.153846  88.52750  94.24918 -0.003288663 -5.7183931869
##  6.230769  91.29324  97.43403  0.315525294 -6.4563183365
##  6.307692  97.06080  98.07361  0.347930457 -1.3607412575
##  6.384615 100.64814  96.31032  0.136808437  4.2010112593
##  6.461538  97.01442  94.03220 -0.104684399  3.0869008327
##  6.538462  98.44481  95.23319  0.025883230  3.1857295552
##  6.615385  99.17923  98.31464  0.331439093  0.5331503774
##  6.692308  97.04449 100.04203  0.471034586 -3.4685766847
##  6.769231  97.00332 100.18475  0.438202829 -3.6196256246
##  6.846154 100.11056  98.56694  0.232602346  1.3110079451
##  6.923077 103.68868  96.58348  0.010995242  7.0942048051
##  7.000000  94.36425  94.95764 -0.152688284 -0.4407029133
##  7.076923  97.19534  96.29106 -0.004077185  0.9083549571
##  7.153846  92.50134  96.88841  0.056066081 -4.4431373574
##  7.230769  91.00883  97.24901  0.086519218 -6.3266976845
##  7.307692  94.45064  96.63900  0.016866551 -2.2052293388
##  7.384615  98.84380  95.68862 -0.079858282  3.2350399181
##  7.461538 100.65223  96.98526  0.057791633  3.6091713458
##  7.538462 103.82082  99.14489  0.267975103  4.4079530094
##  7.615385 100.32328  99.00460  0.227148744  1.0915323476
##  7.692308  95.55830  98.95839  0.199813096 -3.5999037105
##  7.769231  92.91824  97.34207  0.018199036 -4.4420275564
##  7.846154  96.55018  96.22130 -0.095697716  0.4245795264
##  7.923077 103.12001  96.71708 -0.036549304  6.4394707021
##  8.000000  97.94835  97.72655  0.068052587  0.1537414845
##  8.076923 101.54991 100.10218  0.298809633  1.1489280204
##  8.153846  95.84290  99.91410  0.250121347 -4.3213248080
##  8.230769  92.47007  98.94698  0.128397347 -6.6053083563
##  8.307692  96.16915  98.67311  0.088169871 -2.5921286679
##  8.384615 105.28753 101.17259  0.329300899  3.7856395767
##  8.461538 106.10177 101.33886  0.312998339  4.4499052278
##  8.538462 105.20143 100.73543  0.221355011  4.2446475737
##  8.615385 100.66439  99.59684  0.085360402  0.9821897524
##  8.692308  92.54708  97.05118 -0.177741338 -4.3263599496
##  8.769231  91.24261  96.36846 -0.228238908 -4.8976145629
##  8.846154  98.61515  97.99658 -0.042603094  0.6611731718
##  8.923077 107.48299 100.42101  0.204099864  6.8578782687
##  9.000000 102.79394 101.43235  0.284824131  1.0767696682
##  9.076923 101.40941 100.31103  0.144209235  0.9541748739
##  9.153846  93.36339  98.24811 -0.076502971 -4.8082208067
##  9.230769  91.10740  97.97025 -0.096638763 -6.7662182592
##  9.307692  98.78026 100.26533  0.142533328 -1.6276045550
##  9.384615 107.19184 103.06334  0.408080060  3.7204293355
##  9.461538 108.98540 104.40103  0.501041166  4.0833319157
##  9.538462 106.94934 102.94349  0.305183177  3.7006691355
##  9.615385  99.93468 100.02234 -0.017449623 -0.0702172047
##  9.692308  93.72638  98.42970 -0.174969143 -4.5283502321
##  9.769231  95.51776  99.70297 -0.030144716 -4.1550713072
##  9.846154 103.94185 102.08300  0.210872141  1.6479850052
##  9.923077 111.92110 104.32622  0.414107058  7.1807753385
## 10.000000 103.38305 102.66243  0.206317044  0.5143100816
## 10.076923 100.86361 100.79349 -0.001208003  0.0713260494
## 10.153846  94.37309  99.40208 -0.140228201 -4.8887639742
## 10.230769  96.03563 101.73780  0.107366006 -5.8095298959
## 10.307692 105.52255 105.60466  0.483315370 -0.5654176269
## 10.384615 111.26036 106.63052  0.537570308  4.0922737620
## 10.461538 108.62477 105.00374  0.321135025  3.2998999571
## 10.538462 104.17746 101.79880 -0.031472426  2.4101379369
## 10.615385  98.18817  99.17879 -0.290325698 -0.7002952864
## 10.692308  95.91847 100.04245 -0.174927137 -3.9490525238
## 10.769231  99.76741 102.83645  0.121965399 -3.1910038772
## 10.846154 107.25711 104.51823  0.277947147  2.4609246729
## 10.923077 109.32521 102.88842  0.087171032  6.3496152814
## 11.000000  98.71496  99.31013 -0.279375094 -0.3157901071
## 11.076923  97.18659  98.04890 -0.377560384 -0.4847547387
## 11.153846  96.08721 100.11844 -0.132850116 -3.8983871467
## 11.230769 100.11078 104.13447  0.282037749 -4.3057324407
## 11.307692 105.29822 105.27839  0.368226191 -0.3483978739
## 11.384615 107.60341 104.15756  0.219319730  3.2265326286
## 11.461538 102.21632 100.49565 -0.168802443  1.8894701528
## 11.538462  98.30324  97.39091 -0.462396883  1.3747248492
## 11.615385  95.99321  96.71560 -0.483687592 -0.2387010429
## 11.692308  94.72813  97.81499 -0.325379889 -2.7614823791
## 11.769231  97.02166  99.69371 -0.104970502 -2.5670768851
## 11.846154 100.71093  99.16086 -0.147757693  1.6978202108
## 11.923077 101.23787  96.73046 -0.376022233  4.8834307805
## 12.000000  92.65642  93.97857 -0.613609632 -0.7085312692
## 12.076923  97.21159  96.97055 -0.253050118  0.4940863328
## 12.153846  99.02272 101.07850  0.183050144 -2.2388356875
## 12.230769 100.01589 103.56361  0.413255791 -3.9609786697
## 12.307692 103.06139 103.62713  0.378282052 -0.9440237177
## 12.384615 102.37023 100.65313  0.043054321  1.6740439349
## 12.461538  98.91689  98.38942 -0.187622303  0.7150923914
## 12.538462 100.49986  99.28918 -0.078884125  1.2895620150
## 12.615385 102.23343 101.67164  0.167250707  0.3945297684
## 12.692308 102.47326 103.97249  0.380610203 -1.8798448320
## 12.769231 101.47797 103.88263  0.333563088 -2.7382256467
## 12.846154 102.57289 101.70562  0.082505751  0.7847620493
## 12.923077 103.64818  99.82855 -0.113451988  3.9330811843
## 13.000000 102.68460 101.85078  0.100116478  0.7337067884
## 13.076923 107.98625 105.31158  0.436184409  2.2384873802
## 13.153846 104.73152 105.62557  0.423965454 -1.3180130996
## 13.230769 101.13431 104.92379  0.311390991 -4.1008736240
## 13.307692 100.67092 102.87998  0.075870810 -2.2849346415
## 13.384615 101.45081 100.83563 -0.136151530  0.7513374379
## 13.461538 102.01468 100.97339 -0.108759813  1.1500451015
## 13.538462 105.82224 103.40306  0.145082604  2.2741013432
## 13.615385 106.65137 105.10285  0.300553760  1.2479677542
## 13.692308 102.05629 103.96737  0.156950282 -2.0680332916
## 13.769231  97.96489 101.78438 -0.077043485 -3.7424549963
## 13.846154 100.71704 100.87626 -0.160151196  0.0009310938
## 13.923077 106.79843 102.03894 -0.027868062  4.7873550482
## 14.000000 105.19774 103.04431  0.075455328  2.0779785129
## 14.076923 104.98227 102.75380  0.038858463  2.1896115597
## 14.153846  98.55409 100.51164 -0.189242858 -1.7683109539
## 14.230769  92.67075  98.12290 -0.409192608 -5.0429543447
## 14.307692  94.19119  97.73162 -0.407401688 -3.1330240016
## 14.384615  99.30646  98.71398 -0.268425525  0.8609043059
## 14.461538 103.36297 101.19140  0.006159350  2.1654147678
## 14.538462 105.52907 102.49699  0.136101853  2.8959859686
## 14.615385 101.50983 100.87589 -0.039617605  0.6735538408
## 14.692308  95.34420  98.61041 -0.262204177 -3.0040083612
## 14.769231  93.79057  98.14771 -0.282254107 -4.0748858368
## 14.846154 100.63922 100.16178 -0.052621419  0.5300636299
## 14.923077 108.52678 103.08151  0.244614170  5.2006486056
## 15.000000 105.10792 102.96757  0.208758658  1.9315910555
## 15.076923 104.19741 102.75371  0.166496227  1.2772062730
## 15.153846  97.53718 100.28256 -0.097267947 -2.6481099535
## 15.230769  93.60600  98.87054 -0.228743603 -5.0357906646
## 15.307692  97.39566 100.05973 -0.086949641 -2.5771193498
## 15.384615 104.65059 102.52325  0.168097095  1.9592438048
## 15.461538 106.32013 103.39635  0.238597278  2.6851847820
## 15.538462 104.51802 102.22710  0.097812660  2.1931081356
## 15.615385  99.40513  99.77873 -0.156805755 -0.2167924469
## 15.692308  95.91455  99.19796 -0.199202360 -3.0842080810
xhat1 <- winter1$fitted[,2]

winter1.opt<- HoltWinters(training.ts, alpha= NULL,  beta = NULL, gamma = NULL, seasonal = "additive")
winter1.opt
## Holt-Winters exponential smoothing with trend and additive seasonal component.
## 
## Call:
## HoltWinters(x = training.ts, alpha = NULL, beta = NULL, gamma = NULL,     seasonal = "additive")
## 
## Smoothing parameters:
##  alpha: 0.4047538
##  beta : 0
##  gamma: 1
## 
## Coefficients:
##            [,1]
## a   109.2446603
## b     0.1827109
## s1   -0.8266228
## s2    5.6964456
## s3    0.3679335
## s4   -1.1981680
## s5   -9.2800809
## s6   -8.1509015
## s7   -0.8688158
## s8    4.3878031
## s9    3.5559231
## s10  -1.7827396
## s11  -7.2290284
## s12  -4.4226157
## s13   4.2285397
winter1.opt$fitted
## Time Series:
## Start = c(2, 1) 
## End = c(15, 10) 
## Frequency = 13 
##                xhat     level     trend       season
##  2.000000  88.54720  87.09424 0.1827109   1.27025385
##  2.076923  89.83701  88.34376 0.1827109   1.31054615
##  2.153846  80.69475  88.89119 0.1827109  -8.37914615
##  2.230769  79.51454  89.00219 0.1827109  -9.67036154
##  2.307692  87.09484  89.13397 0.1827109  -2.22183846
##  2.384615  96.41638  89.61954 0.1827109   6.61413077
##  2.461538  96.19692  90.23692 0.1827109   5.77728462
##  2.538462  96.07390  90.50819 0.1827109   5.38300000
##  2.615385  86.46083  87.10919 0.1827109  -0.83106923
##  2.692308  77.30331  84.93626 0.1827109  -7.81566154
##  2.769231  80.60867  87.10194 0.1827109  -6.67597692
##  2.846154  95.91289  92.91179 0.1827109   2.81839231
##  2.923077 108.25457  95.65141 0.1827109  12.42044615
##  3.000000  93.20737  90.18551 0.1827109   2.83914360
##  3.076923  90.32767  88.29804 0.1827109   1.84691449
##  3.153846  76.58257  84.88445 0.1827109  -8.48459417
##  3.230769  78.69108  88.25364 0.1827109  -9.74526943
##  3.307692  91.84113  93.43486 0.1827109  -1.77644065
##  3.384615 102.73524  95.29915 0.1827109   7.25337618
##  3.461538 100.21016  94.11993 0.1827109   5.90751297
##  3.538462  90.83985  90.54153 0.1827109   0.11560808
##  3.615385  83.49537  87.60802 0.1827109  -4.29536258
##  3.692308  84.91386  89.63059 0.1827109  -4.89943847
##  3.769231  98.69569  96.91347 0.1827109   1.59950930
##  3.846154 108.07204 101.31064 0.1827109   6.57868522
##  3.923077 101.37750  97.08140 0.1827109   4.11338553
##  4.000000  93.78116  93.80379 0.1827109  -0.20534367
##  4.076923  86.32915  89.58838 0.1827109  -3.44194863
##  4.153846  84.62433  88.24005 0.1827109  -3.79843832
##  4.230769  88.54712  90.75867 0.1827109  -2.39426445
##  4.307692  94.86717  93.98792 0.1827109   0.69654855
##  4.384615 101.50057  96.06739 0.1827109   5.25046883
##  4.461538  91.45842  90.89943 0.1827109   0.37627394
##  4.538462  83.24697  87.53147 0.1827109  -4.46721922
##  4.615385  86.17978  87.58666 0.1827109  -1.58959214
##  4.692308  96.27035  90.54530 0.1827109   5.54233193
##  4.769231 101.43021  93.45005 0.1827109   7.79745781
##  4.846154  91.38710  91.11409 0.1827109   0.09030026
##  4.923077  91.26030  92.05308 0.1827109  -0.97549101
##  5.000000  83.53302  90.02369 0.1827109  -6.67338307
##  5.076923  85.38448  90.89533 0.1827109  -5.69355390
##  5.153846  94.05673  94.23719 0.1827109  -0.36316922
##  5.230769 100.06283  97.79404 0.1827109   2.08608484
##  5.307692 102.27950  98.61078 0.1827109   3.48600641
##  5.384615  92.72689  95.16261 0.1827109  -2.61843196
##  5.461538  88.32418  92.98695 0.1827109  -4.84547383
##  5.538462  88.79909  93.27114 0.1827109  -4.65476077
##  5.615385 100.98689  98.31138 0.1827109   2.49279706
##  5.692308 111.94349 102.21532 0.1827109   9.54545443
##  5.769231 103.39476  99.11864 0.1827109   4.09341078
##  5.846154  97.10793  95.72270 0.1827109   1.20251756
##  5.923077  86.98379  91.02977 0.1827109  -4.22869146
##  6.000000  85.12035  90.59787 0.1827109  -5.66022600
##  6.076923  92.32631  93.19119 0.1827109  -1.04758767
##  6.153846 102.16008  97.37841 0.1827109   4.59896421
##  6.230769 101.69657  98.49534 0.1827109   3.01851924
##  6.307692  93.45207  95.12307 0.1827109  -1.85370801
##  6.384615  86.58977  92.49380 0.1827109  -6.08674523
##  6.461538  88.96591  93.47944 0.1827109  -4.69623507
##  6.538462 102.23383  99.56220 0.1827109   2.48891673
##  6.615385 112.54312 104.39503 0.1827109   7.96537679
##  6.692308 106.89912 101.99375 0.1827109   4.72265749
##  6.769231  96.53654  97.52332 0.1827109  -1.16949671
##  6.846154  87.94903  93.73409 0.1827109  -5.96777363
##  6.923077  89.40455  94.35441 0.1827109  -5.13256869
##  7.000000  95.07372  97.00610 0.1827109  -2.11509058
##  7.076923 104.93349  99.90919 0.1827109   4.84159144
##  7.153846 104.33259  98.17701 0.1827109   5.97286168
##  7.230769  92.16043  94.18729 0.1827109  -2.20956889
##  7.307692  86.68788  92.49428 0.1827109  -5.98910466
##  7.384615  89.13828  93.86151 0.1827109  -4.90593768
##  7.461538 104.92159 100.75828 0.1827109   3.98060122
##  7.538462 112.97685 103.46658 0.1827109   9.32756555
##  7.615385 103.46508  99.11712 0.1827109   4.16525234
##  7.692308  95.53725  97.47496 0.1827109  -2.12042143
##  7.769231  87.16267  93.99075 0.1827109  -7.01078793
##  7.846154  89.05654  94.19804 0.1827109  -5.32420844
##  7.923077  97.29197  98.61085 0.1827109  -1.50159702
##  8.000000 105.33771 103.26939 0.1827109   1.88560833
##  8.076923 107.33941 105.13122 0.1827109   2.02548523
##  8.153846 102.00469 101.98527 0.1827109  -0.16328577
##  8.230769  92.42519  97.21056 0.1827109  -4.96807537
##  8.307692  92.53293  96.59732 0.1827109  -4.24710571
##  8.384615 108.28247 103.13174 0.1827109   4.96801882
##  8.461538 109.64985 101.77231 0.1827109   7.69482244
##  8.538462 101.50937  98.66428 0.1827109   2.66238312
##  8.615385  99.25339  97.58915 0.1827109   1.48153716
##  8.692308  85.68796  93.01839 0.1827109  -7.51314505
##  8.769231  88.16348  94.95540 0.1827109  -6.97463745
##  8.846154 101.22070 100.14124 0.1827109   0.89674536
##  8.923077 109.52547 104.26205 0.1827109   5.08071372
##  9.000000 109.78942 105.25173 0.1827109   4.35498391
##  9.076923  97.07022  99.75727 0.1827109  -2.86976727
##  9.153846  89.95844  97.22958 0.1827109  -7.45385671
##  9.230769  92.42705  98.38296 0.1827109  -6.13862240
##  9.307692 108.14849 102.87183 0.1827109   5.09395743
##  9.384615 107.51956 104.63676 0.1827109   2.70008776
##  9.461538 109.60618 106.56815 0.1827109   2.85532466
##  9.538462 103.53115 102.53588 0.1827109   0.81255474
##  9.615385  92.24640  97.57278 0.1827109  -5.50908977
##  9.692308  92.92902  97.67952 0.1827109  -4.93320255
##  9.769231 101.68174 101.11587 0.1827109   0.38315559
##  9.846154 110.55227 103.68131 0.1827109   6.68825239
##  9.923077 111.75162 105.30143 0.1827109   6.26747259
## 10.000000  97.53619 101.34755 0.1827109  -3.99407157
## 10.076923  93.02390  99.69698 0.1827109  -6.85578297
## 10.153846  94.39574 100.23939 0.1827109  -6.02635940
## 10.230769 105.80055 105.42367 0.1827109   0.19417341
## 10.307692 116.86588 109.26234 0.1827109   7.42083737
## 10.384615 111.40625 105.95179 0.1827109   5.27175296
## 10.461538  98.53463 101.69530 0.1827109  -3.34338034
## 10.538462  92.25371  98.82607 0.1827109  -6.75507567
## 10.615385  93.15827  98.59638 0.1827109  -5.62081558
## 10.692308 103.18480 103.15036 0.1827109  -0.14827069
## 10.769231 110.47042 106.40042 0.1827109   3.88728831
## 10.846154 114.39263 105.40776 0.1827109   8.80216511
## 10.923077  99.20822  98.84147 0.1827109   0.18404548
## 11.000000  89.19355  95.70102 0.1827109  -6.69017605
## 11.076923  91.60643  97.75051 0.1827109  -6.32679004
## 11.153846 106.65603 105.14418 0.1827109   1.32913269
## 11.230769 115.19897 109.44550 0.1827109   5.57076350
## 11.307692 107.73168 105.26546 0.1827109   2.28351458
## 11.384615 100.37571 101.44969 0.1827109  -1.25669860
## 11.461538  89.05419  96.70315 0.1827109  -7.83167310
## 11.538462  89.09274  96.27161 0.1827109  -7.36157698
## 11.615385 100.74188  99.75143 0.1827109   0.80774081
## 11.692308 105.76128 101.21588 0.1827109   4.36268394
## 11.769231 103.73492 101.39346 0.1827109   2.15874378
## 11.846154  97.05259  97.99304 0.1827109  -1.12316779
## 11.923077  90.51653  95.03693 0.1827109  -4.70311879
## 12.000000  90.98883  94.75093 0.1827109  -3.94481345
## 12.076923 107.36613 102.90550 0.1827109   4.27791726
## 12.153846 115.37260 107.80378 0.1827109   7.38610424
## 12.230769 105.36510 106.02765 0.1827109  -0.84525848
## 12.307692  99.92337 103.33746 0.1827109  -3.59679403
## 12.384615  89.68292  98.00606 0.1827109  -8.50584869
## 12.461538  90.10334  98.65564 0.1827109  -8.73501070
## 12.538462 102.27626 104.60628 0.1827109  -2.51272800
## 12.615385 111.92661 109.05119 0.1827109   2.69271903
## 12.692308 114.16629 109.62844 0.1827109   4.35513871
## 12.769231 101.19820 104.12623 0.1827109  -3.11074224
## 12.846154  93.78483  99.34136 0.1827109  -5.73923383
## 12.923077  93.90562  99.11533 0.1827109  -5.39242933
## 13.000000 115.52513 107.56352 0.1827109   7.77890166
## 13.076923 120.74574 109.35021 0.1827109  11.21281734
## 13.153846 108.80925 104.12119 0.1827109   4.50535204
## 13.230769  95.48763 100.37518 0.1827109  -5.07025671
## 13.307692  86.55367  98.07702 0.1827109 -11.70605539
## 13.384615  92.04636  99.68289 0.1827109  -7.81924268
## 13.461538 104.15667 104.22644 0.1827109  -0.25248025
## 13.538462 112.61748 108.67935 0.1827109   3.75541499
## 13.615385 112.71371 109.25804 0.1827109   3.27295613
## 13.692308 100.25818 104.08080 0.1827109  -4.00532839
## 13.769231  90.02226 100.25581 0.1827109 -10.41625662
## 13.846154  95.81379 101.97142 0.1827109  -6.34033350
## 13.923077 113.76164 106.81584 0.1827109   6.76308435
## 14.000000 116.59169 106.27119 0.1827109  10.13778603
## 14.076923 104.53835 101.10153 0.1827109   3.25411242
## 14.153846  95.75801  96.84767 0.1827109  -1.27237575
## 14.230769  85.17482  93.71083 0.1827109  -8.71871707
## 14.307692  87.53341  96.96379 0.1827109  -9.61309391
## 14.384615 101.43050 102.65382 0.1827109  -1.40603758
## 14.461538 113.74394 107.53378 0.1827109   6.02744559
## 14.538462 110.66496 106.14450 0.1827109   4.33775607
## 14.615385  96.26539 100.69228 0.1827109  -4.60959820
## 14.692308  88.77656  98.49306 0.1827109  -9.89920668
## 14.769231  92.94907 100.92828 0.1827109  -8.16191698
## 14.846154 106.79689 106.09882 0.1827109   0.51535843
## 14.923077 115.68067 109.80455 0.1827109   5.69340501
## 15.000000 108.81515 106.36607 0.1827109   2.26637414
## 15.076923 101.10521 104.19297 0.1827109  -3.27046998
## 15.153846  94.31776 100.28928 0.1827109  -6.15423099
## 15.230769  95.09352  99.11430 0.1827109  -4.20349180
## 15.307692 100.23340 101.56452 0.1827109  -1.51382220
## 15.384615 111.44482 105.76020 0.1827109   5.50191628
## 15.461538 108.51799 104.61968 0.1827109   3.71560446
## 15.538462  97.29717 101.06364 0.1827109  -3.94917968
## 15.615385  91.08628  99.01613 0.1827109  -8.11255803
## 15.692308  95.30405 101.70792 0.1827109  -6.58657959
xhat1.opt <- winter1.opt$fitted[,2]

Peramalan

#Forecast
forecast1 <- predict(winter1, n.ahead = 49)
forecast1.opt <- predict(winter1.opt, n.ahead = 49)

Plot Deret Waktu

#Plot time series
plot(training.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
     xlim=c(1,25),pch=12)
lines(xhat1,type="l",col="red")
lines(xhat1.opt,type="l",col="blue")
lines(forecast1,type="l",col="red")
lines(forecast1.opt,type="l",col="blue")
legend("topleft",c("Actual Data",expression(paste(winter1)),
                   expression(paste(winter1.opt))),cex=0.5,
       col=c("black","red","blue"),lty=1)

Akurasi Data Latih

#Akurasi data training
SSE1<-winter1$SSE
MSE1<-winter1$SSE/length(training.ts)
RMSE1<-sqrt(MSE1)
akurasi1 <- matrix(c(SSE1,MSE1,RMSE1))
row.names(akurasi1)<- c("SSE", "MSE", "RMSE")
colnames(akurasi1) <- c("Akurasi")
akurasi1
##          Akurasi
## SSE  19249.76741
## MSE    100.25921
## RMSE    10.01295
SSE1.opt<-winter1.opt$SSE
MSE1.opt<-winter1.opt$SSE/length(training.ts)
RMSE1.opt<-sqrt(MSE1.opt)
akurasi1.opt <- matrix(c(SSE1.opt,MSE1.opt,RMSE1.opt))
row.names(akurasi1.opt)<- c("SSE1.opt", "MSE1.opt", "RMSE1.opt")
colnames(akurasi1.opt) <- c("Akurasi")
akurasi1.opt
##                Akurasi
## SSE1.opt  13896.693461
## MSE1.opt     72.378612
## RMSE1.opt     8.507562
akurasi1.train = data.frame(Model_Winter = c("Winter 1","Winter1 optimal"),
                            Nilai_SSE=c(SSE1,SSE1.opt),
                            Nilai_MSE=c(MSE1,MSE1.opt),Nilai_RMSE=c(RMSE1,RMSE1.opt))
akurasi1.train
##      Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1        Winter 1  19249.77 100.25921  10.012952
## 2 Winter1 optimal  13896.69  72.37861   8.507562

Akurasi Data Uji

#Akurasi Data Testing
forecast1<-data.frame(forecast1)
testing.ts<-data.frame(testing.ts)
selisih1<-forecast1-testing.ts
SSEtesting1<-sum(selisih1^2)
MSEtesting1<-SSEtesting1/length(testing.ts)

forecast1.opt<-data.frame(forecast1.opt)
selisih1.opt<-forecast1.opt-testing.ts
SSEtesting1.opt<-sum(selisih1.opt^2)
MSEtesting1.opt<-SSEtesting1.opt/length(testing.ts)

Winter Multiplikatif

Model multiplikatif digunakan cocok digunakan jika plot data asli menunjukkan fluktuasi musiman yang bervariasi.

Pemulusan

#Pemulusan dengan winter multiplikatif 
winter2 <- HoltWinters(training.ts,alpha=0.2,beta=0.1,gamma=0.3,seasonal = "multiplicative")
winter2$fitted
## Time Series:
## Start = c(2, 1) 
## End = c(15, 10) 
## Frequency = 13 
##                xhat     level         trend    season
##  2.000000  88.53261  87.09424  0.1827109045 1.0143871
##  2.076923  89.35114  87.79949  0.2349649788 1.0149565
##  2.153846  80.24923  88.30776  0.2622954117 0.9060538
##  2.230769  79.27077  88.62929  0.2682192600 0.8917097
##  2.307692  87.01558  88.92396  0.2708642461 0.9755676
##  2.384615  96.19416  89.36447  0.2878291241 1.0729692
##  2.461538  96.06461  89.89390  0.3119889327 1.0649483
##  2.538462  96.16187  90.27182  0.3185824660 1.0615017
##  2.615385  88.25357  88.90655  0.1501970777 0.9909813
##  2.692308  79.77034  87.52036 -0.0034420368 0.9114848
##  2.769231  81.45889  88.05059  0.0499250122 0.9246131
##  2.846154  94.18287  90.92384  0.3322574326 1.0320721
##  2.923077 106.25007  92.81553  0.4882006614 1.1387548
##  3.000000  93.46197  91.20474  0.2783017380 1.0216317
##  3.076923  92.30178  90.43192  0.1731900926 1.0187259
##  3.153846  80.18948  88.47318 -0.0400032385 0.9067805
##  3.230769  79.77237  89.37403  0.0540816599 0.8920280
##  3.307692  90.21214  91.95454  0.3067245472 0.9777900
##  3.384615 101.04367  93.44425  0.4250231729 1.0764297
##  3.461538 100.14205  93.55838  0.3939339204 1.0658817
##  3.538462  95.89750  92.22149  0.2208517869 1.0373764
##  3.615385  87.26861  89.98293 -0.0250898510 0.9701057
##  3.692308  82.72934  90.11707 -0.0091659726 0.9181141
##  3.769231  90.94402  94.40508  0.4205508742 0.9590659
##  3.846154 104.66983  98.61350  0.7993377080 1.0528804
##  3.923077 109.23068  97.98853  0.6569069904 1.1073060
##  4.000000  96.75250  95.68286  0.3606495383 1.0073820
##  4.076923  92.38005  93.29629  0.0859275109 0.9892681
##  4.153846  83.81772  91.39417 -0.1128770171 0.9182354
##  4.230769  85.45819  92.71399  0.0303930079 0.9214379
##  4.307692  94.60832  95.04857  0.2608113224 0.9926444
##  4.384615 103.63941  96.30573  0.3604457716 1.0721373
##  4.461538  97.80625  93.80116  0.0739449194 1.0418763
##  4.538462  91.06052  90.97260 -0.2163054328 1.0033521
##  4.615385  86.28690  89.13601 -0.3783346868 0.9721627
##  4.692308  87.05379  90.14658 -0.2394443535 0.9682634
##  4.769231  93.59512  93.19998  0.0898402441 1.0032726
##  4.846154  96.96847  93.61124  0.1219827348 1.0345155
##  4.923077  99.22324  93.01543  0.0502027675 1.0661641
##  5.000000  87.79593  90.54665 -0.2016953336 0.9717857
##  5.076923  86.28955  89.81792 -0.2543989997 0.9634453
##  5.153846  85.00109  90.99589 -0.1111620516 0.9352627
##  5.230769  89.95472  94.60387  0.2607528223 0.9482431
##  5.307692  98.32000  97.32698  0.5069887906 1.0049678
##  5.384615 100.43759  96.83671  0.4072623072 1.0328413
##  5.461538  94.95598  94.62258  0.1451235701 1.0019867
##  5.538462  91.77859  93.49402  0.0177549954 0.9814656
##  5.615385  94.60933  95.35019  0.2015964981 0.9901366
##  5.692308 100.13739  98.69709  0.5161262797 1.0093151
##  5.769231 101.28129  99.94716  0.5895208040 1.0074064
##  5.846154 102.14189  99.20095  0.4559482280 1.0249355
##  5.923077  99.39523  96.32403  0.1226610371 1.0305717
##  6.000000  90.31449  93.74335 -0.1476729777 0.9649430
##  6.076923  91.90313  93.75353 -0.1318874069 0.9816441
##  6.153846  93.82687  95.72360  0.0783082468 0.9793841
##  6.230769  96.01347  97.97498  0.2956147751 0.9770316
##  6.307692  97.13890  97.63602  0.2321578999 0.9925483
##  6.384615  95.60013  95.72537  0.0178772024 0.9985051
##  6.461538  92.85689  94.33582 -0.1228657071 0.9856064
##  6.538462  96.87797  96.38135  0.0939735919 1.0041736
##  6.615385 103.06711  99.83024  0.4294659819 1.0280013
##  6.692308 103.19638 100.86124  0.4896193790 1.0182092
##  6.769231  99.26808  99.82004  0.3365373227 0.9911289
##  6.846154  95.98688  97.62517  0.0833960170 0.9823794
##  6.923077  95.74407  96.29227 -0.0582331575 0.9949086
##  7.000000  92.94046  96.18588 -0.0630490484 0.9668926
##  7.076923  98.81105  97.95434  0.1201014538 1.0075107
##  7.153846  99.03531  98.35065  0.1477230448 1.0054512
##  7.230769  94.56569  97.50155  0.0480402216 0.9694115
##  7.307692  92.72518  96.09727 -0.0971920884 0.9658866
##  7.384615  93.35030  95.35594 -0.1616050529 0.9806287
##  7.461538  99.00402  97.71843  0.0908044867 1.0122155
##  7.538462 105.03356 100.21137  0.3310176930 1.0446695
##  7.615385 103.73062  99.91940  0.2687192957 1.0353585
##  7.692308  99.38981  99.26591  0.1764976955 0.9994711
##  7.769231  92.93362  96.85860 -0.0818831413 0.9602890
##  7.846154  92.05196  95.58744 -0.2008101981 0.9650405
##  7.923077  96.33428  96.93178 -0.0462956801 0.9943108
##  8.000000  98.36221  99.30240  0.1953957420 0.9885868
##  8.076923 103.28299 101.74828  0.4204440891 1.0109062
##  8.153846 100.98221 101.34421  0.3379934370 0.9931159
##  8.230769  94.73900  99.42154  0.1119269153 0.9518306
##  8.307692  94.51815  98.63409  0.0219886463 0.9580571
##  8.384615 102.94833 101.51761  0.3081417194 1.0110246
##  8.461538 106.70059 102.12724  0.3382906693 1.0413316
##  8.538462 105.45757 101.47046  0.2387835794 1.0368534
##  8.615385 102.84323 100.34822  0.1026819546 1.0238158
##  8.692308  94.09543  97.45546 -0.1968626872 0.9674767
##  8.769231  90.93956  96.41657 -0.2810657930 0.9459519
##  8.846154  96.46524  98.16200 -0.0784160941 0.9835004
##  8.923077 103.60955 101.02919  0.2161452365 1.0233513
##  9.000000 104.69135 102.79117  0.3707284352 1.0148257
##  9.076923 101.70248 101.40236  0.1947741562 1.0010369
##  9.153846  95.92768  99.33374 -0.0315646779 0.9660179
##  9.230769  92.68928  98.56284 -0.1054986990 0.9414156
##  9.307692  99.81572 100.66183  0.1149506849 0.9904634
##  9.384615 105.12424 103.24873  0.3621457722 1.0146062
##  9.461538 108.49481 104.93468  0.4945254804 1.0290774
##  9.538462 106.01147 103.62131  0.3137361078 1.0199781
##  9.615385  99.56343 100.95581  0.0158126979 0.9860535
##  9.692308  95.07612  99.44945 -0.1364047115 0.9573376
##  9.769231  97.45291 100.54385 -0.0133241229 0.9693862
##  9.846154 104.65436 102.61756  0.1953789005 1.0179104
##  9.923077 109.44368 104.66953  0.3810385386 1.0418190
## 10.000000 103.10656 103.53167  0.2291487498 0.9936945
## 10.076923  99.07431 101.72805  0.0258718767 0.9736657
## 10.153846  96.31956 100.69366 -0.0801543902 0.9573223
## 10.230769  99.44740 102.79318  0.1378128134 0.9661560
## 10.307692 108.58852 106.11592  0.4563059634 1.0189195
## 10.384615 110.15718 106.50290  0.4493727539 1.0299658
## 10.461538 106.11909 105.06510  0.2606561821 1.0075321
## 10.538462 100.63282 102.32344 -0.0395761486 0.9838583
## 10.615385  96.93247 100.37342 -0.2306203992 0.9679425
## 10.692308  98.60592 101.59446 -0.0854540957 0.9714007
## 10.769231 103.45229 104.01203  0.1648479002 0.9930446
## 10.846154 109.41878 105.00548  0.2477085164 1.0395769
## 10.923077 105.44358 103.00218  0.0226076830 1.0234778
## 11.000000  96.93067 100.20193 -0.2596785244 0.9698668
## 11.076923  95.14966  99.29784 -0.3241197648 0.9613629
## 11.153846 100.04880 101.94293 -0.0271989041 0.9816817
## 11.230769 105.75038 105.33492  0.3147203969 1.0009535
## 11.307692 107.58715 105.38386  0.2881421925 1.0181235
## 11.384615 104.66325 103.75981  0.0969228338 1.0077657
## 11.461538  97.55474 100.58892 -0.2298584078 0.9720571
## 11.538462  94.08311  98.29783 -0.4359807662 0.9613869
## 11.615385  96.63056  98.51832 -0.3703340921 0.9845394
## 11.692308  99.34954  99.62645 -0.2224874086 0.9994525
## 11.769231 100.83629 100.68448 -0.0944361484 1.0024480
## 11.846154 100.41036  99.40215 -0.2132251807 1.0123142
## 11.923077  95.48671  96.99343 -0.4327747567 0.9888780
## 12.000000  91.19320  95.32123 -0.5567174431 0.9623139
## 12.076923  98.16691  98.81541 -0.1516272151 0.9949640
## 12.153846 105.17655 102.85483  0.2674771768 1.0199204
## 12.230769 104.32817 104.17268  0.3725138619 0.9979242
## 12.307692 103.12657 103.33047  0.2510422764 0.9956079
## 12.384615  96.95865 100.20136 -0.0869737416 0.9684788
## 12.461538  93.46784  98.85008 -0.2134040283 0.9475972
## 12.538462  97.82865 100.93427  0.0163552048 0.9690743
## 12.615385 104.58355 104.04181  0.3254739572 1.0020722
## 12.692308 108.08535 106.02741  0.4914869650 1.0147058
## 12.769231 104.02783 104.94910  0.3345064967 0.9880725
## 12.846154 100.70286 102.22659  0.0288055592 0.9848171
## 12.923077  97.84440 100.64538 -0.1321961895 0.9734484
## 13.000000 105.11097 103.89954  0.2064391617 1.0096535
## 13.076923 112.13127 106.95389  0.4912306168 1.0436143
## 13.153846 110.38355 106.53368  0.4000864320 1.0322610
## 13.230769 103.23469 104.74813  0.1815224349 0.9838467
## 13.307692  97.44901 102.10881 -0.1005619379 0.9553052
## 13.384615  95.56008 100.46335 -0.2550509841 0.9536144
## 13.461538  98.93321 101.73100 -0.1027815483 0.9734817
## 13.538462 105.47109 104.86887  0.2212839501 1.0036249
## 13.615385 109.33067 106.70923  0.3831912125 1.0209002
## 13.692308 104.98142 105.16089  0.1900387879 0.9964925
## 13.769231  97.46417 102.41567 -0.1034871288 0.9526154
## 13.846154  97.90938 101.54490 -0.1802162895 0.9659122
## 13.923077 104.52088 103.31554  0.0148701359 1.0115210
## 14.000000 109.36382 104.80220  0.1620487953 1.0419150
## 14.076923 107.27727 103.81331  0.0469545448 1.0329000
## 14.153846 101.63699 101.20752 -0.2183192677 1.0064144
## 14.230769  92.92857  98.19107 -0.4981321764 0.9512312
## 14.307692  91.10083  97.65756 -0.5016701188 0.9376768
## 14.384615  96.11288  99.29718 -0.2875414910 0.9707427
## 14.461538 103.53990 102.49621  0.0611156284 1.0095807
## 14.538462 106.27300 103.80937  0.1863201645 1.0218982
## 14.615385 101.96682 102.13055 -0.0001936158 0.9983987
## 14.692308  95.81515  99.80938 -0.2322916359 0.9622209
## 14.769231  93.46126  99.27083 -0.2629176749 0.9439777
## 14.846154 100.25923 101.51029 -0.0126798894 0.9877989
## 14.923077 107.87566 104.58361  0.2959208571 1.0285673
## 15.000000 107.87494 104.65754  0.2737217585 1.0280533
## 15.076923 104.20359 103.98187  0.1787823748 1.0004122
## 15.153846  98.59750 101.52286 -0.0849966184 0.9719989
## 15.230769  94.72519  99.86706 -0.2420769598 0.9508176
## 15.307692  96.92941 100.88085 -0.1164901618 0.9619414
## 15.384615 104.74592 103.51268  0.1583413438 1.0103683
## 15.461538 107.10612 104.34992  0.2262311270 1.0241926
## 15.538462 103.07030 103.04807  0.0734236000 0.9995035
## 15.615385  97.74427 100.86374 -0.1523525163 0.9705384
## 15.692308  96.30204 100.61680 -0.1618105752 0.9586586
xhat2 <- winter2$fitted[,2]

winter2.opt<- HoltWinters(training.ts, alpha= NULL,  beta = NULL, gamma = NULL, seasonal = "multiplicative")
winter2.opt$fitted
## Time Series:
## Start = c(2, 1) 
## End = c(15, 10) 
## Frequency = 13 
##                xhat     level     trend    season
##  2.000000  88.53261  87.09424 0.1827109 1.0143871
##  2.076923  89.85599  88.34915 0.1827109 1.0149565
##  2.153846  80.70334  88.88853 0.1827109 0.9060538
##  2.230769  79.51360  88.98712 0.1827109 0.8917097
##  2.307692  87.11336  89.11235 0.1827109 0.9755676
##  2.384615  96.33626  89.60203 0.1827109 1.0729692
##  2.461538  96.28074  90.22613 0.1827109 1.0649483
##  2.538462  96.21829  90.46084 0.1827109 1.0615017
##  2.615385  86.56156  87.16663 0.1827109 0.9909813
##  2.692308  77.54931  84.89750 0.1827109 0.9114848
##  2.769231  80.77230  87.17523 0.1827109 0.9246131
##  2.846154  96.64178  93.45588 0.1827109 1.0320721
##  2.923077 109.36987  95.86067 0.1827109 1.1387548
##  3.000000  93.70705  90.61214 0.1827109 1.0320744
##  3.076923  90.59173  88.56243 0.1827109 1.0208077
##  3.153846  77.13591  85.06700 0.1827109 0.9048231
##  3.230769  79.06775  88.56937 0.1827109 0.8908833
##  3.307692  92.59594  94.26733 0.1827109 0.9803696
##  3.384615 103.78942  95.87317 0.1827109 1.0805108
##  3.461538 100.78495  94.37753 0.1827109 1.0658280
##  3.538462  91.00444  90.76103 0.1827109 1.0006674
##  3.615385  83.49430  87.71880 0.1827109 0.9498619
##  3.692308  84.91196  89.86589 0.1827109 0.9429571
##  3.769231  98.97174  97.68380 0.1827109 1.0112932
##  3.846154 108.95070 101.97984 0.1827109 1.0664446
##  3.923077 101.79227  97.62984 0.1827109 1.0406872
##  4.000000  93.95942  94.27772 0.1827109 0.9946960
##  4.076923  86.24818  89.90384 0.1827109 0.9573924
##  4.153846  84.56313  88.49984 0.1827109 0.9535486
##  4.230769  88.24762  91.19265 0.1827109 0.9657705
##  4.307692  95.00497  94.70100 0.1827109 1.0012780
##  4.384615 102.05857  96.74792 0.1827109 1.0529032
##  4.461538  91.90183  91.56065 0.1827109 1.0017272
##  4.538462  83.55005  87.96788 0.1827109 0.9478105
##  4.615385  86.27732  87.88294 0.1827109 0.9796932
##  4.692308  95.52978  90.89766 0.1827109 1.0488515
##  4.769231 100.76753  94.00147 0.1827109 1.0698987
##  4.846154  91.80141  92.05151 0.1827109 0.9953074
##  4.923077  91.58649  92.83381 0.1827109 0.9846261
##  5.000000  83.72803  90.60269 0.1827109 0.9222632
##  5.076923  85.47422  91.45600 0.1827109 0.9327305
##  5.153846  94.38371  95.03332 0.1827109 0.9912586
##  5.230769 100.14578  98.53188 0.1827109 1.0144983
##  5.307692 102.38262  99.31470 0.1827109 1.0289978
##  5.384615  92.62050  95.87866 0.1827109 0.9641805
##  5.461538  88.17674  93.62665 0.1827109 0.9399567
##  5.538462  88.86090  93.98320 0.1827109 0.9436632
##  5.615385 101.88481  99.35813 0.1827109 1.0235478
##  5.692308 112.90948 102.86700 0.1827109 1.0956797
##  5.769231 103.25886  99.65327 0.1827109 1.0342850
##  5.846154  97.00321  96.38176 0.1827109 1.0045435
##  5.923077  86.99401  91.68618 0.1827109 0.9469366
##  6.000000  85.17274  91.20638 0.1827109 0.9319793
##  6.076923  92.34426  93.98854 0.1827109 0.9805992
##  6.153846 102.34633  98.30426 0.1827109 1.0391865
##  6.230769 101.82672  99.32491 0.1827109 1.0233057
##  6.307692  93.53970  95.93311 0.1827109 0.9731978
##  6.384615  86.62670  93.14927 0.1827109 0.9281567
##  6.461538  88.94459  94.19275 0.1827109 0.9424547
##  6.538462 102.37957 100.73210 0.1827109 1.0145148
##  6.615385 113.20001 105.50318 0.1827109 1.0710986
##  6.692308 107.50677 102.98819 0.1827109 1.0420260
##  6.769231  96.71634  98.40403 0.1827109 0.9810279
##  6.846154  87.75526  94.40647 0.1827109 0.9277516
##  6.923077  89.33483  95.15314 0.1827109 0.9370539
##  7.000000  95.17698  98.03785 0.1827109 0.9690128
##  7.076923 105.23727 101.02324 0.1827109 1.0398329
##  7.153846 104.54889  99.21892 0.1827109 1.0517825
##  7.230769  92.47249  95.29506 0.1827109 0.9685238
##  7.307692  86.89044  93.38193 0.1827109 0.9286675
##  7.384615  89.28659  94.76837 0.1827109 0.9403430
##  7.461538 105.16305 102.12565 0.1827109 1.0279028
##  7.538462 113.05719 104.70315 0.1827109 1.0779068
##  7.615385 103.87759 100.59221 0.1827109 1.0307881
##  7.692308  95.97917  98.81572 0.1827109 0.9695020
##  7.769231  87.41478  94.97650 0.1827109 0.9186161
##  7.846154  89.12684  95.07371 0.1827109 0.9356518
##  7.923077  97.40834  99.80948 0.1827109 0.9741595
##  8.000000 105.58459 104.60160 0.1827109 1.0076375
##  8.076923 107.61235 106.37332 0.1827109 1.0099132
##  8.153846 101.90838 103.10331 0.1827109 0.9866619
##  8.230769  92.24318  98.23178 0.1827109 0.9372927
##  8.307692  92.49618  97.63318 0.1827109 0.9456151
##  8.384615 108.52078 104.64225 0.1827109 1.0352570
##  8.461538 109.78091 103.22016 0.1827109 1.0616815
##  8.538462 101.57719 100.20955 0.1827109 1.0118030
##  8.615385  99.42846  99.10430 0.1827109 1.0014247
##  8.692308  86.12138  94.40256 0.1827109 0.9105158
##  8.769231  88.55589  96.34342 0.1827109 0.9174292
##  8.846154 101.75387 101.87985 0.1827109 0.9969755
##  8.923077 109.83049 105.84806 0.1827109 1.0358360
##  9.000000 110.01030 106.69981 0.1827109 1.0292637
##  9.076923  97.46338 101.20200 0.1827109 0.9613222
##  9.153846  90.03918  98.35822 0.1827109 0.9137237
##  9.230769  92.43338  99.58176 0.1827109 0.9265160
##  9.307692 108.24064 104.47398 0.1827109 1.0342448
##  9.384615 107.64421 106.17123 0.1827109 1.0121318
##  9.461538 109.65286 108.05514 0.1827109 1.0130731
##  9.538462 103.44461 104.00051 0.1827109 0.9929105
##  9.615385  91.90737  98.96436 0.1827109 0.9269802
##  9.692308  92.87522  99.21407 0.1827109 0.9343887
##  9.769231 101.76152 102.95094 0.1827109 0.9866956
##  9.846154 110.82824 105.54890 0.1827109 1.0482034
##  9.923077 112.03849 107.01395 0.1827109 1.0451677
## 10.000000  97.70480 103.07116 0.1827109 0.9462580
## 10.076923  93.16784 101.21640 0.1827109 0.9188230
## 10.153846  94.52006 101.73175 0.1827109 0.9274450
## 10.230769 106.06110 107.32729 0.1827109 0.9865232
## 10.307692 117.51478 111.15904 0.1827109 1.0554422
## 10.384615 111.69627 107.73366 0.1827109 1.0350262
## 10.461538  98.84435 103.45277 0.1827109 0.9537694
## 10.538462  92.17238 100.25786 0.1827109 0.9176808
## 10.615385  92.97723 100.02129 0.1827109 0.9278795
## 10.692308 103.21582 105.06061 0.1827109 0.9807351
## 10.769231 110.66191 108.40142 0.1827109 1.0191352
## 10.846154 114.64360 107.33769 0.1827109 1.0662498
## 10.923077  99.67739 101.00613 0.1827109 0.9850631
## 11.000000  89.82673  97.57292 0.1827109 0.9188906
## 11.076923  92.05120  99.53266 0.1827109 0.9231395
## 11.153846 107.04427 107.43761 0.1827109 0.9946474
## 11.230769 115.53779 111.65848 0.1827109 1.0330523
## 11.307692 108.10847 107.42471 0.1827109 1.0046563
## 11.384615 100.58245 103.41822 0.1827109 0.9708643
## 11.461538  89.44296  98.36577 0.1827109 0.9076037
## 11.538462  89.27178  97.68650 0.1827109 0.9121538
## 11.615385 100.56970 101.45356 0.1827109 0.9895060
## 11.692308 105.45217 103.02103 0.1827109 1.0217864
## 11.769231 103.72615 103.32279 0.1827109 1.0021317
## 11.846154  96.80933  99.88387 0.1827109 0.9674492
## 11.923077  90.52228  96.88022 0.1827109 0.9326143
## 12.000000  91.16764  96.55083 0.1827109 0.9424615
## 12.076923 107.36168 105.23185 0.1827109 1.0184711
## 12.153846 115.40337 110.11078 0.1827109 1.0463299
## 12.230769 105.52956 108.38328 0.1827109 0.9720315
## 12.307692  99.99543 105.49989 0.1827109 0.9461862
## 12.384615  89.59563  99.74260 0.1827109 0.8966260
## 12.461538  90.21541 100.49321 0.1827109 0.8960972
## 12.538462 102.87438 107.15081 0.1827109 0.9584553
## 12.615385 112.73185 111.58620 0.1827109 1.0086155
## 12.692308 114.65062 111.83790 0.1827109 1.0234780
## 12.769231 101.05064 106.19466 0.1827109 0.9499262
## 12.846154  93.39153 101.13896 0.1827109 0.9217330
## 12.923077  93.68900 101.04717 0.1827109 0.9255073
## 13.000000 116.29239 110.38086 0.1827109 1.0518147
## 13.076923 121.05116 111.81039 0.1827109 1.0808805
## 13.153846 109.10540 106.80074 0.1827109 1.0198344
## 13.230769  96.07012 102.95840 0.1827109 0.9314436
## 13.307692  86.83997 100.18397 0.1827109 0.8652271
## 13.384615  92.27190 101.89860 0.1827109 0.9039059
## 13.461538 104.25868 106.87043 0.1827109 0.9738965
## 13.538462 112.85947 111.45579 0.1827109 1.0109368
## 13.615385 113.18630 111.93741 0.1827109 1.0095093
## 13.692308 100.62319 106.54471 0.1827109 0.9428054
## 13.769231  90.07018 102.25860 0.1827109 0.8792369
## 13.846154  95.82520 104.18663 0.1827109 0.9181355
## 13.923077 113.61614 109.51221 0.1827109 1.0357466
## 14.000000 116.72322 109.04055 0.1827109 1.0686663
## 14.076923 104.83834 104.09465 0.1827109 1.0053798
## 14.153846  96.12373  99.68072 0.1827109 0.9625519
## 14.230769  85.97748  96.21085 0.1827109 0.8919421
## 14.307692  88.12381  99.51433 0.1827109 0.8839160
## 14.384615 101.90875 105.74016 0.1827109 0.9621033
## 14.461538 114.08514 110.66903 0.1827109 1.0291686
## 14.538462 110.96977 109.16701 0.1827109 1.0148154
## 14.615385  96.88938 103.59658 0.1827109 0.9336100
## 14.692308  89.33367 100.91822 0.1827109 0.8836088
## 14.769231  93.28991 103.42685 0.1827109 0.9003986
## 14.846154 107.07768 109.07083 0.1827109 0.9800843
## 14.923077 115.99251 112.78056 0.1827109 1.0268161
## 15.000000 108.68158 109.26298 0.1827109 0.9930184
## 15.076923 100.70952 107.09553 0.1827109 0.9387693
## 15.153846  93.93569 103.03776 0.1827109 0.9100491
## 15.230769  95.13584 101.88013 0.1827109 0.9321301
## 15.307692 100.13873 104.51063 0.1827109 0.9564956
## 15.384615 111.50513 108.98780 0.1827109 1.0213851
## 15.461538 108.70123 107.83274 0.1827109 1.0063489
## 15.538462  97.45285 104.17391 0.1827109 0.9338445
## 15.615385  91.39364 101.86678 0.1827109 0.8955816
## 15.692308  95.71457 104.74922 0.1827109 0.9121587
xhat2.opt <- winter2.opt$fitted[,2]

Peramalan

#Forecast
forecast2 <- predict(winter2, n.ahead = 49)
forecast2.opt <- predict(winter2.opt, n.ahead = 49)

Plot Deret Waktu

#Plot time series
plot(training.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
     xlim=c(1,25),pch=12)
lines(xhat2,type="l",col="red")
lines(xhat2.opt,type="l",col="blue")
lines(forecast2,type="l",col="red")
lines(forecast2.opt,type="l",col="blue")
legend("topleft",c("Actual Data",expression(paste(winter2)),
                   expression(paste(winter2.opt))),cex=0.5,
       col=c("black","red","blue"),lty=1)

Akurasi Data Latih

#Akurasi data training
SSE2<-winter2$SSE
MSE2<-winter2$SSE/length(training.ts)
RMSE2<-sqrt(MSE2)
akurasi1 <- matrix(c(SSE2,MSE2,RMSE2))
row.names(akurasi1)<- c("SSE2", "MSE2", "RMSE2")
colnames(akurasi1) <- c("Akurasi lamda=0.2")
akurasi1
##       Akurasi lamda=0.2
## SSE2       18378.242877
## MSE2          95.720015
## RMSE2          9.783661
SSE2.opt<-winter2.opt$SSE
MSE2.opt<-winter2.opt$SSE/length(training.ts)
RMSE2.opt<-sqrt(MSE2.opt)
akurasi1.opt <- matrix(c(SSE2.opt,MSE2.opt,RMSE2.opt))
row.names(akurasi1.opt)<- c("SSE2.opt", "MSE2.opt", "RMSE2.opt")
colnames(akurasi1.opt) <- c("Akurasi")
akurasi1.opt
##                Akurasi
## SSE2.opt  14014.482201
## MSE2.opt     72.992095
## RMSE2.opt     8.543541
akurasi2.train = data.frame(Model_Winter = c("Winter 1","winter2 optimal"),
                            Nilai_SSE=c(SSE2,SSE2.opt),
                            Nilai_MSE=c(MSE2,MSE2.opt),Nilai_RMSE=c(RMSE2,RMSE2.opt))
akurasi2.train
##      Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1        Winter 1  18378.24  95.72001   9.783661
## 2 winter2 optimal  14014.48  72.99209   8.543541

Akurasi Data Uji

#Akurasi Data Testing
forecast2<-data.frame(forecast2)
testing.ts<-data.frame(testing.ts)
selisih2<-forecast2-testing.ts
SSEtesting2<-sum(selisih2^2)
MSEtesting2<-SSEtesting2/length(testing.ts)

forecast2.opt<-data.frame(forecast2.opt)
selisih2.opt<-forecast2.opt-testing.ts
SSEtesting2.opt<-sum(selisih2.opt^2)
MSEtesting2.opt<-SSEtesting2.opt/length(testing.ts)

Pertemuan 2

Pemanggilan Packages

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
library(TTR)
library(forecast)
library(lmtest) #digunakan untuk uji formal pendeteksian autokorelasi
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(orcutt) #untuk membuat model regresi Cochrane-Orcutt
## Warning: package 'orcutt' was built under R version 4.3.3
library(HoRM) #untuk membuat model regresi Hildreth-Lu
## Warning: package 'HoRM' was built under R version 4.3.3

Input Data

Data yang digunakan dalam kesempatan kali ini adalah data IPM Provinsi Gorontalo periode tahun 2010-2021.

tahun <- c(2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021)
ipm <- c(62.65,63.48,64.16,64.70,65.17,65.86,66.29,67.01,67.71,68.49,68.68,69.00)
dtGorontalo <- cbind(tahun,ipm)
dtGorontalo <- as.data.frame(dtGorontalo)
dtGorontalo
##    tahun   ipm
## 1   2010 62.65
## 2   2011 63.48
## 3   2012 64.16
## 4   2013 64.70
## 5   2014 65.17
## 6   2015 65.86
## 7   2016 66.29
## 8   2017 67.01
## 9   2018 67.71
## 10  2019 68.49
## 11  2020 68.68
## 12  2021 69.00

Eksplorasi Data

Sebelum melakukan regresi, akan diperlihatkan plot time-series dari IPM Provinsi Gorontalo Periode 2010-2021

#Membentuk objek time series
data.ts<-ts(dtGorontalo$ipm)
data.ts
## Time Series:
## Start = 1 
## End = 12 
## Frequency = 1 
##  [1] 62.65 63.48 64.16 64.70 65.17 65.86 66.29 67.01 67.71 68.49 68.68 69.00
#Membuat plot time series
ts.plot(data.ts, xlab="Time Period ", ylab="IPM", main= "Time Series Plot of IPM")
points(data.ts)

Selanjutnya akan dilakukan ramalan dan pemulusan dengan metode DMA dan DES karena terlihat pada plot di atas menunjukkan adanya trend.

dt.sma <- SMA(data.ts, n=3)
dma <- SMA(dt.sma, n = 3)
At <- 2*dt.sma - dma
Bt <- 2/(3-1)*(dt.sma - dma)
dt.dma<- At+Bt
dt.ramal<- c(NA, dt.dma)

t = 1:5
f = c()

for (i in t) {
  f[i] = At[length(At)] + Bt[length(Bt)]*(i)
}
dt.gab <- cbind(aktual = c(data.ts,rep(NA,5)), 
                pemulusan1 = c(dt.sma,rep(NA,5)),
                pemulusan2 = c(dt.dma, rep(NA,5)),
                At = c(At, rep(NA,5)), 
                Bt = c(Bt,rep(NA,5)),
                ramalan = c(dt.ramal, f[-1]))
dt.gab
##       aktual pemulusan1 pemulusan2       At        Bt  ramalan
##  [1,]  62.65         NA         NA       NA        NA       NA
##  [2,]  63.48         NA         NA       NA        NA       NA
##  [3,]  64.16   63.43000         NA       NA        NA       NA
##  [4,]  64.70   64.11333         NA       NA        NA       NA
##  [5,]  65.17   64.67667   65.88333 65.28000 0.6033333       NA
##  [6,]  65.86   65.24333   66.37444 65.80889 0.5655556 65.88333
##  [7,]  66.29   65.77333   66.85778 66.31556 0.5422222 66.37444
##  [8,]  67.01   66.38667   67.55778 66.97222 0.5855556 66.85778
##  [9,]  67.71   67.00333   68.23444 67.61889 0.6155556 67.55778
## [10,]  68.49   67.73667   69.12556 68.43111 0.6944444 68.23444
## [11,]  68.68   68.29333   69.52444 68.90889 0.6155556 69.12556
## [12,]  69.00   68.72333   69.66778 69.19556 0.4722222 69.52444
## [13,]     NA         NA         NA       NA        NA 69.66778
## [14,]     NA         NA         NA       NA        NA 70.14000
## [15,]     NA         NA         NA       NA        NA 70.61222
## [16,]     NA         NA         NA       NA        NA 71.08444
## [17,]     NA         NA         NA       NA        NA 71.55667
#Plot time series
ts.plot(dt.gab[,1], xlab="Time Period ", ylab="IPM", 
        main= "DMA N=3 Data IPM", ylim=c(62,75))
points(dt.gab[,1])
points(dt.gab[,3])
points(dt.gab[,6])
lines(dt.gab[,3],col="green",lwd=2)
lines(dt.gab[,6],col="red",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), 
       lty=8, col=c("black","green","red"), cex=0.8)

Selanjutnya akan dilihat keakuratan dari metode DMA

#Menghitung nilai keakuratan
error.dma = data.ts-dt.ramal[1:length(data.ts)]
SSE.dma = sum(error.dma[6:length(data.ts)]^2)
MSE.dma = mean(error.dma[6:length(data.ts)]^2)
MAPE.dma = mean(abs((error.dma[6:length(data.ts)]/data.ts[6:length(data.ts)])*100))

akurasi.dma <- matrix(c(SSE.dma, MSE.dma, MAPE.dma))
row.names(akurasi.dma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi.dma) <- c("Akurasi m = 3")
akurasi.dma
##      Akurasi m = 3
## SSE     0.59288889
## MSE     0.08469841
## MAPE    0.34238965

Selanjutnya akan digunakan metode Double Exponential Smoothing dengan cara sebagai berikut.

Pertama akan data akan dibagi menjadi data training dan data testing.

#membagi training dan testing
training<-dtGorontalo[1:10,2]
testing<-dtGorontalo[11:12,2]

#data time series
training.ts<-ts(training)
testing.ts<-ts(testing,start=11)

#eksplorasi data
plot(data.ts, col="red",main="Plot semua data")
points(data.ts)

plot(training.ts, col="blue",main="Plot data training")
points(training.ts)

Selanjutnya akan dilakukan pemulusan dengan DES, kali ini langsung dicari lambda dan gamma optimum sebagai berikut. Nilai lambda dan gamma optimum dapat dilihat pada smoothing parameters alpha untuk nilai lambda dan beta untuk nilai gamma.

#Lamda dan gamma optimum
des.opt<- HoltWinters(training.ts, gamma = FALSE)
des.opt
## Holt-Winters exponential smoothing with trend and without seasonal component.
## 
## Call:
## HoltWinters(x = training.ts, gamma = FALSE)
## 
## Smoothing parameters:
##  alpha: 0.7826887
##  beta : 1
##  gamma: FALSE
## 
## Coefficients:
##         [,1]
## a 68.4727317
## b  0.7823472
plot(des.opt)
legend("topleft", c("Data Aktual", "Peramalan"), col = c("black", "red"), 
       lty = c(1,1))

#ramalan
ramalandesopt<- forecast(des.opt, h=5)
ramalandesopt
##    Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 11       69.25508 69.04282 69.46734 68.93045 69.57971
## 12       70.03743 69.64314 70.43171 69.43442 70.64043
## 13       70.81977 70.18427 71.45528 69.84785 71.79170
## 14       71.60212 70.68262 72.52163 70.19586 73.00838
## 15       72.38447 71.14531 73.62363 70.48934 74.27960

Selanjutnya akan dicari akurasi dari metode DES.

ssedes.train<-des.opt$SSE
msedes.train<-ssedes.train/length(training.ts)
sisaandes<-ramalandesopt$residuals
head(sisaandes)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]         NA         NA -0.1500000 -0.2051934 -0.1265850  0.2095741
mapedes.train <- sum(abs(sisaandes[3:length(training.ts)]/training.ts[3:length(training.ts)])*100)/length(training.ts)

akurasides.opt <- matrix(c(ssedes.train,msedes.train,mapedes.train))
row.names(akurasides.opt)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.opt) <- c("Akurasi lamda dan gamma optimum")
akurasides.opt
##      Akurasi lamda dan gamma optimum
## SSE                       0.19249578
## MSE                       0.01924958
## MAPE                      0.17991246
#Akurasi data testing
selisihdesopt<-ramalandesopt$mean-testing.ts
selisihdesopt
## Time Series:
## Start = 11 
## End = 12 
## Frequency = 1 
## [1] 0.575079 1.037426
SSEtestingdesopt<-sum(selisihdesopt^2)
SSEtestingdesopt<-SSEtestingdesopt/length(testing.ts)
MAPEtestingdesopt<-sum(abs(selisihdesopt/testing.ts)*100)/length(testing.ts)

akurasiDesTesting <- matrix(c(SSEtestingdesopt,SSEtestingdesopt,MAPEtestingdesopt))
row.names(akurasiDesTesting)<- c("SSE", "MSE", "MAPE")
colnames(akurasiDesTesting) <- c("Akurasi lamda dan gamma optimum")
akurasiDesTesting
##      Akurasi lamda dan gamma optimum
## SSE                        0.7034845
## MSE                        0.7034845
## MAPE                       1.1704237

Setelah didapatkan nilai akurasi untuk metode DMA dan DES, selanjutnya akan dibandingkan keakuratan antar metode keduanya.

cbind(akurasi.dma, akurasides.opt)
##      Akurasi m = 3 Akurasi lamda dan gamma optimum
## SSE     0.59288889                      0.19249578
## MSE     0.08469841                      0.01924958
## MAPE    0.34238965                      0.17991246

Berdasarkan perbandingan akurasi tersebut, terlihat nilai SSE, MSE, dan MAPE metode DES lebih kecil dibandingkan dengan metode DMA. Oleh karena itu, metode peramalan dan pemulusan yang terbaik antara keduanya adalah dengan metode DES.

Setelah melakukan peramalan, data yang telah dimasukkan kemudian dieksplorasi. Eksplorasi pertama yang dilakukan adalah dengan menggunakan scatter plot.

#Eksplorasi Data
#Pembuatan Scatter Plot
plot(tahun,ipm, pch = 20, col = "blue",
     main = "Scatter Plot Tahun vs Nilai IPM",
     xlab = "Tahun",
     ylab = "Nilai IPM")

#Menampilkan Nilai Korelasi
cor(tahun,ipm)
## [1] 0.9966848

Berdasarkan scatter plot di atas, terlihat adanya hubungan / korelasi positif antara peubah tahun dengan nilai IPM, terlihat titik-titik pada plot yang naik ke arah kanan atas. Hal tersebut juga diperkuat dengan hasil perhitungan aplikasi R di mana didapatkan nilai korelasi sebesar \(0.9966848\).

Setalah mengetahui adanya hubungan antar dua peubah, maka model regresi dapat ditentukan.

Regresi

#Pembuatan Model Regresi
#model regresi
model<- lm(ipm~tahun, data = dtGorontalo)
summary(model)
## 
## Call:
## lm(formula = ipm ~ tahun, data = dtGorontalo)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.33000 -0.07295  0.02591  0.08000  0.33455 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.118e+03  3.055e+01  -36.58 5.55e-12 ***
## tahun        5.873e-01  1.516e-02   38.74 3.14e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1813 on 10 degrees of freedom
## Multiple R-squared:  0.9934, Adjusted R-squared:  0.9927 
## F-statistic:  1501 on 1 and 10 DF,  p-value: 3.136e-12

Model yang dihasilkan adalah \[y_i=-1118+0.5873x_t\] Berdasarkan ringkasan model dapat diketahui bahwa hasil uji F memiliki p-value < \(\alpha\) (5%). Artinya, minimal terdapat satu variabel yang berpengaruh nyata terhadap model. Hasil uji-t parsial kedua parameter regresi, yaitu intersep dan koefisien regresi juga menunjukkan hal yang sama, yaitu memiliki p-value < \(\alpha\) (5%) sehingga nyata dalam taraf 5%. Selanjutnya dapat dilihat juga nilai \(R^2=0.9934\). Artinya, sebesar 99.34% keragaman nilai IPM dapat dijelaskan oleh peubah tahun. Hasil ini menunjukkan hasil yang bagus, seolah mendapatkan hasil terbaik. Namun, kita perlu melakukan uji terhadap sisaannya seperti berikut ini.

#sisaan dan fitted value
sisaan<- residuals(model)
fitValue<- predict(model)

#Diagnostik dengan eksploratif
par(mfrow = c(2,2))
qqnorm(sisaan)
qqline(sisaan, col = "steelblue", lwd = 2)
plot(fitValue, sisaan, col = "steelblue", pch = 20, xlab = "Sisaan", ylab = "Fitted Values", main = "Sisaan vs Fitted Values")
abline(a = 0, b = 0, lwd = 2)
hist(sisaan, col = "steelblue")
plot(seq(1,12,1), sisaan, col = "steelblue", pch = 20, xlab = "Sisaan", ylab = "Order", main = "Sisaan vs Order")
lines(seq(1,12,1), sisaan, col = "red")
abline(a = 0, b = 0, lwd = 2)

Dua plot di samping kiri digunakan untuk melihat apakah sisaan menyebar normal. Normal Q-Q Plot di atas menunjukkan bahwa sisaan cenderung menyebar normal, tetapi histogram dari sisaan tidak menunjukkan demikian. Selanjutnya, dua plot di samping kanan digunakan untuk melihat autokorelasi. Plot Sisaan vs Fitted Value dan Plot Sisaan vs Order menunjukkan adanya pola pada sisaan. Untuk lebih lanjut akan digunakan uji formal melihat normalitas sisaan dan plot ACF dan PACF untuk melihat apakah ada autokorelasi atau tidak.

#Melihat Sisaan Menyebar Normal/Tidak
#H0: sisaan mengikuti sebaran normal
#H1: sisaan tidak mengikuti sebaran normal
shapiro.test(sisaan)
## 
##  Shapiro-Wilk normality test
## 
## data:  sisaan
## W = 0.97479, p-value = 0.954
ks.test(sisaan, "pnorm", mean=mean(sisaan), sd=sd(sisaan))
## 
##  Exact one-sample Kolmogorov-Smirnov test
## 
## data:  sisaan
## D = 0.13564, p-value = 0.9589
## alternative hypothesis: two-sided

Berdasarkan uji formal Saphiro-Wilk dan Kolmogorov-Smirnov didapatkan nilai p-value > \(\alpha\) (5%). Artinya, cukup bukti untuk menyatakan sisaan berdistribusi normal.

#ACF dan PACF identifikasi autokorelasi
par(mfrow = c(1,2))
acf(sisaan)
pacf(sisaan)

Berdasarkan plot ACF dan PACF, terlihat semua dalam rentang batas dan tidak ada lag yang signifikan. Namun, untuk lebih memastikan akan dilakukan uji formal dengan uji Durbin Watson.

#Deteksi autokorelasi dengan uji-Durbin Watson
#H0: tidak ada autokorelasi
#H1: ada autokorelasi
dwtest(model)
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 1.2644, p-value = 0.03741
## alternative hypothesis: true autocorrelation is greater than 0

Berdasarkan hasil DW Test, didapatkan nilai \(DW = 1.2644\) dan p-value = \(0.03741\). Berdasarkan tabel Durbin-Watson diperoleh nilai \(DL = 0.9771\) dan \(DU = 1.331\). Nilai DW masih berada di antara nilai DL dan DU. Artinya, berada di daerah inkonklusif, tidak dapat dikatakan berada di daerah autokorelasi positif maupun bebas dari autokorelasi. Namun, dengan nilai p-value < 0.05 dapat disimpulkan bahwa tolak H0, cukup bukti mengatakan adanya autokorelasi. Oleh karena itu, diperlukan penangan autokorelasi. Penanganan yang akan digunakan menggunakan dua metode, yaitu Cochrane-Orcutt dan Hildret-Lu.

Penanganan Autokorelasi

Metode Cochrane-Orcutt

Penanganan metode Cochrane-Orcutt dapat dilakukan dengan bantuan packages Orcutt pada aplikasi R maupun secara manual. Berikut ini ditampilkan cara menggunakan bantuan library packages Orcutt.

#Penanganan Autokorelasi Cochrane-Orcutt
modelCO<-cochrane.orcutt(model)
modelCO
## Cochrane-orcutt estimation for first order autocorrelation 
##  
## Call:
## lm(formula = ipm ~ tahun, data = dtGorontalo)
## 
##  number of interaction: 30
##  rho 0.340921
## 
## Durbin-Watson statistic 
## (original):    1.26437 , p-value: 3.741e-02
## (transformed): 1.49014 , p-value: 9.403e-02
##  
##  coefficients: 
##  (Intercept)        tahun 
## -1062.042646     0.559755

Hasil keluaran model setelah dilakukan penanganan adalah sebagai berikut. \[y_i=-1062.042646+0.559755x_t\] Hasil juga menunjukkan bahwa nilai DW dan p-value meningkat menjadi \(1.49014\) dan \(0.09403\). Nilai DW sudah berada pada rentang DU < DW < 4-DU atau \(1.331 < DW < 2.669\). Hal tersebut juga didukung dengan nilai p-value > 0.05, artinya belum cukup bukti menyatakan bahwa sisaan terdapat autokorelasi pada taraf nyata 5%. Untuk nilai \(ρ ̂\) optimum yang digunakan adalah \(0.3409214\). Nilai tersebut dapat diketahui dengan syntax berikut.

#Rho optimum
rho<- modelCO$rho
rho
## [1] 0.3409214

Selanjutnya akan dilakukan transformasi secara manual dengan syntax berikut ini.

ipm
##  [1] 62.65 63.48 64.16 64.70 65.17 65.86 66.29 67.01 67.71 68.49 68.68 69.00
ipm[-1]
##  [1] 63.48 64.16 64.70 65.17 65.86 66.29 67.01 67.71 68.49 68.68 69.00
#Transformasi Manual
ipm.trans<- ipm[-1]-ipm[-12]*rho
tahun.trans<- tahun[-1]-tahun[-12]*rho
modelCOmanual<- lm(ipm.trans~tahun.trans)
summary(modelCOmanual)
## 
## Call:
## lm(formula = ipm.trans ~ tahun.trans)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.22770 -0.11619 -0.00273  0.05763  0.33083 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -699.96956   31.38081  -22.31 3.46e-09 ***
## tahun.trans    0.55975    0.02361   23.71 2.02e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1632 on 9 degrees of freedom
## Multiple R-squared:  0.9842, Adjusted R-squared:  0.9825 
## F-statistic:   562 on 1 and 9 DF,  p-value: 2.017e-09

Hasil model transformasi bukan merupakan model sesungguhnya. Koefisien regresi masih perlu dicari kembali mengikuti \(β_0^*=β_0+ρ ̂β_0\) dan \(β_1^*=β_1\).

#Mencari Penduga Koefisien Regresi setelah Transformasi ke Persamaan Awal
b0bintang <- modelCOmanual$coefficients[-2]
b0 <- b0bintang/(1-rho)
b1 <- modelCOmanual$coefficients[-1]
b0
## (Intercept) 
##   -1062.043
b1
## tahun.trans 
##   0.5597546

Hasil perhitungan koefisien regresi tersebut akan menghasilkan hasil yang sama dengan model yang dihasilkan menggunakan packages.

Metode Hildreth-Lu

Penanganan kedua adalah menggunakan metode Hildreth-Lu. Metode ini akan mencari nilai SSE terkecil dan dapat dicari secara manual maupun menggunakan packages. Jika menggunakan packages, gunakan library packages HORM.

#Penanganan Autokorelasi Hildreth lu
# Hildreth-Lu
hildreth.lu.func<- function(r, model){
  x <- model.matrix(model)[,-1]
  y <- model.response(model.frame(model))
  n <- length(y)
  t <- 2:n
  y <- y[t]-r*y[t-1]
  x <- x[t]-r*x[t-1]
  
  return(lm(y~x))
}

#Pencariab rho yang meminimumkan SSE
r <- c(seq(0.1,0.9, by= 0.1))
tab <- data.frame("rho" = r, "SSE" = sapply(r, function(i){deviance(hildreth.lu.func(i, model))}))
round(tab, 4)
##   rho    SSE
## 1 0.1 0.2499
## 2 0.2 0.2432
## 3 0.3 0.2400
## 4 0.4 0.2404
## 5 0.5 0.2442
## 6 0.6 0.2514
## 7 0.7 0.2622
## 8 0.8 0.2765
## 9 0.9 0.2942

Pertama-tama akan dicari di mana kira-kira \(ρ\) yang menghasilkan SSE minimum. Pada hasil di atas terlihat \(ρ\) minimum ketika 0.3. Namun, hasil tersebut masih kurang teliti sehingga akan dicari kembali \(ρ\) yang lebih optimum dengan ketelitian yang lebih. Jika sebelumnya jarak antar \(ρ\) yang dicari adalah 0.1, kali ini jarak antar \(ρ\) adalah 0.001 dan dilakukan pada selang 0.2 sampai dengan 0.5.

#Rho optimal di sekitar 0.4
rOpt <- seq(0.2,0.5, by= 0.001)
tabOpt <- data.frame("rho" = rOpt, "SSE" = sapply(rOpt, function(i){deviance(hildreth.lu.func(i, model))}))
head(tabOpt[order(tabOpt$SSE),])
##       rho       SSE
## 142 0.341 0.2397500
## 141 0.340 0.2397501
## 143 0.342 0.2397502
## 140 0.339 0.2397506
## 144 0.343 0.2397507
## 139 0.338 0.2397515
#Grafik SSE optimum
par(mfrow = c(1,1))
plot(tab$SSE ~ tab$rho , type = "l", xlab = "Rho", ylab = "SSE")
abline(v = tabOpt[tabOpt$SSE==min(tabOpt$SSE),"rho"], lty = 2, col="red",lwd=2)
text(x=0.341, y=0.2397500, labels = "rho=0.341", cex = 0.8)

Perhitungan yang dilakukan aplikasi R menunjukkan bahwa nilai \(ρ\) optimum, yaitu saat SSE terkecil terdapat pada nilai \(ρ=0.341\). Hal tersebut juga ditunjukkan pada plot. Selanjutnya, model dapat didapatkan dengan mengevaluasi nilai \(ρ\) ke dalam fungsi hildreth.lu.func, serta dilanjutkan dengan pengujian autokorelasi dengan uji Durbin-Watson. Namun, setelah pengecekan tersebut tidak lupa koefisien regresi tersebut digunakan untuk transformasi balik. Persamaan hasil transformasi itulah yang menjadi persamaan sesungguhnya.

#Model terbaik
modelHL <- hildreth.lu.func(0.341, model)
summary(modelHL)
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.22769 -0.11621 -0.00271  0.05763  0.33083 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -699.87889   31.38081   -22.3 3.47e-09 ***
## x              0.55975    0.02361    23.7 2.02e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1632 on 9 degrees of freedom
## Multiple R-squared:  0.9842, Adjusted R-squared:  0.9825 
## F-statistic: 561.9 on 1 and 9 DF,  p-value: 2.02e-09
#Transformasi Balik
cat("y = ", coef(modelHL)[1]/(1-0.341), "+", coef(modelHL)[2],"x", sep = "")
## y = -1062.032+0.5597492x

Setelah dilakukan tranformasi balik, didapatkan model dengan metode Hildreth-Lu sebagai berikut. \[y_i=-1062.032+0.5597492x_t\]

#Deteksi autokorelasi
dwtest(modelHL)
## 
##  Durbin-Watson test
## 
## data:  modelHL
## DW = 1.4902, p-value = 0.09404
## alternative hypothesis: true autocorrelation is greater than 0

Hasil uji Durbin-Watson juga menunjukkan bawah nilai DW sebesar \(1.4092\) berada pada selang daerah tidak ada autokorelasi, yaitu pada rentang DU < DW < 4-DU atau \(1.331 < DW < 2.669\). Hal tersebut juga didukung oleh p-value sebesar \(0.09404\), di mana p-value > \(\alpha\)=5%. Artinya tak tolak \(H_0\) atau belum cukup bukti menyatakan bahwa ada autokorelasi dalam data nilai IPM dengan metode Hildreth-Lu pada taraf nyata 5%.

Terakhir, akan dibandingkan nilai SSE dari ketiga metode (metode awal, metode Cochrane-Orcutt, dan Hildreth-Lu).

#Perbandingan
sseModelawal <- anova(model)$`Sum Sq`[-1]
sseModelCO <- anova(modelCOmanual)$`Sum Sq`[-1]
sseModelHL <- anova(modelHL)$`Sum Sq`[-1]
mseModelawal <- sseModelawal/length(ipm)
mseModelCO <- sseModelCO/length(ipm)
mseModelHL <- sseModelHL/length(ipm)
akurasi <- matrix(c(sseModelawal,sseModelCO,sseModelHL,
                    mseModelawal,mseModelCO,mseModelHL),nrow=2,ncol=3,byrow = T)
colnames(akurasi) <- c("Model Awal", "Model Cochrane-Orcutt", "Model Hildreth-Lu")
row.names(akurasi) <- c("SSE","MSE")
akurasi
##     Model Awal Model Cochrane-Orcutt Model Hildreth-Lu
## SSE 0.32863636            0.23974997        0.23974997
## MSE 0.02738636            0.01997916        0.01997916

Berdasarkan hasil tersebut dapat diketahui bahwa hasil penanganan autokorelasi dengan metode Cochrane-Orcutt dan Hildreth-Lu memiliki SSE yang sama, sebesar \(0.23975\) dan lebih baik dibandingkan model awal ketika autokorelasi masih terjadi, yaitu sebesar \(0.3286364\).

Simpulan

Autokorelasi yang terdapat pada data IPM terjadi akibat adanya korelasi di antara unsur penyusunnya. Indikator IPM yang erat hubungannya dengan perekonomian sangat rawan menjadi penyebab adanya autokorelasi. Adanya autokorelasi menyebabkan model regresi kurang baik karena akan meingkatkan galatnya. Autokorelasi dapat dideteksi secara eksploratif melalui plot sisaan, ACF, dan PACF, serta dengan uji formal Durbin-Watson. Namun, autokorelasi tersebut dapat ditangani dengan metode Cochrane-Orcutt dan Hildreth-Lu. Kedua metode menghasilkan nilai SSE yang sama, artinya keduanya baik untuk digunakan.

Pertemuan 3

Library

library(dLagM)
## Warning: package 'dLagM' was built under R version 4.3.3
## Loading required package: nardl
## Warning: package 'nardl' was built under R version 4.3.3
## Loading required package: dynlm
## Warning: package 'dynlm' was built under R version 4.3.3
## 
## Attaching package: 'dLagM'
## The following object is masked from 'package:forecast':
## 
##     forecast
library(dynlm)
library(MLmetrics)
## Warning: package 'MLmetrics' was built under R version 4.3.3
## 
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:dLagM':
## 
##     MAPE
## The following object is masked from 'package:base':
## 
##     Recall
library(lmtest)
library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode

Impor Data

data <- rio::import("https://raw.githubusercontent.com/rizkynurhambali/Praktikum-MPDW-2324/main/Pertemuan%203/Data%20Asli.csv")
str(data)
## 'data.frame':    20 obs. of  4 variables:
##  $ t     : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Yt    : num  52.9 53.8 54.9 58.2 60 63.4 68.2 78 84.7 90.6 ...
##  $ Y(t-1): num  NA 52.9 53.8 54.9 58.2 60 63.4 68.2 78 84.7 ...
##  $ Xt    : num  30.3 30.9 30.9 33.4 35.1 37.3 41 44.9 46.5 50.3 ...
data
##     t    Yt Y(t-1)    Xt
## 1   1  52.9     NA  30.3
## 2   2  53.8   52.9  30.9
## 3   3  54.9   53.8  30.9
## 4   4  58.2   54.9  33.4
## 5   5  60.0   58.2  35.1
## 6   6  63.4   60.0  37.3
## 7   7  68.2   63.4  41.0
## 8   8  78.0   68.2  44.9
## 9   9  84.7   78.0  46.5
## 10 10  90.6   84.7  50.3
## 11 11  98.2   90.6  53.5
## 12 12 101.7   98.2  52.8
## 13 13 102.7  101.7  55.9
## 14 14 108.3  102.7  63.0
## 15 15 124.7  108.3  73.0
## 16 16 157.9  124.7  84.8
## 17 17 158.2  157.9  86.6
## 18 18 170.2  158.2  98.9
## 19 19 180.0  170.2 110.8
## 20 20 198.0  180.0 124.7

Pembagian Data

#SPLIT DATA
train<-data[1:15,]
test<-data[16:20,]
#data time series
train.ts<-ts(train)
test.ts<-ts(test)
data.ts<-ts(data)

Model Koyck

Model Koyck didasarkan pada asumsi bahwa semakin jauh jarak lag peubah independen dari periode sekarang maka semakin kecil pengaruh peubah lag terhadap peubah dependen.

Koyck mengusulkan suatu metode untuk menduga model dinamis distributed lag dengan mengasumsikan bahwa semua koefisien \(\beta\) mempunyai tanda sama.

Model kyock merupakan jenis paling umum dari model infinite distributed lag dan juga dikenal sebagai geometric lag

\[ y_t=a(1-\lambda)+\beta_0X_t+\beta_1Z_t+\lambda Y_{t-1}+V_t \]

dengan \[V_t=u_t-\lambda u_{t-1}\]

Pemodelan

Pemodelan model Koyck dengan R dapat menggunakan dLagM::koyckDlm() . Fungsi umum dari koyckDlm adalah sebagai berikut.

koyckDlm(x , y , intercept)

Fungsi koyckDlm() akan menerapkan model lag terdistribusi dengan transformasi Koyck satu prediktor. Nilai x dan y tidak perlu sebagai objek time series (ts). intercept dapat dibuat TRUE untuk memasukkan intersep ke dalam model.

#MODEL KOYCK
model.koyck <- koyckDlm(x = train$Xt, y = train$Yt)
summary(model.koyck)
## 
## Call:
## "Y ~ (Intercept) + Y.1 + X.t"
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.75605 -1.16407  0.01599  1.17295  3.28003 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -3.7335     2.1785  -1.714   0.1146    
## Y.1           0.4214     0.1158   3.639   0.0039 ** 
## X.t           1.1510     0.1901   6.055 8.25e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.023 on 11 degrees of freedom
## Multiple R-Squared: 0.9934,  Adjusted R-squared: 0.9922 
## Wald test: 828.9 on 2 and 11 DF,  p-value: 1.01e-12 
## 
## Diagnostic tests:
## NULL
## 
##                              alpha     beta       phi
## Geometric coefficients:  -6.452844 1.150951 0.4214181
AIC(model.koyck)
## [1] 64.08525
BIC(model.koyck)
## [1] 66.64148

Dari hasil tersebut, didapat bahwa peubah \(x_t\) dan \(y_{t-1}\) memiliki nilai \(P-Value<0.05\). Hal ini menunjukkan bahwa peubah \(x_t\) dan \(y_{t-1}\) berpengaruh signifikan terhadap \(y\). Adapun model keseluruhannya adalah sebagai berikut

\[ \hat{Y_t}=-3.7335+1.1510X_t+0.4214Y_{t-1} \]

Peramalan dan Akurasi

Berikut adalah hasil peramalan y untuk 5 periode kedepan menggunakan model koyck

fore.koyck <- forecast(model = model.koyck, x=test$Xt, h=5)
fore.koyck
## $forecasts
## [1] 146.4180 157.6420 176.5288 198.1843 223.3085
## 
## $call
## forecast.koyckDlm(model = model.koyck, x = test$Xt, h = 5)
## 
## attr(,"class")
## [1] "forecast.koyckDlm" "dLagM"
mape.koyck <- MAPE(fore.koyck$forecasts, test$Yt)
#akurasi data training
GoF(model.koyck)
##              n      MAE           MPE       MAPE      sMAPE      MASE      MSE
## model.koyck 14 1.473599 -0.0004874002 0.01720083 0.01719063 0.2701945 3.216237
##                  MRAE     GMRAE
## model.koyck 0.3967354 0.3026997

Regression with Distributed Lag

Pemodelan model Regression with Distributed Lag dengan R dapat menggunakan dLagM::dlm() . Fungsi umum dari dlm adalah sebagai berikut.

dlm(formula , data , x , y , q , remove )

Fungsi dlm() akan menerapkan model lag terdistribusi dengan satu atau lebih prediktor. Nilai x dan y tidak perlu sebagai objek time series (ts). \(q\) adalah integer yang mewakili panjang lag yang terbatas.

Pemodelan (Lag=2)

model.dlm <- dlm(x = train$Xt,y = train$Yt , q = 2)
summary(model.dlm)
## 
## Call:
## lm(formula = model.formula, data = design)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.4446 -0.6965 -0.2373  0.8810  1.8630 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -9.6779     1.8156  -5.330 0.000474 ***
## x.t           0.3179     0.1792   1.774 0.109856    
## x.1           1.5276     0.3487   4.380 0.001770 ** 
## x.2           0.2651     0.2440   1.087 0.305388    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.322 on 9 degrees of freedom
## Multiple R-squared:  0.9974, Adjusted R-squared:  0.9965 
## F-statistic:  1133 on 3 and 9 DF,  p-value: 6.471e-12
## 
## AIC and BIC values for the model:
##       AIC      BIC
## 1 49.3705 52.19525
AIC(model.dlm)
## [1] 49.3705
BIC(model.dlm)
## [1] 52.19525

Dari hasil diatas, didapat bahwa \(P-value\) dari intercept dan \(x_{t-1}<0.05\). Hal ini menunjukkan bahwa intercept dan \(x_{t-1}\) berpengaruh signifikan terhadap \(y\). Adapun model keseluruhan yang terbentuk adalah sebagai berikut

\[ \hat{Y_t}=-9.6779+0.3179X_t+1.5276X_{t-1}+0.2651X_{t-2} \]

Peramalan dan Akurasi

Berikut merupakan hasil peramalan \(y\) untuk 5 periode kedepan

fore.dlm <- forecast(model = model.dlm, x=test$Xt, h=5)
fore.dlm
## $forecasts
## [1] 145.5021 166.7516 176.5405 199.5907 225.4498
## 
## $call
## forecast.dlm(model = model.dlm, x = test$Xt, h = 5)
## 
## attr(,"class")
## [1] "forecast.dlm" "dLagM"
mape.dlm <- MAPE(fore.dlm$forecasts, test$Yt)
#akurasi data training
GoF(model.dlm)
##            n       MAE           MPE       MAPE      sMAPE      MASE      MSE
## model.dlm 13 0.9282513 -0.0002879026 0.01227837 0.01229574 0.1595847 1.210003
##                MRAE     GMRAE
## model.dlm 0.2350414 0.1491444

Lag Optimum

#penentuan lag optimum 
finiteDLMauto(formula = Yt ~ Xt,
              data = data.frame(train), q.min = 1, q.max = 6,
              model.type = "dlm", error.type = "AIC", trace = FALSE)
##   q - k    MASE       AIC       BIC   GMRAE   MBRAE R.Adj.Sq Ljung-Box
## 6     6 0.00214 -29.87368 -28.09865 0.00225 0.00125  0.99999 0.9830642

Berdasarkan output tersebut, lag optimum didapatkan ketika lag=6. Selanjutnya dilakukan pemodelan untuk lag=6

#model dlm dengan lag optimum
model.dlm2 <- dlm(x = train$Xt,y = train$Yt , q = 6)
summary(model.dlm2)
## 
## Call:
## lm(formula = model.formula, data = design)
## 
## Residuals:
##         1         2         3         4         5         6         7         8 
## -0.023415  0.014375  0.032641 -0.010695 -0.013096 -0.014927  0.010054  0.010809 
##         9 
## -0.005747 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept) 21.42223    1.44472  14.828   0.0429 *
## x.t          1.68749    0.04758  35.466   0.0179 *
## x.1         -1.23901    0.11688 -10.600   0.0599 .
## x.2          0.97604    0.02787  35.021   0.0182 *
## x.3         -0.23945    0.02746  -8.719   0.0727 .
## x.4          3.24431    0.14678  22.103   0.0288 *
## x.5          0.08560    0.04903   1.746   0.3312  
## x.6         -3.47612    0.15157 -22.933   0.0277 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05079 on 1 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 1.277e+05 on 7 and 1 DF,  p-value: 0.002155
## 
## AIC and BIC values for the model:
##         AIC       BIC
## 1 -29.87368 -28.09865
AIC(model.dlm2)
## [1] -29.87368
BIC(model.dlm2)
## [1] -28.09865

Dari hasil tersebut terdapat beberapa peubah yang berpengaruh signifikan terhadap taraf nyata 5% yaitu \(x_t\) , \(x_{t-2}\) , \(x_{t-4}\) , \(x_{t-6}\). Adapun keseluruhan model yang terbentuk adalah

\[ \hat{Y_t}=21.42223+1.68749X_t+...-3.47612X_{t-6} \]

Adapun hasil peramalan 5 periode kedepan menggunakan model tersebut adalah sebagai berikut

#peramalan dan akurasi
fore.dlm2 <- forecast(model = model.dlm2, x=test$Xt, h=5)
mape.dlm2<- MAPE(fore.dlm2$forecasts, test$Yt)
#akurasi data training
GoF(model.dlm2)
##            n        MAE           MPE         MAPE        sMAPE        MASE
## model.dlm2 9 0.01508446 -2.246354e-06 0.0001727757 0.0001727773 0.002135853
##                     MSE        MRAE       GMRAE
## model.dlm2 0.0002866713 0.003309313 0.002245928

Model tersebut merupakan model yang sangat baik dengan nilai MAPE yang kurang dari 10%.

Model Autoregressive

Peubah dependen dipengaruhi oleh peubah independen pada waktu sekarang, serta dipengaruhi juga oleh peubah dependen itu sendiri pada satu waktu yang lalu maka model tersebut disebut autoregressive (Gujarati 2004).

Pemodelan

Pemodelan Autoregressive dilakukan menggunakan fungsi dLagM::ardlDlm() . Fungsi tersebut akan menerapkan autoregressive berordo \((p,q)\) dengan satu prediktor. Fungsi umum dari ardlDlm() adalah sebagai berikut.

ardlDlm(formula = NULL , data = NULL , x = NULL , y = NULL , p = 1 , q = 1 , 
         remove = NULL )

Dengan \(p\) adalah integer yang mewakili panjang lag yang terbatas dan \(q\) adalah integer yang merepresentasikan ordo dari proses autoregressive.

#model.ardl <- ardlDlm(x = train$Xt, y = train$Yt, p = 1 , q = 1)
#summary(model.ardl)
#AIC(model.ardl)
#BIC(model.ardl)
model.ardl <- ardlDlm(formula = Yt ~ Xt, 
                         data = train,p = 1 , q = 1)
summary(model.ardl)
## 
## Time series regression with "ts" data:
## Start = 2, End = 15
## 
## Call:
## dynlm(formula = as.formula(model.text), data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6274 -0.8401 -0.1767  0.8392  1.9447 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  -8.3594     1.9186  -4.357  0.00143 **
## Xt.t          0.3563     0.1875   1.900  0.08661 . 
## Xt.1          1.4557     0.4071   3.575  0.00505 **
## Yt.1          0.1408     0.1318   1.068  0.31055   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.269 on 10 degrees of freedom
## Multiple R-squared:  0.9976, Adjusted R-squared:  0.9969 
## F-statistic:  1405 on 3 and 10 DF,  p-value: 2.006e-13
AIC(model.ardl)
## [1] 51.69462
BIC(model.ardl)
## [1] 54.8899

Hasil di atas menunjukkan bahwa selain peubah \(x_{t-1}\), hasil uji t menunjukkan nilai-p pada peubah \(\ge0.05\) Hal ini menunjukkan bahwa peubah \(x_{t-1}\) berpengaruh signifikan terhadap \(y_t\), sementara \(x_t\) dan \(y_{t-1}\) berpengaruh signifikan terhadap \(y_t\). Model keseluruhannya adalah sebagai berikut:

\[ \hat{Y}=-8,3594+0,3563X_t+1,4557X_{t-1}+0,1408Y_{t-1} \]

Peramalan dan Akurasi

fore.ardl <- forecast(model = model.ardl, x=test$Xt, h=5)
fore.ardl
## $forecasts
## [1] 145.6865 166.4608 176.3897 199.9337 225.5255
## 
## $call
## forecast.ardlDlm(model = model.ardl, x = test$Xt, h = 5)
## 
## attr(,"class")
## [1] "forecast.ardlDlm" "dLagM"

Data di atas merupakan hasil peramalan untuk 5 periode ke depan menggunakan Model Autoregressive dengan \(p=1\) dan \(q=1\).

mape.ardl <- MAPE(fore.ardl$forecasts, test$Yt)
mape.ardl
## [1] 0.08313896
#akurasi data training
GoF(model.ardl)
##             n       MAE           MPE       MAPE      sMAPE      MASE     MSE
## model.ardl 14 0.8821232 -0.0003216464 0.01183235 0.01185341 0.1617433 1.15063
##                 MRAE     GMRAE
## model.ardl 0.2332582 0.1391987

Berdasarkan akurasi di atas, terlihat bahwa nilai MAPE keduanya tidak jauh berbeda. Artinya, model regresi dengan distribusi lag ini tidak overfitted atau underfitted

Lag Optimum

#penentuan lag optimum
model.ardl.opt <- ardlBoundOrders(data = data.frame(data), ic = "AIC", 
                                  formula = Yt ~ Xt )
min_p=c()
for(i in 1:6){
  min_p[i]=min(model.ardl.opt$Stat.table[[i]])
}
q_opt=which(min_p==min(min_p, na.rm = TRUE))
p_opt=which(model.ardl.opt$Stat.table[[q_opt]] == 
              min(model.ardl.opt$Stat.table[[q_opt]], na.rm = TRUE))
data.frame("q_optimum" = q_opt, "p_optimum" = p_opt, 
           "AIC"=model.ardl.opt$min.Stat)
##   q_optimum p_optimum       AIC
## 1         1         6 -20.56587

Dari tabel di atas, dapat terlihat bahwa nilai AIC terendah didapat ketika \(p=6\) dan \(q=1\), yaitu sebesar -20,56587. Artinya, model autoregressive optimum didapat ketika \(p=6\) dan \(q=1\).

Selanjutnya dapat dilakukan pemodelan dengan nilai \(p\) dan \(q\) optimum seperti inisialisasi di langkah sebelumnya.

Pemodelan DLM & ARDL dengan Library dynlm

Pemodelan regresi dengan peubah lag tidak hanya dapat dilakukan dengan fungsi pada packages dLagM , tetapi terdapat packages dynlm yang dapat digunakan. Fungsi dynlm secara umum adalah sebagai berikut.

dynlm(formula, data, subset, weights, na.action, method = "qr",
  model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE,
  contrasts = NULL, offset, start = NULL, end = NULL, ...)

Untuk menentukan formula model yang akan digunakan, tersedia fungsi tambahan yang memungkinkan spesifikasi dinamika (melalui d() dan L()) atau pola linier/siklus dengan mudah (melalui trend(), season(), dan harmon()). Semua fungsi formula baru mengharuskan argumennya berupa objek deret waktu (yaitu, "ts" atau "zoo").

#sama dengan model dlm q=1
cons_lm1 <- dynlm(Yt ~ Xt+L(Xt),data = train.ts)
#sama dengan model ardl p=1 q=0
cons_lm2 <- dynlm(Yt ~ Xt+L(Yt),data = train.ts)
#sama dengan ardl p=1 q=1
cons_lm3 <- dynlm(Yt ~ Xt+L(Xt)+L(Yt),data = train.ts)
#sama dengan dlm p=2
cons_lm4 <- dynlm(Yt ~ Xt+L(Xt)+L(Xt,2),data = train.ts)

Ringkasan Model

summary(cons_lm1)
## 
## Time series regression with "ts" data:
## Start = 2, End = 15
## 
## Call:
## dynlm(formula = Yt ~ Xt + L(Xt), data = train.ts)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.4118 -0.8790 -0.3542  0.7202  2.3047 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -9.4870     1.6123  -5.884 0.000106 ***
## Xt            0.2557     0.1632   1.567 0.145434    
## L(Xt)         1.8395     0.1927   9.547 1.17e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.277 on 11 degrees of freedom
## Multiple R-squared:  0.9974, Adjusted R-squared:  0.9969 
## F-statistic:  2081 on 2 and 11 DF,  p-value: 6.538e-15
summary(cons_lm2)
## 
## Time series regression with "ts" data:
## Start = 2, End = 15
## 
## Call:
## dynlm(formula = Yt ~ Xt + L(Yt), data = train.ts)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4441 -1.1436  0.1785  1.5549  2.1584 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -3.54096    1.96526  -1.802    0.099 .  
## Xt           0.92218    0.14482   6.368 5.31e-05 ***
## L(Yt)        0.55684    0.08922   6.241 6.34e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.827 on 11 degrees of freedom
## Multiple R-squared:  0.9946, Adjusted R-squared:  0.9936 
## F-statistic:  1015 on 2 and 11 DF,  p-value: 3.344e-13
summary(cons_lm3)
## 
## Time series regression with "ts" data:
## Start = 2, End = 15
## 
## Call:
## dynlm(formula = Yt ~ Xt + L(Xt) + L(Yt), data = train.ts)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6274 -0.8401 -0.1767  0.8392  1.9447 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  -8.3594     1.9186  -4.357  0.00143 **
## Xt            0.3563     0.1875   1.900  0.08661 . 
## L(Xt)         1.4557     0.4071   3.575  0.00505 **
## L(Yt)         0.1408     0.1318   1.068  0.31055   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.269 on 10 degrees of freedom
## Multiple R-squared:  0.9976, Adjusted R-squared:  0.9969 
## F-statistic:  1405 on 3 and 10 DF,  p-value: 2.006e-13
summary(cons_lm4)
## 
## Time series regression with "ts" data:
## Start = 3, End = 15
## 
## Call:
## dynlm(formula = Yt ~ Xt + L(Xt) + L(Xt, 2), data = train.ts)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.4446 -0.6965 -0.2373  0.8810  1.8630 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -9.6779     1.8156  -5.330 0.000474 ***
## Xt            0.3179     0.1792   1.774 0.109856    
## L(Xt)         1.5276     0.3487   4.380 0.001770 ** 
## L(Xt, 2)      0.2651     0.2440   1.087 0.305388    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.322 on 9 degrees of freedom
## Multiple R-squared:  0.9974, Adjusted R-squared:  0.9965 
## F-statistic:  1133 on 3 and 9 DF,  p-value: 6.471e-12

SSE

deviance(cons_lm1)
## [1] 17.94685
deviance(cons_lm2)
## [1] 36.70155
deviance(cons_lm3)
## [1] 16.10882
deviance(cons_lm4)
## [1] 15.73004

Uji Diagnostik

#uji model
if(require("lmtest")) encomptest(cons_lm1, cons_lm2)
## Encompassing test
## 
## Model 1: Yt ~ Xt + L(Xt)
## Model 2: Yt ~ Xt + L(Yt)
## Model E: Yt ~ Xt + L(Xt) + L(Yt)
##           Res.Df Df      F  Pr(>F)   
## M1 vs. ME     10 -1  1.141 0.31055   
## M2 vs. ME     10 -1 12.784 0.00505 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Autokorelasi

#durbin watson
dwtest(cons_lm1)
## 
##  Durbin-Watson test
## 
## data:  cons_lm1
## DW = 2.1065, p-value = 0.3842
## alternative hypothesis: true autocorrelation is greater than 0
dwtest(cons_lm2)
## 
##  Durbin-Watson test
## 
## data:  cons_lm2
## DW = 1.441, p-value = 0.0497
## alternative hypothesis: true autocorrelation is greater than 0
dwtest(cons_lm3)
## 
##  Durbin-Watson test
## 
## data:  cons_lm3
## DW = 1.9337, p-value = 0.2449
## alternative hypothesis: true autocorrelation is greater than 0
dwtest(cons_lm4)
## 
##  Durbin-Watson test
## 
## data:  cons_lm4
## DW = 1.8189, p-value = 0.1911
## alternative hypothesis: true autocorrelation is greater than 0

Heterogenitas

bptest(cons_lm1)
## 
##  studentized Breusch-Pagan test
## 
## data:  cons_lm1
## BP = 1.5713, df = 2, p-value = 0.4558
bptest(cons_lm2)
## 
##  studentized Breusch-Pagan test
## 
## data:  cons_lm2
## BP = 3.7022, df = 2, p-value = 0.1571
bptest(cons_lm3)
## 
##  studentized Breusch-Pagan test
## 
## data:  cons_lm3
## BP = 4.0554, df = 3, p-value = 0.2555
bptest(cons_lm4)
## 
##  studentized Breusch-Pagan test
## 
## data:  cons_lm4
## BP = 2.7921, df = 3, p-value = 0.4248

Kenormalan

shapiro.test(residuals(cons_lm1))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(cons_lm1)
## W = 0.90752, p-value = 0.145
shapiro.test(residuals(cons_lm2))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(cons_lm2)
## W = 0.94358, p-value = 0.4661
shapiro.test(residuals(cons_lm3))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(cons_lm3)
## W = 0.94403, p-value = 0.4723
shapiro.test(residuals(cons_lm4))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(cons_lm4)
## W = 0.92477, p-value = 0.2907

Perbandingan Model

akurasi <- matrix(c(mape.koyck, mape.dlm, mape.dlm2, mape.ardl))
row.names(akurasi)<- c("Koyck","DLM 1","DLM 2","Autoregressive")
colnames(akurasi) <- c("MAPE")
akurasi
##                      MAPE
## Koyck          0.06845456
## DLM 1          0.08345978
## DLM 2          0.15117526
## Autoregressive 0.08313896

Berdasarkan nilai MAPE, model paling optimum didapat pada Model Koyck karena memiliki nilai MAPE yang terkecil.

Plot

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

Berdasarkan plot tersebut, terlihat bahwa plot yang paling mendekati data aktualnya adalah Model koyck, sehingga dapat disimpulkan model terbaik dalam hal ini adalah model regresi koyck

Pengayaan (Regresi Berganda)

Data

data(M1Germany)
data1 = M1Germany[1:144,]

DLM

#Run the search over finite DLMs according to AIC values
finiteDLMauto(formula = logprice ~ interest+logm1,
              data = data.frame(data1), q.min = 1, q.max = 5,
              model.type = "dlm", error.type = "AIC", trace = FALSE)
##   q - k    MASE       AIC       BIC   GMRAE    MBRAE R.Adj.Sq Ljung-Box
## 5     5 1.77163 -463.1393 -422.0566 1.43662 -1.60494  0.98836         0
#model dlm berganda
model.dlmberganda = dlm(formula = logprice ~ interest + logm1,
                data = data.frame(data1) , q = 5)
summary(model.dlmberganda)
## 
## Call:
## lm(formula = as.formula(model.formula), data = design)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.095761 -0.028610 -0.000012  0.029496  0.102597 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.81759    0.11384 -68.669  < 2e-16 ***
## interest.t  -1.75616    0.80358  -2.185 0.030707 *  
## interest.1   1.38935    1.22707   1.132 0.259679    
## interest.2   0.40776    1.23726   0.330 0.742273    
## interest.3   1.23130    1.20752   1.020 0.309830    
## interest.4  -0.08718    1.20869  -0.072 0.942616    
## interest.5   3.06850    0.89380   3.433 0.000808 ***
## logm1.t      0.43219    0.20876   2.070 0.040474 *  
## logm1.1      0.42190    0.19807   2.130 0.035109 *  
## logm1.2      0.20943    0.12883   1.626 0.106532    
## logm1.3      0.22053    0.13011   1.695 0.092567 .  
## logm1.4      0.05513    0.21457   0.257 0.797633    
## logm1.5      0.03042    0.19192   0.159 0.874296    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04343 on 126 degrees of freedom
## Multiple R-squared:  0.9894, Adjusted R-squared:  0.9884 
## F-statistic: 977.9 on 12 and 126 DF,  p-value: < 2.2e-16
## 
## AIC and BIC values for the model:
##         AIC       BIC
## 1 -463.1393 -422.0566
model.dlmberganda2 = dlm(formula = logprice ~ interest + logm1,
                        data = data.frame(data1) , q = 1)
summary(model.dlmberganda2)
## 
## Call:
## lm(formula = as.formula(model.formula), data = design)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.134002 -0.044697  0.006407  0.036962  0.113063 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.77917    0.13299 -58.492  < 2e-16 ***
## interest.t  -3.22103    0.94184  -3.420 0.000824 ***
## interest.1   6.52775    0.94501   6.908 1.66e-10 ***
## logm1.t      0.73918    0.08419   8.780 5.61e-15 ***
## logm1.1      0.63330    0.08429   7.513 6.55e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05443 on 138 degrees of freedom
## Multiple R-squared:  0.9832, Adjusted R-squared:  0.9828 
## F-statistic:  2025 on 4 and 138 DF,  p-value: < 2.2e-16
## 
## AIC and BIC values for the model:
##         AIC       BIC
## 1 -419.7575 -401.9805

ARDL

#Mencari orde lag optimum model ARDL
ardlBoundOrders(data = data1 , formula = logprice ~ interest + logm1,
                ic="AIC")
## $p
##    interest logm1
## 65        0     4
## 
## $q
## [1] 4
## 
## $Stat.table
##            q = 1     q = 2     q = 3     q = 4     q = 5     q = 6     q = 7
## p = 1  -760.1786 -757.9195 -846.8342 -975.2079 -965.7536 -958.9072 -956.7315
## p = 2  -760.0433 -759.3090 -843.6247 -971.2514 -961.7929 -955.2809 -953.4890
## p = 3  -753.7746 -753.7746 -841.2485 -970.4543 -961.4343 -953.7173 -950.0412
## p = 4  -829.8076 -832.6436 -832.6436 -971.0837 -962.1804 -955.0429 -953.4667
## p = 5  -749.4144 -753.2292 -962.9290 -962.9290 -961.7063 -954.3406 -951.7660
## p = 6  -742.2103 -742.9945 -891.6195 -952.3771 -952.3771 -952.2461 -950.1105
## p = 7  -728.9374 -733.0286 -851.2943 -945.7445 -944.6879 -944.6879 -949.3720
## p = 8  -747.9277 -746.2948 -812.4289 -937.9446 -938.9491 -937.3393 -937.3393
## p = 9  -722.6891 -724.5786 -863.2734 -928.9215 -927.2914 -926.8716 -936.6432
## p = 10 -714.8175 -714.5658 -816.3319 -918.5218 -918.6350 -916.9076 -921.1246
## p = 11 -703.1807 -705.3383 -794.0772 -909.6457 -908.8225 -906.9542 -912.9605
## p = 12 -716.7111 -714.7403 -774.0127 -910.0315 -910.6834 -908.7146 -909.6612
## p = 13 -697.7175 -698.1931 -793.4602 -895.5927 -894.9273 -893.5995 -897.7589
## p = 14 -686.5600 -685.7967 -766.5292 -886.0709 -885.4341 -885.2283 -890.1638
## p = 15 -676.7280 -678.3689 -753.2854 -875.6392 -874.1257 -874.3117 -879.2727
##            q = 8     q = 9    q = 10    q = 11    q = 12    q = 13    q = 14
## p = 1  -954.3375 -946.6293 -936.5328 -927.7728 -920.6435 -917.5463 -918.3110
## p = 2  -951.1470 -943.9360 -933.7047 -924.7949 -917.5334 -913.6213 -914.4063
## p = 3  -948.4683 -941.1039 -930.8509 -922.0563 -914.5728 -910.5351 -913.4996
## p = 4  -948.2330 -941.8238 -931.5689 -923.2663 -916.2063 -911.6023 -913.9345
## p = 5  -947.5994 -939.3767 -929.0155 -920.4475 -913.5968 -909.0781 -911.6312
## p = 6  -945.5758 -937.4076 -927.2439 -919.3949 -911.9537 -907.7394 -910.2890
## p = 7  -945.5181 -937.1826 -926.9640 -917.9619 -910.2774 -905.9449 -907.8712
## p = 8  -941.9617 -933.5959 -923.3691 -914.6251 -907.0608 -902.2187 -903.9255
## p = 9  -936.6432 -935.7172 -925.2881 -917.0877 -911.6973 -903.9027 -904.6405
## p = 10 -926.6891 -926.6891 -924.6986 -917.0904 -911.4197 -903.4313 -903.0612
## p = 11 -917.9145 -918.2328 -918.2328 -919.2867 -913.3674 -904.8733 -903.6541
## p = 12 -916.1321 -914.4362 -914.4610 -914.4610 -912.5159 -904.2394 -901.6216
## p = 13 -905.4744 -903.7559 -902.4406 -902.2530 -902.2530 -902.9434 -901.2363
## p = 14 -896.2370 -896.2620 -894.2896 -897.5711 -899.1407 -899.1407 -902.2350
## p = 15 -884.5637 -886.8221 -884.9832 -890.5665 -893.2335 -891.6220 -891.6220
##           q = 15
## p = 1  -908.0863
## p = 2  -904.1665
## p = 3  -903.3006
## p = 4  -903.9256
## p = 5  -901.6220
## p = 6  -900.1824
## p = 7  -897.9867
## p = 8  -894.1031
## p = 9  -894.7387
## p = 10 -893.6199
## p = 11 -893.6060
## p = 12 -892.4805
## p = 13 -892.5115
## p = 14 -893.6214
## p = 15 -891.3741
## 
## $min.Stat
## [1] -977.2745
## 
## $Stat.p
##     interest logm1      Stat
## 65         0     4 -977.2745
## 1          0     0 -976.5191
## 2          1     0 -976.2558
## 17         0     1 -975.9606
## 66         1     4 -975.6027
## 18         1     1 -975.2079
## 49         0     3 -974.4859
## 3          2     0 -974.4275
## 33         0     2 -974.0166
## 50         1     3 -973.7500
## 67         2     4 -973.6028
## 34         1     2 -973.2324
## 19         2     1 -973.2188
## 68         3     4 -972.5992
## 4          3     0 -972.4875
## 51         2     3 -971.7743
## 20         3     1 -971.3872
## 35         2     2 -971.2514
## 69         4     4 -971.0837
## 5          4     0 -970.5114
## 52         3     3 -970.4543
## 81         0     5 -969.9284
## 53         4     3 -969.5311
## 21         4     1 -969.4756
## 36         3     2 -969.3907
## 82         1     5 -968.6783
## 37         4     2 -967.4756
## 83         2     5 -966.8835
## 84         3     5 -965.6393
## 85         4     5 -963.9662
## 86         5     5 -962.9290
## 70         5     4 -961.2547
## 54         5     3 -960.9580
## 97         0     6 -960.7402
## 6          5     0 -960.6858
## 22         5     1 -959.8419
## 98         1     6 -959.6604
## 38         5     2 -957.8547
## 99         2     6 -957.7528
## 100        3     6 -956.7875
## 101        4     6 -955.2416
## 71         6     4 -954.8953
## 87         6     5 -954.6855
## 102        5     6 -954.3662
## 103        6     6 -954.0973
## 7          6     0 -954.0615
## 113        0     7 -953.9160
## 55         6     3 -953.2860
## 23         6     1 -953.1080
## 114        1     7 -952.6540
## 39         6     2 -951.1356
## 115        2     7 -950.6562
## 116        3     7 -949.6038
## 88         7     5 -949.2090
## 72         7     4 -948.5194
## 117        4     7 -947.7999
## 104        7     6 -947.7424
## 56         7     3 -947.6915
## 8          7     0 -947.5092
## 120        7     7 -947.3660
## 24         7     1 -947.0094
## 118        5     7 -946.9631
## 119        6     7 -946.8080
## 40         7     2 -945.0123
## 129        0     8 -943.9035
## 130        1     8 -942.6627
## 131        2     8 -940.6818
## 145        0     9 -940.0114
## 132        3     8 -939.6913
## 89         8     5 -939.1878
## 73         8     4 -938.5330
## 146        1     9 -938.2680
## 133        4     8 -937.8368
## 105        8     6 -937.6834
## 57         8     3 -937.6370
## 9          8     0 -937.5705
## 121        8     7 -937.5351
## 136        7     8 -937.3948
## 25         8     1 -937.0088
## 134        5     8 -936.9393
## 135        6     8 -936.8904
## 147        2     9 -936.3875
## 148        3     9 -936.3159
## 137        8     8 -935.5389
## 41         8     2 -935.0088
## 149        4     9 -934.3458
## 150        5     9 -934.1858
## 152        7     9 -934.0733
## 151        6     9 -932.9538
## 153        8     9 -932.3338
## 154        9     9 -930.9065
## 161        0    10 -929.8056
## 90         9     5 -929.2731
## 74         9     4 -928.5254
## 162        1    10 -928.1257
## 10         9     0 -927.9853
## 58         9     3 -927.9744
## 122        9     7 -927.9061
## 106        9     6 -927.6344
## 26         9     1 -927.4482
## 164        3    10 -926.5271
## 163        2    10 -926.2965
## 138        9     8 -926.1307
## 42         9     2 -925.4484
## 165        4    10 -924.5287
## 168        7    10 -924.2716
## 166        5    10 -924.0521
## 167        6    10 -922.7596
## 169        8    10 -922.5928
## 155       10     9 -921.2169
## 170        9    10 -921.1777
## 177        0    11 -920.2608
## 171       10    10 -920.0124
## 91        10     5 -919.0182
## 178        1    11 -918.7342
## 75        10     4 -918.4135
## 11        10     0 -917.8597
## 59        10     3 -917.7711
## 123       10     7 -917.6569
## 107       10     6 -917.3861
## 27        10     1 -917.2925
## 179        2    11 -916.9417
## 180        3    11 -916.8682
## 193        0    12 -916.1477
## 139       10     8 -915.9643
## 92        11     5 -915.3201
## 43        10     2 -915.2941
## 156       11     9 -915.0851
## 181        4    11 -914.8854
## 194        1    12 -914.4423
## 124       11     7 -914.3141
## 184        7    11 -914.1880
## 76        11     4 -914.1395
## 182        5    11 -914.0440
## 108       11     6 -913.4052
## 140       11     8 -913.3026
## 195        2    12 -913.1680
## 172       11    10 -913.0914
## 60        11     3 -912.7714
## 183        6    11 -912.7548
## 196        3    12 -912.5820
## 185        8    11 -912.5636
## 12        11     0 -912.2009
## 28        11     1 -912.0389
## 186        9    11 -911.1737
## 157       12     9 -911.1513
## 188       11    11 -911.1189
## 93        12     5 -910.7693
## 198        5    12 -910.7434
## 197        4    12 -910.6154
## 125       12     7 -910.5873
## 141       12     8 -910.0719
## 44        11     2 -910.0439
## 187       10    11 -909.9928
## 200        7    12 -909.4197
## 173       12    10 -909.2473
## 77        12     4 -909.1913
## 109       12     6 -908.7753
## 199        6    12 -908.7635
## 201        8    12 -908.1609
## 61        12     3 -908.0357
## 29        12     1 -907.8613
## 209        0    13 -907.6473
## 13        12     0 -907.6158
## 205       12    12 -907.5931
## 204       11    12 -907.5525
## 202        9    12 -907.3633
## 189       12    11 -907.3200
## 210        1    13 -906.1005
## 45        12     2 -905.9070
## 203       10    12 -905.7653
## 211        2    13 -904.7293
## 212        3    13 -903.9077
## 214        5    13 -902.0824
## 158       13     9 -901.9574
## 213        4    13 -901.9144
## 94        13     5 -901.6338
## 126       13     7 -901.3766
## 142       13     8 -900.9367
## 216        7    13 -900.5676
## 225        0    14 -900.5066
## 174       13    10 -900.1413
## 215        6    13 -900.1102
## 78        13     4 -900.0282
## 110       13     6 -899.6703
## 226        1    14 -899.0967
## 217        8    13 -899.0866
## 62        13     3 -898.8589
## 30        13     1 -898.7940
## 190       13    11 -898.4409
## 221       12    13 -898.4110
## 220       11    13 -898.3058
## 218        9    13 -898.2568
## 14        13     0 -898.2039
## 206       13    12 -897.9014
## 227        2    14 -897.3889
## 46        13     2 -896.8637
## 219       10    13 -896.6244
## 222       13    13 -896.4458
## 228        3    14 -896.2512
## 230        5    14 -895.1320
## 95        14     5 -894.6021
## 229        4    14 -894.3023
## 159       14     9 -894.2497
## 127       14     7 -893.9663
## 143       14     8 -893.6932
## 231        6    14 -893.4037
## 79        14     4 -893.1343
## 232        7    14 -893.1064
## 111       14     6 -892.6253
## 175       14    10 -892.5085
## 63        14     3 -891.9131
## 191       14    11 -891.1895
## 233        8    14 -891.1877
## 234        9    14 -891.1729
## 31        14     1 -890.7573
## 236       11    14 -890.5576
## 241        0    15 -890.5500
## 15        14     0 -890.3449
## 237       12    14 -890.1854
## 235       10    14 -889.8957
## 207       14    12 -889.7107
## 242        1    15 -889.0419
## 47        14     2 -888.9410
## 238       13    14 -888.1867
## 223       14    13 -887.7488
## 239       14    14 -887.6659
## 243        2    15 -887.3088
## 244        3    15 -886.0691
## 246        5    15 -884.7479
## 96        15     5 -884.2869
## 245        4    15 -884.1417
## 160       15     9 -883.9364
## 128       15     7 -883.6409
## 144       15     8 -883.4503
## 247        6    15 -883.0158
## 80        15     4 -882.8148
## 248        7    15 -882.7881
## 112       15     6 -882.3106
## 176       15    10 -882.2093
## 64        15     3 -881.6497
## 253       12    15 -881.4274
## 252       11    15 -881.3077
## 250        9    15 -881.1831
## 192       15    11 -880.9028
## 249        8    15 -880.8964
## 32        15     1 -880.5983
## 251       10    15 -880.2736
## 16        15     0 -880.2468
## 254       13    15 -879.4467
## 208       15    12 -879.4364
## 255       14    15 -879.2846
## 48        15     2 -878.8432
## 224       15    13 -877.4985
## 240       15    14 -877.4570
model.ardlDlmberganda = ardlDlm(formula = logprice ~ interest + logm1,
                        data = data.frame(data1) , p = 4 , q = 4)
summary(model.ardlDlmberganda)
## 
## Time series regression with "ts" data:
## Start = 5, End = 144
## 
## Call:
## dynlm(formula = as.formula(model.text), data = data)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0290527 -0.0075965  0.0005726  0.0072745  0.0304486 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.0145022  0.1822785   0.080  0.93671    
## interest.t   0.0067985  0.2135315   0.032  0.97465    
## interest.1   0.6093502  0.3240545   1.880  0.06238 .  
## interest.2   0.0798544  0.3221168   0.248  0.80461    
## interest.3  -0.3638172  0.3238873  -1.123  0.26347    
## interest.4   0.2084240  0.2447331   0.852  0.39604    
## logm1.t      0.0828689  0.0457486   1.811  0.07248 .  
## logm1.1     -0.0092841  0.0399079  -0.233  0.81642    
## logm1.2     -0.1166129  0.0390732  -2.984  0.00342 ** 
## logm1.3      0.0007016  0.0389297   0.018  0.98565    
## logm1.4      0.0447857  0.0425474   1.053  0.29455    
## logprice.1   0.3274245  0.0651574   5.025  1.7e-06 ***
## logprice.2   0.1323801  0.0684485   1.934  0.05537 .  
## logprice.3  -0.1448245  0.0674268  -2.148  0.03365 *  
## logprice.4   0.6730871  0.0636443  10.576  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01132 on 125 degrees of freedom
## Multiple R-squared:  0.9993, Adjusted R-squared:  0.9992 
## F-statistic: 1.273e+04 on 14 and 125 DF,  p-value: < 2.2e-16
#model p interest 0 p logm1 4 
rem.p = list(interest = c(1,2,3,4))
remove = list(p = rem.p)
model.ardlDlmberganda2 = ardlDlm(formula = logprice ~ interest + logm1,
                        data = data.frame(data1) , p = 4 , q = 4 ,
                        remove = remove)
summary(model.ardlDlmberganda2)
## 
## Time series regression with "ts" data:
## Start = 5, End = 144
## 
## Call:
## dynlm(formula = as.formula(model.text), data = data)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0290369 -0.0083445  0.0009024  0.0079199  0.0303652 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.174838   0.133708   1.308  0.19333    
## interest.t   0.448826   0.098736   4.546 1.24e-05 ***
## logm1.t      0.056659   0.043836   1.293  0.19849    
## logm1.1     -0.017025   0.039159  -0.435  0.66446    
## logm1.2     -0.118413   0.037399  -3.166  0.00193 ** 
## logm1.3     -0.006454   0.038112  -0.169  0.86580    
## logm1.4      0.060220   0.040337   1.493  0.13789    
## logprice.1   0.319059   0.062107   5.137 1.00e-06 ***
## logprice.2   0.111794   0.066101   1.691  0.09320 .  
## logprice.3  -0.122129   0.065114  -1.876  0.06297 .  
## logprice.4   0.699061   0.062611  11.165  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01149 on 129 degrees of freedom
## Multiple R-squared:  0.9993, Adjusted R-squared:  0.9992 
## F-statistic: 1.73e+04 on 10 and 129 DF,  p-value: < 2.2e-16

Proses selanjutnya sama dengan pemodelan menggunakan peubah tunggal.

Pertemuan 4

White Noise

Pembangkitan data berpola AR, MA, ARMA, dan banyak proses deret waktu lainnya diawali pembangkitan white noise. White noise merupakan sederet nilai dari peubah bebas stokastik identik. Oleh karena itu, white noise memiliki dua karakteristik penting:

  1. White noise tidak memiliki autokorelasi (karena saling bebas)
  2. Nilai harapan dan ragam white noise sama (karena berasal dari peubah acak bebas stokastik identik)

White noise dibangkitkan dari suatu peubah acak, umumnya peubah acak normal.

wn <- rnorm(200)
ts.plot(wn)

Dapat terlihat bahwa white noise tidak memiliki autokorelasi dari ACF. Perhatikan bahwa lag ke-0 adalah korelasi observasi ke-t dengan dirinya sendiri. Nilai korelasi tersebut pasti 1. Sebagai alternatif, lag pertama di plot ACF dapat ditetapkan sebagai 1 (alih-alih 0) dengan menambahkan argumen xlim(1, lag akhir). Plot tersebut dapat disandingkan bersamaan dengan membuat matriks \(1 \times 2\) dengan par(mfrow = c(1,2)).

par(mfrow = c(1, 2)) 
acf(wn)
acf(wn, xlim = c(1, 20))

Proses MA

Proses MA dapat dituliskan sebagai berikut:

\[ y_{t} = c + e_t + \theta_{1}e_{t-1} + \theta_{2}e_{t-2} + \dots + \theta_{q}e_{t-q} = c+{e_t+\sum_{i=1}^p \theta_ie_{t-i}} \] Terlihat bahwa \(e_t\), atau white noise, berperan penting dalam pembangkitan proses MA.

Pembangkitan Proses MA(1)

Akan dicoba membangkitkan proses MA paling sederhana, yaitu MA(1) dengan \(\theta = 0.5\) sebanyak 200 observasi dan \(c=0\). Karena diperlukan satu nilai awal untuk \(e_{t-1}\), masukkan nilai pertama white noise sebagai nilai awal tersebut.

set.seed(1234)
ma <- wn[1]

Nilai-nilai selanjutnya dapat dicari melalui loop. Bentuk loop dapat dilihat dari rumus MA(1) yang hendak dibangkitkan:

\[ y_t = e_t+0.5e_{t-1} \]

for(i in 2:200){
   ma[i] <- wn[i] + 0.5 * wn[i - 1] 
}
ma
##   [1] -1.066913213  0.256043451  0.213898641 -0.151621283 -0.622714669
##   [6] -0.279267075 -0.999160605 -0.595577804  1.047988696 -0.858689098
##  [11] -1.241661197  0.017591772 -0.419209528 -0.529004245 -0.128554996
##  [16]  0.423120646  0.761528958  0.127421912  0.742144817  0.372369308
##  [21]  0.272972749 -1.409981052 -2.073686740 -1.321951244 -1.020224036
##  [26] -1.135393059  0.320838600  1.446380749 -0.577935289 -0.719969032
##  [31] -0.811885615 -0.934673927 -2.159823696 -1.400091843 -1.438497358
##  [36] -1.505072235 -1.013720553 -0.174058835 -0.088898627 -1.395544871
##  [41] -0.080415890 -0.089920425  0.060266536 -0.812779887 -0.999672168
##  [46] -0.452664061  0.870489829 -2.048234663 -1.681863221 -1.190370626
##  [51] -0.605621478 -1.698285625 -0.746760969 -1.444552885 -2.072609533
##  [56]  0.856791972 -1.026619849 -2.051428661 -1.931790142  0.655829949
##  [61]  1.882254165  0.548798671  0.625325748  1.765445711  0.363042653
##  [66] -0.783986934 -1.051861468 -1.213753785 -0.275052685  0.177225817
##  [71] -0.369934927 -1.716970520  0.216136731  1.023507180  1.037250689
##  [76]  0.145181150  0.076887545 -0.121182835  0.388311532 -0.288359705
##  [81]  0.646999731  0.518251047  0.577710587  0.625978228 -0.171357210
##  [86] -1.103195376 -0.547761071  0.453989475  0.291547947 -1.043306428
##  [91] -0.088711797 -0.418227634  0.596906647  1.106696117  0.601570692
##  [96] -0.857065967 -2.909584385  0.947719410  0.574477620 -0.820010335
## [101] -1.925257074 -1.165847530  0.474825447  1.280154500  0.855703912
## [106]  0.015926082  0.915916845  0.075836100 -0.256504032  1.288623559
## [111]  1.144978836  0.265882902  0.990993593  2.348956784  0.594360501
## [116]  1.132879474  1.275068196 -0.997240187 -1.530959091 -2.420053222
## [121]  0.942534037 -1.302814375  0.404860956  1.413170018  0.212552416
## [126] -0.755003747  0.867529491 -0.355817225 -1.036156579  0.701555171
## [131]  0.957323985  0.907978620  2.289770316  1.225496226  0.615595470
## [136]  0.647794957  1.987545420  2.578673460  0.363525287 -1.672687466
## [141] -0.170861251  1.811471977 -0.198517600 -1.537194030  0.437519605
## [146] -0.542751573  0.735778251 -0.911832002  0.485562019 -0.239322064
## [151]  0.156138030  0.908742781 -0.252238527 -0.411237466 -0.062806294
## [156] -0.247411591 -0.728427117 -0.986656305  0.219972926  0.952752893
## [161]  1.329744109 -0.720801074 -2.523703619 -2.510776265 -1.220064459
## [166] -1.634456611 -0.631550895  0.008562093 -1.081188773 -1.042832897
## [171] -0.497567219  0.054846809  0.969822041  1.667921389  1.214226638
## [176] -0.289320911 -0.578974067 -0.058846318 -0.522878021 -2.624951709
## [181] -1.410099715 -0.642603214 -1.235626728 -1.363776222 -1.057119216
## [186]  0.096127288  0.613498592 -0.338003506 -0.064433277 -0.493915096
## [191] -1.493716159  0.084602646 -0.201027824  0.892771870  0.441444675
## [196] -1.145068332  0.795252233  2.349590942  1.641430993  0.076160539

Selain menggunakan cara di atas, pembangkitan proses MA(1) dapat dilakukan dengan fungsi arima.sim() sebagai berikut.

ma1 <- arima.sim(list(order=c(0,0,1), ma=0.5), n=200)
ma1
## Time Series:
## Start = 1 
## End = 200 
## Frequency = 1 
##   [1] -0.326103633  1.223155798 -1.803477114 -0.743724163  0.720618237
##   [6] -0.321712014 -0.834001836 -0.837767927 -1.172263829 -0.922211614
##  [11] -1.236982795 -1.275447117 -0.323668130  0.991723468  0.369461535
##  [16] -0.566152253 -1.166700170 -1.292769389  1.997249338  1.342005809
##  [21] -0.423641787 -0.685890821  0.239315505 -0.463925526 -1.795065034
##  [26] -0.149346734 -0.736277863 -0.526966162 -0.943517751  0.634323246
##  [31]  0.075555694 -0.947236577 -0.855978079 -1.879722499 -1.982165997
##  [36] -2.763849280 -2.431013017 -0.964790455 -0.613044470  1.216547495
##  [41] -0.343894591 -1.389685996 -0.708305319 -1.134651577 -1.465684356
##  [46] -1.591575352 -1.805644982 -1.149821062 -0.758764017 -2.054456235
##  [51] -1.485091553 -1.399927587 -1.569406822 -0.669790528  0.481901057
##  [56]  1.929345382  0.050555312  1.219232917 -0.354853733  0.077684190
##  [61]  2.877285303  1.239735146 -0.687013775 -0.342421546  1.773282070
##  [66] -0.250065513  0.798523311  2.013478380  1.001255193  0.175129237
##  [71] -0.452022319 -0.594258302  0.465024601  2.394414145  0.881737018
##  [76] -1.467400153 -1.418932250 -0.103529126 -0.187928234 -0.336319515
##  [81] -0.258889056 -1.457298924 -0.859938113  0.763338672  1.122724840
##  [86]  0.898801707 -0.127733300 -0.392959758 -1.290324765 -0.650422759
##  [91]  0.228616592  1.833562008  1.854495256  0.005173183  0.107758575
##  [96] -0.956832895  0.310899605  1.412018567  2.607575482  1.475082087
## [101] -0.267456706 -0.171365743 -0.469481036 -1.077237478 -0.246010014
## [106] -0.812769986 -0.279946925  0.439060955  0.125379014 -0.221987177
## [111] -0.747037061 -1.434302107  0.294390587  0.446999627  0.842321880
## [116] -0.828717543 -0.453117512  0.757679514  0.310306777 -0.204530357
## [121] -0.877602731  1.667208664  1.779582447  2.199459029  0.992163792
## [126] -0.591379478 -1.828992770 -1.392743891 -0.091748383  1.126841114
## [131]  0.759595309 -1.045573245  0.082740172 -1.315743771 -1.190902716
## [136] -0.499044453 -2.106305212 -0.054065501 -0.162842834 -0.645472447
## [141]  1.228129568  1.334248357  0.209905509  0.459546930  0.656153196
## [146]  1.862492351  1.107321627  0.644219325  0.600688287 -0.203461660
## [151] -0.090999361  1.687554377 -0.056220152 -0.316036238  1.423010660
## [156]  0.446444243 -1.170693351 -1.396475010 -0.825018832 -1.042413588
## [161] -0.684314429 -0.544739402 -0.390260651  0.315530699  0.828161177
## [166]  1.990522308  0.770409218 -0.355186739  1.310585761  2.439832256
## [171]  0.895408736 -0.311035300 -1.988564077  0.500144690 -0.131951235
## [176] -1.542554011  2.481884489  1.756904251  0.084252044 -2.748848828
## [181] -1.465900350  0.926136441  0.901884783  1.119256619  2.439893281
## [186]  2.160974614  0.075817242  0.449811671  0.153673815 -0.637278926
## [191] -3.124794049 -2.217526180  0.092991209  2.411939857  1.584710884
## [196]  0.870557511 -0.655798108 -0.320296897 -1.996910188 -0.553891950

Karakteristik MA(1)

Plot Time Series

ts.plot(ma)

Berdasarkan plot time series, terlihat bahwa data MA(1) yang dibangkitkan stasioner dalam rataan

Plot ACF

acf(ma,lag.max = 20)

Berdasarkan plot AFC tersebut, terlihat bahwa plot ACF cuts off di lag pertama

Plot PACF

pacf(ma)

Berdasarkan plot PACF tersebut, terlihat bahwa plot PACF cenderung tails off dan membentuk gelombang sinus

Plot EACF

TSA::eacf(ma)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x o o x o o o o o o o  o  o  o 
## 1 x x o x o o o o o o o  o  o  o 
## 2 x x o x o o o o o o o  o  o  o 
## 3 x x o o o o o o o o o  o  o  o 
## 4 x x x o o o o o o o o  o  o  o 
## 5 o x o o o x o o o o o  o  o  o 
## 6 x o o x o x o o o o o  o  o  o 
## 7 x o o x o x o x o o o  o  o  o

Berdasarkan pola segitiga nol pada plot EACF, terlihat bahwa segitiga nol berada pada ordo AR(0) dan ordo MA(1)

Scatterplot Antar Lag

Korelasi antara \(Y_t\) dengan \(Y_{t-1}\)

#Yt
yt_ma <- ma[-1]
yt_ma
##   [1]  0.256043451  0.213898641 -0.151621283 -0.622714669 -0.279267075
##   [6] -0.999160605 -0.595577804  1.047988696 -0.858689098 -1.241661197
##  [11]  0.017591772 -0.419209528 -0.529004245 -0.128554996  0.423120646
##  [16]  0.761528958  0.127421912  0.742144817  0.372369308  0.272972749
##  [21] -1.409981052 -2.073686740 -1.321951244 -1.020224036 -1.135393059
##  [26]  0.320838600  1.446380749 -0.577935289 -0.719969032 -0.811885615
##  [31] -0.934673927 -2.159823696 -1.400091843 -1.438497358 -1.505072235
##  [36] -1.013720553 -0.174058835 -0.088898627 -1.395544871 -0.080415890
##  [41] -0.089920425  0.060266536 -0.812779887 -0.999672168 -0.452664061
##  [46]  0.870489829 -2.048234663 -1.681863221 -1.190370626 -0.605621478
##  [51] -1.698285625 -0.746760969 -1.444552885 -2.072609533  0.856791972
##  [56] -1.026619849 -2.051428661 -1.931790142  0.655829949  1.882254165
##  [61]  0.548798671  0.625325748  1.765445711  0.363042653 -0.783986934
##  [66] -1.051861468 -1.213753785 -0.275052685  0.177225817 -0.369934927
##  [71] -1.716970520  0.216136731  1.023507180  1.037250689  0.145181150
##  [76]  0.076887545 -0.121182835  0.388311532 -0.288359705  0.646999731
##  [81]  0.518251047  0.577710587  0.625978228 -0.171357210 -1.103195376
##  [86] -0.547761071  0.453989475  0.291547947 -1.043306428 -0.088711797
##  [91] -0.418227634  0.596906647  1.106696117  0.601570692 -0.857065967
##  [96] -2.909584385  0.947719410  0.574477620 -0.820010335 -1.925257074
## [101] -1.165847530  0.474825447  1.280154500  0.855703912  0.015926082
## [106]  0.915916845  0.075836100 -0.256504032  1.288623559  1.144978836
## [111]  0.265882902  0.990993593  2.348956784  0.594360501  1.132879474
## [116]  1.275068196 -0.997240187 -1.530959091 -2.420053222  0.942534037
## [121] -1.302814375  0.404860956  1.413170018  0.212552416 -0.755003747
## [126]  0.867529491 -0.355817225 -1.036156579  0.701555171  0.957323985
## [131]  0.907978620  2.289770316  1.225496226  0.615595470  0.647794957
## [136]  1.987545420  2.578673460  0.363525287 -1.672687466 -0.170861251
## [141]  1.811471977 -0.198517600 -1.537194030  0.437519605 -0.542751573
## [146]  0.735778251 -0.911832002  0.485562019 -0.239322064  0.156138030
## [151]  0.908742781 -0.252238527 -0.411237466 -0.062806294 -0.247411591
## [156] -0.728427117 -0.986656305  0.219972926  0.952752893  1.329744109
## [161] -0.720801074 -2.523703619 -2.510776265 -1.220064459 -1.634456611
## [166] -0.631550895  0.008562093 -1.081188773 -1.042832897 -0.497567219
## [171]  0.054846809  0.969822041  1.667921389  1.214226638 -0.289320911
## [176] -0.578974067 -0.058846318 -0.522878021 -2.624951709 -1.410099715
## [181] -0.642603214 -1.235626728 -1.363776222 -1.057119216  0.096127288
## [186]  0.613498592 -0.338003506 -0.064433277 -0.493915096 -1.493716159
## [191]  0.084602646 -0.201027824  0.892771870  0.441444675 -1.145068332
## [196]  0.795252233  2.349590942  1.641430993  0.076160539
#Yt-1
yt_1_ma <- ma[-200]
yt_1_ma
##   [1] -1.066913213  0.256043451  0.213898641 -0.151621283 -0.622714669
##   [6] -0.279267075 -0.999160605 -0.595577804  1.047988696 -0.858689098
##  [11] -1.241661197  0.017591772 -0.419209528 -0.529004245 -0.128554996
##  [16]  0.423120646  0.761528958  0.127421912  0.742144817  0.372369308
##  [21]  0.272972749 -1.409981052 -2.073686740 -1.321951244 -1.020224036
##  [26] -1.135393059  0.320838600  1.446380749 -0.577935289 -0.719969032
##  [31] -0.811885615 -0.934673927 -2.159823696 -1.400091843 -1.438497358
##  [36] -1.505072235 -1.013720553 -0.174058835 -0.088898627 -1.395544871
##  [41] -0.080415890 -0.089920425  0.060266536 -0.812779887 -0.999672168
##  [46] -0.452664061  0.870489829 -2.048234663 -1.681863221 -1.190370626
##  [51] -0.605621478 -1.698285625 -0.746760969 -1.444552885 -2.072609533
##  [56]  0.856791972 -1.026619849 -2.051428661 -1.931790142  0.655829949
##  [61]  1.882254165  0.548798671  0.625325748  1.765445711  0.363042653
##  [66] -0.783986934 -1.051861468 -1.213753785 -0.275052685  0.177225817
##  [71] -0.369934927 -1.716970520  0.216136731  1.023507180  1.037250689
##  [76]  0.145181150  0.076887545 -0.121182835  0.388311532 -0.288359705
##  [81]  0.646999731  0.518251047  0.577710587  0.625978228 -0.171357210
##  [86] -1.103195376 -0.547761071  0.453989475  0.291547947 -1.043306428
##  [91] -0.088711797 -0.418227634  0.596906647  1.106696117  0.601570692
##  [96] -0.857065967 -2.909584385  0.947719410  0.574477620 -0.820010335
## [101] -1.925257074 -1.165847530  0.474825447  1.280154500  0.855703912
## [106]  0.015926082  0.915916845  0.075836100 -0.256504032  1.288623559
## [111]  1.144978836  0.265882902  0.990993593  2.348956784  0.594360501
## [116]  1.132879474  1.275068196 -0.997240187 -1.530959091 -2.420053222
## [121]  0.942534037 -1.302814375  0.404860956  1.413170018  0.212552416
## [126] -0.755003747  0.867529491 -0.355817225 -1.036156579  0.701555171
## [131]  0.957323985  0.907978620  2.289770316  1.225496226  0.615595470
## [136]  0.647794957  1.987545420  2.578673460  0.363525287 -1.672687466
## [141] -0.170861251  1.811471977 -0.198517600 -1.537194030  0.437519605
## [146] -0.542751573  0.735778251 -0.911832002  0.485562019 -0.239322064
## [151]  0.156138030  0.908742781 -0.252238527 -0.411237466 -0.062806294
## [156] -0.247411591 -0.728427117 -0.986656305  0.219972926  0.952752893
## [161]  1.329744109 -0.720801074 -2.523703619 -2.510776265 -1.220064459
## [166] -1.634456611 -0.631550895  0.008562093 -1.081188773 -1.042832897
## [171] -0.497567219  0.054846809  0.969822041  1.667921389  1.214226638
## [176] -0.289320911 -0.578974067 -0.058846318 -0.522878021 -2.624951709
## [181] -1.410099715 -0.642603214 -1.235626728 -1.363776222 -1.057119216
## [186]  0.096127288  0.613498592 -0.338003506 -0.064433277 -0.493915096
## [191] -1.493716159  0.084602646 -0.201027824  0.892771870  0.441444675
## [196] -1.145068332  0.795252233  2.349590942  1.641430993
plot(y=yt_ma,x=yt_1_ma)

Berdasarkan scatterplot tersebut, terlihat bahwa terdapat hubungan positif antara \(Y_t\) dengan \(Y_{t-1}\). Hal ini sesuai dengan teori yang ada

cor(yt_ma,yt_1_ma)
## [1] 0.4373014

Korelasi antara \(Y_t\) dengan \(Y_{t-1}\) dari hasil simulasi mendekati perhitungan teoritis yaitu

\[ \rho_1=\frac{-\theta}{1+(-\theta)^2}=\frac{-(-0.5)}{1+(-0.5)^2}=0.4 \]

Korelasi antara \(Y_t\) dengan \(Y_{t-2}\)

#Yt
yt_ma2 <- ma[-c(1,2)]
yt_ma2
##   [1]  0.213898641 -0.151621283 -0.622714669 -0.279267075 -0.999160605
##   [6] -0.595577804  1.047988696 -0.858689098 -1.241661197  0.017591772
##  [11] -0.419209528 -0.529004245 -0.128554996  0.423120646  0.761528958
##  [16]  0.127421912  0.742144817  0.372369308  0.272972749 -1.409981052
##  [21] -2.073686740 -1.321951244 -1.020224036 -1.135393059  0.320838600
##  [26]  1.446380749 -0.577935289 -0.719969032 -0.811885615 -0.934673927
##  [31] -2.159823696 -1.400091843 -1.438497358 -1.505072235 -1.013720553
##  [36] -0.174058835 -0.088898627 -1.395544871 -0.080415890 -0.089920425
##  [41]  0.060266536 -0.812779887 -0.999672168 -0.452664061  0.870489829
##  [46] -2.048234663 -1.681863221 -1.190370626 -0.605621478 -1.698285625
##  [51] -0.746760969 -1.444552885 -2.072609533  0.856791972 -1.026619849
##  [56] -2.051428661 -1.931790142  0.655829949  1.882254165  0.548798671
##  [61]  0.625325748  1.765445711  0.363042653 -0.783986934 -1.051861468
##  [66] -1.213753785 -0.275052685  0.177225817 -0.369934927 -1.716970520
##  [71]  0.216136731  1.023507180  1.037250689  0.145181150  0.076887545
##  [76] -0.121182835  0.388311532 -0.288359705  0.646999731  0.518251047
##  [81]  0.577710587  0.625978228 -0.171357210 -1.103195376 -0.547761071
##  [86]  0.453989475  0.291547947 -1.043306428 -0.088711797 -0.418227634
##  [91]  0.596906647  1.106696117  0.601570692 -0.857065967 -2.909584385
##  [96]  0.947719410  0.574477620 -0.820010335 -1.925257074 -1.165847530
## [101]  0.474825447  1.280154500  0.855703912  0.015926082  0.915916845
## [106]  0.075836100 -0.256504032  1.288623559  1.144978836  0.265882902
## [111]  0.990993593  2.348956784  0.594360501  1.132879474  1.275068196
## [116] -0.997240187 -1.530959091 -2.420053222  0.942534037 -1.302814375
## [121]  0.404860956  1.413170018  0.212552416 -0.755003747  0.867529491
## [126] -0.355817225 -1.036156579  0.701555171  0.957323985  0.907978620
## [131]  2.289770316  1.225496226  0.615595470  0.647794957  1.987545420
## [136]  2.578673460  0.363525287 -1.672687466 -0.170861251  1.811471977
## [141] -0.198517600 -1.537194030  0.437519605 -0.542751573  0.735778251
## [146] -0.911832002  0.485562019 -0.239322064  0.156138030  0.908742781
## [151] -0.252238527 -0.411237466 -0.062806294 -0.247411591 -0.728427117
## [156] -0.986656305  0.219972926  0.952752893  1.329744109 -0.720801074
## [161] -2.523703619 -2.510776265 -1.220064459 -1.634456611 -0.631550895
## [166]  0.008562093 -1.081188773 -1.042832897 -0.497567219  0.054846809
## [171]  0.969822041  1.667921389  1.214226638 -0.289320911 -0.578974067
## [176] -0.058846318 -0.522878021 -2.624951709 -1.410099715 -0.642603214
## [181] -1.235626728 -1.363776222 -1.057119216  0.096127288  0.613498592
## [186] -0.338003506 -0.064433277 -0.493915096 -1.493716159  0.084602646
## [191] -0.201027824  0.892771870  0.441444675 -1.145068332  0.795252233
## [196]  2.349590942  1.641430993  0.076160539
#Yt-2
yt_2_ma <- ma[-c(199,200)]
yt_2_ma
##   [1] -1.066913213  0.256043451  0.213898641 -0.151621283 -0.622714669
##   [6] -0.279267075 -0.999160605 -0.595577804  1.047988696 -0.858689098
##  [11] -1.241661197  0.017591772 -0.419209528 -0.529004245 -0.128554996
##  [16]  0.423120646  0.761528958  0.127421912  0.742144817  0.372369308
##  [21]  0.272972749 -1.409981052 -2.073686740 -1.321951244 -1.020224036
##  [26] -1.135393059  0.320838600  1.446380749 -0.577935289 -0.719969032
##  [31] -0.811885615 -0.934673927 -2.159823696 -1.400091843 -1.438497358
##  [36] -1.505072235 -1.013720553 -0.174058835 -0.088898627 -1.395544871
##  [41] -0.080415890 -0.089920425  0.060266536 -0.812779887 -0.999672168
##  [46] -0.452664061  0.870489829 -2.048234663 -1.681863221 -1.190370626
##  [51] -0.605621478 -1.698285625 -0.746760969 -1.444552885 -2.072609533
##  [56]  0.856791972 -1.026619849 -2.051428661 -1.931790142  0.655829949
##  [61]  1.882254165  0.548798671  0.625325748  1.765445711  0.363042653
##  [66] -0.783986934 -1.051861468 -1.213753785 -0.275052685  0.177225817
##  [71] -0.369934927 -1.716970520  0.216136731  1.023507180  1.037250689
##  [76]  0.145181150  0.076887545 -0.121182835  0.388311532 -0.288359705
##  [81]  0.646999731  0.518251047  0.577710587  0.625978228 -0.171357210
##  [86] -1.103195376 -0.547761071  0.453989475  0.291547947 -1.043306428
##  [91] -0.088711797 -0.418227634  0.596906647  1.106696117  0.601570692
##  [96] -0.857065967 -2.909584385  0.947719410  0.574477620 -0.820010335
## [101] -1.925257074 -1.165847530  0.474825447  1.280154500  0.855703912
## [106]  0.015926082  0.915916845  0.075836100 -0.256504032  1.288623559
## [111]  1.144978836  0.265882902  0.990993593  2.348956784  0.594360501
## [116]  1.132879474  1.275068196 -0.997240187 -1.530959091 -2.420053222
## [121]  0.942534037 -1.302814375  0.404860956  1.413170018  0.212552416
## [126] -0.755003747  0.867529491 -0.355817225 -1.036156579  0.701555171
## [131]  0.957323985  0.907978620  2.289770316  1.225496226  0.615595470
## [136]  0.647794957  1.987545420  2.578673460  0.363525287 -1.672687466
## [141] -0.170861251  1.811471977 -0.198517600 -1.537194030  0.437519605
## [146] -0.542751573  0.735778251 -0.911832002  0.485562019 -0.239322064
## [151]  0.156138030  0.908742781 -0.252238527 -0.411237466 -0.062806294
## [156] -0.247411591 -0.728427117 -0.986656305  0.219972926  0.952752893
## [161]  1.329744109 -0.720801074 -2.523703619 -2.510776265 -1.220064459
## [166] -1.634456611 -0.631550895  0.008562093 -1.081188773 -1.042832897
## [171] -0.497567219  0.054846809  0.969822041  1.667921389  1.214226638
## [176] -0.289320911 -0.578974067 -0.058846318 -0.522878021 -2.624951709
## [181] -1.410099715 -0.642603214 -1.235626728 -1.363776222 -1.057119216
## [186]  0.096127288  0.613498592 -0.338003506 -0.064433277 -0.493915096
## [191] -1.493716159  0.084602646 -0.201027824  0.892771870  0.441444675
## [196] -1.145068332  0.795252233  2.349590942
plot(y=yt_ma2,x=yt_2_ma)

Berdasarkan scatterplot tersebut, terlihat bahwa cenderung tidak terdapat hubungan antara \(Y_t\) dengan \(Y_{t-2}\).

cor(yt_ma2,yt_2_ma)
## [1] 0.08287241

Korelasi antara \(Y_t\) dengan \(Y_{t-2}\) hasil simulasi mendekati teori yang ada yaitu 0.

Proses AR

Proses AR dapat dituliskan sebagai berikut:

\[ y_{t} = c + e_t + \phi_{1}Y_{t-1} + \phi_{2}Y_{t-2} + \dots + \phi_{q}Y_{t-q} = c+{e_t+\sum_{i=1}^p \phi_iY_{t-i}} \] Terlihat bahwa \(Y_t\) berperan penting dalam pembangkitan proses AR.

Pembangkitan Proses AR

Akan dicoba membangkitkan proses AR paling sederhana, yaitu AR(1) dengan \(\phi = 0.7\) sebanyak 200 observasi dan \(c=0\).

set.seed(1234)

Nilai-nilai selanjutnya dapat dicari melalui loop. Bentuk loop dapat dilihat dari rumus AR(1) yang hendak dibangkitkan:

\[ Y_t = e_t+0.7Y_{t-1} \]

n<-length(wn)
n
## [1] 200
ar <- c(1:n) 
for (i in 2:n) {ar[i]<-wn[i]+0.7*ar[i-1]}
ar
##   [1]  1.000000000  1.489500057  0.861798653  0.542063468 -0.212672447
##   [6] -0.132079350 -1.100011831 -0.861807943  0.490622967 -1.062197284
##  [11] -1.282382616 -0.610653801 -0.990174204 -0.940767916 -0.663269551
##  [16] -0.038802035  0.521624209  0.218166041  0.968346499  0.642396722
##  [21]  0.740373368 -1.037067525 -2.021969567 -2.089318791 -2.145777142
##  [26] -2.295810065 -0.889345413  0.464978144 -0.796210555 -0.716468793
##  [31] -1.233853067 -1.432208618 -2.878113993 -2.476987658 -2.941234787
##  [36] -2.960264873 -2.635205703 -1.737192681 -1.358659159 -2.275294141
##  [41] -1.011005424 -1.088474459 -0.511280254 -1.296001998 -1.437820657
##  [46] -1.193828892  0.128486821 -2.440377411 -2.124968315 -2.469496383
##  [51] -1.843259665 -2.931261292 -1.978154110 -2.866125160 -3.338188503
##  [56] -0.813989534 -2.357783732 -2.807881745 -3.318590797 -0.990646821
##  [61]  0.522618022  0.306595888  0.869561234  2.046666518  1.076722388
##  [66]  0.147690825 -0.645470468 -1.291156089 -0.759198567 -0.426518527
##  [71] -0.720958130 -2.010443631 -0.438287341  0.232194441  0.930289008
##  [76]  0.412507006  0.484990099  0.120192637  0.582096594 -0.129872963
##  [81]  0.824758947  0.637747299  0.993925678  1.047974918  0.386111761
##  [86] -0.659181803 -0.544458315  0.114384181  0.123864373 -0.978499090
##  [91] -0.241059084 -0.808914133  0.350753141  0.893726799  0.903079651
##  [96] -0.363645657 -2.666235638  0.287196303 -0.301265593 -0.779744748
## [101] -2.186648981 -1.876087988 -0.665719294  0.490379845  0.720778128
## [106]  0.331714654  1.234532121  0.438842653  0.263350741  1.494888636
## [111]  1.536129323  1.096319790  1.747902814  3.082249273  1.822576340
## [116]  2.576181988  2.428206312  0.390064771 -0.603073927 -2.404145337
## [121]  0.250629095 -2.094139424  0.073753255  0.694971871  0.377360430
## [126] -0.436291506  0.912347340 -0.326049784 -0.782044967  0.431028754
## [131]  0.769813998  1.212801484  2.801765512  2.210329848  2.038279369
## [136]  1.829066277  3.066756454  3.832197948  2.203329636  0.109247743
## [141]  0.622153670  1.974139422  0.414064069 -0.763432419  0.429755546
## [146] -0.724001811  0.741392330 -1.016954170  0.541658500 -0.486924324
## [151]  0.248333641  0.787985996 -0.007724554 -0.136987278 -0.092907343
## [156] -0.313938607 -0.823732409 -1.261281299 -0.320589677  0.447186503
## [161]  1.306975022 -0.302890793 -2.126840520 -3.042156147 -2.572889870
## [166] -3.213789237 -2.174820197 -1.551228179 -2.152621478 -2.016287055
## [171] -1.654242147 -0.981702090  0.194496872  1.363225032  1.554945549
## [176]  0.498796960  0.065016267  0.128735872 -0.474375153 -2.674769184
## [181] -2.111084855 -2.000989399 -2.374704307 -2.539063373 -2.396078398
## [186] -1.271760572 -0.479480962 -0.879015898 -0.408054793 -0.883181619
## [191] -1.813171660 -0.587145253 -0.953066956  0.496657640  0.207202769
## [196] -0.929797604  0.681813681  2.160524516  2.312170685  1.294778257

Selain menggunakan cara di atas, pembangkitan proses AR dapat dilakukan dengan fungsi arima.sim() sebagai berikut.

ar1 <- arima.sim(list(order=c(1,0,0), ar=0.7), n=200)
ar1
## Time Series:
## Start = 1 
## End = 200 
## Frequency = 1 
##   [1] -1.794742603  1.159515356  0.945748970  0.171338382 -0.320611005
##   [6]  0.235161738 -0.529107031 -1.818579832 -0.698250161 -1.512430836
##  [11] -1.073839886 -1.687636521 -0.079048019 -0.530926692 -1.081088722
##  [16] -1.258020166 -2.509707585 -2.924414572 -4.227129849 -4.299984087
##  [21] -3.304282719 -2.778895444 -0.495730545 -1.415654105 -1.846322508
##  [26] -1.573048757 -2.095474206 -2.435346262 -2.812060576 -3.220428289
##  [31] -2.778127921 -2.441539502 -3.515108908 -3.042652161 -3.238746137
##  [36] -3.282084305 -2.459768537 -1.158782157  0.836669963 -0.187684450
##  [41]  1.474530514 -0.125637188  0.568642433  2.947040774  2.028168152
##  [46]  0.750084127  0.517454133  2.139302341  0.358903902  1.619059911
##  [51]  2.462906728  2.060507507  1.449248093  0.559004927  0.024779516
##  [56]  0.665632229  2.536213422  1.621950983 -0.255335259 -0.902316458
##  [61] -0.373359759 -0.578410946 -0.582677620 -0.577868411 -1.776809773
##  [66] -1.417554012 -0.142055551  0.598169826  0.968716229  0.275369385
##  [71]  0.001164799 -1.193712520 -0.888757583 -0.366934307  1.449109992
##  [76]  2.015890247  0.915539730  0.996428108 -0.437108368  0.572227769
##  [81]  1.373476192  3.082550440  2.572308842  1.325897716  0.994121895
##  [86]  0.193407544 -0.690613306 -0.316440035 -1.117772651 -0.614255468
##  [91] -0.075010566 -0.104612513 -0.269163378 -0.837484116 -1.696006113
##  [96] -0.337930076 -0.214188527  0.681208648 -0.767441798 -0.368182845
## [101]  0.415438316  0.264530445 -0.006220857 -0.786261247  1.507779115
## [106]  1.805946834  3.088371086  2.241919401  0.937934282 -0.856734123
## [111] -1.235813717 -0.638768069  0.566552699  0.649337024 -0.717412396
## [116]  0.166525651 -1.533532979 -1.439325333 -1.323646062 -2.874798291
## [121] -1.092301281 -1.387482492 -1.305274394  0.481455817  0.973693483
## [126]  0.573153741  0.914970397  1.039751085  2.390682207  1.949370949
## [131]  1.870832287  1.657134576  0.782756556  0.645549052  2.090628982
## [136]  0.587847813  0.533253468  1.735408088  0.980164575 -0.367267606
## [141] -1.126870930 -1.178936680 -1.672605749 -1.431463417 -1.416444098
## [146] -1.174561666 -0.415137069  0.334037180  1.912031770  1.269728585
## [151]  0.567970097  1.868584785  3.012338747  2.151881161  1.173659493
## [156] -1.000673772  0.710790758 -0.340028903 -1.361783027  2.090517767
## [161]  1.698383745  1.155610012 -1.923292515 -1.446095349 -0.036235009
## [166]  0.388504409  1.184275248  2.812724874  3.138015926  1.687874133
## [171]  1.885692071  1.121568176  0.247026934 -2.682839801 -2.667634713
## [176] -1.379529664  1.202361775  1.342347857  1.559853703  0.125994382
## [181]  0.250850776 -1.902641999 -0.846622579  0.104132973  0.258406997
## [186]  0.881618413  0.928813918  1.410632105  2.829906099  3.093297111
## [191]  2.197971935  0.424131390  0.714949795  0.100229619  1.563653836
## [196] -0.512523255 -0.774518067 -0.120154273 -0.235844528 -0.771242285

Karakteristik AR(1)

Plot Time Series

ts.plot(ar)

Berdasarkan plot time series tersebut terlihat bahwa data cenderung stasioner pada rataan

Plot ACF

acf(ar)

Berdasarkan plot ACF tersebut terlihat bahwa plot ACF cenderung tails off dan cenderung membentuk pola grafik sinus

Plot PACF

pacf(ar)

Berdasarkan plot PACF tersebut, terlihat bahwa plot PACF cuts off pada lag pertama, sejalan dengan teori yang ada

Plot EACF

TSA::eacf(ar)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x x x x x x o o o o o  o  o  o 
## 1 o o o x o o o o o o o  o  o  o 
## 2 o o o x o o o o o o o  o  o  o 
## 3 o o o o o o o o o o o  o  o  o 
## 4 x o x o o o o o o o o  o  o  o 
## 5 o x x x o o o x o o o  o  o  o 
## 6 x x o x x o o o o o o  o  o  o 
## 7 x x o x o o o o o o o  o  o  o

Berdasarkan pola segitiga nol pada plot EACF, terlihat bahwa segitiga nol berada pada ordo AR(1) dan ordo MA(0)

Scatterplot Antar Lag

Korelasi antara \(Y_t\) dengan \(Y_{t-1}\)

#Yt
yt_ar <- ar[-1]
yt_ar
##   [1]  1.489500057  0.861798653  0.542063468 -0.212672447 -0.132079350
##   [6] -1.100011831 -0.861807943  0.490622967 -1.062197284 -1.282382616
##  [11] -0.610653801 -0.990174204 -0.940767916 -0.663269551 -0.038802035
##  [16]  0.521624209  0.218166041  0.968346499  0.642396722  0.740373368
##  [21] -1.037067525 -2.021969567 -2.089318791 -2.145777142 -2.295810065
##  [26] -0.889345413  0.464978144 -0.796210555 -0.716468793 -1.233853067
##  [31] -1.432208618 -2.878113993 -2.476987658 -2.941234787 -2.960264873
##  [36] -2.635205703 -1.737192681 -1.358659159 -2.275294141 -1.011005424
##  [41] -1.088474459 -0.511280254 -1.296001998 -1.437820657 -1.193828892
##  [46]  0.128486821 -2.440377411 -2.124968315 -2.469496383 -1.843259665
##  [51] -2.931261292 -1.978154110 -2.866125160 -3.338188503 -0.813989534
##  [56] -2.357783732 -2.807881745 -3.318590797 -0.990646821  0.522618022
##  [61]  0.306595888  0.869561234  2.046666518  1.076722388  0.147690825
##  [66] -0.645470468 -1.291156089 -0.759198567 -0.426518527 -0.720958130
##  [71] -2.010443631 -0.438287341  0.232194441  0.930289008  0.412507006
##  [76]  0.484990099  0.120192637  0.582096594 -0.129872963  0.824758947
##  [81]  0.637747299  0.993925678  1.047974918  0.386111761 -0.659181803
##  [86] -0.544458315  0.114384181  0.123864373 -0.978499090 -0.241059084
##  [91] -0.808914133  0.350753141  0.893726799  0.903079651 -0.363645657
##  [96] -2.666235638  0.287196303 -0.301265593 -0.779744748 -2.186648981
## [101] -1.876087988 -0.665719294  0.490379845  0.720778128  0.331714654
## [106]  1.234532121  0.438842653  0.263350741  1.494888636  1.536129323
## [111]  1.096319790  1.747902814  3.082249273  1.822576340  2.576181988
## [116]  2.428206312  0.390064771 -0.603073927 -2.404145337  0.250629095
## [121] -2.094139424  0.073753255  0.694971871  0.377360430 -0.436291506
## [126]  0.912347340 -0.326049784 -0.782044967  0.431028754  0.769813998
## [131]  1.212801484  2.801765512  2.210329848  2.038279369  1.829066277
## [136]  3.066756454  3.832197948  2.203329636  0.109247743  0.622153670
## [141]  1.974139422  0.414064069 -0.763432419  0.429755546 -0.724001811
## [146]  0.741392330 -1.016954170  0.541658500 -0.486924324  0.248333641
## [151]  0.787985996 -0.007724554 -0.136987278 -0.092907343 -0.313938607
## [156] -0.823732409 -1.261281299 -0.320589677  0.447186503  1.306975022
## [161] -0.302890793 -2.126840520 -3.042156147 -2.572889870 -3.213789237
## [166] -2.174820197 -1.551228179 -2.152621478 -2.016287055 -1.654242147
## [171] -0.981702090  0.194496872  1.363225032  1.554945549  0.498796960
## [176]  0.065016267  0.128735872 -0.474375153 -2.674769184 -2.111084855
## [181] -2.000989399 -2.374704307 -2.539063373 -2.396078398 -1.271760572
## [186] -0.479480962 -0.879015898 -0.408054793 -0.883181619 -1.813171660
## [191] -0.587145253 -0.953066956  0.496657640  0.207202769 -0.929797604
## [196]  0.681813681  2.160524516  2.312170685  1.294778257
#Yt-1
yt_1_ar <- ar[-200]
yt_1_ar
##   [1]  1.000000000  1.489500057  0.861798653  0.542063468 -0.212672447
##   [6] -0.132079350 -1.100011831 -0.861807943  0.490622967 -1.062197284
##  [11] -1.282382616 -0.610653801 -0.990174204 -0.940767916 -0.663269551
##  [16] -0.038802035  0.521624209  0.218166041  0.968346499  0.642396722
##  [21]  0.740373368 -1.037067525 -2.021969567 -2.089318791 -2.145777142
##  [26] -2.295810065 -0.889345413  0.464978144 -0.796210555 -0.716468793
##  [31] -1.233853067 -1.432208618 -2.878113993 -2.476987658 -2.941234787
##  [36] -2.960264873 -2.635205703 -1.737192681 -1.358659159 -2.275294141
##  [41] -1.011005424 -1.088474459 -0.511280254 -1.296001998 -1.437820657
##  [46] -1.193828892  0.128486821 -2.440377411 -2.124968315 -2.469496383
##  [51] -1.843259665 -2.931261292 -1.978154110 -2.866125160 -3.338188503
##  [56] -0.813989534 -2.357783732 -2.807881745 -3.318590797 -0.990646821
##  [61]  0.522618022  0.306595888  0.869561234  2.046666518  1.076722388
##  [66]  0.147690825 -0.645470468 -1.291156089 -0.759198567 -0.426518527
##  [71] -0.720958130 -2.010443631 -0.438287341  0.232194441  0.930289008
##  [76]  0.412507006  0.484990099  0.120192637  0.582096594 -0.129872963
##  [81]  0.824758947  0.637747299  0.993925678  1.047974918  0.386111761
##  [86] -0.659181803 -0.544458315  0.114384181  0.123864373 -0.978499090
##  [91] -0.241059084 -0.808914133  0.350753141  0.893726799  0.903079651
##  [96] -0.363645657 -2.666235638  0.287196303 -0.301265593 -0.779744748
## [101] -2.186648981 -1.876087988 -0.665719294  0.490379845  0.720778128
## [106]  0.331714654  1.234532121  0.438842653  0.263350741  1.494888636
## [111]  1.536129323  1.096319790  1.747902814  3.082249273  1.822576340
## [116]  2.576181988  2.428206312  0.390064771 -0.603073927 -2.404145337
## [121]  0.250629095 -2.094139424  0.073753255  0.694971871  0.377360430
## [126] -0.436291506  0.912347340 -0.326049784 -0.782044967  0.431028754
## [131]  0.769813998  1.212801484  2.801765512  2.210329848  2.038279369
## [136]  1.829066277  3.066756454  3.832197948  2.203329636  0.109247743
## [141]  0.622153670  1.974139422  0.414064069 -0.763432419  0.429755546
## [146] -0.724001811  0.741392330 -1.016954170  0.541658500 -0.486924324
## [151]  0.248333641  0.787985996 -0.007724554 -0.136987278 -0.092907343
## [156] -0.313938607 -0.823732409 -1.261281299 -0.320589677  0.447186503
## [161]  1.306975022 -0.302890793 -2.126840520 -3.042156147 -2.572889870
## [166] -3.213789237 -2.174820197 -1.551228179 -2.152621478 -2.016287055
## [171] -1.654242147 -0.981702090  0.194496872  1.363225032  1.554945549
## [176]  0.498796960  0.065016267  0.128735872 -0.474375153 -2.674769184
## [181] -2.111084855 -2.000989399 -2.374704307 -2.539063373 -2.396078398
## [186] -1.271760572 -0.479480962 -0.879015898 -0.408054793 -0.883181619
## [191] -1.813171660 -0.587145253 -0.953066956  0.496657640  0.207202769
## [196] -0.929797604  0.681813681  2.160524516  2.312170685
plot(y=yt_ar,x=yt_1_ar)

Berdasarkan scatterplot tersebut, terlihat bahwa terdapat hubungan positif antara \(Y_t\) dengan \(Y_{t-1}\). Hal ini sesuai dengan teori yang ada

cor(yt_ar,yt_1_ar)
## [1] 0.7549264

Korelasi antara \(Y_t\) dengan \(Y_{t-1}\) dari hasil simulasi mendekati perhitungan teoritis yaitu \(\rho_1=\phi^1=0.7\)

Korelasi antara \(Y_t\) dengan \(Y_{t-2}\)

#Yt
yt_ar2 <- ar[-c(1,2)]
yt_ar2
##   [1]  0.861798653  0.542063468 -0.212672447 -0.132079350 -1.100011831
##   [6] -0.861807943  0.490622967 -1.062197284 -1.282382616 -0.610653801
##  [11] -0.990174204 -0.940767916 -0.663269551 -0.038802035  0.521624209
##  [16]  0.218166041  0.968346499  0.642396722  0.740373368 -1.037067525
##  [21] -2.021969567 -2.089318791 -2.145777142 -2.295810065 -0.889345413
##  [26]  0.464978144 -0.796210555 -0.716468793 -1.233853067 -1.432208618
##  [31] -2.878113993 -2.476987658 -2.941234787 -2.960264873 -2.635205703
##  [36] -1.737192681 -1.358659159 -2.275294141 -1.011005424 -1.088474459
##  [41] -0.511280254 -1.296001998 -1.437820657 -1.193828892  0.128486821
##  [46] -2.440377411 -2.124968315 -2.469496383 -1.843259665 -2.931261292
##  [51] -1.978154110 -2.866125160 -3.338188503 -0.813989534 -2.357783732
##  [56] -2.807881745 -3.318590797 -0.990646821  0.522618022  0.306595888
##  [61]  0.869561234  2.046666518  1.076722388  0.147690825 -0.645470468
##  [66] -1.291156089 -0.759198567 -0.426518527 -0.720958130 -2.010443631
##  [71] -0.438287341  0.232194441  0.930289008  0.412507006  0.484990099
##  [76]  0.120192637  0.582096594 -0.129872963  0.824758947  0.637747299
##  [81]  0.993925678  1.047974918  0.386111761 -0.659181803 -0.544458315
##  [86]  0.114384181  0.123864373 -0.978499090 -0.241059084 -0.808914133
##  [91]  0.350753141  0.893726799  0.903079651 -0.363645657 -2.666235638
##  [96]  0.287196303 -0.301265593 -0.779744748 -2.186648981 -1.876087988
## [101] -0.665719294  0.490379845  0.720778128  0.331714654  1.234532121
## [106]  0.438842653  0.263350741  1.494888636  1.536129323  1.096319790
## [111]  1.747902814  3.082249273  1.822576340  2.576181988  2.428206312
## [116]  0.390064771 -0.603073927 -2.404145337  0.250629095 -2.094139424
## [121]  0.073753255  0.694971871  0.377360430 -0.436291506  0.912347340
## [126] -0.326049784 -0.782044967  0.431028754  0.769813998  1.212801484
## [131]  2.801765512  2.210329848  2.038279369  1.829066277  3.066756454
## [136]  3.832197948  2.203329636  0.109247743  0.622153670  1.974139422
## [141]  0.414064069 -0.763432419  0.429755546 -0.724001811  0.741392330
## [146] -1.016954170  0.541658500 -0.486924324  0.248333641  0.787985996
## [151] -0.007724554 -0.136987278 -0.092907343 -0.313938607 -0.823732409
## [156] -1.261281299 -0.320589677  0.447186503  1.306975022 -0.302890793
## [161] -2.126840520 -3.042156147 -2.572889870 -3.213789237 -2.174820197
## [166] -1.551228179 -2.152621478 -2.016287055 -1.654242147 -0.981702090
## [171]  0.194496872  1.363225032  1.554945549  0.498796960  0.065016267
## [176]  0.128735872 -0.474375153 -2.674769184 -2.111084855 -2.000989399
## [181] -2.374704307 -2.539063373 -2.396078398 -1.271760572 -0.479480962
## [186] -0.879015898 -0.408054793 -0.883181619 -1.813171660 -0.587145253
## [191] -0.953066956  0.496657640  0.207202769 -0.929797604  0.681813681
## [196]  2.160524516  2.312170685  1.294778257
#Yt-2
yt_2_ar <- ar[-c(199,200)]
yt_2_ar
##   [1]  1.000000000  1.489500057  0.861798653  0.542063468 -0.212672447
##   [6] -0.132079350 -1.100011831 -0.861807943  0.490622967 -1.062197284
##  [11] -1.282382616 -0.610653801 -0.990174204 -0.940767916 -0.663269551
##  [16] -0.038802035  0.521624209  0.218166041  0.968346499  0.642396722
##  [21]  0.740373368 -1.037067525 -2.021969567 -2.089318791 -2.145777142
##  [26] -2.295810065 -0.889345413  0.464978144 -0.796210555 -0.716468793
##  [31] -1.233853067 -1.432208618 -2.878113993 -2.476987658 -2.941234787
##  [36] -2.960264873 -2.635205703 -1.737192681 -1.358659159 -2.275294141
##  [41] -1.011005424 -1.088474459 -0.511280254 -1.296001998 -1.437820657
##  [46] -1.193828892  0.128486821 -2.440377411 -2.124968315 -2.469496383
##  [51] -1.843259665 -2.931261292 -1.978154110 -2.866125160 -3.338188503
##  [56] -0.813989534 -2.357783732 -2.807881745 -3.318590797 -0.990646821
##  [61]  0.522618022  0.306595888  0.869561234  2.046666518  1.076722388
##  [66]  0.147690825 -0.645470468 -1.291156089 -0.759198567 -0.426518527
##  [71] -0.720958130 -2.010443631 -0.438287341  0.232194441  0.930289008
##  [76]  0.412507006  0.484990099  0.120192637  0.582096594 -0.129872963
##  [81]  0.824758947  0.637747299  0.993925678  1.047974918  0.386111761
##  [86] -0.659181803 -0.544458315  0.114384181  0.123864373 -0.978499090
##  [91] -0.241059084 -0.808914133  0.350753141  0.893726799  0.903079651
##  [96] -0.363645657 -2.666235638  0.287196303 -0.301265593 -0.779744748
## [101] -2.186648981 -1.876087988 -0.665719294  0.490379845  0.720778128
## [106]  0.331714654  1.234532121  0.438842653  0.263350741  1.494888636
## [111]  1.536129323  1.096319790  1.747902814  3.082249273  1.822576340
## [116]  2.576181988  2.428206312  0.390064771 -0.603073927 -2.404145337
## [121]  0.250629095 -2.094139424  0.073753255  0.694971871  0.377360430
## [126] -0.436291506  0.912347340 -0.326049784 -0.782044967  0.431028754
## [131]  0.769813998  1.212801484  2.801765512  2.210329848  2.038279369
## [136]  1.829066277  3.066756454  3.832197948  2.203329636  0.109247743
## [141]  0.622153670  1.974139422  0.414064069 -0.763432419  0.429755546
## [146] -0.724001811  0.741392330 -1.016954170  0.541658500 -0.486924324
## [151]  0.248333641  0.787985996 -0.007724554 -0.136987278 -0.092907343
## [156] -0.313938607 -0.823732409 -1.261281299 -0.320589677  0.447186503
## [161]  1.306975022 -0.302890793 -2.126840520 -3.042156147 -2.572889870
## [166] -3.213789237 -2.174820197 -1.551228179 -2.152621478 -2.016287055
## [171] -1.654242147 -0.981702090  0.194496872  1.363225032  1.554945549
## [176]  0.498796960  0.065016267  0.128735872 -0.474375153 -2.674769184
## [181] -2.111084855 -2.000989399 -2.374704307 -2.539063373 -2.396078398
## [186] -1.271760572 -0.479480962 -0.879015898 -0.408054793 -0.883181619
## [191] -1.813171660 -0.587145253 -0.953066956  0.496657640  0.207202769
## [196] -0.929797604  0.681813681  2.160524516
plot(y=yt_ar2,x=yt_2_ar)

Berdasarkan scatterplot tersebut, terlihat bahwa terdapat hubungan positif antara \(Y_t\) dengan \(Y_{t-2}\). Hal ini sesuai dengan teori yang ada

cor(yt_ar2,yt_2_ar)
## [1] 0.5938204

Korelasi antara \(Y_t\) dengan \(Y_{t-2}\) dari hasil simulasi mendekati perhitungan teoritis yaitu \(\rho_2=\phi^2=0.49\).

Fungsi pembangkitan ARMA

Setelah mengetahui cara membangkitkan data berpola AR, MA, dan ARMA sederhana, bagaimana cara melakukan pembangkitan data berpola tersebut yang lebih kompleks? Apakah dapat dibuat suatu fungsi yang fleksibel yang memungkinan pembangkitan dengan berapapun jumlah koefisien?

Pertama, lihat kembali bentuk umum data berpola ARMA.

\[ y_{t} = c + \sum_{i=1}^p \phi_{i}y_{t-i} + \sum_{j=1}^q e_{t-j}+ e_{t} \]

Komponen \(c\) dan \(e_{t}\) cukup mudah untuk dibuat dan dicari. Bagaimana untuk komponen AR dan MA? Bayangkan ada koefisien dan data sebagai berikut:

\[ \begin{aligned} \begin{bmatrix} \phi_1 \ \phi_2 \ \phi_3 \end{bmatrix}&= \begin{bmatrix} 0.3 \ 0.5 \ 0.2 \end{bmatrix} \\ \begin{bmatrix} y_{t-1} \ y_{t-2} \ y_{t-3} \end{bmatrix}&= \begin{bmatrix} 1 \ 2 \ 3 \end{bmatrix} \end{aligned} \]

Maka dari itu,

\[ \begin{aligned} \begin{bmatrix} \phi_1 \ \phi_2 \ \phi_3 \end{bmatrix} \begin{bmatrix} y_{t-1} \\ y_{t-2} \\ y_{t-3} \end{bmatrix} &= \phi_1 \ y_{t-1}+\phi_2 \ y_{t-2}+\phi_3 \ y_{t-3} \\ \begin{bmatrix} 0.3 \ 0.5 \ 0.2 \end{bmatrix} \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix} & = 0.3 \cdot1+0.5 \cdot 2+0.2 \cdot 3\\ &=0.3+1+0.6 = 1.9 \end{aligned} \]

Jika koefisien dan white noise/nilai deret waktu sebelumnya dapat diekstrak dalam bentuk vektor, dapat dilakukan perkalian matriks untuk mencari nilai bagian AR dan MA:

set.seed(30)
coefs <- c(0.3, 0.5, 0.2)
e <- c(1, 2, 3)

coefs %*% e
##      [,1]
## [1,]  1.9

Atau, dapat dilakukan perkalian elementwise yang dijumlahkan:

coefs * e
## [1] 0.3 1.0 0.6
sum(coefs * e)
## [1] 1.9

Dari prinsip ini, dapat dibuat fungsi umum untuk membangkitkan data ARMA. Input dari fungsi adalah jumlah data yang hendak dibangkitkan, koefisien MA, dan koefisien AR

arma.sim <- function(n, macoef, arcoef){
  manum <- length(macoef)
  arnum <- length(arcoef)
  stopifnot(manum < n & arnum < n)
  
  wn <- rnorm(n, sd = 0.5)
  init <- max(manum, arnum)

  arma <- wn[1:init]
  for(i in {init+1}:n){
   mastart <- i - manum
   maend <- i-1
   arstart <- i - arnum
   arend <- i-1
   arma[i] <- sum(arcoef * arma[arstart:arend]) + sum(macoef * wn[mastart:maend])  + wn[i]
   }
  return(arma)
}

Terlihat bahwa komponen \(\sum_{i=1}^q y_{t-1}\) disimulasikan melalui sum(arcoef * arma[arstart:arend]). Jadi, koefisien dikalikan dengan data \(y\) dari \(t-q\) di mana q adalah jumlah koefisien AR, sampai data \(t-1\). Lalu komponen \(\sum_{j=1}^q e_{t-j}\) disimulasikan melalui sum(macoef * wn[mastart:maend]). Koefisien dikalikan dengan white noise \(e\) dari \(t-p\), p jumlah koefisien MA, sampai \(t-1\).

# beberapa contoh pembangkitan melalui fungsi

ma3 <- arma.sim(1000, c(0.4, 0.6,0.4), 0)
ar2 <- arma.sim(1000, 0, c(0.3, 0.6))

par(mfrow = c(2, 2))
acf(ma3)
pacf(ma3)
acf(ar2)
pacf(ar2)

#contoh untuk ARMA
arma22 <- arma.sim(2000, c(0.3, 0.4), c(0.3,0.4))

arma22 |> arima(c(2,0,2))
## 
## Call:
## arima(x = arma22, order = c(2, 0, 2))
## 
## Coefficients:
##          ar1     ar2     ma1     ma2  intercept
##       0.4216  0.2848  0.3898  0.3052    -0.0186
## s.e.  0.0678  0.0619  0.0658  0.0260     0.0630
## 
## sigma^2 estimated as 0.2392:  log likelihood = -1408.11,  aic = 2826.23
set.seed(1234)
n = length(wn)
phi1 = 0.7
theta1 = 0.5

y.arma=c(1:n)
for (i in 2:n){y.arma[i] = phi1*y.arma[i-1] + theta1*wn[i-1]+wn[i]}
y.arma
##   [1]  1.000000000  0.956043451  0.883129057  0.466569057 -0.296116329
##   [6] -0.486548505 -1.339744558 -1.533398994 -0.025390600 -0.876462518
##  [11] -1.855184960 -1.281037700 -1.315935918 -1.450159388 -1.143666567
##  [16] -0.377445951  0.497316792  0.475543667  1.075025384  1.124887077
##  [21]  1.060393703 -0.667705460 -2.541080562 -3.100707638 -3.190719382
##  [26] -3.368896627 -2.037389039  0.020208422 -0.563789394 -1.114621608
##  [31] -1.592120740 -2.049158445 -3.594234607 -3.916056068 -4.179736606
##  [36] -4.430887859 -4.115342054 -3.054798273 -2.227257418 -2.954625063
##  [41] -2.148653435 -1.593977829 -1.055517944 -1.551642448 -2.085821882
##  [46] -1.912739378 -0.468427736 -2.376134078 -3.345157075 -3.531980578
##  [51] -3.078007883 -3.852891143 -3.443784769 -3.855202224 -4.771251090
##  [56] -2.483083791 -2.764778502 -3.986773613 -4.722531671 -2.649942221
##  [61]  0.027294611  0.567904898  1.022859177  2.481447135  2.100055647
##  [66]  0.686052019 -0.571625055 -1.613891323 -1.404776611 -0.806117811
##  [71] -0.934217394 -2.370922696 -1.443509156  0.013050771  1.046386228
##  [76]  0.877651510  0.691243602  0.362687686  0.642192913  0.161175334
##  [81]  0.759822466  1.050126773  1.312799328  1.544937757  0.910099220
##  [86] -0.466125922 -0.874049217 -0.157844977  0.181056463 -0.916566903
##  [91] -0.730308629 -0.929443675 -0.053703925  1.069103369  1.349943051
##  [96]  0.087894169 -2.848058467 -1.045921516 -0.157667442 -0.930377545
## [101] -2.576521355 -2.969412478 -1.603763287  0.157520199  0.965968051
## [106]  0.692103718  1.400389448  1.056108714  0.482772068  1.626564007
## [111]  2.283573641  1.864384451  2.296062709  3.956200680  3.363700977
## [116]  3.487470158  3.716297306  1.604167927 -0.408041542 -2.705682301
## [121] -0.951443574 -1.968824877 -0.973316457  0.731848498  0.724846365
## [126] -0.247611291  0.694201587  0.130123886 -0.945069859  0.040006270
## [131]  0.985328374  1.597708483  3.408166254  3.611212604  3.143444293
## [136]  2.848205962  3.981289593  5.365576175  4.119428610  1.210912561
## [141]  0.676777542  2.285216257  1.401133780 -0.556400385  0.048039336
## [146] -0.509124038  0.379391424 -0.646258005  0.033181415 -0.216095074
## [151]  0.004871479  0.912152816  0.386268444 -0.140849555 -0.161400982
## [156] -0.360392279 -0.980701712 -1.673147503 -0.951230327  0.286891665
## [161]  1.530568274  0.350596718 -2.278285917 -4.105576407 -4.093967944
## [166] -4.500234172 -3.781714816 -2.638638278 -2.928235568 -3.092597794
## [171] -2.662385675 -1.808823163 -0.296354173  1.460473467  2.236558065
## [176]  1.276269735  0.314414747  0.161244005 -0.410007217 -2.911956761
## [181] -3.448469447 -3.056531827 -3.375199007 -3.726415526 -3.665610084
## [186] -2.469799770 -1.115361248 -1.118756379 -0.847562742 -1.087209015
## [191] -2.254762470 -1.493731083 -1.246639582  0.020124163  0.455531589
## [196] -0.826196220  0.216914879  2.501431357  3.392432943  2.450863599

Pembangkitan ARMA(p,q) juga dapat dilakukan dengan fungsi arima.sim sebagai berikut.

arma11 <- arima.sim(list(order=c(1,0,1), ar = 0.7, ma = 0.5), n=200)
arma11
## Time Series:
## Start = 1 
## End = 200 
## Frequency = 1 
##   [1]  0.26351998  1.52646979  0.64488707 -0.23446987  0.07518659 -0.41129491
##   [7] -2.08297147 -1.60742676 -1.86147660 -1.82999978 -2.22451760 -0.92283907
##  [13] -0.57043166 -1.34653874 -1.79855519 -3.13871114 -4.17926379 -5.68933393
##  [19] -6.41354677 -5.45427319 -4.43103571 -1.88517750 -1.66351884 -2.55414918
##  [25] -2.49620975 -2.88199840 -3.48308324 -4.02973362 -4.62645851 -4.38834202
##  [31] -3.83060343 -4.73587864 -4.80020660 -4.76007221 -4.90145737 -4.10081068
##  [37] -2.38866642  0.25727889  0.23065053  1.38068829  0.61162807  0.50582384
##  [43]  3.23136199  3.50168854  1.76416820  0.89249620  2.39802941  1.42855507
##  [49]  1.79851186  3.27243668  3.29196087  2.47950185  1.28362897  0.30428198
##  [55]  0.67802199  2.86902954  2.89005769  0.55564023 -1.02998409 -0.82451799
##  [61] -0.76509083 -0.87188309 -0.86920722 -2.06574398 -2.30595890 -0.85083256
##  [67]  0.52714205  1.26780114  0.75972750  0.13884949 -1.19313012 -1.48561384
##  [73] -0.81131310  1.26564284  2.74044524  1.92348485  1.45419797  0.06110569
##  [79]  0.35367359  1.65959008  3.76928854  4.11358406  2.61205214  1.65707075
##  [85]  0.69046849 -0.59390953 -0.66174669 -1.27599267 -1.17314179 -0.38213830
##  [91] -0.14211780 -0.32146963 -0.97206581 -2.11474817 -1.18593313 -0.38315357
##  [97]  0.57411438 -0.42683747 -0.75190374  0.23134689  0.47224960  0.12604436
## [103] -0.78937168  1.11464849  2.55983639  3.99134450  3.78610494  2.05889398
## [109] -0.38776698 -1.66418078 -1.25667493  0.24716866  0.93261337 -0.39274388
## [115] -0.19218055 -1.45027015 -2.20609182 -2.04330873 -3.53662132 -2.52970043
## [121] -1.93363313 -1.99901564 -0.17118138  1.21442139  1.06000048  1.20154727
## [127]  1.49723628  2.91055775  3.14471205  2.84551776  2.59255072  1.61132384
## [133]  1.03692733  2.41340351  1.63316230  0.82717737  2.00203482  1.84786862
## [139]  0.12281468 -1.31050473 -1.74237215 -2.26207409 -2.26776629 -2.13217581
## [145] -1.88278372 -1.00241790  0.12646865  2.07905036  2.22574447  1.20283439
## [151]  2.15256983  3.94663114  3.65805053  2.24960007 -0.41384403  0.21045387
## [157]  0.01536648 -1.53179748  1.40962625  2.74364263  2.00480188 -1.34548751
## [163] -2.40774161 -0.75928268  0.37038690  1.37852745  3.40486250  4.54437836
## [169]  3.25688210  2.72962914  2.06441421  0.80781102 -2.55932633 -4.00905461
## [175] -2.71334702  0.51259694  1.94352874  2.23102763  0.90592123  0.31384797
## [181] -1.77721661 -1.79794358 -0.31917832  0.31047348  1.01082191  1.36962312
## [187]  1.87503906  3.53522215  4.50825016  3.74462049  1.52311736  0.92701549
## [193]  0.45770452  1.61376865  0.26930366 -1.03077969 -0.50741331 -0.29592166
## [199] -0.88916455 -1.23021181

Karakteristik ARMA(1,1)

Plot Time Series

par(mfrow = c(1, 2))
ts.plot(y.arma)
ts.plot(arma11)

par(mfrow = c(1, 1))

Berdasarkan plot time series tersebut, terlihat bahwa model ARMA(1,1) cenderung stasioner dalam rataan

Plot ACF

par(mfrow = c(1, 2))
acf(y.arma)
acf(arma11)

par(mfrow = c(1, 1))

Berdasarkan plot ACF tersebut, terlihat bahwa model ARMA(1,1) hasil simulasi memiliki plot ACF yang tails off, sesuai dengan teori yang ada

Plot PACF

par(mfrow = c(1, 2))
pacf(y.arma)
pacf(arma11)

par(mfrow = c(1, 1))

Berdasarkan plot PACF tersebut, terlihat bahwa model ARMA(1,1) hasil simulasi memiliki plot PACF yang tails off, sesuai dengan teori

Plot EACF

TSA::eacf(y.arma)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x x x x x x x o o x o  o  o  x 
## 1 x o o o o o o o o o o  o  o  o 
## 2 x o o x o o o o o o o  o  o  o 
## 3 x o x o o o o o o o o  o  o  o 
## 4 x x o x o o o x o o o  o  o  o 
## 5 x x o o o o o o o o o  o  o  o 
## 6 x x o o x x o x o o o  o  o  o 
## 7 x o o x o x o x o o o  o  o  o
TSA::eacf(arma11)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x x x x x x x x x o o  o  o  o 
## 1 x o o o o o o o o o o  o  o  x 
## 2 x x o o o o o o o o o  o  o  o 
## 3 o x o o o o o o o o o  o  o  o 
## 4 x x o o o o o o o o o  o  o  o 
## 5 x x o o x o o o o o o  o  o  o 
## 6 x o x o x o o o o o o  o  o  o 
## 7 x x x x x o o o o o o  o  o  o

Berdasarkan pola segitiga nol pada plot EACF, terlihat bahwa segitiga nol berada pada ordo AR(1) dan ordo MA(1)

Scatterplot Antar Lag

Korelasi antara \(Y_t\) dengan \(Y_{t-1}\)

#Yt
yt_arma <- arma11[-1]
yt_arma
##   [1]  1.52646979  0.64488707 -0.23446987  0.07518659 -0.41129491 -2.08297147
##   [7] -1.60742676 -1.86147660 -1.82999978 -2.22451760 -0.92283907 -0.57043166
##  [13] -1.34653874 -1.79855519 -3.13871114 -4.17926379 -5.68933393 -6.41354677
##  [19] -5.45427319 -4.43103571 -1.88517750 -1.66351884 -2.55414918 -2.49620975
##  [25] -2.88199840 -3.48308324 -4.02973362 -4.62645851 -4.38834202 -3.83060343
##  [31] -4.73587864 -4.80020660 -4.76007221 -4.90145737 -4.10081068 -2.38866642
##  [37]  0.25727889  0.23065053  1.38068829  0.61162807  0.50582384  3.23136199
##  [43]  3.50168854  1.76416820  0.89249620  2.39802941  1.42855507  1.79851186
##  [49]  3.27243668  3.29196087  2.47950185  1.28362897  0.30428198  0.67802199
##  [55]  2.86902954  2.89005769  0.55564023 -1.02998409 -0.82451799 -0.76509083
##  [61] -0.87188309 -0.86920722 -2.06574398 -2.30595890 -0.85083256  0.52714205
##  [67]  1.26780114  0.75972750  0.13884949 -1.19313012 -1.48561384 -0.81131310
##  [73]  1.26564284  2.74044524  1.92348485  1.45419797  0.06110569  0.35367359
##  [79]  1.65959008  3.76928854  4.11358406  2.61205214  1.65707075  0.69046849
##  [85] -0.59390953 -0.66174669 -1.27599267 -1.17314179 -0.38213830 -0.14211780
##  [91] -0.32146963 -0.97206581 -2.11474817 -1.18593313 -0.38315357  0.57411438
##  [97] -0.42683747 -0.75190374  0.23134689  0.47224960  0.12604436 -0.78937168
## [103]  1.11464849  2.55983639  3.99134450  3.78610494  2.05889398 -0.38776698
## [109] -1.66418078 -1.25667493  0.24716866  0.93261337 -0.39274388 -0.19218055
## [115] -1.45027015 -2.20609182 -2.04330873 -3.53662132 -2.52970043 -1.93363313
## [121] -1.99901564 -0.17118138  1.21442139  1.06000048  1.20154727  1.49723628
## [127]  2.91055775  3.14471205  2.84551776  2.59255072  1.61132384  1.03692733
## [133]  2.41340351  1.63316230  0.82717737  2.00203482  1.84786862  0.12281468
## [139] -1.31050473 -1.74237215 -2.26207409 -2.26776629 -2.13217581 -1.88278372
## [145] -1.00241790  0.12646865  2.07905036  2.22574447  1.20283439  2.15256983
## [151]  3.94663114  3.65805053  2.24960007 -0.41384403  0.21045387  0.01536648
## [157] -1.53179748  1.40962625  2.74364263  2.00480188 -1.34548751 -2.40774161
## [163] -0.75928268  0.37038690  1.37852745  3.40486250  4.54437836  3.25688210
## [169]  2.72962914  2.06441421  0.80781102 -2.55932633 -4.00905461 -2.71334702
## [175]  0.51259694  1.94352874  2.23102763  0.90592123  0.31384797 -1.77721661
## [181] -1.79794358 -0.31917832  0.31047348  1.01082191  1.36962312  1.87503906
## [187]  3.53522215  4.50825016  3.74462049  1.52311736  0.92701549  0.45770452
## [193]  1.61376865  0.26930366 -1.03077969 -0.50741331 -0.29592166 -0.88916455
## [199] -1.23021181
#Yt-1
yt_1_arma <- arma11[-200]
yt_1_arma
##   [1]  0.26351998  1.52646979  0.64488707 -0.23446987  0.07518659 -0.41129491
##   [7] -2.08297147 -1.60742676 -1.86147660 -1.82999978 -2.22451760 -0.92283907
##  [13] -0.57043166 -1.34653874 -1.79855519 -3.13871114 -4.17926379 -5.68933393
##  [19] -6.41354677 -5.45427319 -4.43103571 -1.88517750 -1.66351884 -2.55414918
##  [25] -2.49620975 -2.88199840 -3.48308324 -4.02973362 -4.62645851 -4.38834202
##  [31] -3.83060343 -4.73587864 -4.80020660 -4.76007221 -4.90145737 -4.10081068
##  [37] -2.38866642  0.25727889  0.23065053  1.38068829  0.61162807  0.50582384
##  [43]  3.23136199  3.50168854  1.76416820  0.89249620  2.39802941  1.42855507
##  [49]  1.79851186  3.27243668  3.29196087  2.47950185  1.28362897  0.30428198
##  [55]  0.67802199  2.86902954  2.89005769  0.55564023 -1.02998409 -0.82451799
##  [61] -0.76509083 -0.87188309 -0.86920722 -2.06574398 -2.30595890 -0.85083256
##  [67]  0.52714205  1.26780114  0.75972750  0.13884949 -1.19313012 -1.48561384
##  [73] -0.81131310  1.26564284  2.74044524  1.92348485  1.45419797  0.06110569
##  [79]  0.35367359  1.65959008  3.76928854  4.11358406  2.61205214  1.65707075
##  [85]  0.69046849 -0.59390953 -0.66174669 -1.27599267 -1.17314179 -0.38213830
##  [91] -0.14211780 -0.32146963 -0.97206581 -2.11474817 -1.18593313 -0.38315357
##  [97]  0.57411438 -0.42683747 -0.75190374  0.23134689  0.47224960  0.12604436
## [103] -0.78937168  1.11464849  2.55983639  3.99134450  3.78610494  2.05889398
## [109] -0.38776698 -1.66418078 -1.25667493  0.24716866  0.93261337 -0.39274388
## [115] -0.19218055 -1.45027015 -2.20609182 -2.04330873 -3.53662132 -2.52970043
## [121] -1.93363313 -1.99901564 -0.17118138  1.21442139  1.06000048  1.20154727
## [127]  1.49723628  2.91055775  3.14471205  2.84551776  2.59255072  1.61132384
## [133]  1.03692733  2.41340351  1.63316230  0.82717737  2.00203482  1.84786862
## [139]  0.12281468 -1.31050473 -1.74237215 -2.26207409 -2.26776629 -2.13217581
## [145] -1.88278372 -1.00241790  0.12646865  2.07905036  2.22574447  1.20283439
## [151]  2.15256983  3.94663114  3.65805053  2.24960007 -0.41384403  0.21045387
## [157]  0.01536648 -1.53179748  1.40962625  2.74364263  2.00480188 -1.34548751
## [163] -2.40774161 -0.75928268  0.37038690  1.37852745  3.40486250  4.54437836
## [169]  3.25688210  2.72962914  2.06441421  0.80781102 -2.55932633 -4.00905461
## [175] -2.71334702  0.51259694  1.94352874  2.23102763  0.90592123  0.31384797
## [181] -1.77721661 -1.79794358 -0.31917832  0.31047348  1.01082191  1.36962312
## [187]  1.87503906  3.53522215  4.50825016  3.74462049  1.52311736  0.92701549
## [193]  0.45770452  1.61376865  0.26930366 -1.03077969 -0.50741331 -0.29592166
## [199] -0.88916455
plot(y=yt_arma,x=yt_1_arma)

Berdasarkan scatterplot tersebut, terlihat bahwa terdapat hubungan positif antara \(Y_t\) dengan \(Y_{t-1}\). Hal ini sesuai dengan teori yang ada

cor(yt_arma,yt_1_arma)
## [1] 0.8628383

Korelasi antara \(Y_t\) dengan \(Y_{t-1}\) dari hasil simulasi mendekati perhitungan teoritis. \[ \rho_k = \frac{(1-\theta \phi)(\phi-\theta)}{1-2\theta\phi+\theta^2}\phi^{k-1} \:untuk \:k\ge1 \]

\[ \rho_1 = \frac{(1-((-0.5)(0.7)))(0.7-(-0.5))}{1-2(-0.5)(0.7)+(-0.5)^2}0.7^{1-1}=0,8307692 \]

Pertemuan 5

library(ggplot2)
library(tsibble)
## Registered S3 method overwritten by 'tsibble':
##   method               from 
##   as_tibble.grouped_df dplyr
## 
## Attaching package: 'tsibble'
## The following object is masked from 'package:zoo':
## 
##     index
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, union
library(tseries)
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
set.seed(8990)

Stasioner dalam Rataan dan Ragam

Pada dasarnya, pembangkitan data ARIMA akan menghasilkan data yang stasioner dalam rataan dan ragam karena akan mengikuti fungsi default-nya yang mengikuti pembangkitan bilangan acak normal dengan mean=0 dan ragam=1 .

stas <- arima.sim(n=200, list(order=c(1,0,1),ar= .2, ma=.2),mean=12)

Plot Time Series

plot_stas <- stas |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")
plot_stas

mean(stas)
## [1] 18.06022
lattice::densityplot(as.vector(stas))

Plot deret waktu di atas menunjukkan bahwa data stasioner dalam rataan, ditandai dengan data yang menyebar di sekitar nilai tengahnya (18) dan stasioner dalam ragam, ditandai dengan lebar pita yang cenderung sama.

Plot ACF

acf(stas)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off dan membentuk gelombang sinus.

Uji ADF

tseries::adf.test(stas)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  stas
## Dickey-Fuller = -5.5322, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.01 yang lebih kecil dari taraf nyata 5% sehingga tolak \(H_0\) dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.

Plot Box-Cox

index <- seq(1:200)
bc = boxcox(stas~index, lambda = seq(0,4,by=0.01))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 1.97
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##   [1] 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.30 0.31 0.32 0.33 0.34 0.35 0.36
##  [16] 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.50 0.51
##  [31] 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63 0.64 0.65 0.66
##  [46] 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.80 0.81
##  [61] 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.90 0.91 0.92 0.93 0.94 0.95 0.96
##  [76] 0.97 0.98 0.99 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11
##  [91] 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26
## [106] 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41
## [121] 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.50 1.51 1.52 1.53 1.54 1.55 1.56
## [136] 1.57 1.58 1.59 1.60 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.70 1.71
## [151] 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.80 1.81 1.82 1.83 1.84 1.85 1.86
## [166] 1.87 1.88 1.89 1.90 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.00 2.01
## [181] 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 2.13 2.14 2.15 2.16
## [196] 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 2.27 2.28 2.29 2.30 2.31
## [211] 2.32 2.33 2.34 2.35 2.36 2.37 2.38 2.39 2.40 2.41 2.42 2.43 2.44 2.45 2.46
## [226] 2.47 2.48 2.49 2.50 2.51 2.52 2.53 2.54 2.55 2.56 2.57 2.58 2.59 2.60 2.61
## [241] 2.62 2.63 2.64 2.65 2.66 2.67 2.68 2.69 2.70 2.71 2.72 2.73 2.74 2.75 2.76
## [256] 2.77 2.78 2.79 2.80 2.81 2.82 2.83 2.84 2.85 2.86 2.87 2.88 2.89 2.90 2.91
## [271] 2.92 2.93 2.94 2.95 2.96 2.97 2.98 2.99 3.00 3.01 3.02 3.03 3.04 3.05 3.06
## [286] 3.07 3.08 3.09 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21
## [301] 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32 3.33 3.34 3.35 3.36
## [316] 3.37 3.38 3.39 3.40 3.41 3.42 3.43 3.44 3.45 3.46 3.47 3.48 3.49 3.50 3.51
## [331] 3.52 3.53 3.54 3.55 3.56 3.57 3.58 3.59 3.60 3.61 3.62 3.63 3.64 3.65 3.66
## [346] 3.67 3.68 3.69 3.70 3.71 3.72 3.73

Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar 1,97 dan pada selang kepercayaan 95% nilai memiliki batas bawah 0,22 dan batas atas 3,73. Selang tersebut memuat nilai satu sehingga dapat dikatakan bahwa data bangkitan stasioner dalam ragam.

Partisi Data

Bagian 1

dt_stas1 <- stas[1:67] |> ts()
mean(dt_stas1)
## [1] 18.08483
var(dt_stas1)
## [1] 1.141982

Plot Time Series

dt_stas1 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Plot deret waktu di atas menunjukkan bahwa data stasioner dalam rataan, ditandai dengan data yang menyebar di sekitar nilai tengahnya (18) dan stasioner dalam ragam, ditandai dengan lebar pita yang cenderung sama.

Plot ACF

acf(dt_stas1)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off dan membentuk gelombang sinus.

Uji ADF

tseries::adf.test(dt_stas1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_stas1
## Dickey-Fuller = -3.5663, Lag order = 4, p-value = 0.043
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.043 yang lebih kecil dari taraf nyata 5% sehingga tolak \(H_0\) dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.

Plot Boxcox

index <- seq(1:67)
bc = boxcox(dt_stas1~index, lambda = seq(-2,6,by=1))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 2.20202
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##  [1] -1.03030303 -0.94949495 -0.86868687 -0.78787879 -0.70707071 -0.62626263
##  [7] -0.54545455 -0.46464646 -0.38383838 -0.30303030 -0.22222222 -0.14141414
## [13] -0.06060606  0.02020202  0.10101010  0.18181818  0.26262626  0.34343434
## [19]  0.42424242  0.50505051  0.58585859  0.66666667  0.74747475  0.82828283
## [25]  0.90909091  0.98989899  1.07070707  1.15151515  1.23232323  1.31313131
## [31]  1.39393939  1.47474747  1.55555556  1.63636364  1.71717172  1.79797980
## [37]  1.87878788  1.95959596  2.04040404  2.12121212  2.20202020  2.28282828
## [43]  2.36363636  2.44444444  2.52525253  2.60606061  2.68686869  2.76767677
## [49]  2.84848485  2.92929293  3.01010101  3.09090909  3.17171717  3.25252525
## [55]  3.33333333  3.41414141  3.49494949  3.57575758  3.65656566  3.73737374
## [61]  3.81818182  3.89898990  3.97979798  4.06060606  4.14141414  4.22222222
## [67]  4.30303030  4.38383838  4.46464646  4.54545455  4.62626263  4.70707071
## [73]  4.78787879  4.86868687  4.94949495  5.03030303  5.11111111  5.19191919
## [79]  5.27272727  5.35353535  5.43434343  5.51515152

Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar 2,2 dan pada selang kepercayaan 95% nilai memiliki batas bawah -1,03 dan batas atas 5,52. Selang tersebut memuat nilai satu sehingga dapat dikatakan bahwa data bangkitan stasioner dalam ragam.

Bagian 2

dt_stas2 <- stas[1:134] |> ts()
mean(dt_stas2)
## [1] 17.93724
var(dt_stas2)
## [1] 1.128205

Plot Time Series

dt_stas2 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Plot deret waktu di atas menunjukkan bahwa data stasioner dalam rataan, ditandai dengan data yang menyebar di sekitar nilai tengahnya (18) dan stasioner dalam ragam, ditandai dengan lebar pita yang cenderung sama.

Plot ACF

acf(dt_stas2)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off dan membentuk gelombang sinus.

Uji ADF

adf.test(dt_stas2)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_stas2
## Dickey-Fuller = -4.4004, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.01 yang lebih kecil dari taraf nyata 5% sehingga tolak \(H_0\) dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.

Plot Boxcox

index <- seq(1:134)
bc = boxcox(dt_stas2~index, lambda = seq(0,6,by=1))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 2.848485
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##  [1] 0.4848485 0.5454545 0.6060606 0.6666667 0.7272727 0.7878788 0.8484848
##  [8] 0.9090909 0.9696970 1.0303030 1.0909091 1.1515152 1.2121212 1.2727273
## [15] 1.3333333 1.3939394 1.4545455 1.5151515 1.5757576 1.6363636 1.6969697
## [22] 1.7575758 1.8181818 1.8787879 1.9393939 2.0000000 2.0606061 2.1212121
## [29] 2.1818182 2.2424242 2.3030303 2.3636364 2.4242424 2.4848485 2.5454545
## [36] 2.6060606 2.6666667 2.7272727 2.7878788 2.8484848 2.9090909 2.9696970
## [43] 3.0303030 3.0909091 3.1515152 3.2121212 3.2727273 3.3333333 3.3939394
## [50] 3.4545455 3.5151515 3.5757576 3.6363636 3.6969697 3.7575758 3.8181818
## [57] 3.8787879 3.9393939 4.0000000 4.0606061 4.1212121 4.1818182 4.2424242
## [64] 4.3030303 4.3636364 4.4242424 4.4848485 4.5454545 4.6060606 4.6666667
## [71] 4.7272727 4.7878788 4.8484848 4.9090909 4.9696970 5.0303030 5.0909091
## [78] 5.1515152 5.2121212 5.2727273

Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar 2,85 dan pada selang kepercayaan 95% nilai memiliki batas bawah 0,48 dan batas atas 5,27. Selang tersebut memuat nilai satu sehingga dapat dikatakan bahwa data bangkitan stasioner dalam ragam.

Tidak Stasioner dalam Rataan, Stasioner dalam Ragam

Bagaimana cara mensimulasikan data dengan tren tertentu?

Kunci dari simulasi tersebut berada di \(Y_{t}-Y_{t-1}\), atau first difference, atau selisih antara observasi di waktu ke \(t\) dan observasi sebelumnya. Jika suatu deret waktu memiliki tren naik, misal, maka selisih tersebut akan positif. Sebaliknya, jika suatu deret memiliki tren turun, maka selisih akan negatif. Jika suatu deret stasioner, selisih akan memiliki rata-rata nol.

Ini dapat diilustrasikan dengan fungsi cumsum. cumsum adalah jumlah kumulatif. Untuk mengerti logika dari pengunaan jumlah kumulatif, bayangkan ada deret waktu dengan nilai awal \(c\):

\[ Y_1 = c \]

Lalu definsikan \(d_i\), di mana \(i = 2, 3, \ldots\) sebagai selisih observasi ke-i dengan observasi sebelumnya:

\[ d_i = Y_i-Y_{i-1} \]

Perhatikan bahwa:

\[ \begin{aligned} Y_3-Y_{1} & = d_3+d_2\\ &= Y_3-Y_2+Y_2-Y_1 \end{aligned} \]

Cukup jelas bahwa sifat tersebut berarti:

\[ \begin{aligned} Y_t-Y_1 &= \sum_{i=2}^t d_i\\ Y_t &= Y_1 + \sum_{i=2}^t d_i \end{aligned} \]

Atau, amatan di waktu ke \(t\) dapat ditemukan dari menambahkan amatan ke-1 dengan jumlah kumulatif perbedaan \(d_i\) sampai di waktu ke-t. Kode di bawah membuat data dengan proses tersebut. Ada tiga skenario, yaitu:

  1. Selisih antara observasi dan observasi sebelumnya nol

  2. Selisih antara observasi dan observasi sebelumnya positif

  3. Selisih antara observasi dan observasi sebelumnya negatif

Dengan nilai awal 1 dan komponen \(e_t\) menyebar normal.

notrend <- 1 + cumsum(rep(0, 100)) + rnorm(100) |> ts()
postrend <- 1 + cumsum(rep(0.2, 100)) + rnorm(100) |> ts() 
negtrend <- 1 + cumsum(rep(-0.2, 100)) + rnorm(100) |> ts()

Hasil yang muncul dapat di-plot (note, untuk plotting ini digunakan ggplot2; ts.plot() dapat digunakan - ini tergantung preferensi saja):

plot_notrend <- notrend |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai") + ggtitle("First Difference = 0")
plot_postrend <- postrend |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai") + ggtitle("First Difference = 0.2")
plot_negtrend <- negtrend |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai") + ggtitle("First Difference = -0.2")

ggpubr::ggarrange(plot_notrend, plot_postrend, plot_negtrend, nrow = 3)

Dapat disimulasikan proses MA atau AR yang tidak stasioner dengan suatu tren dengan mensimulasikan beda terlebih dahulu (menggunakan arima.sim), ditambah suatu konstanta, lalu mencari jumlah kumulatif. Terdapat juga parameter mean di fungsi arima.sim, tetapi parameter ini adalah parameter untuk \(E[e_t]\), bukan \(E[Y_t-Y_{t-1}]\). Proses dari nilai harapan white noise tertentu menjadi nilai harapan \(Y\) di suatu proses MA atau AR yang tak stasioner sangat tergantung pada model, yang diilustrasikan di sini.

startSpot <- 3
dt <- {arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), sd=2) + 1.5}  |> ts()
yt <- startSpot + cumsum(dt) |> ts()

dt_alt <- arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), mean = 1.5, sd=2)  |> ts()
yt_alt <- startSpot + cumsum(dt_alt) |> ts()

plot_dt <- dt |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai") + ggtitle("Penambahan konstanta 1.5 di selisih")
plot_yt <- yt |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")
plot_dt_alt <- dt_alt |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai") + ggtitle("Mean 1.5 di parameter arima.sim")
plot_yt_alt <- yt_alt |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

ggpubr::ggarrange(plot_dt, plot_yt, plot_dt_alt, plot_yt_alt)

Terlihat di contoh di atas bahwa menambahkan konstanta 1.5 pada hasil arima.sim beda dengan memasukkan parameter mean = 1.5.

Data Bangkitan Baru

set.seed(8990)
dt_alt <- arima.sim(n=200, list(order=c(1,0,1),ar=c(.2), ma=.2), mean=0.2, sd=0.5)  |> ts()
postrend <- startSpot + cumsum(dt_alt) |> ts()

Plot Time Series

postrend |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

mean(postrend)
## [1] 33.75305
var(postrend)
## [1] 341.6068

Berdasarkan plot time series tersebut, terlihat bahwa data tidak stasioner dalam rataan, ditandai dengan adanya tren positif, tetapi stasioner dalam ragam, ditandai dengan adanya lebar pita pada plot yang cenderung sama.

ts.plot(diff(postrend))

Plot ACF

acf(postrend)

Uji ADF

adf.test(postrend)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  postrend
## Dickey-Fuller = -1.9413, Lag order = 5, p-value = 0.6007
## alternative hypothesis: stationary

Plot Box-Cox

index <- seq(1:200)
bc = boxcox(postrend~index, lambda = seq(0.8,1.1,by=0.001))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.961
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##   [1] 0.900 0.901 0.902 0.903 0.904 0.905 0.906 0.907 0.908 0.909 0.910 0.911
##  [13] 0.912 0.913 0.914 0.915 0.916 0.917 0.918 0.919 0.920 0.921 0.922 0.923
##  [25] 0.924 0.925 0.926 0.927 0.928 0.929 0.930 0.931 0.932 0.933 0.934 0.935
##  [37] 0.936 0.937 0.938 0.939 0.940 0.941 0.942 0.943 0.944 0.945 0.946 0.947
##  [49] 0.948 0.949 0.950 0.951 0.952 0.953 0.954 0.955 0.956 0.957 0.958 0.959
##  [61] 0.960 0.961 0.962 0.963 0.964 0.965 0.966 0.967 0.968 0.969 0.970 0.971
##  [73] 0.972 0.973 0.974 0.975 0.976 0.977 0.978 0.979 0.980 0.981 0.982 0.983
##  [85] 0.984 0.985 0.986 0.987 0.988 0.989 0.990 0.991 0.992 0.993 0.994 0.995
##  [97] 0.996 0.997 0.998 0.999 1.000 1.001 1.002 1.003 1.004 1.005 1.006 1.007
## [109] 1.008 1.009 1.010 1.011 1.012 1.013 1.014 1.015 1.016 1.017 1.018 1.019
## [121] 1.020 1.021 1.022

Partisi Data

Bagian 1

postrend1 <- postrend[1:100] |> ts()
mean(postrend1)
## [1] 18.84534
var(postrend1)
## [1] 116.7756

Plot Time Series

postrend1 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line()+theme_bw() +
  xlab("Obs") + ylab("Nilai")

Plot ACF

acf(postrend1)

Uji ADF

adf.test(postrend1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  postrend1
## Dickey-Fuller = -2.2384, Lag order = 4, p-value = 0.4779
## alternative hypothesis: stationary

Plot Boxcox

index <- seq(1:100)
bc = boxcox(postrend1~index, lambda = seq(0.5,1,by=0.001))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.747
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##   [1] 0.575 0.576 0.577 0.578 0.579 0.580 0.581 0.582 0.583 0.584 0.585 0.586
##  [13] 0.587 0.588 0.589 0.590 0.591 0.592 0.593 0.594 0.595 0.596 0.597 0.598
##  [25] 0.599 0.600 0.601 0.602 0.603 0.604 0.605 0.606 0.607 0.608 0.609 0.610
##  [37] 0.611 0.612 0.613 0.614 0.615 0.616 0.617 0.618 0.619 0.620 0.621 0.622
##  [49] 0.623 0.624 0.625 0.626 0.627 0.628 0.629 0.630 0.631 0.632 0.633 0.634
##  [61] 0.635 0.636 0.637 0.638 0.639 0.640 0.641 0.642 0.643 0.644 0.645 0.646
##  [73] 0.647 0.648 0.649 0.650 0.651 0.652 0.653 0.654 0.655 0.656 0.657 0.658
##  [85] 0.659 0.660 0.661 0.662 0.663 0.664 0.665 0.666 0.667 0.668 0.669 0.670
##  [97] 0.671 0.672 0.673 0.674 0.675 0.676 0.677 0.678 0.679 0.680 0.681 0.682
## [109] 0.683 0.684 0.685 0.686 0.687 0.688 0.689 0.690 0.691 0.692 0.693 0.694
## [121] 0.695 0.696 0.697 0.698 0.699 0.700 0.701 0.702 0.703 0.704 0.705 0.706
## [133] 0.707 0.708 0.709 0.710 0.711 0.712 0.713 0.714 0.715 0.716 0.717 0.718
## [145] 0.719 0.720 0.721 0.722 0.723 0.724 0.725 0.726 0.727 0.728 0.729 0.730
## [157] 0.731 0.732 0.733 0.734 0.735 0.736 0.737 0.738 0.739 0.740 0.741 0.742
## [169] 0.743 0.744 0.745 0.746 0.747 0.748 0.749 0.750 0.751 0.752 0.753 0.754
## [181] 0.755 0.756 0.757 0.758 0.759 0.760 0.761 0.762 0.763 0.764 0.765 0.766
## [193] 0.767 0.768 0.769 0.770 0.771 0.772 0.773 0.774 0.775 0.776 0.777 0.778
## [205] 0.779 0.780 0.781 0.782 0.783 0.784 0.785 0.786 0.787 0.788 0.789 0.790
## [217] 0.791 0.792 0.793 0.794 0.795 0.796 0.797 0.798 0.799 0.800 0.801 0.802
## [229] 0.803 0.804 0.805 0.806 0.807 0.808 0.809 0.810 0.811 0.812 0.813 0.814
## [241] 0.815 0.816 0.817 0.818 0.819 0.820 0.821 0.822 0.823 0.824 0.825 0.826
## [253] 0.827 0.828 0.829 0.830 0.831 0.832 0.833 0.834 0.835 0.836 0.837 0.838
## [265] 0.839 0.840 0.841 0.842 0.843 0.844 0.845 0.846 0.847 0.848 0.849 0.850
## [277] 0.851 0.852 0.853 0.854 0.855 0.856 0.857 0.858 0.859 0.860 0.861 0.862
## [289] 0.863 0.864 0.865 0.866 0.867 0.868 0.869 0.870 0.871 0.872 0.873 0.874
## [301] 0.875 0.876 0.877 0.878 0.879 0.880 0.881 0.882 0.883 0.884 0.885 0.886
## [313] 0.887 0.888 0.889 0.890 0.891 0.892 0.893 0.894 0.895 0.896 0.897 0.898
## [325] 0.899 0.900 0.901 0.902 0.903 0.904 0.905 0.906 0.907 0.908 0.909 0.910
## [337] 0.911 0.912 0.913 0.914 0.915 0.916 0.917 0.918 0.919

Bagian 2

postrend2 <- postrend[101:200] |> ts()
mean(postrend2)
## [1] 48.66076
var(postrend2)
## [1] 120.9194

Plot Time Series

postrend2 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Plot ACF

acf(postrend2)

Uji ADF

adf.test(postrend2)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  postrend2
## Dickey-Fuller = -3.5331, Lag order = 4, p-value = 0.04268
## alternative hypothesis: stationary

Plot Boxcox

index <- seq(1:100)
bc = boxcox(postrend2~index, lambda = seq(-1,1.2,by=0.001))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.407
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##   [1] -0.019 -0.018 -0.017 -0.016 -0.015 -0.014 -0.013 -0.012 -0.011 -0.010
##  [11] -0.009 -0.008 -0.007 -0.006 -0.005 -0.004 -0.003 -0.002 -0.001  0.000
##  [21]  0.001  0.002  0.003  0.004  0.005  0.006  0.007  0.008  0.009  0.010
##  [31]  0.011  0.012  0.013  0.014  0.015  0.016  0.017  0.018  0.019  0.020
##  [41]  0.021  0.022  0.023  0.024  0.025  0.026  0.027  0.028  0.029  0.030
##  [51]  0.031  0.032  0.033  0.034  0.035  0.036  0.037  0.038  0.039  0.040
##  [61]  0.041  0.042  0.043  0.044  0.045  0.046  0.047  0.048  0.049  0.050
##  [71]  0.051  0.052  0.053  0.054  0.055  0.056  0.057  0.058  0.059  0.060
##  [81]  0.061  0.062  0.063  0.064  0.065  0.066  0.067  0.068  0.069  0.070
##  [91]  0.071  0.072  0.073  0.074  0.075  0.076  0.077  0.078  0.079  0.080
## [101]  0.081  0.082  0.083  0.084  0.085  0.086  0.087  0.088  0.089  0.090
## [111]  0.091  0.092  0.093  0.094  0.095  0.096  0.097  0.098  0.099  0.100
## [121]  0.101  0.102  0.103  0.104  0.105  0.106  0.107  0.108  0.109  0.110
## [131]  0.111  0.112  0.113  0.114  0.115  0.116  0.117  0.118  0.119  0.120
## [141]  0.121  0.122  0.123  0.124  0.125  0.126  0.127  0.128  0.129  0.130
## [151]  0.131  0.132  0.133  0.134  0.135  0.136  0.137  0.138  0.139  0.140
## [161]  0.141  0.142  0.143  0.144  0.145  0.146  0.147  0.148  0.149  0.150
## [171]  0.151  0.152  0.153  0.154  0.155  0.156  0.157  0.158  0.159  0.160
## [181]  0.161  0.162  0.163  0.164  0.165  0.166  0.167  0.168  0.169  0.170
## [191]  0.171  0.172  0.173  0.174  0.175  0.176  0.177  0.178  0.179  0.180
## [201]  0.181  0.182  0.183  0.184  0.185  0.186  0.187  0.188  0.189  0.190
## [211]  0.191  0.192  0.193  0.194  0.195  0.196  0.197  0.198  0.199  0.200
## [221]  0.201  0.202  0.203  0.204  0.205  0.206  0.207  0.208  0.209  0.210
## [231]  0.211  0.212  0.213  0.214  0.215  0.216  0.217  0.218  0.219  0.220
## [241]  0.221  0.222  0.223  0.224  0.225  0.226  0.227  0.228  0.229  0.230
## [251]  0.231  0.232  0.233  0.234  0.235  0.236  0.237  0.238  0.239  0.240
## [261]  0.241  0.242  0.243  0.244  0.245  0.246  0.247  0.248  0.249  0.250
## [271]  0.251  0.252  0.253  0.254  0.255  0.256  0.257  0.258  0.259  0.260
## [281]  0.261  0.262  0.263  0.264  0.265  0.266  0.267  0.268  0.269  0.270
## [291]  0.271  0.272  0.273  0.274  0.275  0.276  0.277  0.278  0.279  0.280
## [301]  0.281  0.282  0.283  0.284  0.285  0.286  0.287  0.288  0.289  0.290
## [311]  0.291  0.292  0.293  0.294  0.295  0.296  0.297  0.298  0.299  0.300
## [321]  0.301  0.302  0.303  0.304  0.305  0.306  0.307  0.308  0.309  0.310
## [331]  0.311  0.312  0.313  0.314  0.315  0.316  0.317  0.318  0.319  0.320
## [341]  0.321  0.322  0.323  0.324  0.325  0.326  0.327  0.328  0.329  0.330
## [351]  0.331  0.332  0.333  0.334  0.335  0.336  0.337  0.338  0.339  0.340
## [361]  0.341  0.342  0.343  0.344  0.345  0.346  0.347  0.348  0.349  0.350
## [371]  0.351  0.352  0.353  0.354  0.355  0.356  0.357  0.358  0.359  0.360
## [381]  0.361  0.362  0.363  0.364  0.365  0.366  0.367  0.368  0.369  0.370
## [391]  0.371  0.372  0.373  0.374  0.375  0.376  0.377  0.378  0.379  0.380
## [401]  0.381  0.382  0.383  0.384  0.385  0.386  0.387  0.388  0.389  0.390
## [411]  0.391  0.392  0.393  0.394  0.395  0.396  0.397  0.398  0.399  0.400
## [421]  0.401  0.402  0.403  0.404  0.405  0.406  0.407  0.408  0.409  0.410
## [431]  0.411  0.412  0.413  0.414  0.415  0.416  0.417  0.418  0.419  0.420
## [441]  0.421  0.422  0.423  0.424  0.425  0.426  0.427  0.428  0.429  0.430
## [451]  0.431  0.432  0.433  0.434  0.435  0.436  0.437  0.438  0.439  0.440
## [461]  0.441  0.442  0.443  0.444  0.445  0.446  0.447  0.448  0.449  0.450
## [471]  0.451  0.452  0.453  0.454  0.455  0.456  0.457  0.458  0.459  0.460
## [481]  0.461  0.462  0.463  0.464  0.465  0.466  0.467  0.468  0.469  0.470
## [491]  0.471  0.472  0.473  0.474  0.475  0.476  0.477  0.478  0.479  0.480
## [501]  0.481  0.482  0.483  0.484  0.485  0.486  0.487  0.488  0.489  0.490
## [511]  0.491  0.492  0.493  0.494  0.495  0.496  0.497  0.498  0.499  0.500
## [521]  0.501  0.502  0.503  0.504  0.505  0.506  0.507  0.508  0.509  0.510
## [531]  0.511  0.512  0.513  0.514  0.515  0.516  0.517  0.518  0.519  0.520
## [541]  0.521  0.522  0.523  0.524  0.525  0.526  0.527  0.528  0.529  0.530
## [551]  0.531  0.532  0.533  0.534  0.535  0.536  0.537  0.538  0.539  0.540
## [561]  0.541  0.542  0.543  0.544  0.545  0.546  0.547  0.548  0.549  0.550
## [571]  0.551  0.552  0.553  0.554  0.555  0.556  0.557  0.558  0.559  0.560
## [581]  0.561  0.562  0.563  0.564  0.565  0.566  0.567  0.568  0.569  0.570
## [591]  0.571  0.572  0.573  0.574  0.575  0.576  0.577  0.578  0.579  0.580
## [601]  0.581  0.582  0.583  0.584  0.585  0.586  0.587  0.588  0.589  0.590
## [611]  0.591  0.592  0.593  0.594  0.595  0.596  0.597  0.598  0.599  0.600
## [621]  0.601  0.602  0.603  0.604  0.605  0.606  0.607  0.608  0.609  0.610
## [631]  0.611  0.612  0.613  0.614  0.615  0.616  0.617  0.618  0.619  0.620
## [641]  0.621  0.622  0.623  0.624  0.625  0.626  0.627  0.628  0.629  0.630
## [651]  0.631  0.632  0.633  0.634  0.635  0.636  0.637  0.638  0.639  0.640
## [661]  0.641  0.642  0.643  0.644  0.645  0.646  0.647  0.648  0.649  0.650
## [671]  0.651  0.652  0.653  0.654  0.655  0.656  0.657  0.658  0.659  0.660
## [681]  0.661  0.662  0.663  0.664  0.665  0.666  0.667  0.668  0.669  0.670
## [691]  0.671  0.672  0.673  0.674  0.675  0.676  0.677  0.678  0.679  0.680
## [701]  0.681  0.682  0.683  0.684  0.685  0.686  0.687  0.688  0.689  0.690
## [711]  0.691  0.692  0.693  0.694  0.695  0.696  0.697  0.698  0.699  0.700
## [721]  0.701  0.702  0.703  0.704  0.705  0.706  0.707  0.708  0.709  0.710
## [731]  0.711  0.712  0.713  0.714  0.715  0.716  0.717  0.718  0.719  0.720
## [741]  0.721  0.722  0.723  0.724  0.725  0.726  0.727  0.728  0.729  0.730
## [751]  0.731  0.732  0.733  0.734  0.735  0.736  0.737  0.738  0.739  0.740
## [761]  0.741  0.742  0.743  0.744  0.745  0.746  0.747  0.748  0.749  0.750
## [771]  0.751  0.752  0.753  0.754  0.755  0.756  0.757  0.758  0.759  0.760
## [781]  0.761  0.762  0.763  0.764  0.765  0.766  0.767  0.768  0.769  0.770
## [791]  0.771  0.772  0.773  0.774  0.775  0.776  0.777  0.778  0.779  0.780
## [801]  0.781  0.782  0.783  0.784  0.785  0.786  0.787  0.788  0.789  0.790
## [811]  0.791  0.792  0.793  0.794  0.795  0.796  0.797  0.798  0.799  0.800
## [821]  0.801  0.802  0.803  0.804  0.805  0.806  0.807  0.808  0.809  0.810
## [831]  0.811  0.812  0.813  0.814  0.815  0.816  0.817  0.818  0.819  0.820
## [841]  0.821  0.822

Tidak Stasioner dalam Ragam, Stasioner dalam Rataan

arima.sim memiliki parameter sd yang dapat di-set beda.

set.seed(9089)
sd1 <- arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), sd = 1)
sd5 <- arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), sd = 5)
dtgab <- c(sd1,sd5) |> ts()

Plot Time Series

dtgab |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Berdasarkan plot time series tersebut, terlihat bahwa data stasioner dalam rataan, ditandai dengan tidak adanya trend ataupun musiman pada data, namun tidak stasioner dalam ragam, ditandai dengan adanya perbedaan lebar pita pada plot

Plot ACF

acf(dtgab)

Berdasarkan plot ACF, terlihat bahwa data stasioner dalam rataan, ditandai dengan plot ACF yang tails off dan cenderung membentuk gelombang sinus

Uji ADF

adf.test(dtgab)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dtgab
## Dickey-Fuller = -5.2106, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.01 yang kurang dari taraf nyata 5% dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Partisi Data

Bagian 1

dtgab1 <- dtgab[1:66] |> ts()
mean(dtgab1)
## [1] 0.06376099
var(dtgab1)
## [1] 0.9929488

Plot Time Series

dtgab1 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Berdasarkan plot time series tersebut, terlihat bahwa data cenderung stasioner dalam rataan, ditandain dengan tidak adanya trend dan musiman pada data, serta stasioner dalam ragam, ditandai dengan lebar pita yang cenderung sama pada plot tersebut

Plot ACF

acf(dtgab1)

Berdasarkan plot ACF, terlihat bahwa data cenderung stasioner dalam rataan ditandai dengan plot ACF yang tails off dan cenderung membentuk gelombang sinus

Uji ADF

adf.test(dtgab1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dtgab1
## Dickey-Fuller = -3.9613, Lag order = 4, p-value = 0.01691
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.01691 yang kurang dari taraf nyata 5% dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Plot Boxcox

Bagian 2

dtgab2 <- dtgab[1:132] |> ts()
mean(dtgab2)
## [1] -0.2346268
var(dtgab2)
## [1] 8.376508

Plot Time Series

dtgab2 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Berdasarkan plot data deret waktu tersebut, terlihat bahwa data stasioner dalam rataan, ditandai dengan data yang tidak menunjukkan adanya trend ataupun musiman, serta tidak stasioner dalam ragam ditandai dengan lebar pita pada plot yang cenderung berbeda di beberapa periode waktunya

Plot ACF

acf(dtgab2)

Berdasarkan plot ACF tersebut, terlihat bahwa data stasioner dalam rataan ditandai dengan plot ACF yang cuts off pada lag ke 2

Uji ADF

adf.test(dtgab2)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dtgab2
## Dickey-Fuller = -3.951, Lag order = 5, p-value = 0.01383
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.01383 yang kurang dari taraf nyata 5% dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Tidak Stasioner dalam Rataan dan Ragam

Hal ini dapat disimulasikan dengan membangkitkan data yang tidak stasioner dalam ragam lalu membentuk trend menggunakan data tersebut

set.seed(8990)
sd2 <- arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), sd = 2)
sd6 <- arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), sd = 6)
datagab <- c(sd2,sd6)
dt_rg <- startSpot + cumsum(datagab) |> ts() 

Plot Time Series

dt_rg |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Berdasarkan plot time series tersebut, terlihat bahwa data tidak stasioner dalam rataan, ditandai dengan adanya trend pada data dan tidak stasioner dalam ragam, ditandai dengan adanya perbedaan lebar pita pada plot

Plot ACF

acf(dt_rg)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut menurun secara perlahan (tails off slowly) yang menandakan data tidak stasioner dalam rataan

Uji ADF

adf.test(dt_rg)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_rg
## Dickey-Fuller = -1.8362, Lag order = 5, p-value = 0.6447
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.6447 yang lebih besar dari taraf nyata 5% dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Partisi Data

Bagian 1

dt_rg1 <- dt_rg[1:66] |> ts()
mean(dt_rg1)
## [1] 1.244075
var(dt_rg1)
## [1] 118.5542

Plot Time Series

dt_rg1 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Berdasarkan plot time series tersebut, terlihat bahwa data tidak stasioner dalam rataan karena masih terdapat tren pada data, namun cenderung stasioner dalam ragam karena memiliki lebar pita yang cenderung sama

Plot ACF

acf(dt_rg1)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut menurun secara perlahan (tails off slowly) yang menandakan data tidak stasioner dalam rataan

Uji ADF

adf.test(dt_rg1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_rg1
## Dickey-Fuller = -1.7373, Lag order = 4, p-value = 0.6816
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.6816 yang lebih besar dari taraf nyata 5% dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Bagian 2

dt_rg2 <- dt_rg[67:132] |> ts()
mean(dt_rg2)
## [1] -14.41959
var(dt_rg2)
## [1] 1124.704

Plot Time Series

dt_rg2 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Berdasarkan plot time series tersebut, terlihat bahwa data tidak stasioner dalam rataan karena masih terdapat tren pada data, dan tidak stasioner dalam ragam karena memiliki lebar pita yang cenderung tidak sama

Plot ACF

acf(dt_rg2)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut menurun secara perlahan (tails off slowly) yang menandakan data tidak stasioner dalam rataan

Uji ADF

adf.test(dt_rg2)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_rg2
## Dickey-Fuller = -1.0695, Lag order = 4, p-value = 0.9202
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.9202 yang lebih besar dari taraf nyata 5% dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Bagian 3

dt_rg3 <- dt_rg[133:200] |> ts()
mean(dt_rg3)
## [1] 20.12677
var(dt_rg3)
## [1] 797.5286

Plot Time Series

dt_rg3 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Berdasarkan plot time series tersebut, terlihat bahwa data tidak stasioner dalam rataan karena masih terdapat tren pada data, namun cenderung stasioner dalam ragam karena memiliki lebar pita yang cenderung sama

Plot ACF

acf(dt_rg3)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut menurun secara perlahan (tails off slowly)yang menandakan data tidak stasioner dalam rataan

Uji ADF

tseries::adf.test(dt_rg3,k=5)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_rg3
## Dickey-Fuller = -3.1644, Lag order = 5, p-value = 0.1022
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.323 yang lebih besar dari taraf nyata 5% dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini tidak sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Pertemuan 6 dan 7

Packages

library(ggplot2)
library(tsibble)
library(tseries)
library(MASS)
library(forecast)
library(TSA)
library(TTR)
library(aTSA)
## 
## Attaching package: 'aTSA'
## The following objects are masked from 'package:tseries':
## 
##     adf.test, kpss.test, pp.test
## The following object is masked from 'package:dLagM':
## 
##     forecast
## The following object is masked from 'package:forecast':
## 
##     forecast
## The following object is masked from 'package:graphics':
## 
##     identify
library(graphics)

Data Bangkitan

Pembangkitan Data

Data yang akan dibangkitkan adalah data dengan model MA(2) sebagai berikut.

set.seed(99)
ma2 <- arima.sim(list(order = c(0,0,2), ma = c(0.55,0.65)), n = 175)

Data kemudian dibagi menjadi data latih dan data uji. Pembagian kali ini dilakukan dengan proporsi / perbandingan, yaitu 80:20.

ma2 <- ma2[-c(1:25)]
ma2.train <- ma2[1:120]
ma2.test <- ma2[121:150]

Eksplorasi Data

Sebelum masuk dalam tahap pemodelan, dilakukan eksplorasi data dengan plot deret waktu untuk melihat pola data.

#--PLOT TIME SERIES--#
plot(ma2.train,
     col = "navyblue",
     lwd = 1,
     type = "o",
     xlab = "Time",
     ylab = "Data")

Berdasarkan plot data deret waktu di atas, terlihat data cenderung stasioner dalam rataan dan ragam. Data stasioner dalam rataan karena menyebar/bergerak di sekitar nilai tengahnya (0) dan dikatakan stasioner dalam ragam karena memiliki lebar pita yang cenderung sama. Selain dengan plot data deret waktu, akan dilakukan pengecekan stasioneritas data dengan plot ACF dan uji ADF.

#--CEK KESTASIONERAN---#
acf(ma2.train, main="ACF", lag.max=20)

Berdasarkan plot ACF di atas, dapat dilihat bahwa plot cuts off pada lag ke-2. Hal ini sesuai dengan proses pembangkitan model MA(2).

adf.test(ma2.train) 
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 -4.91    0.01
## [2,]   1 -4.89    0.01
## [3,]   2 -5.65    0.01
## [4,]   3 -3.57    0.01
## [5,]   4 -3.43    0.01
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -4.99    0.01
## [2,]   1 -4.95    0.01
## [3,]   2 -5.78    0.01
## [4,]   3 -3.69    0.01
## [5,]   4 -3.59    0.01
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -5.10  0.0100
## [2,]   1 -5.04  0.0100
## [3,]   2 -6.02  0.0100
## [4,]   3 -3.99  0.0123
## [5,]   4 -3.96  0.0138
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
#stasioner

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.01358 yang lebih kecil dari taraf nyata 5% sehingga tolak \(H_0\) dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.

Spesifikasi Model

#---SPESIFIKASI MODEL---#
par(mfrow = c(1,2))
acf(ma2.train, main="ACF", lag.max=20) #ARIMA(0,0,2)
pacf(ma2.train, main="PACF", lag.max=20) #ARIMA(1,0,0)

par(mfrow = c(1,1))

Berdasarkan Plot ACF, terlihat cuts off pada lag ke-2 sehingga dapat kita asumsikan model yang terbentuk adalah ARIMA(0,0,2). Selanjutnya, berdasarkan plot PACF, terlihat cuts off pada lag pertama sehingga model yang terbentuk adalah ARIMA(1,0,0). Selain dengan plot ACF dan PACF, penentuan spesifikasi model dilakukan dengan extended ACF (EACF) berikut ini.

eacf(ma2.train) 
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x x o o o o o o o o o  o  o  o 
## 1 o x x o o o o o o o o  o  o  o 
## 2 x x x o o o o o o o o  o  o  o 
## 3 x x x o o o o o o o o  o  o  o 
## 4 o o o x o o o o o o o  o  o  o 
## 5 x o o x o o o o o o o  o  o  o 
## 6 x o o o o o o o x o o  o  o  o 
## 7 o o o o o x o o o o o  o  o  o
#ARIMA(0,0,2) #ARIMA(1,0,3) #ARIMA(2,0,3) #ARIMA(3,0,3) 
#Terdapat 5 model tentatif

Menggunakan plot EACF, dapat diambil beberapa model dengan melihat ujung segitiga yang terbentuk, antara lain ARIMA(0,0,2), ARIMA(1,0,3), ARIMA(2,0,3), dan ARIMA(3,0,3).

Pendugaan Parameter

Selanjutnya akan dilakukan pendugaan parameter kelima model ARIMA yang terbentuk sebelumnya. Pendugaan dilakukan dengan fungsi Arima() yang dilanjutkan dengan melihat nilai AIC pada ringkasan data dan melihat signifikansi parameter.

#---PENDUGAAN PARAMETER MODEL---#
model1.ma2=Arima(ma2.train, order=c(0,0,2),method="ML")
summary(model1.ma2) #AIC=326.87
## Series: ma2.train 
## ARIMA(0,0,2) with non-zero mean 
## 
## Coefficients:
##          ma1     ma2     mean
##       0.6953  0.5349  -0.2082
## s.e.  0.0829  0.0673   0.1841
## 
## sigma^2 = 0.8497:  log likelihood = -159.44
## AIC=326.87   AICc=327.22   BIC=338.02
## 
## Training set error measures:
##                        ME     RMSE     MAE       MPE     MAPE     MASE
## Training set -0.004254881 0.910219 0.73195 -767.1756 938.3389 0.852277
##                    ACF1
## Training set 0.05965759
lmtest::coeftest(model1.ma2) #seluruh parameter signifikan
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value  Pr(>|z|)    
## ma1        0.695312   0.082903  8.3871 < 2.2e-16 ***
## ma2        0.534929   0.067337  7.9441 1.957e-15 ***
## intercept -0.208236   0.184115 -1.1310     0.258    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model2.ma2=Arima(ma2.train, order=c(1,0,0),method="ML") 
summary(model2.ma2) #AIC=340.47
## Series: ma2.train 
## ARIMA(1,0,0) with non-zero mean 
## 
## Coefficients:
##          ar1     mean
##       0.6428  -0.2185
## s.e.  0.0690   0.2450
## 
## sigma^2 = 0.9625:  log likelihood = -167.24
## AIC=340.47   AICc=340.68   BIC=348.84
## 
## Training set error measures:
##                        ME      RMSE       MAE       MPE     MAPE      MASE
## Training set -0.002975587 0.9728552 0.7723112 -1335.017 1507.476 0.8992733
##                    ACF1
## Training set 0.06622426
lmtest::coeftest(model2.ma2) #seluruh parameter signifikan
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value Pr(>|z|)    
## ar1        0.642823   0.069023  9.3131   <2e-16 ***
## intercept -0.218485   0.245000 -0.8918   0.3725    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model3.ma2=Arima(ma2.train, order=c(1,0,3),method="ML") 
summary(model3.ma2) #AIC=329.22
## Series: ma2.train 
## ARIMA(1,0,3) with non-zero mean 
## 
## Coefficients:
##          ar1    ma1     ma2     ma3     mean
##       0.0610  0.684  0.6137  0.0934  -0.2082
## s.e.  0.4257  0.416  0.3263  0.2714   0.2083
## 
## sigma^2 = 0.8518:  log likelihood = -158.61
## AIC=329.22   AICc=329.96   BIC=345.94
## 
## Training set error measures:
##                        ME      RMSE      MAE       MPE     MAPE     MASE
## Training set -0.004465851 0.9034798 0.725319 -548.3662 713.5294 0.844556
##                     ACF1
## Training set 0.005156424
lmtest::coeftest(model3.ma2) #tidak ada yang signifikan
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value Pr(>|z|)  
## ar1        0.060970   0.425686  0.1432  0.88611  
## ma1        0.684021   0.415962  1.6444  0.10009  
## ma2        0.613727   0.326319  1.8808  0.06001 .
## ma3        0.093411   0.271412  0.3442  0.73072  
## intercept -0.208191   0.208338 -0.9993  0.31765  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model4.ma2=Arima(ma2.train, order=c(2,0,3),method="ML") 
summary(model4.ma2) #AIC=330.6
## Series: ma2.train 
## ARIMA(2,0,3) with non-zero mean 
## 
## Coefficients:
##          ar1      ar2     ma1     ma2     ma3     mean
##       0.2670  -0.1935  0.4749  0.6454  0.0524  -0.2075
## s.e.  0.4227   0.1744  0.4136  0.3050  0.2587   0.1916
## 
## sigma^2 = 0.8538:  log likelihood = -158.3
## AIC=330.6   AICc=331.6   BIC=350.11
## 
## Training set error measures:
##                        ME      RMSE       MAE       MPE     MAPE      MASE
## Training set -0.004511346 0.9006288 0.7299239 -174.2871 339.1512 0.8499178
##                     ACF1
## Training set 0.006394934
lmtest::coeftest(model4.ma2) #hanya ma2 yang signifikan
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value Pr(>|z|)  
## ar1        0.267023   0.422731  0.6317  0.52761  
## ar2       -0.193470   0.174380 -1.1095  0.26723  
## ma1        0.474856   0.413641  1.1480  0.25097  
## ma2        0.645418   0.304955  2.1164  0.03431 *
## ma3        0.052372   0.258742  0.2024  0.83960  
## intercept -0.207543   0.191625 -1.0831  0.27878  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model5.ma2=Arima(ma2.train, order=c(3,0,3),method="ML") 
summary(model5.ma2) #AIC=329.87
## Series: ma2.train 
## ARIMA(3,0,3) with non-zero mean 
## 
## Coefficients:
##           ar1     ar2      ar3     ma1     ma2     ma3     mean
##       -0.3810  0.2176  -0.2170  1.1432  0.7306  0.3543  -0.2053
## s.e.   0.3026  0.1535   0.1541  0.2896  0.3056  0.2426   0.1890
## 
## sigma^2 = 0.8418:  log likelihood = -156.93
## AIC=329.87   AICc=331.16   BIC=352.17
## 
## Training set error measures:
##                        ME      RMSE     MAE       MPE     MAPE      MASE
## Training set -0.004402562 0.8903241 0.70915 -674.9739 835.0008 0.8257288
##                    ACF1
## Training set 0.01679809
lmtest::coeftest(model5.ma2) #hanya ma1 dan ma2 yang signifikan
## 
## z test of coefficients:
## 
##           Estimate Std. Error z value  Pr(>|z|)    
## ar1       -0.38103    0.30264 -1.2590    0.2080    
## ar2        0.21757    0.15355  1.4170    0.1565    
## ar3       -0.21701    0.15408 -1.4084    0.1590    
## ma1        1.14318    0.28962  3.9472 7.909e-05 ***
## ma2        0.73062    0.30555  2.3911    0.0168 *  
## ma3        0.35428    0.24258  1.4605    0.1442    
## intercept -0.20530    0.18897 -1.0864    0.2773    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#model yang dipilih adalah model 1, yaitu ARIMA(0,0,2)

Berdasarkan pendugaan parameter di atas, nilai AIC terkecil dimiliki oleh model ARIMA(0,0,2) dan parameter model ARIMA(0,0,2) juga seluruhnya signifikan sehingga model yang dipilih adalah model ARIMA(0,0,2).

Analisis Sisaan

Model terbaik hasil identifikasi kemudian dicek asumsi sisaannya. Sisaan model ARIMA harus memenuhi asumsi normalitas, kebebasan, dan kehomogenan ragam. Diagnostik model dilakukan secara eksplorasi dan uji formal.

Eksplorasi Sisaan

#Eksplorasi
sisaan.ma2 <- model1.ma2$residuals
par(mfrow=c(2,2))
qqnorm(sisaan.ma2)
qqline(sisaan.ma2, col = "blue", lwd = 2)
plot(c(1:length(sisaan.ma2)),sisaan.ma2)
acf(sisaan.ma2)
pacf(sisaan.ma2)

par(mfrow = c(1,1))

Berdasarkan plot kuantil-kuantil normal, secara eksplorasi ditunjukkan sisaan menyebar normal mengikuti garis \(45^{\circ}\). Kemudian dapat dilihat juga lebar pita sisaan yang cenderung sama menandakan bahwa sisaan memiliki ragam yang homogen. Akan tetapi, plot ACF dan PACF sisaan ARIMA(0,0,2) signifikan pada lag ke-6 sehingga sisaan tidak saling bebas. Kondisi ini akan diuji lebih lanjut dengan uji formal.

Uji Formal

#1) Sisaan Menyebar Normal
ks.test(sisaan.ma2,"pnorm") 
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  sisaan.ma2
## D = 0.043157, p-value = 0.9788
## alternative hypothesis: two-sided
#tak tolak H0 > sisaan menyebar normal

Selain dengan eksplorasi, asumsi tersebut dapat diuji menggunakan uji formal. Pada tahapan ini uji formal yang digunakan untuk normalitas adalah uji Kolmogorov-Smirnov (KS). Hipotesis pada uji KS adalah sebagai berikut.

\(H_0\) : Sisaan menyebar normal

\(H_1\) : Sisaan tidak menyebar normal

Berdasarkan uji KS tersebut, didapat p-value sebesar 0.9788 yang lebih besar dari taraf nyata 5% sehingga tak tolak \(H_0\) dan menandakan bahwa sisaan menyebar normal. Hal ini sesuai dengan hasil eksplorasi menggunakan plot kuantil-kuantil normal.

#2) Sisaan saling bebas/tidak ada autokorelasi
Box.test(sisaan.ma2, type = "Ljung") 
## 
##  Box-Ljung test
## 
## data:  sisaan.ma2
## X-squared = 0.43785, df = 1, p-value = 0.5082
#tak tolak H0 > sisaan saling bebas

Selanjutnya akan dilakukan uji formal untuk kebebasan sisaan menggunakan uji Ljung-Box. Hipotesis yang digunakan adalah sebagai berikut.

\(H_0\) : Sisaan saling bebas

\(H_1\) : Sisaan tidak tidak saling bebas

Berdasarkan uji Ljung-Box tersebut, didapat p-value sebesar 0.5082 yang lebih besar dari taraf nyata 5% sehingga tak tolak \(H_0\) dan menandakan bahwa sisaan saling bebas. Hal ini berbeda dengan eksplorasi.

#3) Sisaan homogen
Box.test((sisaan.ma2)^2, type = "Ljung") 
## 
##  Box-Ljung test
## 
## data:  (sisaan.ma2)^2
## X-squared = 2.4711, df = 1, p-value = 0.116
#tak tolak H0 > sisaan homogen

Hipotesis yang digunakan untuk uji kehomogenan ragam adalah sebagai berikut.

\(H_0\) : Ragam sisaan homogen

\(H_1\) : Ragam sisaan tidak homogen

Berdasarkan uji Ljung-Box terhadap sisaan kuadrat tersebut, didapat p-value sebesar 0.116 yang lebih besar dari taraf nyata 5% sehingga tak tolak \(H_0\) dan menandakan bahwa ragam sisaan homogen.

#4) Nilai tengah sisaan sama dengan nol
t.test(sisaan.ma2, mu = 0, conf.level = 0.95) 
## 
##  One Sample t-test
## 
## data:  sisaan.ma2
## t = -0.050994, df = 119, p-value = 0.9594
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.1694719  0.1609621
## sample estimates:
##    mean of x 
## -0.004254881
#tak tolak h0 > nilai tengah sisaan sama dengan 0

Terakhir, dengan uji-t, akan dicek apakah nilai tengah sisaan sama dengan nol. Hipotesis yang diujikan sebagai berikut.

\(H_0\) : nilai tengah sisaan sama dengan 0

\(H_1\) : nilai tengah sisaan tidak sama dengan 0

Berdasarkan uji-ttersebut, didapat p-value sebesar 0.9594 yang lebih besar dari taraf nyata 5% sehingga tak tolak \(H_0\) dan menandakan bahwa nilai tengah sisaan sama dengan nol. Hal ini berbeda dengan eksplorasi.

Overfitting

Tahapan selanjutnya adalah overfitting dilakukan dengan menaikkan orde AR(p) dan MA(q) dari model ARIMA(0,0,2) untuk melihat apakah terdapat model lain yang lebih baik dari model saat ini. Kandidat model overfitting adalah ARIMA(1,0,2) dan ARIMA(0,0,3).

#---OVERFITTING---#
model1a.ma2=Arima(ma2.train, order=c(1,0,2),method="ML")
summary(model1a.ma2) #327.31
## Series: ma2.train 
## ARIMA(1,0,2) with non-zero mean 
## 
## Coefficients:
##          ar1     ma1     ma2     mean
##       0.1990  0.5451  0.5029  -0.2083
## s.e.  0.1412  0.1239  0.0836   0.2093
## 
## sigma^2 = 0.8453:  log likelihood = -158.65
## AIC=327.31   AICc=327.84   BIC=341.25
## 
## Training set error measures:
##                        ME      RMSE       MAE       MPE    MAPE      MASE
## Training set -0.004448537 0.9039253 0.7240135 -642.4808 808.051 0.8430358
##                     ACF1
## Training set 0.007803042
lmtest::coeftest(model1a.ma2) #ar1 tidak signifikan
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value  Pr(>|z|)    
## ar1        0.199039   0.141222  1.4094    0.1587    
## ma1        0.545109   0.123914  4.3991 1.087e-05 ***
## ma2        0.502936   0.083609  6.0153 1.795e-09 ***
## intercept -0.208276   0.209264 -0.9953    0.3196    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model1b.ma2=Arima(ma2.train, order=c(0,0,3),method="ML")
summary(model1b.ma2) #327.24
## Series: ma2.train 
## ARIMA(0,0,3) with non-zero mean 
## 
## Coefficients:
##          ma1    ma2     ma3     mean
##       0.7415  0.656  0.1286  -0.2084
## s.e.  0.0878  0.118  0.0997   0.2067
## 
## sigma^2 = 0.8446:  log likelihood = -158.62
## AIC=327.24   AICc=327.77   BIC=341.18
## 
## Training set error measures:
##                        ME      RMSE       MAE       MPE     MAPE      MASE
## Training set -0.004403296 0.9035497 0.7261616 -518.1374 683.3745 0.8455371
##                     ACF1
## Training set 0.007516805
lmtest::coeftest(model1b.ma2) #ma3 tidak signifikan
## 
## z test of coefficients:
## 
##            Estimate Std. Error z value  Pr(>|z|)    
## ma1        0.741488   0.087816  8.4436 < 2.2e-16 ***
## ma2        0.656016   0.118034  5.5579 2.731e-08 ***
## ma3        0.128647   0.099655  1.2909    0.1967    
## intercept -0.208355   0.206722 -1.0079    0.3135    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#model yang dipilih adalah model awal, yaitu ARIMA(0,0,2)

Berdasarkan kedua model hasil overfitting di atas, model ARIMA(1,0,2) dan ARIMA(0,0,3) memiliki AIC yang lebih besar dibandingkan dengan model ARIMA(0,0,2) dan parameter kedua model ARIMA(1,0,2) dan ARIMA(0,0,3) tidak seluruhnya signifikan. Oleh karena itu, model ARIMA(0,0,2) akan tetap digunakan untuk melakukan peramalan.

Peramalan

Peramalan dilakukan menggunakan fungsi forecast() . Contoh peramalan berikut ini dilakukan untuk 30 hari ke depan.