1. Intro

1.1 Single Exponential Smoothing

Single Exponential Smoothing atau Simple Exponential Smoothing digunakan untuk peramalan jangka pendek. Model mengasumsikan bahwa data berfluktuasi di sekitar nilai mean yang tetap, tanpa trend atau pola pertumbuhan konsisten. Tidak seperti Moving Average, Exponential Smoothing memberikan penekanan yang lebih besar kepada time series saat ini melalui penggunaan sebuah konstanta smoothing (penghalus). Konstanta smoothing mungkin berkisar dari 0 ke 1. Nilai yang dekat dengan 1 memberikan penekanan terbesar pada nilai aktual sedangkan nilai yang dekat dengan 0 memberi penekanan pada titik data sebelumnya.

Rumus untuk Simple Exponential Smoothing adalah:

\[S_t = \alpha \cdot X_t + (1-\alpha) \cdot S_{t-1}\]

dimana:

  • St = peramalan untuk periode t

  • Xt + (1-α) = Nilai aktual time series

  • Ft-1 = peramalan pada waktu t-1 (waktu sebelumnya)

  • α = konstanta perataan antara 0 dan 1

1.2 Double Exponential Smoothing

Metode ini digunakan ketika berbentuk data trend. Ada dua metode dalam Double Exponential Smoothing, yaitu :

  1. Metode Linier Satu Parameter dari Brown’s

Metode ini dikembangkan oleh Brown’s untuk mengatasi perbedaan yang muncul antara data aktual dan nilai peramalan apabila ada trend pada poltnya. Dasar pemikiran dari pemulusan eksponensial linier dari Brown’s adalah serupa dengan rata-rata bergerak linier (Linier Moving Average), karena kedua nilai pemulusan tunggal dan ganda ketinggalan dari data yang sebenarnya bilamana terdapat unsur trend, perbedaan antara nilai pemulusan tunggal dan ganda ditambahkan kepada nilai pemulusan dan disesuaikan untuk trend.

  1. Metode Dua Parameter dari Holt

Metode ini nilai trend tidak dimuluskan dengan pemulusan ganda secara langsung, tetapi proses pemulusan trend dilakuakan dengan parameter berbeda dengan parameter pada pemulusan data asli.


Data yang digunakan dalam analisis peramalan dengan menggunakan metode Single Exponential Smoothing dan Double Exponential Smoothing adalah data volume penumpang KA Jabodetabek tahun 2012 hingga 2017.

2. Input Data

data=read.delim("clipboard")
data

Data tersebut akan dikonversi menjadi data runtun waktu.

series=ts(data, start=c(2012,1), end=c(2017,8),freq=12)
series=series[,-1]
series
##        Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
## 2012  9779  9840 11285 11271 11872 12034 12391 11471 11556 11501 10650 10438
## 2013 10089 10281 11240 11529 11767 11817 15407 14321 15113 15531 15487 15901
## 2014 15176 14856 17471 16671 16781 17848 16585 17091 18253 19079 18605 20080
## 2015 19244 17640 21290 21171 22177 22207 21171 22295 22021 22964 22355 22996
## 2016 22238 21229 23206 23149 24401 23821 21574 23923 23570 24533 24104 24841
## 2017 24185 21743 25775 25411 27385 24432 27016 27679
plot(series)

Dapat dilihat bahwa pola data volume penumpang KA tersebut dari tahun ke tahun cenderung mengalami kenaikan. Sehingga pola data trennya naik.


3. Pemodelan Single Exponential Smoothing

Berikut akan dilakukan prediksi menggunakan model Single Exponential Smoothing dengan α = 0.3.

3.1 Nilai Prediksi

library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
# Pemodelan Single exponential smoothing
ModelSES  <- HoltWinters(series, alpha=0.3, beta=FALSE, gamma=FALSE) 
ModelSES
## Holt-Winters exponential smoothing without trend and without seasonal component.
## 
## Call:
## HoltWinters(x = series, alpha = 0.3, beta = FALSE, gamma = FALSE)
## 
## Smoothing parameters:
##  alpha: 0.3
##  beta : FALSE
##  gamma: FALSE
## 
## Coefficients:
##       [,1]
## a 26270.88
#mencari nilai prediksinya
Xhat <- ModelSES$fitted[,2] 
Xhat
##           Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
## 2012           9779.00  9797.30 10243.61 10551.83 10947.88 11273.72 11608.90
## 2013 11025.02 10744.22 10605.25 10795.68 11015.67 11241.07 11413.85 12611.79
## 2014 15011.96 15061.17 14999.62 15741.03 16020.02 16248.32 16728.22 16685.26
## 2015 18649.25 18827.68 18471.37 19316.96 19873.17 20564.32 21057.12 21091.29
## 2016 22385.74 22341.42 22007.69 22367.18 22601.73 23141.51 23345.36 22813.95
## 2017 24103.36 24127.85 23412.40 24121.18 24508.12 25371.19 25089.43 25667.40
##           Sep      Oct      Nov      Dec
## 2012 11567.53 11564.07 11545.15 11276.60
## 2013 13124.56 13721.09 14264.06 14630.94
## 2014 16806.98 17240.79 17792.25 18036.07
## 2015 21452.40 21622.98 22025.29 22124.20
## 2016 23146.67 23273.67 23651.47 23787.23
## 2017

