Pemulusan [Individu]
Metode Peramalan Deret Waktu - Pemulusan
Tugas Individu
Muhammad Haikal Rasyadan | G1401221026 | P2
Library / Packages
##
## Attaching package: 'tsibble'
## The following objects are masked from 'package:base':
##
## intersect, setdiff, union
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## 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
##
## Attaching package: 'aTSA'
## The following object is masked from 'package:forecast':
##
## forecast
## The following objects are masked from 'package:tseries':
##
## adf.test, kpss.test, pp.test
## The following object is masked from 'package:graphics':
##
## identify
Impor Data
data1 <- read_excel("/Users/user/Downloads/Documents/MPDW 💹/mpdw_pemulusan_individu.xlsx")
data1.ts <- ts(data1$Penumpang)
str(data1)## tibble [106 × 2] (S3: tbl_df/tbl/data.frame)
## $ Tanggal : num [1:106] 1 2 3 4 5 6 7 8 9 10 ...
## $ Penumpang: num [1:106] 6458 7493 6304 6506 6283 ...
Eksplorasi Data
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3739 4786 5736 5720 6494 7971
Membuat plot data deret waktu
ts.plot(data1.ts, xlab="Time Period ", ylab="Jumlah penumpang",
main = "Time Series Plot")
points(data1.ts)Single Moving Average & Double Moving Average
Pembagian Data
Pembagian data latih dan data uji dilakukan dengan perbandingan 80% data latih dan 20% data uji.
Plot Data Latih
kurstrain<-data1[1:85,]
train.ts<-ts(kurstrain$Penumpang)
plot.ts(train.ts, lty=1, xlab="waktu", ylab="Jumlah Penumpang", main="Plot Data Latih Kedatangan Penumpang Antarkota Stasiun Bandung")
points(train.ts)Berdasarkan plot data deret waktu pada data latih, terlihat bahwa data cenderung memiliki trend yang berpola dan cenderung tidak bergerak pada nilai tengah tertentu. Hal ini mengindikasikan bahwa data tidak stasioner dalam rataan.
Eksplorasi Data
Eksplorasi data dilakukan pada keseluruhan data, data latih serta data uji menggunakan plot data deret waktu.
#eksplorasi data latih
plot(kurstrain, col="blue",main="Plot data latih", type="o")
points(kurstrain)#Eksplorasi dengan GGPLOT
library(ggplot2)
ggplot() +
geom_line(data = kurstrain, aes(x = Tanggal, y = Penumpang, col = "Data Latih")) +
geom_line(data = kurstest, aes(x = Tanggal, y = Penumpang, col = "Data Uji")) +
labs(x = "Periode Waktu", y = "Penumpang", color = "Legend") +
scale_colour_manual(name="Keterangan:", breaks = c("Data Latih", "Data Uji"),
values = c("blue", "red")) +
theme_bw() + theme(legend.position = "bottom",
plot.caption = element_text(hjust=0.5, size=12))Single Moving Average (SMA)
Dilakukan pemulusan dengan parameter m=4.
## Time Series:
## Start = 1
## End = 85
## Frequency = 1
## [1] NA NA NA 6690.25 6646.50 6701.00 7092.00 7381.75 7642.00
## [10] 7638.50 7407.25 7095.00 6968.50 6733.75 6839.50 7228.25 7217.25 7201.75
## [19] 6831.25 6426.25 6271.25 6325.25 6691.25 6694.50 6629.00 6109.25 5699.50
## [28] 5324.00 5329.25 5730.75 5658.50 5843.75 5528.75 5099.25 5057.75 5255.50
## [37] 6019.00 6031.25 6097.25 5514.00 4659.25 4645.25 4784.50 5484.75 5692.25
## [46] 5943.50 5535.75 5110.75 5014.50 5169.50 5693.75 5799.50 5998.75 5348.75
## [55] 4803.25 5091.50 5106.00 5704.25 6104.75 5904.75 5658.00 5268.50 5017.25
## [64] 5143.75 5791.75 6017.25 6193.75 5616.75 4794.75 4508.75 4568.50 5218.75
## [73] 5471.50 5755.50 5321.25 4646.25 4394.75 4545.75 5145.75 5393.00 5729.25
## [82] 5185.75 4524.75 4373.00 4519.25
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 6690.25 6646.50 6701.00 7092.00 7381.75
## [10] 7642.00 7638.50 7407.25 7095.00 6968.50 6733.75 6839.50 7228.25 7217.25
## [19] 7201.75 6831.25 6426.25 6271.25 6325.25 6691.25 6694.50 6629.00 6109.25
## [28] 5699.50 5324.00 5329.25 5730.75 5658.50 5843.75 5528.75 5099.25 5057.75
## [37] 5255.50 6019.00 6031.25 6097.25 5514.00 4659.25 4645.25 4784.50 5484.75
## [46] 5692.25 5943.50 5535.75 5110.75 5014.50 5169.50 5693.75 5799.50 5998.75
## [55] 5348.75 4803.25 5091.50 5106.00 5704.25 6104.75 5904.75 5658.00 5268.50
## [64] 5017.25 5143.75 5791.75 6017.25 6193.75 5616.75 4794.75 4508.75 4568.50
## [73] 5218.75 5471.50 5755.50 5321.25 4646.25 4394.75 4545.75 5145.75 5393.00
## [82] 5729.25 5185.75 4524.75 4373.00 4519.25
Selanjutnya akan dilakukan peramalan sejumlah data uji yaitu 21 periode.
data.gab<-cbind(aktual=c(train.ts,rep(NA,21)),pemulusan=c(data.sma,rep(NA,21)),ramalan=c(data.ramal,rep(data.ramal[length(data.ramal)],20)))
data.gab #forecast 21 periode ke depan## aktual pemulusan ramalan
## [1,] 6458 NA NA
## [2,] 7493 NA NA
## [3,] 6304 NA NA
## [4,] 6506 6690.25 NA
## [5,] 6283 6646.50 6690.25
## [6,] 7711 6701.00 6646.50
## [7,] 7868 7092.00 6701.00
## [8,] 7665 7381.75 7092.00
## [9,] 7324 7642.00 7381.75
## [10,] 7697 7638.50 7642.00
## [11,] 6943 7407.25 7638.50
## [12,] 6416 7095.00 7407.25
## [13,] 6818 6968.50 7095.00
## [14,] 6758 6733.75 6968.50
## [15,] 7366 6839.50 6733.75
## [16,] 7971 7228.25 6839.50
## [17,] 6774 7217.25 7228.25
## [18,] 6696 7201.75 7217.25
## [19,] 5884 6831.25 7201.75
## [20,] 6351 6426.25 6831.25
## [21,] 6154 6271.25 6426.25
## [22,] 6912 6325.25 6271.25
## [23,] 7348 6691.25 6325.25
## [24,] 6364 6694.50 6691.25
## [25,] 5892 6629.00 6694.50
## [26,] 4833 6109.25 6629.00
## [27,] 5709 5699.50 6109.25
## [28,] 4862 5324.00 5699.50
## [29,] 5913 5329.25 5324.00
## [30,] 6439 5730.75 5329.25
## [31,] 5420 5658.50 5730.75
## [32,] 5603 5843.75 5658.50
## [33,] 4653 5528.75 5843.75
## [34,] 4721 5099.25 5528.75
## [35,] 5254 5057.75 5099.25
## [36,] 6394 5255.50 5057.75
## [37,] 7707 6019.00 5255.50
## [38,] 4770 6031.25 6019.00
## [39,] 5518 6097.25 6031.25
## [40,] 4061 5514.00 6097.25
## [41,] 4288 4659.25 5514.00
## [42,] 4714 4645.25 4659.25
## [43,] 6075 4784.50 4645.25
## [44,] 6862 5484.75 4784.50
## [45,] 5118 5692.25 5484.75
## [46,] 5719 5943.50 5692.25
## [47,] 4444 5535.75 5943.50
## [48,] 5162 5110.75 5535.75
## [49,] 4733 5014.50 5110.75
## [50,] 6339 5169.50 5014.50
## [51,] 6541 5693.75 5169.50
## [52,] 5585 5799.50 5693.75
## [53,] 5530 5998.75 5799.50
## [54,] 3739 5348.75 5998.75
## [55,] 4359 4803.25 5348.75
## [56,] 6738 5091.50 4803.25
## [57,] 5588 5106.00 5091.50
## [58,] 6132 5704.25 5106.00
## [59,] 5961 6104.75 5704.25
## [60,] 5938 5904.75 6104.75
## [61,] 4601 5658.00 5904.75
## [62,] 4574 5268.50 5658.00
## [63,] 4956 5017.25 5268.50
## [64,] 6444 5143.75 5017.25
## [65,] 7193 5791.75 5143.75
## [66,] 5476 6017.25 5791.75
## [67,] 5662 6193.75 6017.25
## [68,] 4136 5616.75 6193.75
## [69,] 3905 4794.75 5616.75
## [70,] 4332 4508.75 4794.75
## [71,] 5901 4568.50 4508.75
## [72,] 6737 5218.75 4568.50
## [73,] 4916 5471.50 5218.75
## [74,] 5468 5755.50 5471.50
## [75,] 4164 5321.25 5755.50
## [76,] 4037 4646.25 5321.25
## [77,] 3910 4394.75 4646.25
## [78,] 6072 4545.75 4394.75
## [79,] 6564 5145.75 4545.75
## [80,] 5026 5393.00 5145.75
## [81,] 5255 5729.25 5393.00
## [82,] 3898 5185.75 5729.25
## [83,] 3920 4524.75 5185.75
## [84,] 4419 4373.00 4524.75
## [85,] 5840 4519.25 4373.00
## [86,] NA NA 4519.25
## [87,] NA NA 4519.25
## [88,] NA NA 4519.25
## [89,] NA NA 4519.25
## [90,] NA NA 4519.25
## [91,] NA NA 4519.25
## [92,] NA NA 4519.25
## [93,] NA NA 4519.25
## [94,] NA NA 4519.25
## [95,] NA NA 4519.25
## [96,] NA NA 4519.25
## [97,] NA NA 4519.25
## [98,] NA NA 4519.25
## [99,] NA NA 4519.25
## [100,] NA NA 4519.25
## [101,] NA NA 4519.25
## [102,] NA NA 4519.25
## [103,] NA NA 4519.25
## [104,] NA NA 4519.25
## [105,] NA NA 4519.25
## [106,] NA NA 4519.25
Adapun plot data deret waktu dari hasil peramalan yang dilakukan adalah sebagai berikut.
ts.plot(data1.ts, xlab="Time Period ", ylab="Jumlah Penumpang", main= "SMA N=4 Data Penumpang")
points(data1.ts)
lines(data.gab[,2],col="green",lwd=2)
lines(data.gab[,3],col="red",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), lty=8, col=c("black","green","red"), cex=0.5)Selanjutnya perhitungan akurasi dilakukan dengan ukuran akurasi Sum Squares Error (SSE), Mean Square Error (MSE) dan Mean Absolute Percentage Error (MAPE). Perhitungan akurasi dilakukan baik pada data latih maupun pada data uji.
#Menghitung nilai keakuratan data latih
error_train.sma = train.ts-data.ramal[1:length(train.ts)]
SSE_train.sma = sum(error_train.sma[5:length(train.ts)]^2)
MSE_train.sma = mean(error_train.sma[5:length(train.ts)]^2)
MAPE_train.sma = mean(abs((error_train.sma[5:length(train.ts)]/train.ts[5:length(train.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 1.003965e+08
## MSE 1.239463e+06
## MAPE 1.665903e+01
Dalam hal ini nilai MAPE data uji pada metode pemulusan SMA sebesar 16%, nilai ini tidak dapat dikategorikan sebagai nilai akurasi yang sangat baik dikarenakan nilainya melebihi batas MAPE kategori sangat baik yaitu 10%. Selanjutnya dilakukan perhitungan nilai MAPE data uji pada metode pemulusan SMA.
#Menghitung nilai keakuratan data uji
error_test.sma = test.ts-data.gab[86:106,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.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 4.234859e+07
## MSE 2.016600e+06
## MAPE 1.977062e+01
Perhitungan akurasi menggunakan data uji menghasilkan nilai MAPE yang lebih dari 10% sehingga dapat dikatakan metode Single Moving Avarage (SMA) kurang cocok digunakan
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:21
f = c()
for (i in t) {
f[i] = At[length(At)] + Bt[length(Bt)]*(i)
}
data.gab2 <- cbind(aktual = c(train.ts,rep(NA,21)), pemulusan1 = c(data.sma,rep(NA,21)),pemulusan2 = c(data.dma, rep(NA,21)),At = c(At, rep(NA,21)), Bt = c(Bt,rep(NA,21)),ramalan = c(data.ramal2, f[-1]))
data.gab2## aktual pemulusan1 pemulusan2 At Bt ramalan
## [1,] 6458 NA NA NA NA NA
## [2,] 7493 NA NA NA NA NA
## [3,] 6304 NA NA NA NA NA
## [4,] 6506 6690.25 NA NA NA NA
## [5,] 6283 6646.50 NA NA NA NA
## [6,] 7711 6701.00 NA NA NA NA
## [7,] 7868 7092.00 7607.938 7401.562 206.37500 NA
## [8,] 7665 7381.75 8092.479 7808.188 284.29167 7607.938
## [9,] 7324 7642.00 8371.688 8079.812 291.87500 8092.479
## [10,] 7697 7638.50 7971.729 7838.438 133.29167 8371.688
## [11,] 6943 7407.25 7223.708 7297.125 -73.41667 7971.729
## [12,] 6416 7095.00 6510.521 6744.312 -233.79167 7223.708
## [13,] 6818 6968.50 6453.812 6659.688 -205.87500 6510.521
## [14,] 6758 6733.75 6204.792 6416.375 -211.58333 6453.812
## [15,] 7366 6839.50 6723.354 6769.812 -46.45833 6204.792
## [16,] 7971 7228.25 7704.500 7514.000 190.50000 6723.354
## [17,] 6774 7217.25 7571.521 7429.812 141.70833 7704.500
## [18,] 6696 7201.75 7335.188 7281.812 53.37500 7571.521
## [19,] 5884 6831.25 6350.625 6542.875 -192.25000 7335.188
## [20,] 6351 6426.25 5604.792 5933.375 -328.58333 6350.625
## [21,] 6154 6271.25 5585.625 5859.875 -274.25000 5604.792
## [22,] 6912 6325.25 6094.833 6187.000 -92.16667 5585.625
## [23,] 7348 6691.25 7129.167 6954.000 175.16667 6094.833
## [24,] 6364 6694.50 7026.062 6893.438 132.62500 7129.167
## [25,] 5892 6629.00 6702.333 6673.000 29.33333 7026.062
## [26,] 4833 6109.25 5406.333 5687.500 -281.16667 6702.333
## [27,] 5709 5699.50 4726.896 5115.938 -389.04167 5406.333
## [28,] 4862 5324.00 4296.604 4707.562 -410.95833 4726.896
## [29,] 5913 5329.25 4852.167 5043.000 -190.83333 4296.604
## [30,] 6439 5730.75 6080.542 5940.625 139.91667 4852.167
## [31,] 5420 5658.50 5904.958 5806.375 98.58333 6080.542
## [32,] 5603 5843.75 6182.396 6046.938 135.45833 5904.958
## [33,] 4653 5528.75 5259.271 5367.062 -107.79167 6182.396
## [34,] 4721 5099.25 4377.062 4665.938 -288.87500 5259.271
## [35,] 5254 5057.75 4516.708 4733.125 -216.41667 4377.062
## [36,] 6394 5255.50 5289.146 5275.688 13.45833 4516.708
## [37,] 7707 6019.00 7120.875 6680.125 440.75000 5289.146
## [38,] 4770 6031.25 6765.208 6471.625 293.58333 7120.875
## [39,] 5518 6097.25 6508.083 6343.750 164.33333 6765.208
## [40,] 4061 5514.00 4845.042 5112.625 -267.58333 6508.083
## [41,] 4288 4659.25 3132.271 3743.062 -610.79167 4845.042
## [42,] 4714 4645.25 3672.438 4061.562 -389.12500 3132.271
## [43,] 6075 4784.50 4590.750 4668.250 -77.50000 3672.438
## [44,] 6862 5484.75 6470.271 6076.062 394.20833 4590.750
## [45,] 5118 5692.25 6593.188 6232.812 360.37500 6470.271
## [46,] 5719 5943.50 6722.250 6410.750 311.50000 6593.188
## [47,] 4444 5535.75 5321.896 5407.438 -85.54167 6722.250
## [48,] 5162 5110.75 4344.396 4650.938 -306.54167 5321.896
## [49,] 4733 5014.50 4370.125 4627.875 -257.75000 4344.396
## [50,] 6339 5169.50 5105.958 5131.375 -25.41667 4370.125
## [51,] 6541 5693.75 6438.125 6140.375 297.75000 5105.958
## [52,] 5585 5799.50 6433.146 6179.688 253.45833 6438.125
## [53,] 5530 5998.75 6554.375 6332.125 222.25000 6433.146
## [54,] 3739 5348.75 4746.354 4987.312 -240.95833 6554.375
## [55,] 4359 4803.25 3662.729 4118.938 -456.20833 4746.354
## [56,] 6738 5091.50 4726.396 4872.438 -146.04167 3662.729
## [57,] 5588 5106.00 5137.042 5124.625 12.41667 4726.396
## [58,] 6132 5704.25 6584.250 6232.250 352.00000 5137.042
## [59,] 5961 6104.75 7109.958 6707.875 402.08333 6584.250
## [60,] 5938 5904.75 6237.771 6104.562 133.20833 7109.958
## [61,] 4601 5658.00 5349.771 5473.062 -123.29167 6237.771
## [62,] 4574 5268.50 4492.667 4803.000 -310.33333 5349.771
## [63,] 4956 5017.25 4275.792 4572.375 -296.58333 4492.667
## [64,] 6444 5143.75 4930.208 5015.625 -85.41667 4275.792
## [65,] 7193 5791.75 6602.479 6278.188 324.29167 4930.208
## [66,] 5476 6017.25 6891.833 6542.000 349.83333 6602.479
## [67,] 5662 6193.75 6872.292 6600.875 271.41667 6891.833
## [68,] 4136 5616.75 5136.542 5328.625 -192.08333 6872.292
## [69,] 3905 4794.75 3359.958 3933.875 -573.91667 5136.542
## [70,] 4332 4508.75 3225.833 3739.000 -513.16667 3359.958
## [71,] 5901 4568.50 4062.354 4264.812 -202.45833 3225.833
## [72,] 6737 5218.75 5962.188 5664.812 297.37500 4062.354
## [73,] 4916 5471.50 6354.208 6001.125 353.08333 5962.188
## [74,] 5468 5755.50 6592.062 6257.438 334.62500 6354.208
## [75,] 4164 5321.25 5120.417 5200.750 -80.33333 6592.062
## [76,] 4037 4646.25 3558.958 3993.875 -434.91667 5120.417
## [77,] 3910 4394.75 3336.938 3760.062 -423.12500 3558.958
## [78,] 6072 4545.75 4243.667 4364.500 -120.83333 3336.938
## [79,] 6564 5145.75 5916.792 5608.375 308.41667 4243.667
## [80,] 5026 5393.00 6264.979 5916.188 348.79167 5916.792
## [81,] 5255 5729.25 6605.604 6255.062 350.54167 6264.979
## [82,] 3898 5185.75 4889.604 5008.062 -118.45833 6605.604
## [83,] 3920 4524.75 3385.688 3841.312 -455.62500 4889.604
## [84,] 4419 4373.00 3406.021 3792.812 -386.79167 3385.688
## [85,] 5840 4519.25 4300.188 4387.812 -87.62500 3406.021
## [86,] NA NA NA NA NA 4300.188
## [87,] NA NA NA NA NA 4212.562
## [88,] NA NA NA NA NA 4124.938
## [89,] NA NA NA NA NA 4037.312
## [90,] NA NA NA NA NA 3949.688
## [91,] NA NA NA NA NA 3862.062
## [92,] NA NA NA NA NA 3774.438
## [93,] NA NA NA NA NA 3686.812
## [94,] NA NA NA NA NA 3599.188
## [95,] NA NA NA NA NA 3511.562
## [96,] NA NA NA NA NA 3423.938
## [97,] NA NA NA NA NA 3336.312
## [98,] NA NA NA NA NA 3248.688
## [99,] NA NA NA NA NA 3161.062
## [100,] NA NA NA NA NA 3073.438
## [101,] NA NA NA NA NA 2985.812
## [102,] NA NA NA NA NA 2898.188
## [103,] NA NA NA NA NA 2810.562
## [104,] NA NA NA NA NA 2722.938
## [105,] NA NA NA NA NA 2635.312
## [106,] NA NA NA NA NA 2547.688
Hasil pemulusan menggunakan metode DMA divisualisasikan sebagai berikut
ts.plot(data1.ts, xlab="Time Period ", ylab="Jumlah Penumpang", main= "DMA N=4 Data Penumpang")
points(data1.ts)
lines(data.gab2[,3],col="green",lwd=2)
lines(data.gab2[,6],col="red",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), lty=8, col=c("black","green","red"), cex=0.8)Selanjutnya perhitungan akurasi dilakukan baik pada data latih maupun data uji. Perhitungan akurasi dilakukan dengan ukuran akurasi SSE, MSE dan MAPE.
#Menghitung nilai keakuratan data latih
error_train.dma = train.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 1.797752e+08
## MSE 2.304810e+06
## MAPE 2.395268e+01
Perhitungan akurasi pada data latih menggunakan nilai MAPE menghasilkan nilai MAPE yang lebih dari 10% sehingga tidak dapat dikategorikan sebagai akurasi yang sangat baik. Selanjutnya, perhitungan nilai akurasi dilakukan pada data uji.
#Menghitung nilai keakuratan data uji
error_test.dma = test.ts-data.gab2[86:106,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 1.229617e+08
## MSE 5.855319e+06
## MAPE 3.537123e+01
Pada data latih maupun data uji metode SMA lebih baik dibandingkan dengan metode DMA, dikarenakan menghasilkan nilai MAPE yang lebih kecil. Namun untuk kedua metode tersebut menghasilkan nilai MAPE yang lebih dari 10% sehingga dapat dikatakan bahwa metode SMA maupun DMA kurang cocok digunakan untuk data tersebut.
Single Exponential Smoothing & Double Exponential Smoothing
Pembagian Data
#membagi training dan testing
kurstrain2<-data1[1:85,]
train2.ts<-ts(kurstrain2$Penumpang)
plot.ts(train2.ts, lty=1, xlab="waktu", ylab="Jumlah Penumpang", main="Plot Data Latih Kedatangan Penumpang Antarkota Stasiun Bandung")
points(train.ts)kurstest2<-data1[86:106,]
test2.ts<-ts(kurstest2$Penumpang)
plot.ts(test2.ts, lty=1, xlab="waktu", ylab="Jumlah Penumpang", main="Plot Data Uji Kedatangan Penumpang Antarkota Stasiun Bandung")Eksplorasi
Eksplorasi dilakukan dengan membuat plot data deret waktu untuk keseluruhan data, data latih, dan data uji.
.
#Eksplorasi dengan GGPLOT
library(ggplot2)
ggplot() +
geom_line(data = kurstrain2, aes(x = Tanggal, y = Penumpang, col = "Data Latih")) +
geom_line(data = kurstest2, aes(x = Tanggal, y = Penumpang, col = "Data Uji")) +
labs(x = "Periode Waktu", y = "Penumpang", color = "Legend") +
scale_colour_manual(name="Keterangan:", breaks = c("Data Latih", "Data Uji"),
values = c("blue", "red")) +
theme_bw() + theme(legend.position = "bottom",
plot.caption = element_text(hjust=0.5, size=12))SES
Single Exponential Smoothing merupakan metode pemulusan yang tepat digunakan untuk data dengan pola stasioner atau konstan.
Nilai pemulusan pada periode ke-t didapat dari persamaan:
\[ \tilde{y}_T=\lambda y_t+(1-\lambda)\tilde{y}_{T-1} \]
Nilai parameter \(\lambda\) adalah nilai antara 0 dan 1.
Nilai pemulusan periode ke-t bertindak sebagai nilai ramalan pada periode ke-\((T+\tau)\).
\[ \tilde{y}_{T+\tau}(T)=\tilde{y}_T \]
Pemulusan dengan metode SES dapat dilakukan dengan dua fungsi dari
packages berbeda, yaitu (1) fungsi ses() dari
packages forecast dan (2) fungsi
HoltWinters dari packages stats .
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 86 4925.494 3725.105 6125.882 3089.658 6761.329
## 87 4925.494 3701.333 6149.655 3053.301 6797.686
## 88 4925.494 3678.014 6172.974 3017.637 6833.350
## 89 4925.494 3655.122 6195.865 2982.628 6868.360
## 90 4925.494 3632.636 6218.352 2948.238 6902.749
## 91 4925.494 3610.534 6240.453 2914.437 6936.551
## 92 4925.494 3588.798 6262.190 2881.194 6969.794
## 93 4925.494 3567.409 6283.578 2848.483 7002.505
## 94 4925.494 3546.352 6304.635 2816.279 7034.708
## 95 4925.494 3525.612 6325.375 2784.560 7066.428
## 96 4925.494 3505.175 6345.813 2753.304 7097.684
## 97 4925.494 3485.028 6365.960 2722.491 7128.497
## 98 4925.494 3465.158 6385.829 2692.103 7158.884
## 99 4925.494 3445.556 6405.432 2662.124 7188.864
## 100 4925.494 3426.209 6424.778 2632.536 7218.452
## 101 4925.494 3407.109 6443.878 2603.325 7247.663
## 102 4925.494 3388.247 6462.741 2574.477 7276.511
## 103 4925.494 3369.613 6481.375 2545.979 7305.009
## 104 4925.494 3351.199 6499.788 2517.818 7333.170
## 105 4925.494 3332.999 6517.989 2489.983 7361.005
## 106 4925.494 3315.004 6535.984 2462.462 7388.526
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 86 5379.508 4123.613 6635.404 3458.782331 7300.235
## 87 5379.508 3846.493 6912.524 3034.963424 7724.054
## 88 5379.508 3612.307 7146.710 2676.807221 8082.210
## 89 5379.508 3405.714 7353.303 2360.850389 8398.167
## 90 5379.508 3218.784 7540.232 2074.966266 8684.051
## 91 5379.508 3046.786 7712.231 1811.918002 8947.099
## 92 5379.508 2886.627 7872.390 1566.975936 9192.041
## 93 5379.508 2736.155 8022.862 1336.847602 9422.169
## 94 5379.508 2593.798 8165.219 1119.131789 9639.885
## 95 5379.508 2458.370 8300.646 912.013419 9847.004
## 96 5379.508 2328.949 8430.068 714.080879 10044.936
## 97 5379.508 2204.800 8554.217 524.210624 10234.806
## 98 5379.508 2085.326 8673.691 341.491028 10417.526
## 99 5379.508 1970.036 8788.981 165.170322 10593.847
## 100 5379.508 1858.519 8900.498 -5.380098 10764.397
## 101 5379.508 1750.427 9008.590 -170.692199 10929.709
## 102 5379.508 1645.463 9113.554 -331.220908 11090.238
## 103 5379.508 1543.370 9215.647 -487.358889 11246.376
## 104 5379.508 1443.924 9315.092 -639.447850 11398.465
## 105 5379.508 1346.930 9412.086 -787.787351 11546.804
## 106 5379.508 1252.215 9506.802 -932.641744 11691.659
Untuk mendapatkan gambar hasil pemulusan pada data latih dengan
fungsi ses() , perlu digunakan fungsi
autoplot() dan autolayer() dari library
packages ggplot2 .
Pada fungsi ses() , terdapat beberapa argumen yang umum
digunakan, yaitu nilai y , gamma ,
beta , alpha , dan h .
Nilai y adalah nilai data deret waktu,
gamma adalah parameter pemulusan untuk komponen musiman,
beta adalah parameter pemulusan untuk tren, dan
alpha adalah parameter pemulusan untuk stasioner, serta
h adalah banyaknya periode yang akan diramalkan.
Kasus di atas merupakan contoh inisialisasi nilai parameter \(\lambda\) dengan nilai alpha
0,2 dan 0,7 dan banyak periode data yang akan diramalkan adalah sebanyak
21 periode. Selanjutnya akan digunakan fungsi HoltWinters()
dengan nilai inisialisasi parameter dan panjang periode peramalan yang
sama dengan fungsi ses() .
#Cara 2 (fungsi Holtwinter)
ses1<- HoltWinters(train2.ts, gamma = FALSE, beta = FALSE, alpha = 0.2)
plot(ses1)## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 86 4925.494 3726.449 6124.538 3091.713 6759.274
## 87 4925.494 3702.703 6148.284 3055.397 6795.590
## 88 4925.494 3679.410 6171.578 3019.773 6831.215
## 89 4925.494 3656.544 6194.443 2984.803 6866.185
## 90 4925.494 3634.083 6216.904 2950.452 6900.536
## 91 4925.494 3612.006 6238.981 2916.688 6934.300
## 92 4925.494 3590.294 6260.693 2883.482 6967.505
## 93 4925.494 3568.930 6282.058 2850.808 7000.180
## 94 4925.494 3547.896 6303.091 2818.640 7032.347
## 95 4925.494 3527.179 6323.808 2786.956 7064.031
## 96 4925.494 3506.765 6344.223 2755.735 7095.252
## 97 4925.494 3486.640 6364.347 2724.957 7126.031
## 98 4925.494 3466.793 6384.195 2694.603 7156.384
## 99 4925.494 3447.212 6403.775 2664.657 7186.330
## 100 4925.494 3427.887 6423.100 2635.102 7215.885
## 101 4925.494 3408.809 6442.179 2605.924 7245.063
## 102 4925.494 3389.967 6461.020 2577.109 7273.879
## 103 4925.494 3371.354 6479.633 2548.642 7302.345
## 104 4925.494 3352.961 6498.026 2520.513 7330.475
## 105 4925.494 3334.781 6516.206 2492.709 7358.279
## 106 4925.494 3316.806 6534.181 2465.219 7385.769
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 86 5379.508 4123.452 6635.565 3458.535281 7300.482
## 87 5379.508 3846.296 6912.721 3034.661862 7724.355
## 88 5379.508 3612.080 7146.937 2676.459591 8082.557
## 89 5379.508 3405.460 7353.557 2360.462120 8398.555
## 90 5379.508 3218.507 7540.510 2074.541225 8684.476
## 91 5379.508 3046.486 7712.531 1811.459127 8947.558
## 92 5379.508 2886.307 7872.710 1566.485556 9192.531
## 93 5379.508 2735.815 8023.202 1336.327623 9422.689
## 94 5379.508 2593.440 8165.577 1118.583806 9640.433
## 95 5379.508 2457.995 8301.022 911.438795 9847.578
## 96 5379.508 2328.557 8430.460 713.480797 10045.536
## 97 5379.508 2204.392 8554.625 523.586120 10235.431
## 98 5379.508 2084.902 8674.115 340.843022 10418.174
## 99 5379.508 1969.597 8789.419 164.499638 10594.517
## 100 5379.508 1858.066 8900.951 -6.072719 10765.090
## 101 5379.508 1749.961 9009.056 -171.406083 10930.423
## 102 5379.508 1644.983 9114.034 -331.955440 11090.972
## 103 5379.508 1542.877 9216.140 -488.113504 11247.130
## 104 5379.508 1443.418 9315.599 -640.222027 11399.239
## 105 5379.508 1346.412 9412.605 -788.580608 11547.598
## 106 5379.508 1251.684 9507.333 -933.453632 11692.471
Fungsi HoltWinters memiliki argumen yang sama dengan
fungsi ses() . Argumen-argumen kedua fungsi dapat dilihat
lebih lanjut dengan ?ses() atau ?HoltWinters
.
Nilai parameter \(\alpha\) dari
kedua fungsi dapat dioptimalkan menyesuaikan dari error-nya
paling minimumnya. Caranya adalah dengan membuat parameter \(\alpha =\) NULL .
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 86 4945.352 3747.570 6143.134 3113.503 6777.201
## 87 4945.352 3731.961 6158.743 3089.631 6801.074
## 88 4945.352 3716.550 6174.154 3066.061 6824.643
## 89 4945.352 3701.330 6189.375 3042.784 6847.920
## 90 4945.352 3686.294 6204.411 3019.788 6870.916
## 91 4945.352 3671.435 6219.270 2997.064 6893.641
## 92 4945.352 3656.747 6233.957 2974.601 6916.103
## 93 4945.352 3642.226 6248.479 2952.392 6938.312
## 94 4945.352 3627.864 6262.841 2930.427 6960.277
## 95 4945.352 3613.657 6277.048 2908.700 6982.005
## 96 4945.352 3599.600 6291.105 2887.201 7003.503
## 97 4945.352 3585.688 6305.016 2865.925 7024.779
## 98 4945.352 3571.917 6318.787 2844.865 7045.840
## 99 4945.352 3558.283 6332.421 2824.013 7066.691
## 100 4945.352 3544.782 6345.922 2803.365 7087.339
## 101 4945.352 3531.410 6359.295 2782.914 7107.791
## 102 4945.352 3518.162 6372.542 2762.654 7128.051
## 103 4945.352 3505.037 6385.667 2742.580 7148.124
## 104 4945.352 3492.030 6398.674 2722.688 7168.016
## 105 4945.352 3479.139 6411.565 2702.973 7187.732
## 106 4945.352 3466.360 6424.344 2683.429 7207.276
#Lamda Optimum Holt Winter
sesopt<- HoltWinters(train2.ts, gamma = FALSE, beta = FALSE,alpha = NULL)
sesopt## Holt-Winters exponential smoothing without trend and without seasonal component.
##
## Call:
## HoltWinters(x = train2.ts, alpha = NULL, beta = FALSE, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.1697445
## beta : FALSE
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 4939.948
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 86 4939.948 3744.489 6135.406 3111.651 6768.244
## 87 4939.948 3727.389 6152.507 3085.499 6794.396
## 88 4939.948 3710.526 6169.369 3059.710 6820.185
## 89 4939.948 3693.892 6186.003 3034.270 6845.625
## 90 4939.948 3677.477 6202.418 3009.166 6870.730
## 91 4939.948 3661.273 6218.622 2984.383 6895.512
## 92 4939.948 3645.271 6234.624 2959.911 6919.984
## 93 4939.948 3629.465 6250.430 2935.738 6944.158
## 94 4939.948 3613.847 6266.048 2911.852 6968.043
## 95 4939.948 3598.412 6281.484 2888.245 6991.650
## 96 4939.948 3583.151 6296.744 2864.906 7014.989
## 97 4939.948 3568.061 6311.835 2841.827 7038.068
## 98 4939.948 3553.134 6326.761 2818.999 7060.896
## 99 4939.948 3538.367 6341.529 2796.414 7083.481
## 100 4939.948 3523.753 6356.142 2774.065 7105.830
## 101 4939.948 3509.289 6370.606 2751.944 7127.951
## 102 4939.948 3494.969 6384.926 2730.044 7149.851
## 103 4939.948 3480.791 6399.105 2708.359 7171.536
## 104 4939.948 3466.748 6413.147 2686.883 7193.012
## 105 4939.948 3452.838 6427.057 2665.610 7214.285
## 106 4939.948 3439.057 6440.838 2644.534 7235.362
Setelah dilakukan peramalan, akan dilakukan perhitungan keakuratan hasil peramalan. Perhitungan akurasi ini dilakukan baik pada data latih dan data uji.
Akurasi Data Latih
Perhitungan akurasi data dapat dilakukan dengan cara langsung maupun manual. Secara langsung, nilai akurasi dapat diambil dari objek yang tersimpan pada hasil SES, yaitu sum of squared errors (SSE). Nilai akurasi lain dapat dihitung pula dari nilai SSE tersebut.
#Keakuratan Metode
#Pada data training
SSE1<-ses1$SSE
MSE1<-ses1$SSE/length(train2.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 7.335585e+07
## MSE 8.630100e+05
## RMSE 9.289833e+02
SSE2<-ses2$SSE
MSE2<-ses2$SSE/length(train2.ts)
RMSE2<-sqrt(MSE2)
akurasi2 <- matrix(c(SSE2,MSE2,RMSE2))
row.names(akurasi2)<- c("SSE", "MSE", "RMSE")
colnames(akurasi2) <- c("Akurasi lamda=0.7")
akurasi2## Akurasi lamda=0.7
## SSE 7.975877e+07
## MSE 9.383384e+05
## RMSE 9.686787e+02
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA 1035.000 -361.000 -86.800 -292.440 1194.048
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA 1035.000 -361.000 -86.800 -292.440 1194.048
## [1] 73355852
## [1] 863010
MAPE.1 = sum(abs(sisaan1[2:length(train.ts)]/train.ts[2:length(train.ts)])*
100)/length(train.ts)
MAPE.1## [1] 14.28288
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 7.335585e+07
## MSE 8.630100e+05
## MAPE 1.428288e+01
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA 1035.000 -878.500 -61.550 -241.465 1355.561
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA 1035.000 -878.500 -61.550 -241.465 1355.561
## [1] 79758765
## [1] 938338.4
MAPE.2 = sum(abs(sisaan2[2:length(train.ts)]/train.ts[2:length(train.ts)])*
100)/length(train.ts)
MAPE.2## [1] 14.00439
akurasi.2 <- matrix(c(SSE.2,MSE.2,MAPE.2))
row.names(akurasi.2)<- c("SSE", "MSE", "MAPE")
colnames(akurasi.2) <- c("Akurasi lamda=0.7")
akurasi.2## Akurasi lamda=0.7
## SSE 7.975877e+07
## MSE 9.383384e+05
## MAPE 1.400439e+01
Berdasarkan nilai SSE, MSE, RMSE, dan MAPE di antara kedua parameter, nilai parameter \(\lambda=0,7\) menghasilkan akurasi yang lebih baik dibanding \(\lambda=0,2\) . Hal ini dilihat dari nilai masing-masing ukuran akurasi (MAPE) yang lebih kecil. Berdasarkan nilai MAPE tersebut hasil ini tidak dapat dikategorikan sebagai peramalan sangat baik dikarenakan masih diatas 10%.
Akurasi Data Uji
Akurasi data uji dapat dihitung dengan cara yang hampir sama dengan perhitungan akurasi data latih.
selisih1<-ramalan1$mean-kurstest2$Penumpang
SSEtesting1<-sum(selisih1^2)
MSEtesting1<-SSEtesting1/length(kurstest2)
MAPEtesting1<-sum(abs(selisih1/kurstest2$Penumpang)*100)/length(kurstest2$Penumpang)
selisih2<-ramalan2$mean-kurstest2$Penumpang
SSEtesting2<-sum(selisih2^2)
MSEtesting2<-SSEtesting2/length(kurstest2)
MAPEtesting2<-sum(abs(selisih2/kurstest2$Penumpang)*100)/length(kurstest2$Penumpang)
selisihopt<-ramalanopt$mean-kurstest2$Penumpang
SSEtestingopt<-sum(selisihopt^2)
MSEtestingopt<-SSEtestingopt/length(kurstest2)
MAPEtestingopt<-sum(abs(selisihopt/kurstest2$Penumpang)*100)/length(kurstest2$Penumpang)
akurasitesting1 <- matrix(c(SSEtesting1,SSEtesting2,SSEtestingopt))
row.names(akurasitesting1)<- c("SSE1", "SSE2", "SSEopt" )
akurasitesting1## [,1]
## SSE1 29077264
## SSE2 22447308
## SSEopt 28732773
akurasitesting2 <- matrix(c(MSEtesting1,MSEtesting2,MSEtestingopt))
row.names(akurasitesting2)<- c("MSE1", "MSE2", "MSEopt")
akurasitesting2## [,1]
## MSE1 14538632
## MSE2 11223654
## MSEopt 14366386
akurasitesting3 <- matrix(c(MAPEtesting1,MAPEtesting2,MAPEtestingopt))
row.names(akurasitesting3)<- c("MAPE1", "MAPE2", "MAPEopt" )
akurasitesting3## [,1]
## MAPE1 17.53311
## MAPE2 16.35872
## MAPEopt 17.45879
Selain dengan cara di atas, perhitungan nilai akurasi dapat
menggunakan fungsi accuracy() dari package
forecast . Penggunaannya yaitu dengan menuliskan
accuracy(hasil ramalan, kondisi aktual) . Contohnya adalah
sebagai berikut.
## ME RMSE MAE MPE MAPE MASE
## Training set -106.4662 933.3444 780.9517 -4.586059 14.53621 0.9732063
## Test set 560.2428 1169.7125 991.6415 6.838177 17.45879 1.2357636
## ACF1
## Training set 0.3016086
## Test set NA
nilai MAPE untuk ramalan optimum masih diatas 10% untuk data latih maupun data uji, selain itu nilai SSE dan juga RMSE untuk keseluruhan uji menggunakan SES masih tinggi sehingga metode yang digunakan kurang tepat untuk meralamakan data tersebut
DES
Metode pemulusan Double Exponential Smoothing (DES) digunakan untuk data yang memiliki pola tren. Metode DES adalah metode semacam SES, hanya saja dilakukan dua kali, yaitu pertama untuk tahapan ‘level’ dan kedua untuk tahapan ‘tren’. Pemulusan menggunakan metode ini akan menghasilkan peramalan tidak konstan untuk periode berikutnya.
Pemulusan dengan metode DES kali ini akan menggunakan fungsi
HoltWinters() . Jika sebelumnya nilai argumen
beta dibuat FALSE , kali ini argumen tersebut
akan diinisialisasi bersamaan dengan nilai alpha .
#Lamda=0.2 dan gamma=0.2
des.1<- HoltWinters(train.ts, gamma = FALSE, beta = 0.2, alpha = 0.2)
plot(des.1)## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 86 4748.992 3124.6195 6373.364 2264.72883 7233.255
## 87 4729.152 3058.6532 6399.652 2174.34438 7283.960
## 88 4709.313 2978.0036 6440.623 2061.50373 7357.123
## 89 4689.474 2881.8169 6497.131 1924.90106 7454.047
## 90 4669.635 2769.7439 6569.525 1764.00258 7575.266
## 91 4649.795 2641.8714 6657.719 1578.94079 7720.650
## 92 4629.956 2498.6211 6761.291 1370.36065 7889.551
## 93 4610.117 2340.6414 6879.592 1139.25372 8080.980
## 94 4590.277 2168.7094 7011.845 886.80872 8293.746
## 95 4570.438 1983.6540 7157.222 614.29324 8526.583
## 96 4550.599 1786.3009 7314.897 322.97008 8778.227
## 97 4530.759 1577.4381 7484.081 14.04427 9047.475
## 98 4510.920 1357.7965 7664.044 -311.36628 9333.207
## 99 4491.081 1128.0419 7854.120 -652.24339 9634.405
## 100 4471.242 888.7734 8053.710 -1007.67061 9950.154
## 101 4451.402 640.5267 8262.278 -1376.82890 10279.633
## 102 4431.563 383.7786 8479.347 -1758.98893 10622.115
## 103 4411.724 118.9532 8704.494 -2153.50219 10976.949
## 104 4391.884 -153.5723 8937.341 -2559.79174 11343.560
## 105 4372.045 -433.4618 9177.552 -2977.34351 11721.434
## 106 4352.206 -720.4150 9424.826 -3405.69824 12110.110
#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
## 86 5241.663 3759.7166 6723.609 2975.2217 7508.104
## 87 5390.969 3511.5252 7270.414 2516.6075 8265.331
## 88 5540.276 3183.0965 7897.456 1935.2810 9145.271
## 89 5689.583 2789.5085 8589.657 1254.3019 10124.864
## 90 5838.889 2340.7431 9337.036 488.9364 11188.842
## 91 5988.196 1843.5131 10132.879 -350.5495 12326.942
## 92 6137.503 1302.5414 10972.464 -1256.9325 13531.938
## 93 6286.809 721.3175 11852.301 -2224.8760 14798.495
## 94 6436.116 102.5343 12769.698 -3250.2613 16122.494
## 95 6585.423 -551.6518 13722.497 -4329.7909 17500.637
## 96 6734.729 -1239.4627 14708.922 -5460.7450 18930.204
## 97 6884.036 -1959.3958 15727.468 -6640.8259 20408.898
## 98 7033.343 -2710.1570 16776.843 -7868.0543 21934.740
## 99 7182.650 -3490.6140 17855.913 -9140.6985 23505.998
## 100 7331.956 -4299.7632 18963.676 -10457.2235 25121.136
## 101 7481.263 -5136.7055 20099.231 -11816.2545 26778.780
## 102 7630.570 -6000.6282 21261.767 -13216.5485 28477.688
## 103 7779.876 -6890.7915 22450.544 -14656.9739 30216.726
## 104 7929.183 -7806.5170 23664.883 -16136.4934 31994.859
## 105 8078.490 -8747.1796 24904.159 -17654.1509 33811.130
## 106 8227.796 -9712.2005 26167.793 -19209.0611 35664.654
Selanjutnya jika ingin membandingkan plot data latih dan data uji adalah sebagai berikut.
#Visually evaluate the prediction
plot(data1.ts)
lines(des.1$fitted[,1], lty=2, col="blue")
lines(ramalandes1$mean, col="red")Untuk mendapatkan nilai parameter optimum dari DES, argumen
alpha dan beta dapat dibuat NULL
seperti berikut.
## Holt-Winters exponential smoothing with trend and without seasonal component.
##
## Call:
## HoltWinters(x = train.ts, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.8668276
## beta : 0.09776969
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 5631.118
## b 66.795
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 86 5697.913 4319.6585 7076.168 3590.0545 7805.772
## 87 5764.708 3862.1681 7667.248 2855.0242 8674.392
## 88 5831.503 3452.4777 8210.529 2193.0977 9469.909
## 89 5898.298 3061.5424 8735.054 1559.8546 10236.742
## 90 5965.093 2677.3569 9252.829 936.9345 10993.252
## 91 6031.888 2293.8233 9769.953 315.0113 11748.765
## 92 6098.683 1907.4747 10289.892 -311.2170 12508.583
## 93 6165.478 1516.1992 10814.757 -944.9805 13275.937
## 94 6232.273 1118.6524 11345.894 -1588.3349 14052.881
## 95 6299.068 713.9557 11884.181 -2242.6243 14840.761
## 96 6365.863 301.5267 12430.200 -2908.7390 15640.465
## 97 6432.658 -119.0201 12984.336 -3587.2691 16452.585
## 98 6499.453 -547.9368 13546.843 -4278.5996 17277.506
## 99 6566.248 -985.3817 14117.878 -4982.9731 18115.469
## 100 6633.043 -1431.4471 14697.533 -5700.5303 18966.617
## 101 6699.838 -1886.1771 15285.853 -6431.3391 19831.015
## 102 6766.633 -2349.5815 15882.848 -7175.4140 20708.680
## 103 6833.428 -2821.6442 16488.500 -7932.7308 21599.587
## 104 6900.223 -3302.3307 17102.777 -8703.2364 22503.683
## 105 6967.018 -3791.5925 17725.629 -9486.8570 23420.893
## 106 7033.813 -4289.3713 18356.998 -10283.5031 24351.129
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(train2.ts)
sisaandes1<-ramalandes1$residuals
head(sisaandes1)## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA NA -2224.000 -2523.240 -3086.702 -1763.004
mapedes.train1 <- sum(abs(sisaandes1[3:length(train2.ts)]/train.ts[3:length(train2.ts)])
*100)/length(train2.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 1.401172e+08
## MSE 1.648437e+06
## MAPE 1.762561e+01
ssedes.train2<-des.2$SSE
msedes.train2<-ssedes.train2/length(train2.ts)
sisaandes2<-ramalandes2$residuals
head(sisaandes2)## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA NA -2224.0000 -1322.2800 -1148.5816 778.6424
mapedes.train2 <- sum(abs(sisaandes2[3:length(train2.ts)]/train.ts[3:length(train2.ts)])
*100)/length(train2.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.099412e+08
## MSE 1.293425e+06
## MAPE 1.657644e+01
Hasil akurasi dari data latih didapatkan skenario 2 dengan lamda=0.6 dan gamma=0.3, data latih dengan lamda=0.6 memiliki hasil yang lebih baik. Namun untuk kedua skenario belum dapat dikategorikan peramalan sangat baik berdasarkan nilai MAPE-nya yang masih diatas 10%.
Akurasi Data Uji
## Time Series:
## Start = 86
## End = 106
## Frequency = 1
## [1] -1837.0083 -359.8476 -787.6869 795.4738 418.6345 718.7952
## [7] -966.0441 -1481.8834 -1135.7227 -1457.5620 623.5987 -786.2406
## [13] -3240.0799 -1714.9192 -2164.7585 -2280.5978 -1314.4371 -179.2764
## [19] -124.1157 -736.9550 -1930.7943
SSEtestingdes1<-sum(selisihdes1^2)
MSEtestingdes1<-SSEtestingdes1/length(kurstest2$Penumpang)
MAPEtestingdes1<-sum(abs(selisihdes1/kurstest2$Penumpang)*100)/length(kurstest2$Penumpang)## Time Series:
## Start = 86
## End = 106
## Frequency = 1
## [1] -1344.33729 301.96939 43.27606 1795.58274 1587.88942 2057.19610
## [7] 541.50278 194.80945 710.11613 557.42281 2807.72949 1567.03617
## [13] -717.65715 976.64952 695.95620 749.26288 1884.56956 3188.87624
## [19] 3413.18291 2969.48959 1944.79627
SSEtestingdes2<-sum(selisihdes2^2)
MSEtestingdes2<-SSEtestingdes2/length(kurstest2$Penumpang)
MAPEtestingdes2<-sum(abs(selisihdes2/kurstest2$Penumpang)*100)/length(kurstest2$Penumpang)## Time Series:
## Start = 86
## End = 106
## Frequency = 1
## [1] -888.08683 675.70817 334.50316 2004.29816 1714.09316 2100.88816
## [7] 502.68316 73.47816 506.27316 271.06816 2438.86316 1115.65815
## [13] -1251.54685 360.24815 -2.95685 -32.16185 1020.63315 2242.42815
## [19] 2384.22315 1858.01814 750.81314
SSEtestingdesopt<-sum(selisihdesopt^2)
MSEtestingdesopt<-SSEtestingdesopt/length(kurstest2$Penumpang)
MAPEtestingdesopt<-sum(abs(selisihdesopt/kurstest2$Penumpang)*100)/length(kurstest2$Penumpang)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 4.237259e+07 6.384805e+07 3.797470e+07
## MSE 2.017742e+06 3.040384e+06 1.808319e+06
## MAPE 2.022581e+01 2.914051e+01 2.261398e+01
nilai MAPE untuk ketiga metode dalam SES masih sangat besar (>10%), selain itu nilai SSE dan MSE untuk ketiga metode tersebut juga masih sangat tinggi sehingga metode DES kurang tepat digunakan untuk data tersebut.
Perbandingan SES dan DES
MSEfull <-
matrix(c(MAPEtesting1,MAPEtesting2,MAPEtestingopt,MAPEtestingdes1,MAPEtestingdes2,
MAPEtestingdesopt),nrow=3,ncol=2)
row.names(MSEfull)<- c("ske 1", "ske 2", "ske opt")
colnames(MSEfull) <- c("ses","des")
MSEfull## ses des
## ske 1 17.53311 20.22581
## ske 2 16.35872 29.14051
## ske opt 17.45879 22.61398
Kedua metode dapat dibandingkan dengan menggunakan ukuran akurasi yang sama. Contoh di atas adalah perbandingan kedua metode dengan ukuran akurasi MAPE Hasilnya didapatkan metode SES lebih baik dibandingkan metode DES dilihat dari MAPE yang lebih kecil nilainya. Namun, metode SES maupun DES memiliki nilai MAPE yang lebih besar dari 10% sehingga kurang cocok digunakan pada data tersebut.
Pemulusan Data Musiman
data3 <- read_excel("/Users/user/Downloads/Documents/MPDW 💹/mpdw_pemulusan_individu.xlsx")
data3.ts <- ts(data3$Penumpang)
str(data3)## tibble [106 × 2] (S3: tbl_df/tbl/data.frame)
## $ Tanggal : num [1:106] 1 2 3 4 5 6 7 8 9 10 ...
## $ Penumpang: num [1:106] 6458 7493 6304 6506 6283 ...
#membagi data menjadi training dan testing
kurstrain3<-data3[1:85,2]
kurstest3<-data3[86:106,2]
training3.ts<-ts(kurstrain3, frequency = 7)
testing3.ts<-ts(kurstest3, frequency = 7)
data3.ts<-ts(data3[1:106,2], frequency = 7)frequency = 7, dikarenakan jika dilihat dari pola trend datanya terdapat pola tertentu yang terbentuk setiap 7 periode waktu.
Metode Holt-Winter untuk peramalan data musiman menggunakan tiga persamaan pemulusan yang terdiri atas persamaan untuk level \((L_t)\), trend \((B_t)\), dan komponen seasonal / musiman \((S_t)\) dengan parameter pemulusan berupa \(\alpha\), \(\beta\), dan \(\gamma\). Metode Holt-Winter musiman terbagi menjadi dua, yaitu metode aditif dan metode multiplikatif.
Pemulusan data musiman dengan metode Winter dilakukan menggunakan
fungsi HoltWinters() dengan memasukkan argumen tambahan,
yaitu gamma() dan seasonal() . Arguman
seasonal() diinisialisasi menyesuaikan jenis musiman,
aditif atau multiplikatif.
Winter Aditif
Perhitungan dengan model aditif dilakukan jika plot data asli menunjukkan fluktuasi musiman yang relatif stabil (konstan).
Pemulusan
#Pemulusan dengan winter aditif
winter1 <- HoltWinters(training3.ts,alpha=0.2,beta=0.1,gamma=0.1,seasonal = "additive")
winter1$fitted## Time Series:
## Start = c(2, 1)
## End = c(13, 1)
## Frequency = 7
## xhat level trend season
## 2.000000 7282.908 7053.556 30.301020 199.05102
## 2.142857 7037.269 7160.276 37.942857 -160.94898
## 2.285714 7638.864 7255.564 43.677469 339.62245
## 2.428571 6952.689 7310.869 44.840181 -403.02041
## 2.571429 6452.755 7353.771 44.646404 -945.66327
## 2.714286 7941.458 7391.067 43.911312 506.47959
## 2.857143 7696.208 7210.287 21.442154 464.47959
## 3.000000 7276.384 7044.087 2.677985 229.61837
## 3.142857 6931.148 7064.688 4.470315 -138.01053
## 3.285714 7646.670 7277.129 25.267350 344.27330
## 3.428571 6731.881 7127.863 7.813955 -403.79552
## 3.571429 6186.993 7128.500 7.096336 -948.60364
## 3.714286 7492.637 7074.998 1.036476 416.60296
## 3.857143 7215.334 6847.707 -21.796273 389.42292
## 4.000000 6807.409 6613.644 -43.022946 236.78769
## 4.142857 6495.786 6591.539 -40.931121 -54.82239
## 4.285714 6971.624 6721.051 -23.886837 274.45972
## 4.428571 6132.934 6575.639 -36.039315 -406.66599
## 4.571429 5477.712 6491.413 -40.857997 -972.84307
## 4.714286 6593.133 6321.613 -53.752241 325.27197
## 4.857143 6324.115 6091.034 -71.434892 304.51622
## 5.000000 5871.654 5727.176 -100.677200 245.15499
## 5.142857 5548.273 5634.768 -99.850278 13.35475
## 5.285714 5856.877 5713.063 -82.035730 225.84980
## 5.428571 5026.938 5543.652 -90.773278 -425.94072
## 5.571429 4464.419 5568.091 -79.252041 -1024.42005
## 5.714286 5705.616 5526.555 -75.480423 254.54136
## 5.857143 5346.526 5254.152 -95.172749 187.54699
## 6.000000 5291.913 5140.474 -97.023267 248.46267
## 6.142857 5273.499 5263.868 -74.981530 84.61294
## 6.285714 5840.175 5675.586 -26.311515 190.89961
## 6.428571 5007.669 5435.240 -47.715006 -379.85577
## 6.571429 4442.749 5489.591 -37.508392 -1009.33358
## 6.714286 5506.362 5375.733 -45.143376 175.77206
## 6.857143 5197.552 5086.917 -69.510608 180.14492
## 7.000000 5178.144 4920.696 -79.181639 336.62962
## 7.142857 5238.934 5020.886 -61.244525 279.29300
## 7.285714 5360.757 5284.254 -28.783211 105.28565
## 7.428571 4834.252 5206.920 -33.638349 -339.02931
## 7.571429 4294.414 5350.231 -15.943393 -1039.87352
## 7.714286 5429.556 5364.205 -12.951676 78.30313
## 7.857143 5420.900 5297.742 -18.302802 141.46079
## 8.000000 5518.176 5141.859 -32.060800 408.37808
## 8.142857 5667.457 5273.963 -15.644328 409.13826
## 8.285714 5520.719 5433.027 1.826533 85.86510
## 8.428571 5182.573 5447.710 3.112154 -268.24949
## 8.571429 4502.462 5520.308 10.060699 -1027.90665
## 8.714286 5429.366 5377.676 -5.208535 56.89862
## 8.857143 5218.207 5158.394 -26.615858 86.42880
## 9.000000 5913.561 5435.737 3.779998 474.04397
## 9.142857 5850.695 5374.405 -2.731221 479.02170
## 9.285714 5521.837 5427.935 2.894874 91.00758
## 9.428571 5289.885 5518.662 11.678135 -240.45531
## 9.571429 4595.620 5659.963 24.640439 -1088.98359
## 9.714286 5681.697 5685.680 24.748038 -28.73067
## 9.857143 5699.495 5488.888 2.594099 208.01222
## 10.000000 5778.507 5342.783 -12.275792 447.99909
## 10.142857 5966.166 5463.606 1.034073 501.52608
## 10.285714 5861.718 5710.007 25.570744 126.14062
## 10.428571 5487.684 5658.434 17.856376 -188.60609
## 10.571429 4643.943 5711.154 21.342687 -1088.55319
## 10.714286 5524.745 5630.908 11.183825 -117.34642
## 10.857143 5445.464 5318.142 -21.211077 148.53266
## 11.000000 5531.997 5074.239 -43.480359 501.23855
## 11.142857 5668.131 5104.559 -36.100294 599.67276
## 11.285714 5362.793 5282.232 -14.722921 95.28315
## 11.428571 4979.831 5178.151 -23.658772 -174.66084
## 11.571429 4109.042 5252.126 -13.895398 -1129.18864
## 11.714286 4989.500 5249.222 -12.796234 -246.92603
## 11.857143 5073.535 5045.926 -31.846231 59.45553
## 12.000000 5257.015 4781.373 -55.116935 530.75881
## 12.142857 5535.618 4889.253 -38.817225 685.18225
## 12.285714 5097.402 5056.112 -18.249581 59.53974
## 12.428571 4868.297 5023.582 -19.677625 -135.60735
## 12.571429 3944.509 5081.245 -11.943565 -1124.79198
## 12.714286 4724.000 5060.000 -12.873753 -323.12602
## 12.857143 4823.745 4886.326 -28.953748 -33.62728
## 13.000000 5335.332 4776.423 -37.048644 595.95765
winter1.opt<- HoltWinters(training3.ts, alpha= NULL, beta = NULL, gamma = NULL, seasonal = "additive")
winter1.opt## Holt-Winters exponential smoothing with trend and additive seasonal component.
##
## Call:
## HoltWinters(x = training3.ts, alpha = NULL, beta = NULL, gamma = NULL, seasonal = "additive")
##
## Smoothing parameters:
## alpha: 0.1932087
## beta : 0.08177298
## gamma: 0.583315
##
## Coefficients:
## [,1]
## a 5146.95839
## b -14.99438
## s1 1354.05577
## s2 -185.00981
## s3 120.43951
## s4 -1245.32207
## s5 -1254.76422
## s6 -859.74445
## s7 721.12758
## Time Series:
## Start = c(2, 1)
## End = c(13, 1)
## Frequency = 7
## xhat level trend season
## 2.000000 7282.908 7053.556 30.3010204 199.05102
## 2.142857 7033.069 7157.681 36.3377853 -160.94898
## 2.285714 7630.785 7250.229 40.9342706 339.62245
## 2.428571 6942.916 7303.956 41.9804111 -403.02041
## 2.571429 6442.271 7345.953 41.9817347 -945.66327
## 2.714286 7930.905 7382.859 41.5666681 506.47959
## 2.857143 7697.866 7209.402 23.9836030 464.47959
## 3.000000 7439.799 7051.796 9.1344296 378.86860
## 3.142857 7030.607 7046.672 7.9684630 -24.03312
## 3.285714 7629.942 7236.332 22.8259679 370.78392
## 3.428571 6700.104 7093.783 9.3027232 -402.98098
## 3.571429 6153.503 7102.292 9.2378754 -958.02689
## 3.714286 7047.171 7059.460 4.9799229 -17.26851
## 3.857143 6946.081 6929.933 -6.0190626 22.16613
## 4.000000 7096.482 6770.878 -18.5333420 344.13786
## 4.142857 7113.781 6716.701 -21.4480206 418.52851
## 4.285714 6690.724 6740.506 -17.7475384 -32.03401
## 4.428571 6231.810 6659.632 -22.9095364 -404.91261
## 4.571429 5457.931 6571.068 -28.2782818 -1084.85884
## 4.714286 6039.000 6422.048 -38.1517288 -344.89614
## 4.857143 5926.174 6320.137 -43.3654838 -350.59767
## 5.000000 6268.304 6071.164 -60.1786396 257.31811
## 5.142857 6405.301 5942.338 -65.7921709 528.75506
## 5.285714 5632.002 5883.057 -65.2597465 -185.79484
## 5.428571 5143.395 5776.836 -68.6092196 -564.83184
## 5.571429 4356.719 5797.027 -61.3478074 -1378.95996
## 5.714286 5236.057 5792.923 -56.6667877 -500.19865
## 5.857143 4720.526 5636.743 -64.8043104 -851.41242
## 6.000000 5708.742 5675.010 -56.3758180 90.10742
## 6.142857 6250.097 5751.032 -45.5492502 544.61443
## 6.285714 5678.872 5986.969 -22.5312790 -285.56585
## 6.428571 5403.410 5788.836 -36.8907769 -348.53560
## 6.571429 4499.479 5774.085 -35.0803334 -1239.52607
## 6.714286 4869.687 5654.287 -42.0079670 -742.59167
## 6.857143 4848.341 5499.892 -51.1981885 -600.35227
## 7.000000 5782.016 5422.738 -53.3206810 412.59923
## 7.142857 6607.585 5426.024 -48.6917571 1230.25249
## 7.285714 4668.522 5426.488 -44.6721868 -713.29331
## 7.428571 5136.480 5468.658 -37.5707713 -294.60778
## 7.571429 4069.388 5543.636 -28.3673889 -1445.88002
## 7.714286 4548.856 5587.646 -22.4488025 -1016.34150
## 7.857143 5007.326 5683.662 -12.7615890 -663.57512
## 8.000000 6151.284 5617.899 -17.0957292 550.48134
## 8.142857 6972.925 5637.071 -14.1299616 1349.98374
## 8.285714 5016.773 5539.490 -20.9540538 -501.76290
## 8.428571 5595.880 5628.322 -11.9764876 -20.46592
## 8.571429 4321.017 5603.617 -13.0173364 -1269.58264
## 8.714286 4728.148 5478.149 -22.2127701 -727.78773
## 8.857143 4563.892 5384.613 -28.0450389 -792.67649
## 9.000000 6421.752 5776.625 6.3042402 638.82288
## 9.142857 6761.687 5621.841 -6.8684196 1146.71398
## 9.285714 5242.147 5493.312 -16.8169973 -234.34745
## 9.428571 5558.454 5615.383 -5.4596628 -51.46977
## 9.571429 4140.304 5683.255 0.5368811 -1543.48772
## 9.714286 4879.104 5772.803 7.8155259 -901.51397
## 9.857143 5955.153 5721.669 2.9951093 230.48811
## 10.000000 5765.277 5531.619 -12.7907526 246.44786
## 10.142857 6498.271 5649.964 -2.0674305 850.37494
## 10.285714 5894.987 5782.124 8.9087598 103.95434
## 10.428571 5839.520 5710.081 2.2890750 127.14975
## 10.571429 4350.878 5678.072 -0.5156040 -1326.67818
## 10.714286 4587.029 5636.040 -3.9105132 -1045.10008
## 10.857143 5245.943 5500.355 -14.6860632 -239.72656
## 11.000000 5845.826 5309.088 -29.1256727 565.86427
## 11.142857 6439.692 5290.622 -28.2539670 1177.32355
## 11.285714 5203.027 5319.811 -23.5567156 -93.22671
## 11.428571 5256.313 5240.798 -28.0915292 43.60656
## 11.571429 3801.056 5253.606 -24.7470288 -1427.80260
## 11.714286 3913.898 5298.983 -19.0127912 -1366.07222
## 11.857143 4616.846 5303.754 -17.0678691 -669.84031
## 12.000000 5713.712 5150.118 -28.2355109 591.82984
## 12.142857 6485.773 5191.107 -22.5748297 1317.24094
## 12.285714 4934.001 5183.646 -21.3388966 -228.30555
## 12.428571 5303.426 5180.082 -19.8853890 143.22945
## 12.571429 3873.193 5150.840 -20.6504838 -1256.99642
## 12.714286 3806.585 5134.983 -20.2585570 -1308.13867
## 12.857143 4115.678 5136.637 -18.4666911 -1002.49171
## 13.000000 5923.545 5176.774 -13.6744362 760.44498
Peramalan
Plot Deret Waktu
#Plot time series
plot(training3.ts,main="Metode Winter",type="l",col="black",
xlim=c(1,17),pch=12)
lines(xhat1,type="l",col="red")
lines(xhat1.opt,type="l",col="blue")
lines(forecast1,type="l",col="red")
lines(forecast1.opt,type="l",col="blue")
legend("topleft",c("Actual Data",expression(paste(winter1)),
expression(paste(winter1.opt))),cex=0.5,
col=c("black","red","blue"),lty=1)Akurasi Data Latih
#Akurasi data training
SSE1<-winter1$SSE
MSE1<-winter1$SSE/length(training3.ts)
RMSE1<-sqrt(MSE1)
fitted_values <- winter1$fitted[,1]
abs_error <- abs(training3.ts - fitted_values)
MAPE1 <- mean(abs_error / training3.ts * 100)
akurasi1 <- matrix(c(SSE1,MSE1,RMSE1,MAPE1))
row.names(akurasi1)<- c("SSE", "MSE", "RMSE", "MAPE")
colnames(akurasi1) <- c("Akurasi")
akurasi1## Akurasi
## SSE 5.018447e+07
## MSE 5.904055e+05
## RMSE 7.683785e+02
## MAPE 1.182947e+01
SSE1.opt<-winter1.opt$SSE
MSE1.opt<-winter1.opt$SSE/length(training3.ts)
RMSE1.opt<-sqrt(MSE1.opt)
fitted_values <- winter1.opt$fitted[,1]
abs_error <- abs(training3.ts - fitted_values)
MAPE1.opt <- mean(abs_error / training3.ts * 100)
akurasi1.opt <- matrix(c(SSE1.opt,MSE1.opt,RMSE1.opt,MAPE1.opt))
row.names(akurasi1.opt)<- c("SSE1.opt", "MSE1.opt", "RMSE1.opt", "MAPE1.opt")
colnames(akurasi1.opt) <- c("Akurasi")
akurasi1.opt## Akurasi
## SSE1.opt 2.581920e+07
## MSE1.opt 3.037553e+05
## RMSE1.opt 5.511400e+02
## MAPE1.opt 8.056276e+00
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),Nilai_MAPE=c(MAPE1,MAPE1.opt))
akurasi1.train## Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE Nilai_MAPE
## 1 Winter 1 50184469 590405.5 768.3785 11.829466
## 2 Winter1 optimal 25819201 303755.3 551.1400 8.056276
Hasil analisis menggunakan Winter aditif dengan nilai alpha, beta, dan gamma optimum menghasilkan nilai SSE, MSE, dan RMSE yang lebih kecil. Selain itu nilai MAPE juga lebih kecil serta dibawah 10% yang menandakan bahwa nilai ini dapat dikategorikan sebagai nilai akurasi yang sangat baik.
Akurasi Data Uji
forecast1<-data.frame(forecast1)
testing3.ts<-data.frame(testing3.ts)
selisih1<-forecast1-testing3.ts
SSEtesting1<-sum(selisih1^2)
MSEtesting1<-SSEtesting1/length(testing3.ts)
MAPEtesting1<-sum(abs(selisih1/testing3.ts$Penumpang)*100)/length(testing3.ts$Penumpang)
forecast1.opt<-data.frame(forecast1.opt)
selisih1.opt<-forecast1.opt-testing3.ts
SSEtesting1.opt<-sum(selisih1.opt^2)
MSEtesting1.opt<-SSEtesting1.opt/length(testing3.ts)
MAPEtesting1.opt<-sum(abs(selisih1.opt/testing3.ts$Penumpang)*100)/length(testing3.ts$Penumpang)
akurasi1.test = data.frame(Model_Winter = c("Winter 1","Winter 1 optimal"),
Nilai_SSE=c(SSEtesting1,SSEtesting1.opt),
Nilai_MSE=c(MSEtesting1,MSEtesting1.opt),Nilai_MAPE=c(MAPEtesting1,MAPEtesting1.opt))
akurasi1.test## Model_Winter Nilai_SSE Nilai_MSE Nilai_MAPE
## 1 Winter 1 34678108 34678108 18.18519
## 2 Winter 1 optimal 26662513 26662513 13.34036
forecast1 <- predict(winter1, n.ahead = 21)
forecast1.opt <- predict(winter1.opt, n.ahead = 21)
accuracy(forecast1,testing3.ts$Penumpang)## ME RMSE MAE MPE MAPE
## Test set 989.1085 1285.044 1060.409 16.38362 18.18519
## ME RMSE MAE MPE MAPE
## Test set 710.9157 1126.785 779.7187 11.95899 13.34036
Hasil analisis pada data uji menggunakan Winter aditif dengan nilai alpha, beta, dan gamma optimum menghasilkan nilai SSE dab MSE yang lebih kecil. Hal tersebut sesuai dengan hasil analisis pada data latih sebelumnya. Metode Winter Aditif dengan alpha optimal menghasilkan nilai MAPE yang lebih rendah menandakan metode Winter aditif dengan alpha=0.2.
Winter Multiplikatif
Model multiplikatif digunakan cocok digunakan jika plot data asli menunjukkan fluktuasi musiman yang bervariasi.
Pemulusan
#Pemulusan dengan winter multiplikatif
winter2 <- HoltWinters(training3.ts,alpha=0.2,beta=0.1,gamma=0.3,seasonal = "multiplicative")
winter2$fitted## Time Series:
## Start = c(2, 1)
## End = c(13, 1)
## Frequency = 7
## xhat level trend season
## 2.000000 7273.984 7053.556 30.3010204 1.0268394
## 2.142857 7044.111 7160.016 37.9169371 0.9786297
## 2.285714 7638.700 7255.133 43.6369521 1.0465736
## 2.428571 6943.363 7309.911 44.7510598 0.9440763
## 2.571429 6435.617 7354.586 44.7433762 0.8697569
## 2.714286 7967.791 7394.818 44.2922760 1.0710678
## 2.857143 7704.217 7224.410 22.8222769 1.0630563
## 3.000000 7356.823 7069.214 5.0204635 1.0399461
## 3.142857 6995.432 7076.000 5.1969550 0.9878884
## 3.285714 7657.787 7278.702 24.9475197 1.0484877
## 3.428571 6743.600 7135.067 8.0891998 0.9440645
## 3.571429 6205.651 7133.072 7.0807975 0.8691202
## 3.714286 7298.074 7066.135 -0.3209630 1.0328709
## 3.857143 7076.080 6882.427 -18.6596293 1.0309323
## 4.000000 6915.982 6684.885 -36.5478994 1.0402573
## 4.142857 6743.535 6647.572 -36.6244518 1.0200557
## 4.285714 6830.471 6729.463 -24.7728371 1.0187600
## 4.428571 6200.637 6613.114 -33.9304545 0.9424629
## 4.571429 5555.277 6513.688 -40.4800392 0.8581954
## 4.714286 6246.603 6304.883 -57.3125068 0.9998451
## 4.857143 6058.778 6140.034 -68.0662336 0.9978279
## 5.000000 5970.290 5832.091 -92.0539029 1.0401136
## 5.142857 5870.393 5729.021 -93.1555197 1.0416134
## 5.285714 5673.175 5745.043 -82.2377016 1.0018311
## 5.428571 5144.251 5612.263 -87.2919405 0.9310911
## 5.571429 4607.131 5623.511 -77.4379380 0.8307014
## 5.714286 5364.763 5557.117 -76.3335877 0.9788314
## 5.857143 4989.294 5349.246 -89.4872881 0.9485785
## 6.000000 5428.969 5315.570 -83.9061842 1.0377136
## 6.142857 5702.216 5417.656 -65.3069996 1.0653671
## 6.285714 5649.749 5728.704 -27.6714454 0.9910045
## 6.428571 5207.824 5523.486 -45.4261357 0.9506695
## 6.571429 4583.428 5543.314 -38.9007215 0.8326824
## 6.714286 5060.834 5378.932 -51.4487900 0.9499483
## 6.857143 4895.873 5164.773 -67.7198618 0.9605301
## 7.000000 5389.006 5059.184 -71.5067857 1.0804641
## 7.142857 5810.972 5114.658 -58.8086500 1.1493561
## 7.285714 4952.753 5238.740 -40.5196550 0.9527786
## 7.428571 5009.318 5232.907 -37.0509177 0.9640987
## 7.571429 4306.468 5343.078 -22.3287420 0.8093724
## 7.714286 4877.116 5354.734 -18.9302545 0.9140357
## 7.857143 5126.416 5398.140 -12.6967030 0.9519023
## 8.000000 5876.838 5302.784 -20.9625833 1.1126536
## 8.142857 6409.342 5364.895 -12.6552015 1.1975064
## 8.285714 5151.139 5374.229 -10.4563265 0.9603575
## 8.428571 5430.765 5454.127 -1.4209215 0.9959761
## 8.571429 4463.599 5472.633 0.5718031 0.8155366
## 8.714286 4891.417 5295.506 -17.1980663 0.9267016
## 8.857143 4796.319 5163.402 -28.6886377 0.9340966
## 9.000000 6305.084 5550.448 12.8848219 1.1333286
## 9.142857 6542.832 5436.788 0.2303375 1.2033859
## 9.285714 5251.943 5368.739 -6.5975888 0.9794488
## 9.428571 5516.619 5506.929 7.8810984 1.0003280
## 9.571429 4395.127 5599.058 16.3059591 0.7826967
## 9.714286 5131.703 5667.970 21.5665565 0.9019544
## 9.857143 5675.726 5565.871 9.2000202 1.0180544
## 10.000000 5980.700 5433.679 -4.9392274 1.1016738
## 10.142857 6536.951 5512.848 3.4716020 1.1850204
## 10.285714 5699.981 5627.043 14.5439626 1.0103505
## 10.428571 5710.481 5597.250 10.1102404 1.0183903
## 10.571429 4437.456 5597.839 9.1581276 0.7914141
## 10.714286 4856.890 5530.816 1.5399552 0.8779063
## 10.857143 5222.623 5315.501 -20.1454934 0.9862649
## 11.000000 5695.088 5114.750 -38.2060184 1.1218434
## 11.142857 6160.494 5113.254 -34.5350549 1.2130016
## 11.285714 5152.588 5173.773 -25.0296150 1.0007466
## 11.428571 5154.432 5101.461 -29.7578426 1.0163117
## 11.571429 3977.144 5133.411 -23.5871297 0.7783329
## 11.714286 4290.736 5157.838 -18.7856790 0.8349275
## 11.857143 4772.813 5078.272 -24.8637222 0.9444741
## 12.000000 5462.431 4870.701 -43.1344813 1.1315083
## 12.142857 6078.406 4935.311 -32.3600309 1.2397445
## 12.285714 4905.292 4981.288 -24.5262538 0.9896163
## 12.428571 5112.662 4981.157 -22.0867726 1.0309718
## 12.571429 3909.447 4986.683 -19.3255247 0.7870275
## 12.714286 4069.280 4964.448 -19.6164095 0.8229359
## 12.857143 4406.350 4908.552 -23.2443881 0.9019596
## 13.000000 5649.173 4888.113 -22.9638924 1.1611511
winter2.opt<- HoltWinters(training3.ts, alpha= NULL, beta = NULL, gamma = NULL, seasonal = "multiplicative")
winter2.opt$fitted## Time Series:
## Start = c(2, 1)
## End = c(13, 1)
## Frequency = 7
## xhat level trend season
## 2.000000 7273.984 7053.556 30.301020 1.0268394
## 2.142857 7038.835 7158.820 33.722166 0.9786297
## 2.285714 7625.592 7249.905 36.340090 1.0465736
## 2.428571 6926.339 7299.677 36.953088 0.9440763
## 2.571429 6416.384 7340.104 37.111645 0.8697569
## 2.714286 7941.150 7377.129 37.107676 1.0710678
## 2.857143 7691.736 7207.806 27.686608 1.0630563
## 3.000000 7469.921 7062.582 19.795331 1.0547195
## 3.142857 7072.734 7062.981 18.910121 0.9987069
## 3.285714 7661.655 7258.951 26.990776 1.0515669
## 3.428571 6748.199 7119.769 19.406978 0.9452350
## 3.571429 6216.150 7128.305 18.910845 0.8697303
## 3.714286 7027.482 7072.035 15.479780 0.9915298
## 3.857143 6931.729 6953.206 9.350207 0.9955724
## 4.000000 7132.652 6808.773 2.331858 1.0472092
## 4.142857 7188.937 6769.626 0.438844 1.0618711
## 4.285714 6719.237 6799.554 1.784634 0.9879286
## 4.428571 6335.435 6730.553 -1.445880 0.9414972
## 4.571429 5607.970 6636.389 -5.677342 0.8457569
## 4.714286 6062.266 6450.329 -13.909593 0.9418693
## 4.857143 5947.253 6362.584 -17.279289 0.9372682
## 5.000000 6275.856 6117.365 -27.681999 1.0305719
## 5.142857 6431.624 6020.371 -30.845265 1.0738118
## 5.285714 5727.579 5990.878 -30.783548 0.9609880
## 5.428571 5320.419 5897.087 -33.659084 0.9073906
## 5.571429 4623.337 5924.734 -30.861214 0.7844312
## 5.714286 5363.140 5901.316 -30.521481 0.9135287
## 5.857143 4822.532 5732.419 -36.836677 0.8467145
## 6.000000 5762.528 5795.897 -32.258516 0.9998073
## 6.142857 6297.712 5887.973 -26.584150 1.0744403
## 6.285714 5704.108 6119.597 -14.800041 0.9343649
## 6.428571 5482.531 5907.993 -23.781774 0.9317358
## 6.571429 4618.307 5891.706 -23.439764 0.7869968
## 6.714286 4880.392 5728.862 -29.801867 0.8563504
## 6.857143 4889.689 5562.881 -36.016812 0.8847131
## 7.000000 5747.268 5487.771 -37.800920 1.0545502
## 7.142857 6527.498 5511.150 -35.008816 1.1919887
## 7.285714 4694.191 5531.384 -32.487625 0.8536605
## 7.428571 5205.578 5596.629 -28.027319 0.9348087
## 7.571429 4168.655 5676.722 -23.092952 0.7373415
## 7.714286 4577.304 5727.141 -19.737990 0.8019941
## 7.857143 5069.324 5850.923 -13.188033 0.8683717
## 8.000000 6232.584 5761.491 -16.667654 1.0849043
## 8.142857 7029.402 5764.133 -15.786412 1.2228564
## 8.285714 5041.882 5669.722 -19.374655 0.8923135
## 8.428571 5646.744 5770.168 -13.906305 0.9809742
## 8.571429 4356.332 5732.834 -14.975501 0.7618818
## 8.714286 4722.305 5558.350 -22.255155 0.8530030
## 8.857143 4550.251 5452.250 -26.081643 0.8385754
## 9.000000 6497.141 5939.749 -2.642875 1.0943278
## 9.142857 6794.459 5773.561 -10.106728 1.1788865
## 9.285714 5301.437 5652.833 -15.155273 0.9403583
## 9.428571 5597.235 5775.753 -8.853795 0.9705796
## 9.571429 4111.486 5836.015 -5.699494 0.7051909
## 9.714286 4887.330 5966.966 0.536966 0.8189907
## 9.857143 6045.828 5892.189 -2.900214 1.0265803
## 10.000000 5746.941 5680.302 -12.437933 1.0139517
## 10.142857 6487.168 5803.198 -6.261584 1.1190684
## 10.285714 5912.498 5921.101 -0.594966 0.9986474
## 10.428571 5832.178 5834.462 -4.521865 1.0003839
## 10.571429 4325.810 5796.452 -6.050191 0.7470656
## 10.714286 4538.910 5740.385 -8.332842 0.7918473
## 10.857143 5162.291 5574.458 -15.525104 0.9286479
## 11.000000 5762.730 5382.925 -23.557755 1.0752632
## 11.142857 6327.035 5384.681 -22.402464 1.1799153
## 11.285714 5197.430 5430.678 -19.280877 0.9604599
## 11.428571 5253.947 5353.714 -21.913387 0.9853981
## 11.571429 3909.865 5374.564 -19.961791 0.7301878
## 11.714286 3967.142 5423.117 -16.834921 0.7338023
## 11.857143 4597.231 5425.023 -15.979623 0.8499157
## 12.000000 5688.500 5249.866 -23.244130 1.0883703
## 12.142857 6428.422 5295.987 -20.078444 1.2184483
## 12.285714 4928.373 5297.813 -19.078762 0.9336278
## 12.428571 5311.427 5299.319 -18.139311 1.0057272
## 12.571429 3960.189 5270.135 -18.643372 0.7541075
## 12.714286 3861.703 5235.258 -19.384276 0.7403752
## 12.857143 4082.051 5231.374 -18.676862 0.7830976
## 13.000000 5944.670 5297.401 -14.811161 1.1253326
Peramalan
Plot Deret Waktu
#Plot time series
plot(training3.ts,main="Winter Multiplicative",type="l",col="black",
xlim=c(1,17),pch=12)
lines(xhat2,type="l",col="red")
lines(xhat2.opt,type="l",col="blue")
lines(forecast2,type="l",col="red")
lines(forecast2.opt,type="l",col="blue")
legend("topleft",c("Actual Data",expression(paste(winter2)),
expression(paste(winter2.opt))),cex=0.5,
col=c("black","red","blue"),lty=1)Akurasi Data Latih
#Akurasi data training
SSE2<-winter2$SSE
MSE2<-winter2$SSE/length(training3.ts)
RMSE2<-sqrt(MSE2)
fitted_values <- winter2$fitted[,1]
abs_error <- abs(training3.ts - fitted_values)
MAPE2 <- mean(abs_error / training3.ts * 100)
akurasi2 <- matrix(c(SSE2,MSE2,RMSE2,MAPE2))
row.names(akurasi2)<- c("SSE2", "MSE2", "RMSE2", "MAPE2")
colnames(akurasi2) <- c("Akurasi lamda=0.2")
akurasi1## Akurasi
## SSE 5.018447e+07
## MSE 5.904055e+05
## RMSE 7.683785e+02
## MAPE 1.182947e+01
SSE2.opt<-winter2.opt$SSE
MSE2.opt<-winter2.opt$SSE/length(training3.ts)
RMSE2.opt<-sqrt(MSE2.opt)
fitted_values <- winter2.opt$fitted[,1]
abs_error <- abs(training3.ts - fitted_values)
MAPE2.opt <- mean(abs_error / training3.ts * 100)
akurasi2.opt <- matrix(c(SSE2.opt,MSE2.opt,RMSE2.opt,MAPE2.opt))
row.names(akurasi2.opt)<- c("SSE2.opt", "MSE2.opt", "RMSE2.opt", "MAPE2.opt")
colnames(akurasi2.opt) <- c("Akurasi")
akurasi2.opt## Akurasi
## SSE2.opt 2.619855e+07
## MSE2.opt 3.082182e+05
## RMSE2.opt 5.551740e+02
## MAPE2.opt 8.087406e+00
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),Nilai_MAPE=c(MAPE2,MAPE2.opt))
akurasi2.train## Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE Nilai_MAPE
## 1 Winter 2 30936207 363955.4 603.2871 8.739516
## 2 winter2 optimal 26198549 308218.2 555.1740 8.087406
Hasil analisis menggunakan Winter Multiplicative dengan nilai alpha, beta, dan gamma optimum menghasilkan nilai SSE, MSE, dan RMSE yang lebih kecil. Selain itu nilai MAPE juga lebih kecil serta dibawah 10% yang menandakan bahwa nilai ini dapat dikategorikan sebagai nilai akurasi yang sangat baik.
Akurasi Data Uji
forecast2<-data.frame(forecast2)
testing3.ts<-data.frame(testing3.ts)
selisih2<-forecast2-testing3.ts
SSEtesting2<-sum(selisih2^2)
MSEtesting2<-SSEtesting2/length(testing3.ts)
MAPEtesting2<-sum(abs(selisih2/testing3.ts$Penumpang)*100)/length(testing3.ts$Penumpang)
forecast2.opt<-data.frame(forecast2.opt)
selisih2.opt<-forecast2.opt-testing3.ts
SSEtesting2.opt<-sum(selisih2.opt^2)
MSEtesting2.opt<-SSEtesting2.opt/length(testing3.ts)
MAPEtesting2.opt<-sum(abs(selisih2.opt/testing3.ts$Penumpang)*100)/length(testing3.ts$Penumpang)
akurasi2.test = data.frame(Model_Winter = c("Winter 2","Winter 2 optimal"),
Nilai_SSE=c(SSEtesting2,SSEtesting2.opt),
Nilai_MSE=c(MSEtesting2,MSEtesting2.opt),Nilai_MAPE=c(MAPEtesting2,MAPEtesting2.opt))
akurasi2.test## Model_Winter Nilai_SSE Nilai_MSE Nilai_MAPE
## 1 Winter 2 29070073 29070073 14.88042
## 2 Winter 2 optimal 25810139 25810139 12.91135
forecast2 <- predict(winter2, n.ahead = 21)
forecast2.opt <- predict(winter2.opt, n.ahead = 21)
accuracy(forecast2,testing3.ts$Penumpang)## ME RMSE MAE MPE MAPE
## Test set 835.6942 1176.558 872.1985 13.95179 14.88042
## ME RMSE MAE MPE MAPE
## Test set 697.3363 1108.627 761.6365 11.58912 12.91135
Hasil analisis pada data uji menggunakan Winter Multiplicative dengan nilai alpha, beta, dan gamma optimum menghasilkan nilai SSE, MSE, dan MAPE yang lebih kecil. Hal tersebut sesuai dengan hasil analisis pada data latih sebelumnya.
Kesimpulan
setelah menggunakan metode SMA, DMA, SES, DES, Winter Aditif, serta Winter Multiplikatif didapatkan hasil terbaik dengan membandingkan nilai SSE, MSE, RMSE, serta MAPE yang paling kecil pada setiap metodenya. Metode terbaik dengan nilai SE, MSE, RMSE, serta MAPE terendah yaitu menggunakan metode winter. Metode Winter sendiri dibagi menjadi 2, yaitu metode Winter Aditive dan Winter Multiplicative, setelah dianalisis pada kedua metode winter tersebut didapatkan hasil terbaik menggunakan nilai alpha, beta, dan juga gamma yang optimum.
Oleh karena itu, kedua nilai tersebut dibandingkan untuk menentukan metode winter terbaik yang akan digunakan.
## Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE Nilai_MAPE
## 1 Winter 1 50184469 590405.5 768.3785 11.829466
## 2 Winter1 optimal 25819201 303755.3 551.1400 8.056276
## Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE Nilai_MAPE
## 1 Winter 2 30936207 363955.4 603.2871 8.739516
## 2 winter2 optimal 26198549 308218.2 555.1740 8.087406
## Model_Winter Nilai_SSE Nilai_MSE Nilai_MAPE
## 1 Winter 1 34678108 34678108 18.18519
## 2 Winter 1 optimal 26662513 26662513 13.34036
## Model_Winter Nilai_SSE Nilai_MSE Nilai_MAPE
## 1 Winter 2 29070073 29070073 14.88042
## 2 Winter 2 optimal 25810139 25810139 12.91135
Berdasarkan nilai akurasi (SSE, MSE, RMSE, MAPE) pada data latih dan data uji menggunakan metode Winter Multiplicative Optimum diketahui lebih kecil daripada nilai akurasi pada kedua data tersebut yang menggunakan metode Winter Multiplicative, sehingga dapat dikatakan bahwa metode pemulusan yang pas dan tepat untuk digunakan adalah metode Winter Multiplicative. Hasil ini dapat terjadi dikarenakan metode Winter multiplicative digunakan saat datanya menunjukan pola fluktuasi musiman yang bervariasi seperti data awal tersebut.
Namun, nilai MAPE masih diatas 10% sehingga belum bisa dikategorikan sebagai nilai akurasi yang sangat baik. Oleh karena itu dibutuhkan data dengan periode lebih panjang serta analisis lebih lanjut untuk menghasilkan nilai akurasi yang lebih baik lagi.
Berikut hasil pemulusan & peramalan untuk seluruh data selama 60 periode kedepan menggunakan metode Winter Multiplicative dengan nilai alpha optimal sebagai berikut:
datafinal <- read_excel("/Users/user/Downloads/Documents/MPDW 💹/mpdw_pemulusan_individu.xlsx")
str(datafinal)## tibble [106 × 2] (S3: tbl_df/tbl/data.frame)
## $ Tanggal : num [1:106] 1 2 3 4 5 6 7 8 9 10 ...
## $ Penumpang: num [1:106] 6458 7493 6304 6506 6283 ...
datafinal.ts<-ts(datafinal$Penumpang, frequency = 7)
winterfinal <- HoltWinters(datafinal.ts,alpha=NULL,beta=NULL,gamma=NULL,seasonal = "multiplicative")
winterfinal$fitted## Time Series:
## Start = c(2, 1)
## End = c(16, 1)
## Frequency = 7
## xhat level trend season
## 2.000000 7273.984 7053.556 30.3010204 1.0268394
## 2.142857 7032.301 7154.044 31.8210369 0.9786297
## 2.285714 7612.583 7240.804 33.0108336 1.0465736
## 2.428571 6912.541 7288.682 33.3328060 0.9440763
## 2.571429 6402.648 7327.962 33.4615915 0.8697569
## 2.714286 7923.519 7364.253 33.5228674 1.0710678
## 2.857143 7693.268 7207.530 29.4027910 1.0630563
## 3.000000 7441.893 7074.773 25.8909425 1.0480558
## 3.142857 7072.145 7087.317 25.6018939 0.9942675
## 3.285714 7682.013 7279.548 29.2105262 1.0510694
## 3.428571 6785.599 7149.529 25.7621335 0.9456898
## 3.571429 6252.703 7157.828 25.3839410 0.8704607
## 3.714286 7211.013 7105.140 23.6931732 1.0115278
## 3.857143 7074.519 6972.126 20.2993943 1.0117404
## 4.000000 7141.726 6824.727 16.6676132 1.0438992
## 4.142857 7104.272 6800.833 15.7891816 1.0421983
## 4.285714 6888.619 6859.726 16.7226754 1.0017698
## 4.428571 6392.527 6779.924 14.6322615 0.9408307
## 4.571429 5704.785 6696.499 12.5086634 0.8503172
## 4.714286 6291.120 6520.038 8.4162042 0.9636462
## 4.857143 6162.231 6417.112 6.0049066 0.9593832
## 5.000000 6363.988 6173.317 0.5950672 1.0307869
## 5.142857 6433.218 6093.270 -1.1513658 1.0559903
## 5.285714 5919.799 6093.128 -1.1295113 0.9717334
## 5.428571 5465.443 5997.198 -3.1825823 0.9118167
## 5.571429 4805.851 6021.821 -2.5803949 0.7984148
## 5.714286 5552.598 5983.955 -3.3445745 0.9284333
## 5.857143 5097.772 5815.518 -6.9199255 0.8776252
## 6.000000 5847.199 5841.409 -6.2093563 1.0020564
## 6.142857 6266.051 5935.777 -4.0311788 1.0563586
## 6.285714 5809.692 6183.167 1.4137652 0.9393833
## 6.428571 5503.460 5980.582 -3.0041546 0.9206838
## 6.571429 4713.293 5980.489 -2.9411134 0.7884994
## 6.714286 5079.403 5825.071 -6.2432694 0.8729256
## 6.857143 5010.013 5651.724 -9.8621701 0.8880069
## 7.000000 5779.829 5580.421 -11.1927774 1.0378150
## 7.142857 6435.491 5621.651 -10.0574792 1.1468207
## 7.285714 4945.047 5680.142 -8.5729516 0.8719010
## 7.428571 5253.599 5708.130 -7.7811469 0.9216276
## 7.571429 4311.988 5793.425 -5.7654378 0.7450313
## 7.714286 4760.196 5820.318 -5.0581499 0.8185698
## 7.857143 5120.041 5905.734 -3.0987901 0.8674162
## 8.000000 6153.957 5820.393 -4.8798799 1.0581967
## 8.142857 6871.842 5847.744 -4.1818676 1.1759679
## 8.285714 5113.227 5791.707 -5.3048707 0.8836626
## 8.428571 5604.083 5884.806 -3.1737775 0.9528108
## 8.571429 4420.355 5867.301 -3.4841375 0.7538357
## 8.714286 4808.046 5697.223 -7.0920220 0.8449798
## 8.857143 4698.644 5592.180 -9.2133126 0.8416035
## 9.000000 6455.056 6029.598 0.4592521 1.0704799
## 9.142857 6781.993 5880.767 -2.7738877 1.1537940
## 9.285714 5277.500 5774.158 -5.0226142 0.9147818
## 9.428571 5597.227 5906.851 -2.0401380 0.9479095
## 9.571429 4223.581 5971.073 -0.6051295 0.7074121
## 9.714286 4940.093 6068.804 1.5245159 0.8138097
## 9.857143 5824.856 5987.414 -0.2711450 0.9728940
## 10.000000 5895.784 5822.537 -3.8359695 1.0132475
## 10.142857 6568.167 5918.425 -1.6762768 1.1100973
## 10.285714 5778.409 6020.494 0.5704970 0.9596989
## 10.428571 5783.804 5962.985 -0.6873133 0.9700630
## 10.571429 4343.935 5939.154 -1.1885211 0.7315528
## 10.714286 4648.212 5885.576 -2.3231086 0.7900752
## 10.857143 5218.793 5709.869 -6.0780259 0.9149693
## 11.000000 5786.572 5525.150 -9.9467881 1.0492038
## 11.142857 6356.784 5535.305 -9.5114497 1.1503839
## 11.285714 5243.881 5586.713 -8.1921509 0.9400128
## 11.428571 5296.031 5514.230 -9.5844684 0.9621020
## 11.571429 3968.729 5537.591 -8.8709821 0.7178386
## 11.714286 4120.083 5578.859 -7.7851386 0.7395491
## 11.857143 4725.592 5550.367 -8.2335746 0.8526665
## 12.000000 5660.167 5365.831 -12.0516963 1.0572283
## 12.142857 6372.479 5425.578 -10.4967760 1.1768021
## 12.285714 4983.735 5445.079 -9.8471421 0.9169315
## 12.428571 5293.630 5443.727 -9.6631497 0.9741568
## 12.571429 3962.084 5426.755 -9.8214411 0.7314256
## 12.714286 3955.301 5400.785 -10.1711720 0.7337386
## 12.857143 4263.077 5381.746 -10.3632168 0.7936648
## 13.000000 5865.985 5407.593 -9.5790143 1.0866931
## 13.142857 6409.332 5393.607 -9.6744622 1.1904555
## 13.285714 4969.732 5411.286 -9.0820807 0.9199453
## 13.428571 5262.559 5426.100 -8.5645713 0.9713936
## 13.571429 3964.378 5462.019 -7.6011972 0.7268196
## 13.714286 3969.338 5436.570 -7.9877117 0.7311924
## 13.857143 4421.189 5499.583 -6.4500802 0.8048575
## 14.000000 5827.665 5380.877 -8.8811693 1.0848230
## 14.142857 6404.135 5332.635 -9.7335959 1.2031287
## 14.285714 4887.798 5275.083 -10.7691842 0.9284776
## 14.428571 5358.759 5430.709 -7.1656090 0.9880549
## 14.571429 4001.575 5548.387 -4.4619146 0.7217946
## 14.714286 4145.928 5524.882 -4.8743320 0.7510728
## 14.857143 4469.800 5807.394 1.3494981 0.7694953
## 15.000000 7062.476 6594.686 18.3704095 1.0679595
## 15.142857 7647.916 6465.239 15.1691824 1.1801596
## 15.285714 6260.579 6322.368 11.7465532 0.9883906
## 15.428571 6660.129 6422.026 13.6504187 1.0348763
## 15.571429 4502.107 6272.865 10.1244783 0.7165550
## 15.714286 5238.564 6305.855 10.6196685 0.8293493
## 15.857143 5932.739 6155.891 7.1419453 0.9626331
## 16.000000 6108.404 6005.310 3.7262032 1.0165363
xhatfinal <- winterfinal$fitted[,2]
forecastfinal <- predict(winterfinal, n.ahead = 60)
plot(datafinal.ts, main="Metode Winter Multiplicative Optimum [Final]", type="l", col="black",
xlim=c(1,17), pch=12)
lines(xhatfinal, type="l", col="blue")
lines(forecastfinal, type="l", col="blue")
legend("topleft", c("Actual Data", expression(paste(winterfinal))),
cex=0.5, col=c("black", "blue"), lty=1)
Terlihat bahwa hasil ramalan tidak berbeda jauh dengan plot data aktual
serta tidak terlihat juga pola menurun atau meningkat, oleh karena itu
diperlukan periode yang lebih panjang untuk melihat informasi lebih
jelas.