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

Penyiapan Data

library(readxl)
data_mpdw <- read_xlsx('C:/semester 5/MPDW/Data MPDW Kel 9 101.xlsx')
data_mpdw$Date <- as.Date(data_mpdw$Date)
View(data_mpdw)
data_mpdw.ts <- ts(data_mpdw$kurs)
summary(data_mpdw.ts)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   13105   13331   13512   13768   14074   15329

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 <- data_mpdw[1:80,]
testing_ma <- data_mpdw[81:100,]
train_ma.ts <- ts(training_ma$kurs)
test_ma.ts <- ts(testing_ma$kurs)

Eksplorasi Data

Plot time series

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

#eksplorasi keseluruhan data
plot(data_mpdw.ts, col="red",main="Plot semua data")
points(data_mpdw.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 dengan GGPLOT
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
ggplot() + 
  geom_line(data = training_ma, aes(x = Date, y = kurs, col = "Data Latih")) +
  geom_line(data = testing_ma, aes(x = Date, y = kurs, 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 & Double Moving Average

Single Moving Average (SMA)

data.sma<-SMA(train_ma.ts, n=4)
data.sma
## Time Series:
## Start = 1 
## End = 80 
## Frequency = 1 
##  [1]       NA       NA       NA 13349.00 13345.75 13351.25 13337.25 13336.75
##  [9] 13321.75 13324.50 13319.50 13318.50 13332.75 13339.50 13328.75 13275.00
## [17] 13271.75 13261.75 13270.75 13326.50 13318.00 13310.75 13303.75 13291.00
## [25] 13290.00 13288.50 13316.75 13330.50 13325.75 13331.25 13306.50 13311.25
## [33] 13333.75 13338.50 13344.00 13305.50 13279.75 13271.50 13305.00 13380.00
## [41] 13440.00 13492.50 13524.00 13519.75 13528.50 13526.50 13503.25 13514.75
## [49] 13517.50 13532.50 13544.75 13532.50 13500.75 13432.50 13379.25 13334.75
## [57] 13334.75 13412.50 13467.00 13555.25 13640.25 13685.25 13736.75 13768.00
## [65] 13767.25 13761.50 13764.25 13780.75 13803.25 13845.25 13888.00 13960.75
## [73] 14012.75 13985.50 13983.75 13967.75 13978.25 14091.00 14192.00 14267.75
data.ramal<-c(NA,data.sma)
data.ramal #forecast 1 periode ke depan
##  [1]       NA       NA       NA       NA 13349.00 13345.75 13351.25 13337.25
##  [9] 13336.75 13321.75 13324.50 13319.50 13318.50 13332.75 13339.50 13328.75
## [17] 13275.00 13271.75 13261.75 13270.75 13326.50 13318.00 13310.75 13303.75
## [25] 13291.00 13290.00 13288.50 13316.75 13330.50 13325.75 13331.25 13306.50
## [33] 13311.25 13333.75 13338.50 13344.00 13305.50 13279.75 13271.50 13305.00
## [41] 13380.00 13440.00 13492.50 13524.00 13519.75 13528.50 13526.50 13503.25
## [49] 13514.75 13517.50 13532.50 13544.75 13532.50 13500.75 13432.50 13379.25
## [57] 13334.75 13334.75 13412.50 13467.00 13555.25 13640.25 13685.25 13736.75
## [65] 13768.00 13767.25 13761.50 13764.25 13780.75 13803.25 13845.25 13888.00
## [73] 13960.75 14012.75 13985.50 13983.75 13967.75 13978.25 14091.00 14192.00
## [81] 14267.75
data.gab<-cbind(aktual=c(train_ma.ts,rep(NA,20)),pemulusan=c(data.sma,rep(NA,20)),ramalan=c(data.ramal,rep(data.ramal[length(data.ramal)],19)))
data.gab #forecast 20 periode ke depan
##        aktual pemulusan  ramalan
##   [1,]  13351        NA       NA
##   [2,]  13313        NA       NA
##   [3,]  13406        NA       NA
##   [4,]  13326  13349.00       NA
##   [5,]  13338  13345.75 13349.00
##   [6,]  13335  13351.25 13345.75
##   [7,]  13350  13337.25 13351.25
##   [8,]  13324  13336.75 13337.25
##   [9,]  13278  13321.75 13336.75
##  [10,]  13346  13324.50 13321.75
##  [11,]  13330  13319.50 13324.50
##  [12,]  13320  13318.50 13319.50
##  [13,]  13335  13332.75 13318.50
##  [14,]  13373  13339.50 13332.75
##  [15,]  13287  13328.75 13339.50
##  [16,]  13105  13275.00 13328.75
##  [17,]  13322  13271.75 13275.00
##  [18,]  13333  13261.75 13271.75
##  [19,]  13323  13270.75 13261.75
##  [20,]  13328  13326.50 13270.75
##  [21,]  13288  13318.00 13326.50
##  [22,]  13304  13310.75 13318.00
##  [23,]  13295  13303.75 13310.75
##  [24,]  13277  13291.00 13303.75
##  [25,]  13284  13290.00 13291.00
##  [26,]  13298  13288.50 13290.00
##  [27,]  13408  13316.75 13288.50
##  [28,]  13332  13330.50 13316.75
##  [29,]  13265  13325.75 13330.50
##  [30,]  13320  13331.25 13325.75
##  [31,]  13309  13306.50 13331.25
##  [32,]  13351  13311.25 13306.50
##  [33,]  13355  13333.75 13311.25
##  [34,]  13339  13338.50 13333.75
##  [35,]  13331  13344.00 13338.50
##  [36,]  13197  13305.50 13344.00
##  [37,]  13252  13279.75 13305.50
##  [38,]  13306  13271.50 13279.75
##  [39,]  13465  13305.00 13271.50
##  [40,]  13497  13380.00 13305.00
##  [41,]  13492  13440.00 13380.00
##  [42,]  13516  13492.50 13440.00
##  [43,]  13591  13524.00 13492.50
##  [44,]  13480  13519.75 13524.00
##  [45,]  13527  13528.50 13519.75
##  [46,]  13508  13526.50 13528.50
##  [47,]  13498  13503.25 13526.50
##  [48,]  13526  13514.75 13503.25
##  [49,]  13538  13517.50 13514.75
##  [50,]  13568  13532.50 13517.50
##  [51,]  13547  13544.75 13532.50
##  [52,]  13477  13532.50 13544.75
##  [53,]  13411  13500.75 13532.50
##  [54,]  13295  13432.50 13500.75
##  [55,]  13334  13379.25 13432.50
##  [56,]  13299  13334.75 13379.25
##  [57,]  13411  13334.75 13334.75
##  [58,]  13606  13412.50 13334.75
##  [59,]  13552  13467.00 13412.50
##  [60,]  13652  13555.25 13467.00
##  [61,]  13751  13640.25 13555.25
##  [62,]  13786  13685.25 13640.25
##  [63,]  13758  13736.75 13685.25
##  [64,]  13777  13768.00 13736.75
##  [65,]  13748  13767.25 13768.00
##  [66,]  13763  13761.50 13767.25
##  [67,]  13769  13764.25 13761.50
##  [68,]  13843  13780.75 13764.25
##  [69,]  13838  13803.25 13780.75
##  [70,]  13931  13845.25 13803.25
##  [71,]  13940  13888.00 13845.25
##  [72,]  14134  13960.75 13888.00
##  [73,]  14046  14012.75 13960.75
##  [74,]  13822  13985.50 14012.75
##  [75,]  13933  13983.75 13985.50
##  [76,]  14070  13967.75 13983.75
##  [77,]  14088  13978.25 13967.75
##  [78,]  14273  14091.00 13978.25
##  [79,]  14337  14192.00 14091.00
##  [80,]  14373  14267.75 14192.00
##  [81,]     NA        NA 14267.75
##  [82,]     NA        NA 14267.75
##  [83,]     NA        NA 14267.75
##  [84,]     NA        NA 14267.75
##  [85,]     NA        NA 14267.75
##  [86,]     NA        NA 14267.75
##  [87,]     NA        NA 14267.75
##  [88,]     NA        NA 14267.75
##  [89,]     NA        NA 14267.75
##  [90,]     NA        NA 14267.75
##  [91,]     NA        NA 14267.75
##  [92,]     NA        NA 14267.75
##  [93,]     NA        NA 14267.75
##  [94,]     NA        NA 14267.75
##  [95,]     NA        NA 14267.75
##  [96,]     NA        NA 14267.75
##  [97,]     NA        NA 14267.75
##  [98,]     NA        NA 14267.75
##  [99,]     NA        NA 14267.75
## [100,]     NA        NA 14267.75
ts.plot(data_mpdw.ts, xlab="Time Period ", ylab="Nilai Kurs", main= "SMA N=4 Data Kurs Rupiah")
points(data_mpdw.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)

#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   8.543863e+05
## MSE   1.124192e+04
## MAPE  5.616509e-01

MAPE: 0,5% < 10% (sangat baik)

#Menghitung nilai keakuratan data uji
error_test.sma = test_ma.ts-data.gab[81:100,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   6.408315e+06
## MSE   3.204158e+05
## MAPE  3.251814e+00

MAPE: 3,25% < 10% (sangat baik)

Double Moving Average (DMA)

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:20
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,20)), pemulusan1 = c(data.sma,rep(NA,20)),pemulusan2 = c(data.dma, rep(NA,20)),At = c(At, rep(NA,20)), Bt = c(Bt,rep(NA,20)),ramalan = c(data.ramal2, f[-1]))
data.gab2
##        aktual pemulusan1 pemulusan2       At          Bt  ramalan
##   [1,]  13351         NA         NA       NA          NA       NA
##   [2,]  13313         NA         NA       NA          NA       NA
##   [3,]  13406         NA         NA       NA          NA       NA
##   [4,]  13326   13349.00         NA       NA          NA       NA
##   [5,]  13338   13345.75         NA       NA          NA       NA
##   [6,]  13335   13351.25         NA       NA          NA       NA
##   [7,]  13350   13337.25   13322.98 13328.69  -5.7083333       NA
##   [8,]  13324   13336.75   13326.75 13330.75  -4.0000000 13322.98
##   [9,]  13278   13321.75   13296.75 13306.75 -10.0000000 13326.75
##  [10,]  13346   13324.50   13315.23 13318.94  -3.7083333 13296.75
##  [11,]  13330   13319.50   13309.29 13313.38  -4.0833333 13315.23
##  [12,]  13320   13318.50   13314.23 13315.94  -1.7083333 13309.29
##  [13,]  13335   13332.75   13347.65 13341.69   5.9583333 13314.23
##  [14,]  13373   13339.50   13359.40 13351.44   7.9583333 13347.65
##  [15,]  13287   13328.75   13326.88 13327.62  -0.7500000 13359.40
##  [16,]  13105   13275.00   13201.67 13231.00 -29.3333333 13326.88
##  [17,]  13322   13271.75   13218.42 13239.75 -21.3333333 13201.67
##  [18,]  13333   13261.75   13224.15 13239.19 -15.0416667 13218.42
##  [19,]  13323   13270.75   13272.31 13271.69   0.6250000 13224.15
##  [20,]  13328   13326.50   13399.52 13370.31  29.2083333 13272.31
##  [21,]  13288   13318.00   13357.58 13341.75  15.8333333 13399.52
##  [22,]  13304   13310.75   13317.83 13315.00   2.8333333 13357.58
##  [23,]  13295   13303.75   13285.42 13292.75  -7.3333333 13317.83
##  [24,]  13277   13291.00   13266.21 13276.12  -9.9166667 13285.42
##  [25,]  13284   13290.00   13275.21 13281.12  -5.9166667 13266.21
##  [26,]  13298   13288.50   13280.48 13283.69  -3.2083333 13275.21
##  [27,]  13408   13316.75   13350.40 13336.94  13.4583333 13280.48
##  [28,]  13332   13330.50   13370.60 13354.56  16.0416667 13350.40
##  [29,]  13265   13325.75   13343.04 13336.12   6.9166667 13370.60
##  [30,]  13320   13331.25   13339.90 13336.44   3.4583333 13343.04
##  [31,]  13309   13306.50   13278.17 13289.50 -11.3333333 13339.90
##  [32,]  13351   13311.25   13298.85 13303.81  -4.9583333 13278.17
##  [33,]  13355   13333.75   13355.52 13346.81   8.7083333 13298.85
##  [34,]  13339   13338.50   13365.17 13354.50  10.6666667 13355.52
##  [35,]  13331   13344.00   13364.21 13356.12   8.0833333 13365.17
##  [36,]  13197   13305.50   13263.94 13280.56 -16.6250000 13364.21
##  [37,]  13252   13279.75   13217.77 13242.56 -24.7916667 13263.94
##  [38,]  13306   13271.50   13223.69 13242.81 -19.1250000 13217.77
##  [39,]  13465   13305.00   13329.27 13319.56   9.7083333 13223.69
##  [40,]  13497   13380.00   13498.23 13450.94  47.2916667 13329.27
##  [41,]  13492   13440.00   13591.46 13530.88  60.5833333 13498.23
##  [42,]  13516   13492.50   13639.38 13580.62  58.7500000 13591.46
##  [43,]  13591   13524.00   13632.12 13588.88  43.2500000 13639.38
##  [44,]  13480   13519.75   13562.56 13545.44  17.1250000 13632.12
##  [45,]  13527   13528.50   13549.02 13540.81   8.2083333 13562.56
##  [46,]  13508   13526.50   13529.52 13528.31   1.2083333 13549.02
##  [47,]  13498   13503.25   13476.17 13487.00 -10.8333333 13529.52
##  [48,]  13526   13514.75   13508.92 13511.25  -2.3333333 13476.17
##  [49,]  13538   13517.50   13520.83 13519.50   1.3333333 13508.92
##  [50,]  13568   13532.50   13558.33 13548.00  10.3333333 13520.83
##  [51,]  13547   13544.75   13573.71 13562.12  11.5833333 13558.33
##  [52,]  13477   13532.50   13533.65 13533.19   0.4583333 13573.71
##  [53,]  13411   13500.75   13455.96 13473.88 -17.9166667 13533.65
##  [54,]  13295   13432.50   13315.62 13362.38 -46.7500000 13455.96
##  [55,]  13334   13379.25   13242.58 13297.25 -54.6666667 13315.62
##  [56,]  13299   13334.75   13206.31 13257.69 -51.3750000 13242.58
##  [57,]  13411   13334.75   13275.48 13299.19 -23.7083333 13206.31
##  [58,]  13606   13412.50   13491.15 13459.69  31.4583333 13275.48
##  [59,]  13552   13467.00   13599.92 13546.75  53.1666667 13491.15
##  [60,]  13652   13555.25   13743.38 13668.12  75.2500000 13599.92
##  [61,]  13751   13640.25   13842.75 13761.75  81.0000000 13743.38
##  [62,]  13786   13685.25   13849.10 13783.56  65.5416667 13842.75
##  [63,]  13758   13736.75   13874.04 13819.12  54.9166667 13849.10
##  [64,]  13777   13768.00   13868.73 13828.44  40.2916667 13874.04
##  [65,]  13748   13767.25   13813.81 13795.19  18.6250000 13868.73
##  [66,]  13763   13761.50   13766.71 13764.62   2.0833333 13813.81
##  [67,]  13769   13764.25   13762.58 13763.25  -0.6666667 13766.71
##  [68,]  13843   13780.75   13801.27 13793.06   8.2083333 13762.58
##  [69,]  13838   13803.25   13846.27 13829.06  17.2083333 13801.27
##  [70,]  13931   13845.25   13923.38 13892.12  31.2500000 13846.27
##  [71,]  13940   13888.00   13985.81 13946.69  39.1250000 13923.38
##  [72,]  14134   13960.75   14104.81 14047.19  57.6250000 13985.81
##  [73,]  14046   14012.75   14156.19 14098.81  57.3750000 14104.81
##  [74,]  13822   13985.50   14025.08 14009.25  15.8333333 14156.19
##  [75,]  13933   13983.75   13980.52 13981.81  -1.2916667 14025.08
##  [76,]  14070   13967.75   13934.94 13948.06 -13.1250000 13980.52
##  [77,]  14088   13978.25   13977.31 13977.69  -0.3750000 13934.94
##  [78,]  14273   14091.00   14234.02 14176.81  57.2083333 13977.31
##  [79,]  14337   14192.00   14416.58 14326.75  89.8333333 14234.02
##  [80,]  14373   14267.75   14493.58 14403.25  90.3333333 14416.58
##  [81,]     NA         NA         NA       NA          NA 14493.58
##  [82,]     NA         NA         NA       NA          NA 14583.92
##  [83,]     NA         NA         NA       NA          NA 14674.25
##  [84,]     NA         NA         NA       NA          NA 14764.58
##  [85,]     NA         NA         NA       NA          NA 14854.92
##  [86,]     NA         NA         NA       NA          NA 14945.25
##  [87,]     NA         NA         NA       NA          NA 15035.58
##  [88,]     NA         NA         NA       NA          NA 15125.92
##  [89,]     NA         NA         NA       NA          NA 15216.25
##  [90,]     NA         NA         NA       NA          NA 15306.58
##  [91,]     NA         NA         NA       NA          NA 15396.92
##  [92,]     NA         NA         NA       NA          NA 15487.25
##  [93,]     NA         NA         NA       NA          NA 15577.58
##  [94,]     NA         NA         NA       NA          NA 15667.92
##  [95,]     NA         NA         NA       NA          NA 15758.25
##  [96,]     NA         NA         NA       NA          NA 15848.58
##  [97,]     NA         NA         NA       NA          NA 15938.92
##  [98,]     NA         NA         NA       NA          NA 16029.25
##  [99,]     NA         NA         NA       NA          NA 16119.58
## [100,]     NA         NA         NA       NA          NA 16209.92
ts.plot(data_mpdw.ts, xlab="Time Period ", ylab="Nilai Kurs", main= "SMA N=4 Data Kurs Rupiah")
points(data_mpdw.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.5)

#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   8.618807e+05
## MSE   1.180659e+04
## MAPE  5.896164e-01

MAPE: 0,5% < 10% (sangat baik)

#Menghitung nilai keakuratan data uji
error_test.dma = test_ma.ts-data.gab2[81:100,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.240136e+07
## MSE   6.200680e+05
## MAPE  4.077252e+00

MAPE: 4% < 10% (sangat baik)

Kesimpulan

Baik SMA maupun DMA memberikan hasil sangat baik, namun pada DMA memberikan nilai MAPE data uji yang lebih besar, sehingga pada kasus ini SMA lebih baik digunakan

Single Exponential Smoothing & Double Exponential Smoothing

Single Exponential Smoothing (SES)

#Cara 1 (fungsi ses)
ses.1 <- ses(train_ma.ts, h = 20, alpha = 0.3)
plot(ses.1)

ses.1
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  81        14225.3 14091.72 14358.88 14021.01 14429.59
##  82        14225.3 14085.84 14364.76 14012.02 14438.58
##  83        14225.3 14080.20 14370.40 14003.39 14447.21
##  84        14225.3 14074.77 14375.83 13995.08 14455.52
##  85        14225.3 14069.52 14381.08 13987.06 14463.54
##  86        14225.3 14064.45 14386.15 13979.30 14471.30
##  87        14225.3 14059.54 14391.06 13971.79 14478.82
##  88        14225.3 14054.76 14395.84 13964.48 14486.12
##  89        14225.3 14050.12 14400.48 13957.38 14493.22
##  90        14225.3 14045.59 14405.01 13950.46 14500.14
##  91        14225.3 14041.18 14409.42 13943.71 14506.89
##  92        14225.3 14036.87 14413.73 13937.12 14513.48
##  93        14225.3 14032.65 14417.95 13930.67 14519.93
##  94        14225.3 14028.53 14422.07 13924.37 14526.24
##  95        14225.3 14024.49 14426.11 13918.19 14532.41
##  96        14225.3 14020.53 14430.07 13912.13 14538.47
##  97        14225.3 14016.65 14433.95 13906.19 14544.41
##  98        14225.3 14012.83 14437.77 13900.36 14550.24
##  99        14225.3 14009.09 14441.51 13894.63 14555.97
## 100        14225.3 14005.41 14445.20 13889.00 14561.60
ses.2<- ses(train_ma.ts, h = 20, alpha = 0.9)
plot(ses.2)

ses.2
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  81       14368.57 14265.70 14471.45 14211.24 14525.90
##  82       14368.57 14230.17 14506.97 14156.90 14580.24
##  83       14368.57 14202.06 14535.09 14113.91 14623.24
##  84       14368.57 14178.05 14559.10 14077.19 14659.95
##  85       14368.57 14156.74 14580.40 14044.61 14692.54
##  86       14368.57 14137.39 14599.75 14015.01 14722.13
##  87       14368.57 14119.54 14617.60 13987.71 14749.43
##  88       14368.57 14102.89 14634.26 13962.24 14774.90
##  89       14368.57 14087.22 14649.93 13938.28 14798.87
##  90       14368.57 14072.37 14664.77 13915.58 14821.57
##  91       14368.57 14058.24 14678.90 13893.96 14843.18
##  92       14368.57 14044.72 14692.42 13873.29 14863.85
##  93       14368.57 14031.75 14705.39 13853.45 14883.70
##  94       14368.57 14019.26 14717.89 13834.34 14902.80
##  95       14368.57 14007.19 14729.95 13815.89 14921.25
##  96       14368.57 13995.52 14741.62 13798.04 14939.10
##  97       14368.57 13984.20 14752.94 13780.73 14956.41
##  98       14368.57 13973.21 14763.93 13763.92 14973.22
##  99       14368.57 13962.51 14774.63 13747.56 14989.58
## 100       14368.57 13952.09 14785.05 13731.62 15005.52
autoplot(ses.1) +
  autolayer(fitted(ses.1), series="Fitted") +
  ylab("Membaca") + xlab("Periode")

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

#ramalan
ramalan1<- forecast(ses1, h=20)
ramalan1
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  81       14146.92 14006.74 14287.10 13932.53 14361.31
##  82       14146.92 14003.96 14289.88 13928.28 14365.56
##  83       14146.92 14001.24 14292.60 13924.12 14369.72
##  84       14146.92 13998.57 14295.28 13920.03 14373.81
##  85       14146.92 13995.94 14297.90 13916.01 14377.83
##  86       14146.92 13993.36 14300.48 13912.07 14381.77
##  87       14146.92 13990.82 14303.02 13908.19 14385.66
##  88       14146.92 13988.32 14305.52 13904.37 14389.48
##  89       14146.92 13985.86 14307.98 13900.60 14393.24
##  90       14146.92 13983.44 14310.40 13896.90 14396.94
##  91       14146.92 13981.05 14312.79 13893.25 14400.59
##  92       14146.92 13978.70 14315.14 13889.65 14404.19
##  93       14146.92 13976.38 14317.46 13886.10 14407.74
##  94       14146.92 13974.09 14319.75 13882.60 14411.24
##  95       14146.92 13971.83 14322.01 13879.15 14414.69
##  96       14146.92 13969.60 14324.24 13875.74 14418.11
##  97       14146.92 13967.40 14326.44 13872.37 14421.47
##  98       14146.92 13965.22 14328.62 13869.04 14424.80
##  99       14146.92 13963.07 14330.77 13865.75 14428.09
## 100       14146.92 13960.95 14332.89 13862.50 14431.34
ses2<- HoltWinters(train_ma.ts, gamma = FALSE, beta = FALSE, alpha = 0.9)
plot(ses2)

#ramalan
ramalan2<- forecast(ses2, h=20)
ramalan2
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  81       14368.57 14267.37 14469.78 14213.79 14523.35
##  82       14368.57 14232.41 14504.73 14160.34 14576.81
##  83       14368.57 14204.76 14532.39 14118.04 14619.10
##  84       14368.57 14181.14 14556.01 14081.92 14655.23
##  85       14368.57 14160.18 14576.97 14049.86 14687.28
##  86       14368.57 14141.14 14596.00 14020.75 14716.40
##  87       14368.57 14123.58 14613.56 13993.89 14743.25
##  88       14368.57 14107.20 14629.95 13968.83 14768.31
##  89       14368.57 14091.78 14645.36 13945.26 14791.89
##  90       14368.57 14077.18 14659.96 13922.92 14814.22
##  91       14368.57 14063.27 14673.87 13901.66 14835.48
##  92       14368.57 14049.98 14687.17 13881.32 14855.82
##  93       14368.57 14037.21 14699.93 13861.80 14875.34
##  94       14368.57 14024.92 14712.22 13843.00 14894.14
##  95       14368.57 14013.06 14724.09 13824.86 14912.29
##  96       14368.57 14001.57 14735.57 13807.30 14929.85
##  97       14368.57 13990.44 14746.70 13790.27 14946.88
##  98       14368.57 13979.62 14757.52 13773.73 14963.42
##  99       14368.57 13969.10 14768.04 13757.63 14979.51
## 100       14368.57 13958.85 14778.30 13741.95 14995.19
#SES
ses.opt <- ses(train_ma.ts, h = 20, alpha = NULL)
plot(ses.opt)

ses.opt
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  81       14371.79 14269.12 14474.45 14214.77 14528.80
##  82       14371.79 14228.88 14514.69 14153.23 14590.34
##  83       14371.79 14197.71 14545.87 14105.56 14638.02
##  84       14371.79 14171.32 14572.25 14065.21 14678.37
##  85       14371.79 14148.03 14595.54 14029.58 14713.99
##  86       14371.79 14126.94 14616.63 13997.33 14746.24
##  87       14371.79 14107.53 14636.04 13967.64 14775.93
##  88       14371.79 14089.45 14654.12 13940.00 14803.58
##  89       14371.79 14072.46 14671.11 13914.01 14829.56
##  90       14371.79 14056.39 14687.18 13889.43 14854.15
##  91       14371.79 14041.10 14702.48 13866.04 14877.54
##  92       14371.79 14026.48 14717.10 13843.68 14899.89
##  93       14371.79 14012.45 14731.12 13822.23 14921.34
##  94       14371.79 13998.96 14744.62 13801.59 14941.98
##  95       14371.79 13985.93 14757.64 13781.67 14961.90
##  96       14371.79 13973.33 14770.24 13762.40 14981.17
##  97       14371.79 13961.12 14782.45 13743.73 14999.85
##  98       14371.79 13949.26 14794.31 13725.59 15017.99
##  99       14371.79 13937.72 14805.85 13707.95 15035.63
## 100       14371.79 13926.49 14817.09 13690.76 15052.81
#Lamda Optimum Holt Winter
sesopt<- HoltWinters(train_ma.ts, gamma = FALSE, beta = FALSE,alpha = NULL)
sesopt
## Holt-Winters exponential smoothing without trend and without seasonal component.
## 
## Call:
## HoltWinters(x = train_ma.ts, alpha = NULL, beta = FALSE, gamma = FALSE)
## 
## Smoothing parameters:
##  alpha: 0.9682997
##  beta : FALSE
##  gamma: FALSE
## 
## Coefficients:
##       [,1]
## a 14371.79
plot(sesopt)

#ramalan
ramalanopt<- forecast(sesopt, h=20)
ramalanopt
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  81       14371.79 14270.58 14473.00 14217.00 14526.58
##  82       14371.79 14230.90 14512.67 14156.32 14587.25
##  83       14371.79 14200.17 14543.41 14109.32 14634.26
##  84       14371.79 14174.16 14569.42 14069.54 14674.04
##  85       14371.79 14151.19 14592.39 14034.41 14709.16
##  86       14371.79 14130.40 14613.18 14002.62 14740.96
##  87       14371.79 14111.26 14632.31 13973.35 14770.23
##  88       14371.79 14093.44 14650.14 13946.09 14797.48
##  89       14371.79 14076.69 14666.89 13920.48 14823.10
##  90       14371.79 14060.84 14682.73 13896.24 14847.34
##  91       14371.79 14045.76 14697.81 13873.18 14870.40
##  92       14371.79 14031.35 14712.22 13851.14 14892.44
##  93       14371.79 14017.53 14726.05 13829.99 14913.59
##  94       14371.79 14004.22 14739.36 13809.64 14933.94
##  95       14371.79 13991.38 14752.20 13790.00 14953.57
##  96       14371.79 13978.96 14764.62 13771.01 14972.57
##  97       14371.79 13966.92 14776.66 13752.59 14990.99
##  98       14371.79 13955.22 14788.35 13734.71 15008.87
##  99       14371.79 13943.85 14799.73 13717.31 15026.26
## 100       14371.79 13932.77 14810.80 13700.37 15043.21
#Keakuratan Metode
#Pada data training
SSE1<-ses1$SSE
MSE1<-ses1$SSE/length(train_ma.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       1133744.8128
## MSE         14171.8102
## RMSE          119.0454
SSE2<-ses2$SSE
MSE2<-ses2$SSE/length(train_ma.ts)
RMSE2<-sqrt(MSE2)

akurasi2 <- matrix(c(SSE2,MSE2,RMSE2))
row.names(akurasi2)<- c("SSE", "MSE", "RMSE")
colnames(akurasi2) <- c("Akurasi lamda=0.9")
akurasi2
##      Akurasi lamda=0.9
## SSE       502617.60406
## MSE         6282.72005
## RMSE          79.26361

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

#Cara Manual
fitted1<-ramalan1$fitted
sisaan1<-ramalan1$residuals
head(sisaan1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA -38.0000  62.6000 -29.9200 -11.9360 -12.5488
resid1<-training_ma$kurs -ramalan1$fitted
head(resid1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA -38.0000  62.6000 -29.9200 -11.9360 -12.5488
#Cara Manual
SSE.1=sum(sisaan1[2:length(train_ma.ts)]^2)
SSE.1
## [1] 1133745
MSE.1 = SSE.1/length(train_ma.ts)
MSE.1
## [1] 14171.81
MAPE.1 = sum(abs(sisaan1[2:length(train_ma.ts)]/train_ma.ts[2:length(train_ma.ts)])*
               100)/length(train_ma.ts)
MAPE.1
## [1] 0.6301266
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       1.133745e+06
## MSE       1.417181e+04
## MAPE      6.301266e-01
fitted2<-ramalan2$fitted
sisaan2<-ramalan2$residuals
head(sisaan2)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA -38.0000  89.2000 -71.0800   4.8920  -2.5108
resid2<-training_ma$kurs-ramalan2$fitted
head(resid2)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA -38.0000  89.2000 -71.0800   4.8920  -2.5108
SSE.2=sum(sisaan2[2:length(train_ma.ts)]^2)
SSE.2
## [1] 502617.6
MSE.2 = SSE.2/length(train_ma.ts)
MSE.2
## [1] 6282.72
MAPE.2 = sum(abs(sisaan2[2:length(train_ma.ts)]/train_ma.ts[2:length(train_ma.ts)])*
               100)/length(train_ma.ts)
MAPE.2
## [1] 0.4145306
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.9")
akurasi.2
##      Akurasi lamda=0.9
## SSE       5.026176e+05
## MSE       6.282720e+03
## MAPE      4.145306e-01
# Akurasi Data Uji
selisih1<-ramalan1$mean-testing_ma$kurs
SSEtesting1<-sum(selisih1^2)
MSEtesting1<-SSEtesting1/length(testing_ma$kurs)

selisih2<-ramalan2$mean-testing_ma$kurs
SSEtesting2<-sum(selisih2^2)
MSEtesting2<-SSEtesting2/length(testing_ma$kurs)

selisihopt<-ramalanopt$mean-testing_ma$kurs
SSEtestingopt<-sum(selisihopt^2)
MSEtestingopt<-SSEtestingopt/length(testing_ma$kurs)

akurasitesting1 <- matrix(c(SSEtesting1,SSEtesting2,SSEtestingopt))
row.names(akurasitesting1)<- c("SSE1", "SSE2", "SSEopt")
akurasitesting1
##           [,1]
## SSE1   9045615
## SSE2   4654666
## SSEopt 4605407
akurasitesting2 <- matrix(c(MSEtesting1,MSEtesting2,MSEtestingopt))
row.names(akurasitesting2)<- c("MSE1", "MSE2", "MSEopt")
akurasitesting2
##            [,1]
## MSE1   452280.8
## MSE2   232733.3
## MSEopt 230270.4
accuracy(ramalanopt,testing_ma$kurs)
##                    ME      RMSE      MAE        MPE      MAPE      MASE
## Training set  13.3444  79.60162  57.2760 0.09454685 0.4218534 0.9975318
## Test set     381.2114 479.86494 386.2903 2.54633925 2.5818036 6.7277190
##                     ACF1
## Training set -0.02692445
## Test set              NA

Double Exponential Smoothing (DES)

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

#ramalan
ramalandes1<- forecast(des.1, h=20)
ramalandes1
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  81       14406.58 14283.47 14529.69 14218.29 14594.86
##  82       14474.97 14336.21 14613.73 14262.76 14687.19
##  83       14543.37 14383.80 14702.94 14299.33 14787.41
##  84       14611.77 14426.79 14796.74 14328.87 14894.66
##  85       14680.16 14465.79 14894.53 14352.31 15008.01
##  86       14748.56 14501.35 14995.76 14370.49 15126.63
##  87       14816.96 14533.90 15100.01 14384.05 15249.86
##  88       14885.35 14563.75 15206.95 14393.51 15377.20
##  89       14953.75 14591.17 15316.32 14399.24 15508.26
##  90       15022.14 14616.36 15427.92 14401.56 15642.73
##  91       15090.54 14639.48 15541.60 14400.70 15780.38
##  92       15158.94 14660.64 15657.23 14396.86 15921.01
##  93       15227.33 14679.97 15774.70 14390.21 16064.46
##  94       15295.73 14697.54 15893.92 14380.88 16210.59
##  95       15364.13 14713.43 16014.82 14368.97 16359.28
##  96       15432.52 14727.71 16137.34 14354.61 16510.44
##  97       15500.92 14740.43 16261.41 14337.86 16663.98
##  98       15569.32 14751.65 16386.98 14318.81 16819.82
##  99       15637.71 14761.41 16514.01 14297.53 16977.90
## 100       15706.11 14769.76 16642.46 14274.08 17138.14
#Lamda=0.6 dan gamma=0.3
des.2<- HoltWinters(train_ma.ts, gamma = FALSE, beta = 0.4, alpha = 0.7)
plot(des.2)

#ramalan
ramalandes2<- forecast(des.2, h=20)
ramalandes2
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  81       14465.51 14351.43 14579.59 14291.04 14639.98
##  82       14543.89 14384.16 14703.61 14299.60 14788.17
##  83       14622.26 14407.38 14837.14 14293.63 14950.89
##  84       14700.63 14423.07 14978.19 14276.15 15125.12
##  85       14779.00 14432.38 15125.62 14248.90 15309.11
##  86       14857.38 14436.03 15278.73 14212.98 15501.78
##  87       14935.75 14434.50 15437.00 14169.15 15702.35
##  88       15014.12 14428.17 15600.07 14117.99 15910.25
##  89       15092.49 14417.35 15767.64 14059.95 16125.04
##  90       15170.87 14402.26 15939.47 13995.39 16346.35
##  91       15249.24 14383.11 16115.37 13924.61 16573.87
##  92       15327.61 14360.08 16295.15 13847.90 16807.33
##  93       15405.99 14333.31 16478.67 13765.46 17046.51
##  94       15484.36 14302.93 16665.78 13677.52 17291.19
##  95       15562.73 14269.08 16856.39 13584.26 17541.21
##  96       15641.10 14231.85 17050.36 13485.83 17796.38
##  97       15719.48 14191.34 17247.61 13382.39 18056.56
##  98       15797.85 14147.65 17448.05 13274.08 18321.62
##  99       15876.22 14100.85 17651.60 13161.02 18591.42
## 100       15954.60 14051.03 17858.17 13043.34 18865.85
#Visually evaluate the prediction
plot(data_mpdw.ts)
lines(des.2$fitted[,1], lty=2, col="blue")
lines(ramalandes2$mean, col="red")

plot(data_mpdw.ts)
lines(des.1$fitted[,1], lty=2, col="blue")
lines(ramalandes1$mean, col="red")

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

#ramalan
ramalandesopt<- forecast(des.opt, h=20)
ramalandesopt
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  81       14407.53 14304.92 14510.15 14250.60 14564.47
##  82       14442.44 14298.53 14586.34 14222.35 14662.52
##  83       14477.34 14297.98 14656.70 14203.04 14751.64
##  84       14512.24 14300.15 14724.34 14187.87 14836.62
##  85       14547.15 14303.76 14790.53 14174.92 14919.37
##  86       14582.05 14308.20 14855.90 14163.23 15000.87
##  87       14616.96 14313.08 14920.83 14152.22 15081.69
##  88       14651.86 14318.18 14985.54 14141.54 15162.18
##  89       14686.76 14323.33 15050.19 14130.94 15242.58
##  90       14721.67 14328.43 15114.90 14120.26 15323.07
##  91       14756.57 14333.40 15179.74 14109.38 15403.75
##  92       14791.47 14338.18 15244.77 14098.21 15484.73
##  93       14826.38 14342.72 15310.03 14086.69 15566.06
##  94       14861.28 14347.00 15375.56 14074.76 15647.80
##  95       14896.18 14350.99 15441.38 14062.38 15729.98
##  96       14931.09 14354.67 15507.50 14049.54 15812.64
##  97       14965.99 14358.03 15573.95 14036.19 15895.79
##  98       15000.89 14361.05 15640.74 14022.34 15979.45
##  99       15035.80 14363.73 15707.87 14007.96 16063.64
## 100       15070.70 14366.06 15775.35 13993.04 16148.36
#Akurasi Data Training
ssedes.train1<-des.1$SSE
msedes.train1<-ssedes.train1/length(train_ma.ts)
sisaandes1<-ramalandes1$residuals
head(sisaandes1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]        NA        NA 131.00000  20.88000  44.30240  38.03955
mapedes.train1 <- sum(abs(sisaandes1[3:length(train_ma.ts)]/train_ma.ts[3:length(train_ma.ts)])
                      *100)/length(train_ma.ts)

akurasides.1 <- matrix(c(ssedes.train1,msedes.train1,mapedes.train1))
row.names(akurasides.1)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.1) <- c("Akurasi alpha=0.4 dan beta=0.3")
akurasides.1
##      Akurasi alpha=0.4 dan beta=0.3
## SSE                    7.206543e+05
## MSE                    9.008179e+03
## MAPE                   5.048453e-01
ssedes.train2<-des.2$SSE
msedes.train2<-ssedes.train2/length(train_ma.ts)
sisaandes2<-ramalandes2$residuals
head(sisaandes2)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]         NA         NA 131.000000 -39.380000  12.532400   9.597048
mapedes.train2 <- sum(abs(sisaandes2[3:length(train_ma.ts)]/train_ma.ts[3:length(train_ma.ts)])
                      *100)/length(train_ma.ts)

akurasides.2 <- matrix(c(ssedes.train2,msedes.train2,mapedes.train2))
row.names(akurasides.2)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.2) <- c("Akurasi alpha=0.7 dan beta=0.4")
akurasides.2
##      Akurasi alpha=0.7 dan beta=0.4
## SSE                    6.123523e+05
## MSE                    7.654404e+03
## MAPE                   4.531769e-01

Hasil akurasi dari data latih didapatkan skenario 2 dengan beta=0.7 dan alpha=0.4 memiliki hasil yang lebih baik. Namun untuk kedua skenario dapat dikategorikan peramalan sangat baik berdasarkan nilai MAPE-nya.

#Akurasi Data Testing
selisihdes1<-ramalandes1$mean-testing_ma$kurs
selisihdes1
## Time Series:
## Start = 81 
## End = 100 
## Frequency = 1 
##  [1]  -78.42385  100.97264   69.36913  133.76562  102.16210   84.55859
##  [7]   93.95508   72.35157  213.74805  210.14454  200.54103   50.93752
## [13]  -71.66600  -33.26951  154.12698  486.52347  822.91995  964.31644
## [19] 1104.71293 1385.10942
SSEtestingdes1<-sum(selisihdes1^2)
MSEtestingdes1<-SSEtestingdes1/length(testing_ma$kurs)
MAPEtestingdes1<-sum(abs(selisihdes1/testing_ma$kurs)*100)/length(testing_ma$kurs)

selisihdes2<-ramalandes2$mean-testing_ma$kurs
selisihdes2
## Time Series:
## Start = 81 
## End = 100 
## Frequency = 1 
##  [1]  -19.48758  169.88520  148.25799  222.63077  201.00356  193.37635
##  [7]  212.74913  201.12192  352.49470  358.86749  359.24027  219.61306
## [13]  106.98584  155.35863  352.73141  695.10420 1041.47699 1192.84977
## [19] 1343.22256 1633.59534
SSEtestingdes2<-sum(selisihdes2^2)
MSEtestingdes2<-SSEtestingdes2/length(testing_ma$kurs)
MAPEtestingdes2<-sum(abs(selisihdes2/testing_ma$kurs)*100)/length(testing_ma$kurs)

selisihdesopt<-ramalandesopt$mean-testing_ma$kurs
selisihdesopt
## Time Series:
## Start = 81 
## End = 100 
## Frequency = 1 
##  [1]  -77.46585   68.43766    3.34118   34.24470  -30.85179  -81.94827
##  [7] -106.04475 -161.14123  -53.23772  -90.33420 -133.43068 -316.52716
## [13] -472.62365 -467.72013 -313.81661  -14.91309  287.99042  395.89394
## [19]  502.79746  749.70098
SSEtestingdesopt<-sum(selisihdesopt^2)
MSEtestingdesopt<-SSEtestingdesopt/length(testing_ma$kurs)
MAPEtestingdesopt<-sum(abs(selisihdesopt/testing_ma$kurs)*100)/length(testing_ma$kurs)

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  5.216086e+06 8.318234e+06 1.781101e+06
## MSE  2.608043e+05 4.159117e+05 8.905507e+04
## MAPE 2.202018e+00 3.132716e+00 1.474111e+00

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   452280.8 260804.31
## ske 2   232733.3 415911.68
## ske opt 230270.4  89055.07

Metode Double Exponential Smoothing (DES) menunjukkan performa yang lebih baik pada dua dari tiga skenario (ske 1 dan ske opt), oleh karena itu DES lebih baik digunakan

#Winter

#membagi data latih dan data uji
training<-data_mpdw[1:80,2]
testing<-data_mpdw[81:100,2]
training.ts<-ts(training, frequency = 12) #12 bulan dalam setahun
testing.ts<-ts(testing, frequency = 12)

Winter Aditif

#Pemulusan dengan winter aditif 
winter1 <- HoltWinters(training.ts,alpha=0.2,beta=0.1,gamma=0.1,seasonal = "additive")
winter1$fitted
##           xhat    level      trend      season
## Jan 2 13365.43 13335.67 -3.3148310   33.079861
## Feb 2 13394.38 13326.27 -3.9234902   72.038194
## Mar 2 13299.17 13318.07 -4.3511144  -14.545139
## Apr 2 13111.48 13311.28 -4.5945248 -195.211806
## May 2 13325.66 13305.39 -4.7240293   24.996528
## Jun 2 13334.38 13299.94 -4.7973190   39.246528
## Jul 2 13311.49 13294.86 -4.8250044   21.454861
## Aug 2 13281.36 13292.34 -4.5948192   -6.378472
## Sep 2 13243.49 13297.07 -3.6621081  -49.920139
## Oct 2 13331.79 13302.31 -2.7718637   32.246528
## Nov 2 13316.78 13293.98 -3.3275642   26.121528
## Dec 2 13299.41 13286.30 -3.7630733   16.871528
## Jan 3 13304.49 13278.05 -4.2112192   30.645224
## Feb 3 13335.45 13269.75 -4.6209854   70.327698
## Mar 3 13236.75 13257.63 -5.3700281  -15.518781
## Apr 3 13088.84 13286.51 -1.9449322 -195.729824
## May 3 13360.82 13333.20  2.9182641   24.703369
## Jun 3 13357.09 13316.96  1.0017919   39.135786
## Jul 3 13333.17 13310.54  0.2599300   22.375602
## Aug 3 13303.09 13305.96 -0.2235544   -2.647628
## Sep 3 13269.70 13315.32  0.7345938  -46.359161
## Oct 3 13365.58 13333.12  2.4406511   30.023726
## Nov 3 13356.53 13330.24  1.9090262   24.379491
## Dec 3 13343.52 13327.04  1.3984304   15.078944
## Jan 4 13326.61 13299.14 -1.5320039   29.006159
## Feb 4 13346.99 13282.68 -3.0242555   67.331527
## Mar 4 13265.80 13271.46 -3.8440791   -1.818397
## Apr 4 13131.32 13307.46  0.1399421 -176.277039
## May 4 13405.22 13380.73  7.4535331   17.037481
## Jun 4 13450.90 13405.54  9.1890448   36.168339
## Jul 4 13458.68 13427.75 10.4910561   20.441664
## Aug 4 13479.03 13464.71 13.1373775    1.184965
## Sep 4 13451.66 13478.04 13.1568211  -39.534932
## Oct 4 13548.82 13506.26 14.6636375   27.897226
## Nov 4 13548.95 13512.76 13.8471747   22.337108
## Dec 4 13532.60 13516.42 12.8282633    3.357207
## Jan 5 13563.66 13527.93 12.6961669   23.037153
## Feb 5 13611.73 13535.49 12.1829676   64.052232
## Mar 5 13564.35 13538.93 11.3084472   14.117688
## Apr 5 13410.70 13546.77 10.9613528 -147.022675
## May 5 13607.25 13570.99 12.2872575   23.979527
## Jun 5 13593.76 13544.02  8.3621921   41.376384
## Jul 5 13526.05 13492.63  2.3869587   31.026950
## Aug 5 13456.42 13456.61 -1.4539784    1.262739
## Sep 5 13385.56 13423.67 -4.6023644  -33.507666
## Oct 5 13444.70 13424.16 -4.0936177   24.631375
## Nov 5 13469.72 13452.33 -0.8675289   18.261463
## Dec 5 13471.52 13467.91  0.7780910    2.828822
## Jan 6 13530.16 13504.79  4.3876780   20.984356
## Feb 6 13622.70 13553.34  8.8044832   60.554151
## Mar 6 13619.61 13594.81 12.0704419   12.729310
## Apr 6 13507.68 13634.56 14.8382968 -141.719056
## May 6 13731.76 13703.26 20.2247821    8.279266
## Jun 6 13764.76 13726.73 20.5495083   17.475451
## Jul 6 13783.11 13746.93 20.5143754   15.663201
## Aug 6 13773.52 13764.62 20.2322265  -11.330805
## Sep 6 13788.90 13798.75 21.6217430  -31.472680
## Oct 6 13890.33 13830.19 22.6037589   37.535730
## Nov 6 13909.19 13860.93 23.4171282   24.843942
## Dec 6 13931.81 13890.51 24.0333168   17.267170
## Jan 7 14021.71 13954.98 28.0771368   38.651577
## Feb 7 14090.10 13987.92 28.5629620   73.617985
## Mar 7 14009.86 13962.86 23.2010347   23.800730
## Apr 7 13872.18 13970.69 21.6638172 -120.173115
## May 7 14067.11 14031.92 25.6202438    9.578170
## Jun 7 14105.09 14061.71 26.0379545   17.334919
## Jul 7 14165.26 14121.33 29.3962291   14.534606
## Aug 7 14212.14 14185.08 32.8309303   -5.772739
xhat1 <- winter1$fitted[,2]

winter1.opt<- HoltWinters(training.ts, alpha= NULL,  beta = NULL, gamma = NULL, seasonal = "additive")
## Warning in HoltWinters(training.ts, alpha = NULL, beta = NULL, gamma = NULL, :
## optimization difficulties: ERROR: ABNORMAL_TERMINATION_IN_LNSRCH
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.6206322
##  beta : 0.04298124
##  gamma: 1
## 
## Coefficients:
##             [,1]
## a   14357.493882
## b      27.666630
## s1     22.651109
## s2     91.279845
## s3     36.777788
## s4     98.238049
## s5     26.809064
## s6    -44.183749
## s7     59.241365
## s8     83.875977
## s9      5.125245
## s10    29.112277
## s11    16.171503
## s12    15.506118
winter1.opt$fitted
##           xhat    level      trend      season
## Jan 2 13365.43 13335.67 -3.3148310   33.079861
## Feb 2 13381.38 13313.47 -4.1266467   72.038194
## Mar 2 13285.24 13304.14 -4.3501070  -14.545139
## Apr 2 13101.36 13300.88 -4.3032784 -195.211806
## May 2 13319.62 13298.83 -4.2062882   24.996528
## Jun 2 13331.21 13296.10 -4.1428723   39.246528
## Jul 2 13310.43 13293.07 -4.0949965   21.454861
## Aug 2 13286.64 13296.78 -3.7597507   -6.378472
## Sep 2 13266.11 13318.69 -2.6564289  -49.920139
## Oct 2 13359.79 13329.62 -2.0725266   32.246528
## Nov 2 13315.48 13292.92 -3.5607589   26.121528
## Dec 2 13289.41 13276.65 -4.1070533   16.871528
## Jan 3 13281.93 13264.84 -4.4381529   21.534578
## Feb 3 13326.16 13261.68 -4.3830319   68.860242
## Mar 3 13220.81 13239.82 -5.1341812  -13.879163
## Apr 3 13156.89 13350.86 -0.1407574 -193.832455
## May 3 13489.83 13459.40  4.5303519   25.898401
## Jun 3 13362.86 13324.40 -1.4671310   39.927396
## Jul 3 13319.94 13296.33 -2.6103223   26.222577
## Aug 3 13293.34 13286.93 -2.9022279    9.312482
## Sep 3 13276.83 13319.81 -1.3640901  -41.616139
## Oct 3 13378.76 13366.96  0.7210684   11.081548
## Nov 3 13361.02 13343.00 -0.3396727   18.352372
## Dec 3 13335.06 13324.03 -1.1403803   12.162776
## Jan 4 13254.71 13237.21 -4.8231347   22.318485
## Feb 4 13283.99 13230.71 -4.8953474   58.177730
## Mar 4 13292.30 13239.47 -4.3082420   57.135094
## Apr 4 13215.24 13342.35  0.2986360 -127.402010
## May 4 13465.93 13517.51  7.8146156  -59.395140
## Jun 4 13573.69 13541.51  8.5099789   23.669437
## Jul 4 13543.26 13514.21  6.9711892   22.071225
## Aug 4 13590.25 13550.82  8.2447607   31.187195
## Sep 4 13483.98 13490.64  5.3038204  -11.961939
## Oct 4 13525.09 13522.64  6.4514174   -4.003842
## Nov 4 13531.45 13518.49  5.9955617    6.965064
## Dec 4 13468.62 13503.72  5.1033329  -40.211724
## Jan 5 13572.37 13544.44  6.6340976   21.291508
## Feb 5 13601.99 13529.75  5.7173265   66.527282
## Mar 5 13641.83 13514.37  4.8105978  122.652068
## Apr 5 13442.09 13460.32  2.2809433  -20.513081
## May 5 13437.98 13484.27  3.2121486  -49.505993
## Jun 5 13475.02 13470.74  2.4925479    1.785453
## Jul 5 13399.38 13361.51 -2.3095258   40.183395
## Aug 5 13303.93 13318.62 -4.0536096  -10.637554
## Sep 5 13311.68 13311.51 -4.1850941    4.358676
## Oct 5 13356.94 13368.96 -1.5357071  -10.486820
## Nov 5 13521.39 13522.00  5.1080935   -5.723818
## Dec 5 13533.59 13546.11  5.9247410  -18.441867
## Jan 6 13642.86 13625.52  9.0833203    8.253597
## Feb 6 13767.32 13701.72 11.9680437   53.632189
## Mar 6 13824.42 13725.28 12.4663061   86.676443
## Apr 6 13699.95 13696.52 10.6943966   -7.269891
## May 6 13708.05 13755.04 12.7498173  -59.739835
## Jun 6 13739.89 13792.58 13.8155429  -66.507509
## Jul 6 13850.55 13820.74 14.4319722   15.379808
## Aug 6 13784.31 13784.56 12.2565094  -12.507468
## Sep 6 13889.10 13833.24 13.8221585   42.037083
## Oct 6 13911.81 13815.35 12.4590184   83.998365
## Nov 6 13858.58 13839.72 12.9710214    5.890180
## Dec 6 13944.84 13903.22 15.1429080   26.478046
## Jan 7 14105.23 14035.76 20.1887695   49.278854
## Feb 7 14098.52 14019.19 18.6087884   60.718255
## Mar 7 13938.89 13866.18 11.2325208   61.477132
## Apr 7 13906.80 13873.76 11.0753111   21.961391
## May 7 13956.97 13986.12 15.4288843  -44.583559
## Jun 7 14044.06 14082.87 18.9241982  -57.740924
## Jul 7 14253.36 14243.89 25.0313498  -15.558658
## Aug 7 14357.85 14320.83 27.2624812    9.758498
xhat1.opt <- winter1.opt$fitted[,2]
#Forecast
forecast1 <- predict(winter1, n.ahead = 20)
forecast1.opt <- predict(winter1.opt, n.ahead = 20)
plot(training.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
     xlim=c(1,10),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 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  1043885.6333
## MSE    13048.5704
## RMSE     114.2303
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  692027.55495
## MSE1.opt    8650.34444
## RMSE1.opt     93.00723
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 1043885.6 13048.570  114.23034
## 2 Winter1 optimal  692027.6  8650.344   93.00723
#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)
RMSEtest1<-sqrt(MSEtesting1)

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)
RMSEtest1.opt<-sqrt(MSEtesting1.opt)

akurasi1.test <- matrix(c(SSEtesting1,MSEtesting1,RMSEtest1))
row.names(akurasi1)<- c("SSE", "MSE", "RMSE")
colnames(akurasi1) <- c("Akurasi")
akurasi1
##           Akurasi
## SSE  1043885.6333
## MSE    13048.5704
## RMSE     114.2303
akurasi1.test = data.frame(Model_Winter = c("Winter 1","Winter1 optimal"),
                            Nilai_SSE=c(SSEtesting1,SSEtesting1.opt),
                            Nilai_MSE=c(MSEtesting1,MSEtesting1.opt),Nilai_RMSE=c(RMSEtest1,RMSEtest1.opt))
akurasi1.test
##      Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1        Winter 1   2012713   2012713   1418.701
## 2 Winter1 optimal   1762844   1762844   1327.721

winter multiplikatif

#Pemulusan dengan winter multiplikatif 
winter2 <- HoltWinters(training.ts,alpha=0.2,beta=0.1,gamma=0.3,seasonal = "multiplicative")
winter2$fitted
##           xhat    level      trend    season
## Jan 2 13365.50 13335.67 -3.3148310 1.0024863
## Feb 2 13394.49 13326.27 -3.9233563 1.0054155
## Mar 2 13299.15 13318.07 -4.3508681 0.9989060
## Apr 2 13111.38 13311.29 -4.5941983 0.9853221
## May 2 13325.67 13305.40 -4.7236342 1.0018792
## Jun 2 13334.38 13299.94 -4.7968501 1.0029515
## Jul 2 13311.44 13294.87 -4.8244589 1.0016100
## Aug 2 13281.40 13292.35 -4.5936446 0.9995219
## Sep 2 13243.63 13297.08 -3.6612986 0.9962548
## Oct 2 13331.77 13302.33 -2.7706285 1.0024219
## Nov 2 13316.78 13294.02 -3.3246177 1.0019630
## Dec 2 13299.42 13286.34 -3.7593928 1.0012678
## Jan 3 13299.61 13278.11 -4.2073012 1.0019370
## Feb 3 13332.97 13270.78 -4.5188963 1.0050282
## Mar 3 13236.69 13259.30 -5.2147692 0.9986869
## Apr 3 13090.07 13288.40 -1.7839741 0.9852071
## May 3 13363.04 13335.73  3.1273589 1.0018130
## Jun 3 13359.43 13319.28  1.1701460 1.0029265
## Jul 3 13337.18 13312.59  0.3837520 1.0018187
## Aug 3 13312.00 13307.35 -0.1789246 1.0003629
## Sep 3 13276.35 13314.96  0.6008794 0.9970552
## Oct 3 13359.13 13331.34  2.1784377 1.0019206
## Nov 3 13352.20 13329.50  1.7766416 1.0015696
## Dec 3 13339.89 13327.04  1.3532576 1.0008625
## Jan 4 13320.35 13299.84 -1.5021379 1.0016547
## Feb 4 13340.20 13284.69 -2.8668101 1.0043952
## Mar 4 13295.11 13275.02 -3.5479136 1.0017810
## Apr 4 13166.34 13305.39 -0.1560554 0.9895611
## May 4 13379.21 13372.06  6.5269117 1.0000465
## Jun 4 13439.64 13401.15  8.7826085 1.0022156
## Jul 4 13453.08 13425.17 10.3064654 1.0013104
## Aug 4 13490.45 13463.02 13.0612803 1.0010659
## Sep 4 13466.23 13474.00 12.8525652 0.9984711
## Oct 4 13534.15 13499.02 14.0698822 1.0015582
## Nov 4 13537.48 13507.87 13.5477543 1.0011877
## Dec 4 13503.08 13513.53 12.7591510 0.9982839
## Jan 5 13549.79 13530.88 13.2183788 1.0004200
## Feb 5 13605.92 13541.74 12.9826957 1.0037768
## Mar 5 13625.10 13547.17 12.2271302 1.0048455
## Apr 5 13493.47 13543.85 10.6726572 0.9954958
## May 5 13589.58 13551.22 10.3416995 1.0020664
## Jun 5 13581.15 13525.92  6.7774206 1.0035807
## Jul 5 13527.54 13475.67  1.0748571 1.0037691
## Aug 5 13447.22 13438.18 -2.7813498 1.0008799
## Sep 5 13394.03 13405.78 -5.7431435 0.9995516
## Oct 5 13412.68 13403.43 -5.4035613 1.0010937
## Nov 5 13441.65 13436.65 -1.5414405 1.0004866
## Dec 5 13440.21 13457.17  0.6645353 0.9986905
## Jan 6 13508.00 13500.25  4.9058736 1.0002110
## Feb 6 13605.62 13553.74  9.7647816 1.0031050
## Mar 6 13659.95 13599.47 13.3611660 1.0034615
## Apr 6 13582.23 13632.37 15.3153315 0.9952040
## May 6 13690.95 13686.83 19.2294057 0.9988977
## Jun 6 13717.03 13717.48 20.3716409 0.9984844
## Jul 6 13772.66 13747.06 21.2923949 1.0003126
## Aug 6 13764.38 13767.62 21.2192769 0.9982263
## Sep 6 13825.39 13804.59 22.7943861 0.9998554
## Oct 6 13915.94 13829.91 23.0466637 1.0045466
## Nov 6 13913.37 13855.95 23.3464968 1.0024547
## Dec 6 13942.64 13884.61 23.8777849 1.0024556
## Jan 7 14037.44 13946.67 27.6955137 1.0045138
## Feb 7 14092.00 13976.07 27.8658916 1.0062883
## Mar 7 14045.26 13950.27 22.4997324 1.0051877
## Apr 7 13951.41 13950.44 20.2661523 0.9986192
## May 7 14015.63 13994.45 22.6411841 0.9998958
## Jun 7 14045.63 14031.57 24.0886547 0.9992869
## Jul 7 14133.32 14101.16 28.6392069 1.0002488
## Aug 7 14197.46 14170.53 32.7118272 0.9995931
xhat2 <- winter2$fitted[,2]

winter2.opt<- HoltWinters(training.ts, alpha= NULL,  beta = NULL, gamma = NULL, seasonal = "multiplicative")
winter2.opt$fitted
##           xhat    level      trend    season
## Jan 2 13365.50 13335.67 -3.3148310 1.0024863
## Feb 2 13381.64 13313.67 -4.1125233 1.0054155
## Mar 2 13285.40 13304.29 -4.3377707 0.9989060
## Apr 2 13101.47 13300.93 -4.2957168 0.9853221
## May 2 13319.62 13298.84 -4.2018017 1.0018792
## Jun 2 13331.19 13296.09 -4.1394646 1.0029515
## Jul 2 13310.37 13293.07 -4.0920444 1.0016100
## Aug 2 13286.60 13296.72 -3.7614210 0.9995219
## Sep 2 13265.84 13318.38 -2.6754773 0.9962548
## Oct 2 13359.55 13329.37 -2.0922864 1.0024219
## Nov 2 13315.79 13293.25 -3.5451672 1.0019630
## Dec 2 13289.70 13276.96 -4.0892419 1.0012678
## Jan 3 13281.91 13265.09 -4.4218381 1.0016019
## Feb 3 13326.05 13261.95 -4.3670506 1.0051648
## Mar 3 13221.48 13240.45 -5.0987651 0.9989525
## Apr 3 13155.20 13349.98 -0.2036759 0.9854246
## May 3 13490.66 13459.93  4.5001927 1.0019484
## Jun 3 13364.78 13326.15 -1.4045462 1.0030042
## Jul 3 13321.04 13297.34 -2.5750065 1.0019768
## Aug 3 13294.08 13287.38 -2.8901682 1.0007220
## Sep 3 13276.68 13319.41 -1.3990895 0.9968966
## Oct 3 13377.71 13366.25  0.6605926 1.0008086
## Nov 3 13360.93 13343.16 -0.3535850 1.0013584
## Dec 3 13335.28 13324.45 -1.1371407 1.0008981
## Jan 4 13255.74 13238.49 -4.7592636 1.0016628
## Feb 4 13284.08 13231.44 -4.8571759 1.0043469
## Mar 4 13293.23 13239.99 -4.2849705 1.0043462
## Apr 4 13214.11 13340.70  0.1990044 0.9904956
## May 4 13461.88 13516.25  7.6868617 0.9954110
## Jun 4 13574.09 13542.52  8.4802305 1.0017041
## Jul 4 13544.35 13515.39  6.9598493 1.0016268
## Aug 4 13591.28 13550.95  8.1808469 1.0023716
## Sep 4 13484.88 13490.97  5.2701784 0.9991587
## Oct 4 13524.28 13522.12  6.3753295 0.9996885
## Nov 4 13531.09 13518.50  5.9484333 1.0004913
## Dec 4 13466.88 13504.14  5.0813808 0.9968656
## Jan 5 13573.33 13545.63  6.6362917 1.0015537
## Feb 5 13603.82 13530.62  5.7116045 1.0049860
## Mar 5 13645.18 13514.44  4.7771847 1.0093170
## Apr 5 13442.55 13459.50  2.2269174 0.9985757
## May 5 13435.73 13482.91  3.1312955 0.9962697
## Jun 5 13473.88 13470.80  2.4804998 1.0000448
## Jul 5 13400.74 13363.46 -2.2090796 1.0029558
## Aug 5 13305.62 13320.39 -3.9537201 0.9991871
## Sep 5 13313.05 13312.38 -4.1273125 1.0003611
## Oct 5 13356.42 13368.36 -1.5603702 0.9992236
## Nov 5 13518.99 13520.15  4.9879527 0.9995454
## Dec 5 13531.63 13545.41  5.8539021 0.9985506
## Jan 6 13641.73 13625.28  9.0143752 1.0005458
## Feb 6 13767.56 13701.34 11.8774894 1.0039628
## Mar 6 13826.15 13724.49 12.3590411 1.0065009
## Apr 6 13699.86 13695.28 10.5837517 0.9995620
## May 6 13704.74 13753.24 12.6070519 0.9955610
## Jun 6 13735.55 13792.53 13.7461574 0.9948772
## Jul 6 13851.82 13823.22 14.4696490 1.0010214
## Aug 6 13785.33 13786.89 12.3005848 0.9989953
## Sep 6 13892.62 13834.63 13.8141498 1.0031896
## Oct 6 13915.21 13815.02 12.3867032 1.0063501
## Nov 6 13856.57 13837.04 12.7979704 1.0004863
## Dec 6 13943.31 13901.03 14.9841369 1.0019613
## Jan 7 14103.77 14032.86 19.9737351 1.0036245
## Feb 7 14098.86 14017.50 18.4646440 1.0044815
## Mar 7 13941.54 13866.74 11.2384621 1.0045797
## Apr 7 13907.76 13872.76 11.0157051 1.0017273
## May 7 13953.28 13983.21 15.2618861 0.9967717
## Jun 7 14038.83 14081.45 18.8052115 0.9956439
## Jul 7 14251.11 14244.65 24.9712335 0.9987024
## Aug 7 14358.33 14322.43 27.2260844 1.0006046
xhat2.opt <- winter2.opt$fitted[,2]
#Forecast
forecast2 <- predict(winter2, n.ahead = 20)
forecast2.opt <- predict(winter2.opt, n.ahead = 20)
#Plot time series
plot(training.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
     xlim=c(0,10),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 training
SSE2<-winter2$SSE
MSE2<-winter2$SSE/length(training.ts)
RMSE2<-sqrt(MSE2)
akurasi2 <- matrix(c(SSE2,MSE2,RMSE2))
row.names(akurasi2)<- c("SSE2", "MSE2", "RMSE2")
colnames(akurasi2) <- c("Akurasi lamda=0.2")
akurasi2
##       Akurasi lamda=0.2
## SSE2       1019201.1904
## MSE2         12740.0149
## RMSE2          112.8717
SSE2.opt<-winter2.opt$SSE
MSE2.opt<-winter2.opt$SSE/length(training.ts)
RMSE2.opt<-sqrt(MSE2.opt)
akurasi2.opt <- matrix(c(SSE2.opt,MSE2.opt,RMSE2.opt))
row.names(akurasi2.opt)<- c("SSE2.opt", "MSE2.opt", "RMSE2.opt")
colnames(akurasi2.opt) <- c("Akurasi")
akurasi2.opt
##                Akurasi
## SSE2.opt  700506.81234
## MSE2.opt    8756.33515
## RMSE2.opt     93.57529
akurasi2.train = data.frame(Model_Winter = c("Winter 2","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 2 1019201.2 12740.015  112.87167
## 2 winter2 optimal  700506.8  8756.335   93.57529
#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)
RMSEtest2<-sqrt(MSEtesting2)

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)
RMSEtest2.opt<-sqrt(MSEtesting2)

akurasi2.test <- matrix(c(SSEtesting2,MSEtesting2,RMSEtest2))
row.names(akurasi2)<- c("SSE", "MSE","RMSE")
colnames(akurasi2) <- c("Akurasi")
akurasi2
##           Akurasi
## SSE  1019201.1904
## MSE    12740.0149
## RMSE     112.8717
akurasi2.test = data.frame(Model_Winter = c("Winter 2","Winter2 optimal"),
                            Nilai_SSE=c(SSEtesting2,SSEtesting2.opt),
                            Nilai_MSE=c(MSEtesting2,MSEtesting2.opt), Nilai_RMSE=c(RMSEtest2,RMSEtest2.opt)) 
akurasi2.test
##      Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1        Winter 2   1989420   1989420   1410.468
## 2 Winter2 optimal   1762684   1762684   1410.468

Kesimpulan Winter

winter.dt = data.frame(winter_conclusion = c("Winter 1","Winter1 optimal","Winter 2","Winter2 optimal"), Nilai_SSE=c(SSEtesting1, SSEtesting1.opt, SSEtesting2,SSEtesting2.opt), Nilai_MSE=c(MSEtesting1, MSEtesting1.opt, MSEtesting2,MSEtesting2.opt), Nilai_RMSE=c(RMSEtest1, RMSEtest1.opt, RMSEtest2,RMSEtest2.opt)) 

winter.dt
##   winter_conclusion Nilai_SSE Nilai_MSE Nilai_RMSE
## 1          Winter 1   2012713   2012713   1418.701
## 2   Winter1 optimal   1762844   1762844   1327.721
## 3          Winter 2   1989420   1989420   1410.468
## 4   Winter2 optimal   1762684   1762684   1410.468

Metode Winter multiplikatif lebih cocok digunakan dilihat dari nilai SSE, MSE, dan RMSE yang lebih kecil