Kemudian, hasil ramalan untuk satu periode ke depan yaitu pada bulan September tahun 2017 adalah

#untuk menampilkan ramalan
forecast<- predict(ModelSES, n.ahead=1) 
forecast
##           Sep
## 2017 26270.88

Dapat dilihat bahwa pada data ke-69 yaitu bulan September tahun 2017, diramalkan volume penumpang kereta api Jabodetabek adalah sebanyak 26270,88 atau dibulatkan sebanyak 26271. Yang artinya volume penumpang kereta api mengalami penuruan sebesar 1408 dari bulan Agustus 2017.

3.2 Evaluasi Model

Untuk mengetahui metode peramalan terbaik, maka dapat dilihat dari nilai SSE, MSE, dan RMSE terkecil. Jika nilai-nilai tersebut semakin kecil, maka peramalannya pun semakin baik, karena tingkat kesalahannya lebih kecil.

#mencari error, sse, mse, rmse
error<- residuals(ModelSES) 
error
##              Jan         Feb         Mar         Apr         May         Jun
## 2012                61.00000  1487.70000  1027.39000  1320.17300  1086.12110
## 2013  -936.02346  -463.21642   634.74850   733.32395   751.32677   575.92874
## 2014   164.03930  -205.17249  2471.37926   929.96548   760.97584  1599.68308
## 2015   594.74771 -1187.67660  2818.62638  1854.03847  2303.82693  1642.67885
## 2016  -147.74042 -1112.41829  1198.30720   781.81504  1799.27053   679.48937
## 2017    81.64170 -2384.85081  2362.60443  1289.82310  2876.87617  -939.18668
##              Jul         Aug         Sep         Oct         Nov         Dec
## 2012  1117.28477  -137.90066   -11.53046   -63.07132  -895.14993  -838.60495
## 2013  3993.15012  1709.20508  1988.44356  1809.91049  1222.93734  1270.05614
## 2014  -143.22184   405.74471  1446.02130  1838.21491   812.75044  2043.92531
## 2015   113.87519  1203.71264   568.59884  1341.01919   329.71343   871.79940
## 2016 -1771.35744  1109.04979   423.33485  1259.33440   452.53408  1053.77385
## 2017  1926.56932  2011.59853
SSE<- ModelSES$SSE
SSE
## [1] 131691218
MSE<- mean(error^2)
MSE
## [1] 1965541
RMSE<- sqrt(MSE)
RMSE
## [1] 1401.977

Dapat diketahui bahwa nilai SSE, MSE, dan RMSE data volume penumpang KA Jabodetabek dengan α = 0,3 berturut-turut adalah sebesar 131691218 ; 1965541 ; 1401,977.


3.3 Plot Model SES

Selanjutnya melihat plot data asli dan data prediksi metode Single Exponential Smoothing dengan α = 0,3.

#menampilkan plot data asli dan hasil prediksi
plot(ModelSES)

Dapat dilihat bahwa pola data tren hasil prediksi volume penumpang KA Jabodetabek mengalami kenaikan. Tetapi, karena data prediksinya cenderung tidak mendekati data aslinya, maka penggunaan metode Single Exponential Smoothing dengan α = 0,3 kurang baik untuk meramalkan volume penumpang pada periode selanjutnya.

Selanjutnya dapat melakukan trial and error konstanta perataan, α, untuk medapatkan model terbaik.


4. Pemodelan Double Exponential Smoothing

Berikut akan dilakukan prediksi menggunakan model Double Exponential Smoothing dengan * α = 0.3 dan β = 0,5

  • α = 0.4 dan β = 0,6

4.1 Model 1

