Pemulusan Data Deret Waktu
Pada kesempatan kali ini akan dilakukan analisis data deret waktu berupa pemulusan (smoothing) pada data pribadi peneliti yakni data mengenai nilai tukar mata uang rupiah terhadap USD per bulan di abad ke-21 (terhitung sejak januari 2001 hingga juli 2023).
Pengerjaan dimulai dengan memanggil library untuk analisis data deret waktu berikut.
Import Dataset
Eksplorasi Data
Eksplorasi dilakukan dengan beberapa fungsi. Melihat data menggunakan
fungsi View(), struktur data menggunakan fungsi
str(), dan dimensi data menggunakan fungsi
dim().
## 'data.frame': 271 obs. of 3 variables:
## $ Periode: int 1 2 3 4 5 6 7 8 9 10 ...
## $ bulan : chr "Januari" "Februari" "Maret" "April" ...
## $ USD : int 9450 9835 10400 11675 11058 11440 9525 8865 9675 10435 ...
## [1] 271 3
Mengubah data agar terbaca sebagai data deret waktu dengan fungsi
ts() .
Menampilkan ringkasan data dengan fungsi summary().
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 8279 9175 10320 11346 13776 16367
Membuat plot data deret waktu
Dari keseluruhan data tersebut diambil sebagiannya saja untuk eksplorasi yakni sebanyak 120 amatan yang merupakan data 10 tahun dari 2012-2022.
#Eksplorasi sebagian data
datanew<- data[145:264,]
datanew.ts <- ts(datanew$USD)
ts.plot(datanew.ts, xlab="Time Period ", ylab="Rupiah",
main = "Time Series Plot")
points(datanew.ts)Selanjutnya akan dilakukan smoothing atau pemulusan pada data deret waktu yang dipilih, dan hasil eksplorasi menunjukan data tersebut berpola trend sehingga yang akan dicobakan adalah pemulusan dengan DMA (double moving average) dan DES (double eksponensial smoothing). Adapun sebelum memasuki pemulusan tersebut akan dilakukan pembagian data terlebih dahulu
Pembagian Data
Pembagian data latih (train) dan data uji (test) dilakukan dengan perbandingan 85% data latih dan 15% data uji. Pembagian ini mengikuti keinginan pribadi dari peneliti agar data latih lebih dari 100 amatan dan ini menyesuaikan pada pola data yang ditunjukan.
Eksplorasi Setiap Data
Selanjutnya dilakukan eksplorasi data yang dilakukan pada keseluruhan data, data latih serta data uji menggunakan plot data deret waktu.
Eksplorasi data juga dapat dilakukan menggunakan package
ggplot2 dengan terlebih dahulu memanggil library
package ggplot2.
#Eksplorasi dengan GGPLOT
library(ggplot2)
ggplot() +
geom_line(data = train, aes(x = Periode, y = USD, col = "Data Latih")) +
geom_line(data = test, aes(x = Periode, y = USD, 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
Selanjutnya masuk ke metode pemulusan, metode pertama yang dilakukan adalah DMA dan pada metode ini perlu dilakukan SMA (Single Moving Average) terlebih dahulu.
Single Moving Average (SMA)
Ide dasar dari Single Moving Average (SMA) adalah data suatu periode dipengaruhi oleh data periode sebelumnya. Metode pemulusan ini cocok digunakan untuk pola data stasioner atau konstan. Prinsip dasar metode pemulusan ini adalah data pemulusan pada periode ke-t merupakan rata rata dari m buah data pada periode ke-t hingga periode ke (t-m+1). Data pemulusan pada periode ke-t selanjutnya digunakan sebagai nilai peramalan pada periode ke t+1
Pemulusan menggunakan metode SMA dilakukan dengan fungsi
SMA(). Dalam hal ini akan dilakukan pemulusan dengan
parameter m=4.
## Time Series:
## Start = 1
## End = 102
## Frequency = 1
## [1] NA NA NA 9701.50 9727.50 9793.00 9932.75 10233.25
## [9] 10686.00 11012.25 11437.00 11753.25 11906.50 12006.50 11863.25 11699.00
## [17] 11545.25 11629.00 11675.75 11722.00 11872.25 11900.50 12051.75 12232.50
## [25] 12335.75 12531.00 12753.00 12877.25 13023.75 13141.00 13240.25 13512.75
## [33] 13874.25 13951.00 14040.75 13982.75 13780.00 13719.00 13578.00 13430.25
## [41] 13372.50 13318.75 13273.25 13297.25 13143.00 13110.75 13228.00 13262.00
## [49] 13348.25 13422.25 13361.75 13334.50 13329.00 13322.00 13322.50 13328.50
## [57] 13371.25 13434.50 13482.25 13531.50 13511.75 13545.50 13606.00 13688.25
## [65] 13822.75 13997.00 14161.25 14369.75 14614.25 14820.00 14801.50 14744.00
## [73] 14529.75 14238.50 14214.75 14148.25 14226.50 14246.25 14191.75 14197.25
## [81] 14144.50 14111.25 14130.25 14046.25 13918.25 13974.75 14541.00 14855.00
## [89] 15122.75 15139.75 14711.25 14560.50 14606.75 14703.75 14572.50 14460.25
## [97] 14251.75 14136.50 14247.50 14338.25 14394.75 14461.50
Data pemulusan pada periode ke-t selanjutnya digunakan sebagai nilai peramalan pada periode ke t+1 sehingga hasil peramalan 1 periode kedepan adalah sebagai berikut.
## [1] NA NA NA NA 9701.50 9727.50 9793.00 9932.75
## [9] 10233.25 10686.00 11012.25 11437.00 11753.25 11906.50 12006.50 11863.25
## [17] 11699.00 11545.25 11629.00 11675.75 11722.00 11872.25 11900.50 12051.75
## [25] 12232.50 12335.75 12531.00 12753.00 12877.25 13023.75 13141.00 13240.25
## [33] 13512.75 13874.25 13951.00 14040.75 13982.75 13780.00 13719.00 13578.00
## [41] 13430.25 13372.50 13318.75 13273.25 13297.25 13143.00 13110.75 13228.00
## [49] 13262.00 13348.25 13422.25 13361.75 13334.50 13329.00 13322.00 13322.50
## [57] 13328.50 13371.25 13434.50 13482.25 13531.50 13511.75 13545.50 13606.00
## [65] 13688.25 13822.75 13997.00 14161.25 14369.75 14614.25 14820.00 14801.50
## [73] 14744.00 14529.75 14238.50 14214.75 14148.25 14226.50 14246.25 14191.75
## [81] 14197.25 14144.50 14111.25 14130.25 14046.25 13918.25 13974.75 14541.00
## [89] 14855.00 15122.75 15139.75 14711.25 14560.50 14606.75 14703.75 14572.50
## [97] 14460.25 14251.75 14136.50 14247.50 14338.25 14394.75 14461.50
Selanjutnya akan dilakukan peramalan sejumlah data uji yaitu 18 periode. Pada metode SMA, hasil peramalan 18 periode ke depan akan bernilai sama dengan hasil peramalan 1 periode kedepan. Dalam hal ini akan dilakukan pengguabungan data aktual train, data hasil pemulusan dan data hasil ramalan 18 periode kedepan.
data.gab<-cbind(aktual=c(train.ts,rep(NA,18)),pemulusan=c(data.sma,rep(NA,18)),ramalan=c(data.ramal,rep(data.ramal[length(data.ramal)],17)))
data.gab #forecast 24 periode ke depan## aktual pemulusan ramalan
## [1,] 9698 NA NA
## [2,] 9667 NA NA
## [3,] 9719 NA NA
## [4,] 9722 9701.50 NA
## [5,] 9802 9727.50 9701.50
## [6,] 9929 9793.00 9727.50
## [7,] 10278 9932.75 9793.00
## [8,] 10924 10233.25 9932.75
## [9,] 11613 10686.00 10233.25
## [10,] 11234 11012.25 10686.00
## [11,] 11977 11437.00 11012.25
## [12,] 12189 11753.25 11437.00
## [13,] 12226 11906.50 11753.25
## [14,] 11634 12006.50 11906.50
## [15,] 11404 11863.25 12006.50
## [16,] 11532 11699.00 11863.25
## [17,] 11611 11545.25 11699.00
## [18,] 11969 11629.00 11545.25
## [19,] 11591 11675.75 11629.00
## [20,] 11717 11722.00 11675.75
## [21,] 12212 11872.25 11722.00
## [22,] 12082 11900.50 11872.25
## [23,] 12196 12051.75 11900.50
## [24,] 12440 12232.50 12051.75
## [25,] 12625 12335.75 12232.50
## [26,] 12863 12531.00 12335.75
## [27,] 13084 12753.00 12531.00
## [28,] 12937 12877.25 12753.00
## [29,] 13211 13023.75 12877.25
## [30,] 13332 13141.00 13023.75
## [31,] 13481 13240.25 13141.00
## [32,] 14027 13512.75 13240.25
## [33,] 14657 13874.25 13512.75
## [34,] 13639 13951.00 13874.25
## [35,] 13840 14040.75 13951.00
## [36,] 13795 13982.75 14040.75
## [37,] 13846 13780.00 13982.75
## [38,] 13395 13719.00 13780.00
## [39,] 13276 13578.00 13719.00
## [40,] 13204 13430.25 13578.00
## [41,] 13615 13372.50 13430.25
## [42,] 13180 13318.75 13372.50
## [43,] 13094 13273.25 13318.75
## [44,] 13300 13297.25 13273.25
## [45,] 12998 13143.00 13297.25
## [46,] 13051 13110.75 13143.00
## [47,] 13563 13228.00 13110.75
## [48,] 13436 13262.00 13228.00
## [49,] 13343 13348.25 13262.00
## [50,] 13347 13422.25 13348.25
## [51,] 13321 13361.75 13422.25
## [52,] 13327 13334.50 13361.75
## [53,] 13321 13329.00 13334.50
## [54,] 13319 13322.00 13329.00
## [55,] 13323 13322.50 13322.00
## [56,] 13351 13328.50 13322.50
## [57,] 13492 13371.25 13328.50
## [58,] 13572 13434.50 13371.25
## [59,] 13514 13482.25 13434.50
## [60,] 13548 13531.50 13482.25
## [61,] 13413 13511.75 13531.50
## [62,] 13707 13545.50 13511.75
## [63,] 13756 13606.00 13545.50
## [64,] 13877 13688.25 13606.00
## [65,] 13951 13822.75 13688.25
## [66,] 14404 13997.00 13822.75
## [67,] 14413 14161.25 13997.00
## [68,] 14711 14369.75 14161.25
## [69,] 14929 14614.25 14369.75
## [70,] 15227 14820.00 14614.25
## [71,] 14339 14801.50 14820.00
## [72,] 14481 14744.00 14801.50
## [73,] 14072 14529.75 14744.00
## [74,] 14062 14238.50 14529.75
## [75,] 14244 14214.75 14238.50
## [76,] 14215 14148.25 14214.75
## [77,] 14385 14226.50 14148.25
## [78,] 14141 14246.25 14226.50
## [79,] 14026 14191.75 14246.25
## [80,] 14237 14197.25 14191.75
## [81,] 14174 14144.50 14197.25
## [82,] 14008 14111.25 14144.50
## [83,] 14102 14130.25 14111.25
## [84,] 13901 14046.25 14130.25
## [85,] 13662 13918.25 14046.25
## [86,] 14234 13974.75 13918.25
## [87,] 16367 14541.00 13974.75
## [88,] 15157 14855.00 14541.00
## [89,] 14733 15122.75 14855.00
## [90,] 14302 15139.75 15122.75
## [91,] 14653 14711.25 15139.75
## [92,] 14554 14560.50 14711.25
## [93,] 14918 14606.75 14560.50
## [94,] 14690 14703.75 14606.75
## [95,] 14128 14572.50 14703.75
## [96,] 14105 14460.25 14572.50
## [97,] 14084 14251.75 14460.25
## [98,] 14229 14136.50 14251.75
## [99,] 14572 14247.50 14136.50
## [100,] 14468 14338.25 14247.50
## [101,] 14310 14394.75 14338.25
## [102,] 14496 14461.50 14394.75
## [103,] NA NA 14461.50
## [104,] NA NA 14461.50
## [105,] NA NA 14461.50
## [106,] NA NA 14461.50
## [107,] NA NA 14461.50
## [108,] NA NA 14461.50
## [109,] NA NA 14461.50
## [110,] NA NA 14461.50
## [111,] NA NA 14461.50
## [112,] NA NA 14461.50
## [113,] NA NA 14461.50
## [114,] NA NA 14461.50
## [115,] NA NA 14461.50
## [116,] NA NA 14461.50
## [117,] NA NA 14461.50
## [118,] NA NA 14461.50
## [119,] NA NA 14461.50
## [120,] NA NA 14461.50
Adapun plot data deret waktu dari hasil peramalan yang dilakukan adalah sebagai berikut.
ts.plot(datanew.ts, xlab="Time Period ", ylab="Rupiah", main= "SMA N=4 Data Sales")
points(datanew.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)Setelah didapat hasil dari SMA, barulah kita berlanjut ke DMA.
Double Moving Average (DMA)
Metode pemulusan Double Moving Average (DMA) pada dasarnya mirip dengan SMA. Namun demikian, metode ini lebih cocok digunakan untuk pola data trend. Proses pemulusan dengan rata rata dalam metode ini dilakukan sebanyak 2 kali.
dma <- SMA(data.sma, n = 4)
At <- 2*data.sma - dma
Bt <- 2/(4-1)*(data.sma - dma)
data.dma<- At+Bt
data.ramal2<- c(NA, data.dma)
t = 1:18
f = c()
for (i in t) {
f[i] = At[length(At)] + Bt[length(Bt)]*(i)
}
data.gab2 <- cbind(aktual = c(train.ts,rep(NA,18)), pemulusan1 = c(data.sma,rep(NA,18)),pemulusan2 = c(data.dma, rep(NA,18)),At = c(At, rep(NA,18)), Bt = c(Bt,rep(NA,18)),ramalan = c(data.ramal2, f[-1]))
data.gab2## aktual pemulusan1 pemulusan2 At Bt ramalan
## [1,] 9698 NA NA NA NA NA
## [2,] 9667 NA NA NA NA NA
## [3,] 9719 NA NA NA NA NA
## [4,] 9722 9701.50 NA NA NA NA
## [5,] 9802 9727.50 NA NA NA NA
## [6,] 9929 9793.00 NA NA NA NA
## [7,] 10278 9932.75 10172.85 10076.81 96.041667 NA
## [8,] 10924 10233.25 10752.62 10544.88 207.750000 10172.85
## [9,] 11613 10686.00 11560.58 11210.75 349.833333 10752.62
## [10,] 11234 11012.25 11922.56 11558.44 364.125000 11560.58
## [11,] 11977 11437.00 12428.46 12031.88 396.583333 11922.56
## [12,] 12189 11753.25 12638.46 12284.38 354.083333 12428.46
## [13,] 12226 11906.50 12538.58 12285.75 252.833333 12638.46
## [14,] 11634 12006.50 12390.98 12237.19 153.791667 12538.58
## [15,] 11404 11863.25 11831.38 11844.12 -12.750000 12390.98
## [16,] 11532 11699.00 11415.98 11529.19 -113.208333 11831.38
## [17,] 11611 11545.25 11156.50 11312.00 -155.500000 11415.98
## [18,] 11969 11629.00 11537.12 11573.88 -36.750000 11156.50
## [19,] 11591 11675.75 11739.92 11714.25 25.666667 11537.12
## [20,] 11717 11722.00 11853.67 11801.00 52.666667 11739.92
## [21,] 12212 11872.25 12118.08 12019.75 98.333333 11853.67
## [22,] 12082 11900.50 12080.29 12008.38 71.916667 12118.08
## [23,] 12196 12051.75 12326.96 12216.88 110.083333 12080.29
## [24,] 12440 12232.50 12596.25 12450.75 145.500000 12326.96
## [25,] 12625 12335.75 12678.46 12541.38 137.083333 12596.25
## [26,] 12863 12531.00 12936.42 12774.25 162.166667 12678.46
## [27,] 13084 12753.00 13236.23 13042.94 193.291667 12936.42
## [28,] 12937 12877.25 13298.92 13130.25 168.666667 13236.23
## [29,] 13211 13023.75 13402.92 13251.25 151.666667 13298.92
## [30,] 13332 13141.00 13461.42 13333.25 128.166667 13402.92
## [31,] 13481 13240.25 13523.06 13409.94 113.125000 13461.42
## [32,] 14027 13512.75 13984.94 13796.06 188.875000 13523.06
## [33,] 14657 13874.25 14594.56 14306.44 288.125000 13984.94
## [34,] 13639 13951.00 14461.73 14257.44 204.291667 14594.56
## [35,] 13840 14040.75 14367.52 14236.81 130.708333 14461.73
## [36,] 13795 13982.75 14017.02 14003.31 13.708333 14367.52
## [37,] 13846 13780.00 13515.62 13621.38 -105.750000 14017.02
## [38,] 13395 13719.00 13449.62 13557.38 -107.750000 13515.62
## [39,] 13276 13578.00 13266.44 13391.06 -124.625000 13449.62
## [40,] 13204 13430.25 13102.65 13233.69 -131.041667 13266.44
## [41,] 13615 13372.50 13118.44 13220.06 -101.625000 13102.65
## [42,] 13180 13318.75 13141.88 13212.62 -70.750000 13118.44
## [43,] 13094 13273.25 13147.52 13197.81 -50.291667 13141.88
## [44,] 13300 13297.25 13266.94 13279.06 -12.125000 13147.52
## [45,] 12998 13143.00 12951.23 13027.94 -76.708333 13266.94
## [46,] 13051 13110.75 12951.90 13015.44 -63.541667 12951.23
## [47,] 13563 13228.00 13283.42 13261.25 22.166667 12951.90
## [48,] 13436 13262.00 13388.77 13338.06 50.708333 13283.42
## [49,] 13343 13348.25 13533.25 13459.25 74.000000 13388.77
## [50,] 13347 13422.25 13600.79 13529.38 71.416667 13533.25
## [51,] 13321 13361.75 13383.73 13374.94 8.791667 13600.79
## [52,] 13327 13334.50 13280.85 13302.31 -21.458333 13383.73
## [53,] 13321 13329.00 13274.21 13296.12 -21.916667 13280.85
## [54,] 13319 13322.00 13297.31 13307.19 -9.875000 13274.21
## [55,] 13323 13322.50 13315.00 13318.00 -3.000000 13297.31
## [56,] 13351 13328.50 13333.50 13331.50 2.000000 13315.00
## [57,] 13492 13371.25 13429.90 13406.44 23.458333 13333.50
## [58,] 13572 13434.50 13551.69 13504.81 46.875000 13429.90
## [59,] 13514 13482.25 13612.46 13560.38 52.083333 13551.69
## [60,] 13548 13531.50 13659.21 13608.12 51.083333 13612.46
## [61,] 13413 13511.75 13548.00 13533.50 14.500000 13659.21
## [62,] 13707 13545.50 13591.75 13573.25 18.500000 13548.00
## [63,] 13756 13606.00 13701.52 13663.31 38.208333 13591.75
## [64,] 13877 13688.25 13855.54 13788.62 66.916667 13701.52
## [65,] 13951 13822.75 14084.62 13979.88 104.750000 13855.54
## [66,] 14404 13997.00 14361.17 14215.50 145.666667 14084.62
## [67,] 14413 14161.25 14567.81 14405.19 162.625000 14361.17
## [68,] 14711 14369.75 14839.85 14651.81 188.041667 14567.81
## [69,] 14929 14614.25 15162.06 14942.94 219.125000 14839.85
## [70,] 15227 14820.00 15367.81 15148.69 219.125000 15162.06
## [71,] 14339 14801.50 15051.71 14951.62 100.083333 15367.81
## [72,] 14481 14744.00 14742.44 14743.06 -0.625000 15051.71
## [73,] 14072 14529.75 14206.31 14335.69 -129.375000 14742.44
## [74,] 14062 14238.50 13671.94 13898.56 -226.625000 14206.31
## [75,] 14244 14214.75 13853.08 13997.75 -144.666667 13671.94
## [76,] 14215 14148.25 13923.98 14013.69 -89.708333 13853.08
## [77,] 14385 14226.50 14259.00 14246.00 13.000000 13923.98
## [78,] 14141 14246.25 14308.44 14283.56 24.875000 14259.00
## [79,] 14026 14191.75 14172.69 14180.31 -7.625000 14308.44
## [80,] 14237 14197.25 14166.94 14179.06 -12.125000 14172.69
## [81,] 14174 14144.50 14060.44 14094.06 -33.625000 14166.94
## [82,] 14008 14111.25 14028.02 14061.31 -33.291667 14060.44
## [83,] 14102 14130.25 14104.31 14114.69 -10.375000 14028.02
## [84,] 13901 14046.25 13943.23 13984.44 -41.208333 14104.31
## [85,] 13662 13918.25 13696.17 13785.00 -88.833333 13943.23
## [86,] 14234 13974.75 13903.71 13932.12 -28.416667 13696.17
## [87,] 16367 14541.00 15242.56 14961.94 280.625000 13903.71
## [88,] 15157 14855.00 15742.92 15387.75 355.166667 15242.56
## [89,] 14733 15122.75 15955.04 15622.12 332.916667 15742.92
## [90,] 14302 15139.75 15514.96 15364.88 150.083333 15955.04
## [91,] 14653 14711.25 14301.35 14465.31 -163.958333 15514.96
## [92,] 14554 14560.50 14022.06 14237.44 -215.375000 14301.35
## [93,] 14918 14606.75 14360.40 14458.94 -98.541667 14022.06
## [94,] 14690 14703.75 14800.73 14761.94 38.791667 14360.40
## [95,] 14128 14572.50 14508.54 14534.12 -25.583333 14800.73
## [96,] 14105 14460.25 14250.98 14334.69 -83.708333 14508.54
## [97,] 14084 14251.75 13842.90 14006.44 -163.541667 14250.98
## [98,] 14229 14136.50 13771.92 13917.75 -145.833333 13842.90
## [99,] 14572 14247.50 14203.33 14221.00 -17.666667 13771.92
## [100,] 14468 14338.25 14496.17 14433.00 63.166667 14203.33
## [101,] 14310 14394.75 14587.25 14510.25 77.000000 14496.17
## [102,] 14496 14461.50 14629.83 14562.50 67.333333 14587.25
## [103,] NA NA NA NA NA 14629.83
## [104,] NA NA NA NA NA 14697.17
## [105,] NA NA NA NA NA 14764.50
## [106,] NA NA NA NA NA 14831.83
## [107,] NA NA NA NA NA 14899.17
## [108,] NA NA NA NA NA 14966.50
## [109,] NA NA NA NA NA 15033.83
## [110,] NA NA NA NA NA 15101.17
## [111,] NA NA NA NA NA 15168.50
## [112,] NA NA NA NA NA 15235.83
## [113,] NA NA NA NA NA 15303.17
## [114,] NA NA NA NA NA 15370.50
## [115,] NA NA NA NA NA 15437.83
## [116,] NA NA NA NA NA 15505.17
## [117,] NA NA NA NA NA 15572.50
## [118,] NA NA NA NA NA 15639.83
## [119,] NA NA NA NA NA 15707.17
## [120,] NA NA NA NA NA 15774.50
Hasil pemulusan menggunakan metode DMA divisualisasikan sebagai berikut
ts.plot(datanew.ts, xlab="Time Period ", ylab="Rupiah", main= "DMA N=4 Data Sales")
points(datanew.ts)
lines(data.gab2[,3],col="green",lwd=2)
lines(data.gab2[,6],col="red",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), lty=8, col=c("black","green","red"), cex=0.8)Selanjutnya dilakukan perhitungan akurasi yakni dengan ukuran akurasi Sum Squares Error (SSE), Mean Square Error (MSE) dan Mean Absolute Percentage Error (MAPE). Perhitungan akurasi dilakukan baik pada data latih maupun pada data uji.
#Menghitung nilai keakuratan data latih
error_train.dma = train.ts-data.ramal2[1:length(train.ts)]
SSE_train.dma = sum(error_train.dma[8:length(train.ts)]^2)
MSE_train.dma = mean(error_train.dma[8:length(train.ts)]^2)
MAPE_train.dma = mean(abs((error_train.dma[8:length(train.ts)]/train.ts[8:length(train.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 2.431937e+07
## MSE 2.559933e+05
## MAPE 2.448192e+00
Perhitungan akurasi pada data latih menggunakan nilai MAPE menghasilkan nilai MAPE yang kurang dari 10 sehingga dikategorikan sangat baik. Selanjutnya, perhitungan nilai akurasi dilakukan pada data uji.
#Menghitung nilai keakuratan data uji
error_test.dma = test.ts-data.gab2[103:120,6]
SSE_test.dma = sum(error_test.dma^2)
MSE_test.dma = mean(error_test.dma^2)
MAPE_test.dma = mean(abs((error_test.dma/test.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 5.427430e+06
## MSE 3.015239e+05
## MAPE 3.336995e+00
Perhitungan akurasi menggunakan data latih menghasilkan nilai MAPE yang kurang dari 10 sehingga nilai akurasi ini dapat dikategorikan sebagai sangat baik.
Selanjutnya dicobakan teknik pemulusan kedua yakni DES.
Double Exponential Smoothing
Metode Exponential Smoothing adalah metode pemulusan dengan
melakukan pembobotan menurun secara eksponensial. Nilai yang lebih baru
diberi bobot yang lebih besar dari nilai terdahulu. Terdapat satu atau
lebih parameter pemulusan yang ditentukan secara eksplisit, dan hasil
pemilihan parameter tersebut akan menentukan bobot yang akan diberikan
pada nilai pengamatan. Ada dua macam model, yaitu model tunggal atau
biasa disebut Single Exponential Smoothing (SES) dan model
ganda yang disebut Double Exponential Smoothing (DES). Pada
pemulusan ini dicobakan DES karena SES merupakan metode pemulusan yang
tepat digunakan untuk data dengan pola stasioner atau konstan sementara
DES digunakan untuk data yang memiliki pola tren. Metode DES adalah
metode semacam SES, hanya saja dilakukan dua kali, yaitu pertama untuk
tahapan ‘level’ dan kedua untuk tahapan ‘tren’. Pemulusan menggunakan
metode ini akan menghasilkan peramalan tidak konstan untuk periode
berikutnya. Adapun pemulusan dengan metode DES kali ini akan menggunakan
fungsi HoltWinters(). Disini saya mencobakan beberapa
pemulusan dengan lamda dan gamma berbeda kemudian dilakukan des
optimumnya dengan lamda dan gamma yang dikosongkan agar otomatis
terisi.
#Lamda=0.2 dan gamma=0.2
des.1<- HoltWinters(train.ts, gamma = FALSE, beta = 0.2, alpha = 0.2)
plot(des.1)## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 103 14350.73 13648.98 15052.48 13277.50 15423.96
## 104 14327.58 13605.90 15049.25 13223.87 15431.29
## 105 14304.43 13556.48 15052.38 13160.54 15448.31
## 106 14281.28 13500.35 15062.21 13086.95 15475.61
## 107 14258.13 13437.36 15078.91 13002.86 15513.40
## 108 14234.98 13367.53 15102.43 12908.34 15561.63
## 109 14211.83 13291.07 15132.59 12803.65 15620.02
## 110 14188.68 13208.24 15169.12 12689.23 15688.14
## 111 14165.53 13119.39 15211.68 12565.59 15765.48
## 112 14142.38 13024.86 15259.90 12433.28 15851.48
## 113 14119.23 12925.03 15313.44 12292.85 15945.62
## 114 14096.09 12820.22 15371.95 12144.81 16047.36
## 115 14072.94 12710.75 15435.12 11989.65 16156.22
## 116 14049.79 12596.91 15502.66 11827.81 16271.76
## 117 14026.64 12478.97 15574.31 11659.68 16393.59
## 118 14003.49 12357.14 15649.83 11485.62 16521.35
## 119 13980.34 12231.65 15729.03 11305.95 16654.73
## 120 13957.19 12102.66 15811.72 11120.93 16793.44
#Lamda=0.6 dan gamma=0.3
des.2<- HoltWinters(train.ts, gamma = FALSE, beta = 0.3, alpha = 0.6)
plot(des.2)## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 103 14480.66 13931.245 15030.07 13640.405 15320.91
## 104 14510.05 13813.270 15206.83 13444.418 15575.68
## 105 14539.44 13665.548 15413.33 13202.937 15875.94
## 106 14568.83 13493.669 15643.99 12924.512 16213.15
## 107 14598.22 13301.334 15895.11 12614.802 16581.65
## 108 14627.62 13091.031 16164.20 12277.612 16977.62
## 109 14657.01 12864.511 16449.50 11915.621 17398.39
## 110 14686.40 12623.069 16749.73 11530.808 17841.99
## 111 14715.79 12367.701 17063.88 11124.698 18306.88
## 112 14745.18 12099.209 17391.15 10698.516 18791.85
## 113 14774.57 11818.251 17730.90 10253.268 19295.88
## 114 14803.97 11525.384 18082.55 9789.808 19818.12
## 115 14833.36 11221.088 18445.63 9308.868 20357.85
## 116 14862.75 10905.782 18819.71 8811.091 20914.41
## 117 14892.14 10579.840 19204.44 8297.046 21487.24
## 118 14921.53 10243.593 19599.47 7767.242 22075.82
## 119 14950.92 9897.344 20004.50 7222.140 22679.71
## 120 14980.32 9541.366 20419.26 6662.161 23298.47
Selanjutnya jika ingin membandingkan plot data latih dan data uji adalah sebagai berikut.
#Visually evaluate the prediction
plot(datanew.ts)
lines(des.2$fitted[,1], lty=2, col="blue")
lines(ramalandes2$mean, col="red")Untuk mendapatkan nilai parameter optimum dari DES, argumen
alpha dan beta dapat dibuat NULL
seperti berikut.
## Holt-Winters exponential smoothing with trend and without seasonal component.
##
## Call:
## HoltWinters(x = train.ts, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.8671094
## beta : 0.01435857
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 14476.6333
## b 17.3523
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 103 14493.99 13991.97 14996.00 13726.22 15261.75
## 104 14511.34 13842.77 15179.91 13488.85 15533.83
## 105 14528.69 13724.01 15333.37 13298.03 15759.35
## 106 14546.04 13622.10 15469.99 13132.99 15959.10
## 107 14563.39 13531.14 15595.65 12984.69 16142.10
## 108 14580.75 13447.95 15713.54 12848.28 16313.21
## 109 14598.10 13370.59 15825.61 12720.79 16475.41
## 110 14615.45 13297.78 15933.13 12600.24 16630.66
## 111 14632.80 13228.60 16037.01 12485.26 16780.35
## 112 14650.16 13162.40 16137.91 12374.83 16925.48
## 113 14667.51 13098.68 16236.34 12268.19 17066.82
## 114 14684.86 13037.05 16332.67 12164.75 17204.97
## 115 14702.21 12977.19 16427.24 12064.02 17340.41
## 116 14719.57 12918.86 16520.27 11965.63 17473.50
## 117 14736.92 12861.86 16611.98 11869.26 17604.58
## 118 14754.27 12806.00 16702.54 11774.65 17733.89
## 119 14771.62 12751.15 16792.10 11681.58 17861.67
## 120 14788.97 12697.18 16880.77 11589.85 17988.09
#Visually evaluate the prediction optimum
plot(datanew.ts)
lines(des.opt$fitted[,1], lty=2, col="blue")
lines(ramalandesopt$mean, col="red")Selanjutnya akan dilakukan perhitungan akurasi pada data latih maupun data uji dengan ukuran akurasi SSE, MSE dan MAPE.
Akurasi Data Latih
#Akurasi Data Training
ssedes.train1<-des.1$SSE
msedes.train1<-ssedes.train1/length(train.ts)
sisaandes1<-ramalandes1$residuals
head(sisaandes1)## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA NA 83.0000 97.0800 181.4608 288.7070
mapedes.train1 <- sum(abs(sisaandes1[3:length(train.ts)]/train.ts[3:length(train.ts)])
*100)/length(train.ts)
akurasides.1 <- matrix(c(ssedes.train1,msedes.train1,mapedes.train1))
row.names(akurasides.1)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.1) <- c("Akurasi lamda=0.2 dan gamma=0.2")
akurasides.1## Akurasi lamda=0.2 dan gamma=0.2
## SSE 2.968458e+07
## MSE 2.910253e+05
## MAPE 3.058644e+00
ssedes.train2<-des.2$SSE
msedes.train2<-ssedes.train2/length(train.ts)
sisaandes2<-ramalandes2$residuals
head(sisaandes2)## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA NA 83.0000 52.2600 107.5572 157.3158
mapedes.train2 <- sum(abs(sisaandes2[3:length(train.ts)]/train.ts[3:length(train.ts)])
*100)/length(train.ts)
akurasides.2 <- matrix(c(ssedes.train2,msedes.train2,mapedes.train2))
row.names(akurasides.2)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.2) <- c("Akurasi lamda=0.6 dan gamma=0.3")
akurasides.2## Akurasi lamda=0.6 dan gamma=0.3
## SSE 1.819638e+07
## MSE 1.783959e+05
## MAPE 1.954768e+00
Hasil akurasi dari data latih didapatkan skenario 2 dengan lamda=0.6 dan gamma=0.3 memiliki hasil yang lebih baik. Namun untuk kedua skenario dapat dikategorikan peramalan sangat baik berdasarkan nilai MAPE-nya.
Akurasi Data Uji
## Time Series:
## Start = 103
## End = 120
## Frequency = 1
## [1] -140.272399 -46.421712 -2.571026 82.279660 -81.869654
## [6] -34.018968 -169.168281 -182.317595 -183.466909 -275.616223
## [11] -424.765537 -751.914850 -885.064164 -825.213478 -1220.362792
## [16] -1538.512106 -1756.661419 -1773.810733
SSEtestingdes1<-sum(selisihdes1^2)
MSEtestingdes1<-SSEtestingdes1/length(test$USD)
MAPEtestingdes1<-sum(abs(selisihdes1/test$USD)*100)/length(test$USD)
selisihdes2<-ramalandes2$mean-test$USD
selisihdes2## Time Series:
## Start = 103
## End = 120
## Frequency = 1
## [1] -10.34341 136.04829 232.43999 369.83169 258.22338 358.61508
## [7] 276.00678 315.39848 366.79018 327.18188 230.57358 -44.03472
## [13] -124.64302 -12.25132 -354.85962 -620.46792 -786.07622 -750.68452
SSEtestingdes2<-sum(selisihdes2^2)
MSEtestingdes2<-SSEtestingdes2/length(test$USD)
MAPEtestingdes2<-sum(abs(selisihdes2/test$USD)*100)/length(test$USD)
selisihdesopt<-ramalandesopt$mean-test$USD
selisihdesopt## Time Series:
## Start = 103
## End = 120
## Frequency = 1
## [1] 2.985636 137.337935 221.690235 347.042534 223.394834 311.747134
## [7] 217.099433 244.451733 283.804032 232.156332 123.508631 -163.139069
## [13] -255.786770 -155.434470 -510.082171 -787.729871 -965.377572 -942.025272
SSEtestingdesopt<-sum(selisihdesopt^2)
MSEtestingdesopt<-SSEtestingdesopt/length(test$USD)
MAPEtestingdesopt<-sum(abs(selisihdesopt/test$USD)*100)/length(test$USD)
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 1.250664e+07 2.585081e+06 3.408400e+06
## MSE 6.948131e+05 1.436156e+05 1.893556e+05
## MAPE 3.784652e+00 2.076933e+00 2.263921e+00
Dengan demikian telah dicobakan kedua teknik dan dapat kita perhatikan MAPE-nya untuk menentukan yang lebih baik dan disini tampak MAPE pada DES lebih baik dari DMA terutama ketika DES optimum atau DES dengan parameter kedua yang dicobakan
Sekian & Terimakasih