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
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 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 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))
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)
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)
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
#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
#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
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)
#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
#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
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