# peramalan Double Exponential smoothing
#alpha = 0.3 ; beta = 0.5
modelDES.1 <- HoltWinters(series, alpha=0.3, beta=0.5, gamma=FALSE) 

Xhat.1 <- modelDES.1$fitted[,2]
Xhat.1
##           Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
## 2012                    9840.00 10316.20 10790.66 11375.13 11907.39 12406.07
## 2013 11135.57 10526.63 10092.32 10104.31 10369.75 10800.85 11262.54 12745.90
## 2014 16815.34 16730.85 16342.48 16632.14 16720.74 16808.30 17185.59 17170.16
## 2015 19337.68 19710.33 19420.03 20044.82 20633.24 21427.61 22105.07 22283.78
## 2016 23010.55 22856.66 22353.44 22425.62 22576.10 23142.97 23554.49 23208.42
## 2017 24522.92 24634.80 23913.05 24291.91 24670.38 25638.60 25692.42 26316.22
##           Sep      Oct      Nov      Dec
## 2012 12476.88 12401.07 12204.74 11706.44
## 2013 13857.61 14942.91 15853.54 16429.40
## 2014 17223.38 17589.38 18192.92 18606.11
## 2015 22579.17 22661.11 22905.35 22902.42
## 2016 23425.72 23546.51 23923.49 24150.11
## 2017
ramalan.1 <- predict(modelDES.1, n.ahead=5)
ramalan.1
##           Jan Feb Mar Apr May Jun Jul Aug      Sep      Oct      Nov      Dec
## 2017                                      27663.95 28271.14 28878.34 29485.53
## 2018 30092.72

Dapat dilihat bahwa dengan metode DES, diramalkan volume penumpang kereta api Jabodetabek bulan September, Oktober, November, Desember 2017 berturut-turut adalah sebanyak 27664 ; 28271 ; 28878; 29486. Sedangkan bulan Januari 2018 ada sebanyak 30093.

#mencari error, sse, mse, rmse
error.1 <- residuals(modelDES.1) 
error.1
##               Jan          Feb          Mar          Apr          May
## 2012                            1384.000000   686.200000   709.810000
## 2013  -625.184081   269.538989  1622.414289  1656.064856  1380.210524
## 2014 -2221.212307 -2123.537641  1198.365272   -71.057480   -38.994784
## 2015  -666.179269 -2542.896734  1778.835551   768.222817  1070.560481
## 2016  -883.806947 -1606.346791  1114.827336   818.425125  1797.179809
## 2017  -642.571862 -3100.067039  2118.696393  1058.026336  2494.853346
##               Jun          Jul          Aug          Sep          Oct
## 2012   180.865500   -21.525475 -1436.970336 -1207.236189 -1005.336857
## 2013   792.080914  3801.578049   661.989337   242.978837  -460.775338
## 2014   946.298320  -835.941254  -189.117769   948.026337  1265.823260
## 2015   145.612774 -1589.692537  -405.952375  -914.441405    83.782485
## 2016   380.731116 -2334.892637   710.404632    33.552026   870.722397
## 2017 -1800.595749   999.679247   888.919857                          
##               Nov          Dec
## 2012 -1509.206796  -996.534734
## 2013 -1346.286960 -1306.202051
## 2014    -1.592383  1060.455525
## 2015  -782.028165   -20.791395
## 2016   -65.866702   454.400933
## 2017
SSE.1 <- modelDES.1$SSE 
SSE.1
## [1] 112361539
MSE.1 <- mean(error.1^2)
MSE.1
## [1] 1702448
RMSE.1 <- sqrt(MSE.1)
RMSE.1
## [1] 1304.779

4.2 Model 2

# peramalan Double Exponential smoothing
#alpha = 0.4 ; beta = 0.6
modelDES.2 <- HoltWinters(series, alpha=0.4, beta=0.6, gamma=FALSE) 
modelDES.2
## Holt-Winters exponential smoothing with trend and without seasonal component.
## 
## Call:
## HoltWinters(x = series, alpha = 0.4, beta = 0.6, gamma = FALSE)
## 
## Smoothing parameters:
##  alpha: 0.4
##  beta : 0.6
##  gamma: FALSE
## 
## Coefficients:
##         [,1]
## a 27321.9977
## b   657.7736
Xhat.2 <- modelDES.2$fitted[,2]
Xhat.2
##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 2012                      9840.000 10454.600 11017.056 11655.876 12155.838
## 2013 10604.514 10078.921  9842.784 10189.873 10765.758 11389.666 11874.572
## 2014 16386.567 16039.418 15495.908 16062.224 16420.120 16739.069 17367.301
## 2015 19591.260 19829.707 19190.605 19894.999 20604.836 21569.017 22305.442
## 2016 22824.828 22662.593 22059.750 22289.464 22624.461 23452.149 23944.486
## 2017 24590.113 24637.355 23580.335 24117.963 24692.628 25999.437 25934.857
##            Aug       Sep       Oct       Nov       Dec
## 2012 12569.374 12406.686 12118.508 11788.600 11181.231
## 2013 13587.698 14617.806 15481.437 16078.391 16287.590
## 2014 17354.409 17364.415 17769.599 18459.126 18832.012
## 2015 22309.270 22487.983 22439.294 22686.891 22658.355
## 2016 23311.451 23454.242 23511.219 23944.712 24174.397
## 2017 26569.023
ramalan.2 <- predict(modelDES.2, n.ahead=5)
ramalan.2
##           Jan Feb Mar Apr May Jun Jul Aug      Sep      Oct      Nov      Dec
## 2017                                      27979.77 28637.54 29295.32 29953.09
## 2018 30610.87
error.2 <- residuals(modelDES.2) 
error.2
##              Jan         Feb         Mar         Apr         May         Jun
## 2012                          1384.00000   423.24000   360.20640  -203.06330
## 2013    16.79913   730.36078  1750.21118  1272.07074   628.88949   -95.95273
## 2014 -1439.02942 -1066.51274  2347.96033   418.13369    69.88562   801.16423
## 2015  -976.17845 -2584.34233  2325.00150   943.60744  1013.30522  -164.06937
## 2016  -707.65535 -1384.58332  1527.55990   874.23145  1581.41884  -205.80925
## 2017  -753.92555 -3062.22574  2761.72833  1197.28597  2309.27192 -2504.76177
##              Jul         Aug         Sep         Oct         Nov         Dec
## 2012  -297.28992 -1559.47632  -937.51384  -479.33303  -885.38462  -277.52326
## 2013  3032.17059  -494.67636  -614.06220  -912.31878 -1334.31622  -809.27879
## 2014 -1282.34802  -455.69184   805.66790  1033.12346  -378.35284   814.56606
## 2015 -1897.11747  -321.63814  -697.15739   461.84884  -505.59115   285.28673
## 2016 -2895.75189   781.26299    97.96879   980.47977  -117.32879   418.14498
## 2017   744.96084   595.00381
SSE.2 <- modelDES.2$SSE 
SSE.2
## [1] 108833067
MSE.2 <- mean(error.2^2)
MSE.2
## [1] 1648986
RMSE.2 <- sqrt(MSE.2)
RMSE.2
## [1] 1284.128

4.3 Membandingkan Kedua Model

Selanjutnya membandingkan kedua model tersebut yang dilihat dari bentuk plotnya.

##Comparing MSE and Forecast for these models
data.forecast=data.frame(Model_DES=c("alpha=0.3 dan beta=0.5",
                                     "alpha=0.4 dan beta=0.6"), 
                         Nilai_MSE=c(MSE.1, MSE.2), 
                         Nilai_RMSE=c(RMSE.1, RMSE.2))
data.forecast
#forecasting from best model
ramalan.2
##           Jan Feb Mar Apr May Jun Jul Aug      Sep      Oct      Nov      Dec
## 2017                                      27979.77 28637.54 29295.32 29953.09
## 2018 30610.87
#Plot Comparing Model
plot(series, main="Comparing Model", type="l", col="black")
lines(Xhat.1, type="l", col="red")
lines(Xhat.2,col="green", type="l")
lines(ramalan.1,col="yellow", lwd=2, type="p")

legend("bottomleft", c("Actual Data", 
                       expression(paste(DES, " ", alpha, "=0.3", " ", beta, "=0.5")),
                       expression(paste(DES, " ", alpha,"=0.4", " ", beta, "=0.6"))), 
       cex=0.6, col=c("black","red","green"), lty=1, bty="n")

Grafik berwarna merah merupakan metode Double Exponential Smoothing dengan α = 0,3 dan β = 0,5. Bentuk pola model ini tidak terlalu mendekati data aslinya. Sedangkan DES model kedua dengan α = 0,4 dan β = 0,6 (grafik berwarna hijau), data prediksinya cenderung mendekati data aslinya. Hal ini juga dapat dibuktikan dan dibandingkan dengan hasil evaluasi kedua model, dimana model kedua memiliki error yang lebih kecil.