library("forecast")
## Warning: package 'forecast' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library("graphics")
library("TTR")
## Warning: package 'TTR' was built under R version 4.3.3
library("TSA")
## Warning: package 'TSA' was built under R version 4.3.3
## Registered S3 methods overwritten by 'TSA':
## method from
## fitted.Arima forecast
## plot.Arima forecast
##
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
##
## acf, arima
## The following object is masked from 'package:utils':
##
## tar
library(rio)
Penumpang <- read.csv("C:\\## SEMESTER 5 IPB UNIVERSITY\\## MATA KULIAH\\METODE PERAMAL DERET WAKTU [MPDW]\\TUGAS\\Pertemuan 2\\Data Jumlah Penumpang Transjakarta Harian Tahun 2023-2024.csv", sep=";")
Penumpang
## periode_data Jumlah_Penumpang tanggal Periode
## 1 202311 1118527 24 1
## 2 202311 698469 25 2
## 3 202311 642518 26 3
## 4 202311 1147858 27 4
## 5 202311 1153413 28 5
## 6 202311 1158450 29 6
## 7 202311 1140648 30 7
## 8 202312 1127659 1 8
## 9 202312 769649 2 9
## 10 202312 662120 3 10
## 11 202312 1149169 4 11
## 12 202312 1174098 5 12
## 13 202312 1167902 6 13
## 14 202312 1164122 7 14
## 15 202312 1123681 8 15
## 16 202312 781721 9 16
## 17 202312 674405 10 17
## 18 202312 1151083 11 18
## 19 202312 1156065 12 19
## 20 202312 1151501 13 20
## 21 202312 1143117 14 21
## 22 202312 1131174 15 22
## 23 202312 758456 16 23
## 24 202312 680941 17 24
## 25 202312 1083773 18 25
## 26 202312 1081461 19 26
## 27 202312 1089583 20 27
## 28 202312 1070707 21 28
## 29 202312 1027720 22 29
## 30 202312 749305 23 30
## 31 202312 708769 24 31
## 32 202312 609034 25 32
## 33 202312 735852 26 33
## 34 202312 1012112 27 34
## 35 202312 1010097 28 35
## 36 202312 974703 29 36
## 37 202312 748326 30 37
## 38 202312 660343 31 38
## 39 202401 632778 1 39
## 40 202401 1045214 2 40
## 41 202401 1041663 3 41
## 42 202401 1097752 4 42
## 43 202401 1105303 5 43
## 44 202401 716205 6 44
## 45 202401 624900 7 45
## 46 202401 1137742 8 46
## 47 202401 1150147 9 47
## 48 202401 1147436 10 48
## 49 202401 1125270 11 49
## 50 202401 1129099 12 50
## 51 202401 758105 13 51
## 52 202401 683688 14 52
## 53 202401 1154750 15 53
## 54 202401 1158105 16 54
## 55 202401 1131647 17 55
## 56 202401 1142880 18 56
## 57 202401 1066005 19 57
## 58 202401 781421 20 58
## 59 202401 651780 21 59
## 60 202401 1157462 22 60
## 61 202401 1165110 23 61
## 62 202401 1168437 24 62
## 63 202401 1152249 25 63
## 64 202401 1145915 26 64
## 65 202401 693411 27 65
## 66 202401 639808 28 66
## 67 202401 1114347 29 67
## 68 202401 1120316 30 68
## 69 202401 1095146 31 69
## 70 202402 1155322 1 70
## 71 202402 1152107 2 71
## 72 202402 801212 3 72
## 73 202402 670195 4 73
## 74 202402 1159398 5 74
## 75 202402 1168189 6 75
## 76 202402 1180123 7 76
## 77 202402 696518 8 77
## 78 202402 774403 9 78
## 79 202402 683082 10 79
## 80 202402 645873 11 80
## 81 202402 1147300 12 81
## 82 202402 1157441 13 82
## 83 202402 471864 14 83
## 84 202402 1111148 15 84
## 85 202402 1129816 16 85
## 86 202402 742067 17 86
## 87 202402 649062 18 87
## 88 202402 1173362 19 88
## 89 202402 1194157 20 89
## 90 202402 1200226 21 90
## 91 202402 1179609 22 91
## 92 202402 1172659 23 92
## 93 202402 769879 24 93
## 94 202402 667620 25 94
## 95 202402 1185213 26 95
## 96 202402 1197537 27 96
## 97 202402 1171695 28 97
## 98 202402 1099316 29 98
## 99 202403 1199898 1 99
## 100 202403 791038 2 100
## 101 202403 703924 3 101
## 102 202403 1209113 4 102
## 103 202403 1235499 5 103
## 104 202403 1235063 6 104
## 105 202403 1237464 7 105
## 106 202403 1221948 8 106
## 107 202403 747057 9 107
## 108 202403 704383 10 108
## 109 202403 593917 11 109
Melihat data menggunakan fungsi View(), struktur data
menggunakan fungsi str(), dan dimensi data menggunakan
fungsi dim().
View(Penumpang)
str(Penumpang)
## 'data.frame': 109 obs. of 4 variables:
## $ periode_data : int 202311 202311 202311 202311 202311 202311 202311 202312 202312 202312 ...
## $ Jumlah_Penumpang: int 1118527 698469 642518 1147858 1153413 1158450 1140648 1127659 769649 662120 ...
## $ tanggal : int 24 25 26 27 28 29 30 1 2 3 ...
## $ Periode : int 1 2 3 4 5 6 7 8 9 10 ...
dim(Penumpang)
## [1] 109 4
Penumpang1 <- Penumpang[,-c(1,3)]
Penumpang1
## Jumlah_Penumpang Periode
## 1 1118527 1
## 2 698469 2
## 3 642518 3
## 4 1147858 4
## 5 1153413 5
## 6 1158450 6
## 7 1140648 7
## 8 1127659 8
## 9 769649 9
## 10 662120 10
## 11 1149169 11
## 12 1174098 12
## 13 1167902 13
## 14 1164122 14
## 15 1123681 15
## 16 781721 16
## 17 674405 17
## 18 1151083 18
## 19 1156065 19
## 20 1151501 20
## 21 1143117 21
## 22 1131174 22
## 23 758456 23
## 24 680941 24
## 25 1083773 25
## 26 1081461 26
## 27 1089583 27
## 28 1070707 28
## 29 1027720 29
## 30 749305 30
## 31 708769 31
## 32 609034 32
## 33 735852 33
## 34 1012112 34
## 35 1010097 35
## 36 974703 36
## 37 748326 37
## 38 660343 38
## 39 632778 39
## 40 1045214 40
## 41 1041663 41
## 42 1097752 42
## 43 1105303 43
## 44 716205 44
## 45 624900 45
## 46 1137742 46
## 47 1150147 47
## 48 1147436 48
## 49 1125270 49
## 50 1129099 50
## 51 758105 51
## 52 683688 52
## 53 1154750 53
## 54 1158105 54
## 55 1131647 55
## 56 1142880 56
## 57 1066005 57
## 58 781421 58
## 59 651780 59
## 60 1157462 60
## 61 1165110 61
## 62 1168437 62
## 63 1152249 63
## 64 1145915 64
## 65 693411 65
## 66 639808 66
## 67 1114347 67
## 68 1120316 68
## 69 1095146 69
## 70 1155322 70
## 71 1152107 71
## 72 801212 72
## 73 670195 73
## 74 1159398 74
## 75 1168189 75
## 76 1180123 76
## 77 696518 77
## 78 774403 78
## 79 683082 79
## 80 645873 80
## 81 1147300 81
## 82 1157441 82
## 83 471864 83
## 84 1111148 84
## 85 1129816 85
## 86 742067 86
## 87 649062 87
## 88 1173362 88
## 89 1194157 89
## 90 1200226 90
## 91 1179609 91
## 92 1172659 92
## 93 769879 93
## 94 667620 94
## 95 1185213 95
## 96 1197537 96
## 97 1171695 97
## 98 1099316 98
## 99 1199898 99
## 100 791038 100
## 101 703924 101
## 102 1209113 102
## 103 1235499 103
## 104 1235063 104
## 105 1237464 105
## 106 1221948 106
## 107 747057 107
## 108 704383 108
## 109 593917 109
Mengubah data agar terbaca sebagai data deret waktu dengan fungsi
ts() .
Penumpang1.ts <- ts(Penumpang1$Jumlah_Penumpang)
Penumpang1.ts
## Time Series:
## Start = 1
## End = 109
## Frequency = 1
## [1] 1118527 698469 642518 1147858 1153413 1158450 1140648 1127659 769649
## [10] 662120 1149169 1174098 1167902 1164122 1123681 781721 674405 1151083
## [19] 1156065 1151501 1143117 1131174 758456 680941 1083773 1081461 1089583
## [28] 1070707 1027720 749305 708769 609034 735852 1012112 1010097 974703
## [37] 748326 660343 632778 1045214 1041663 1097752 1105303 716205 624900
## [46] 1137742 1150147 1147436 1125270 1129099 758105 683688 1154750 1158105
## [55] 1131647 1142880 1066005 781421 651780 1157462 1165110 1168437 1152249
## [64] 1145915 693411 639808 1114347 1120316 1095146 1155322 1152107 801212
## [73] 670195 1159398 1168189 1180123 696518 774403 683082 645873 1147300
## [82] 1157441 471864 1111148 1129816 742067 649062 1173362 1194157 1200226
## [91] 1179609 1172659 769879 667620 1185213 1197537 1171695 1099316 1199898
## [100] 791038 703924 1209113 1235499 1235063 1237464 1221948 747057 704383
## [109] 593917
summary(Penumpang1.ts)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 471864 747057 1111148 980810 1155322 1237464
ts.plot(Penumpang1.ts, xlab="Time Periode", ylab="Jumlah Penumpang",
main = "Time Series Plot of Jumlah Penumpang")
points(Penumpang1.ts)
Pembagian data latih dan data uji dilakukan dengan perbandingan 80% data latih dan 20% data uji.Dalam penentuan data uji dan data latih, untuk mempotong datanya tidak boleh saat pola naik maupun pola turun
#membagi data latih dan data uji
training_ma1 <- Penumpang1[1:87,]
testing_ma1 <- Penumpang1[88:109,]
train_ma1.ts <- ts(training_ma1$Jumlah_Penumpang)
test_ma1.ts <- ts(testing_ma1$Jumlah_Penumpang)
Eksplorasi data dilakukan pada keseluruhan data, data latih serta data uji menggunakan plot data deret waktu.
#eksplorasi keseluruhan data
plot(Penumpang1.ts, col="red",main="Plot semua data")
points(Penumpang1.ts)
#eksplorasi data latih
plot(train_ma1.ts, col="blue",main="Plot data latih")
points(train_ma1.ts)
#eksplorasi data uji
plot(test_ma1.ts, col="blue",main="Plot data uji")
points(test_ma1.ts)
Eksplorasi data juga dapat dilakukan menggunakan package
ggplot2 dengan terlebih dahulu memanggil library
package ggplot2.
#Eksplorasi dengan GGPLOT
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
ggplot() +
geom_line(data = Penumpang1, aes(x =Periode, y =Jumlah_Penumpang, col = "Data Latih")) +
geom_line(data = testing_ma1, aes(x =Periode, y =Jumlah_Penumpang, col = "Data Uji")) +
labs(x = "Periode Waktu", y = "Jumlah 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))
Ide dasar dari Single Moving Average (SMA) adalah data suatu periode dipengaruhi oleh data periode sebelumnya. Metode pemulusan ini cocok digunakan untuk pola data stasioner atau konstan. Prinsip dasar metode pemulusan ini adalah data pemulusan pada periode ke-t merupakan rata rata dari m buah data pada periode ke-t hingga periode ke (t-m+1). Data pemulusan pada periode ke-t selanjutnya digunakan sebagai nilai peramalan pada periode ke t+1
Pemulusan menggunakan metode SMA dilakukan dengan fungsi
SMA(). Dalam hal ini akan dilakukan pemulusan dengan
parameter m=3
data.sma1<-SMA(train_ma1.ts, n=3)
data.sma1
## Time Series:
## Start = 1
## End = 87
## Frequency = 1
## [1] NA NA 819838.0 829615.0 981263.0 1153240.3 1150837.0
## [8] 1142252.3 1012652.0 853142.7 860312.7 995129.0 1163723.0 1168707.3
## [15] 1151901.7 1023174.7 859935.7 869069.7 993851.0 1152883.0 1150227.7
## [22] 1141930.7 1010915.7 856857.0 841056.7 948725.0 1084939.0 1080583.7
## [29] 1062670.0 949244.0 828598.0 689036.0 684551.7 785666.0 919353.7
## [36] 998970.7 911042.0 794457.3 680482.3 779445.0 906551.7 1061543.0
## [43] 1081572.7 973086.7 815469.3 826282.3 970929.7 1145108.3 1140951.0
## [50] 1133935.0 1004158.0 856964.0 865514.3 998847.7 1148167.3 1144210.7
## [57] 1113510.7 996768.7 833068.7 863554.3 991450.7 1163669.7 1161932.0
## [64] 1155533.7 997191.7 826378.0 815855.3 958157.0 1109936.3 1123594.7
## [71] 1134191.7 1036213.7 874504.7 876935.0 999260.7 1169236.7 1014943.3
## [78] 883681.3 718001.0 701119.3 825418.3 983538.0 925535.0 913484.3
## [85] 904276.0 994343.7 840315.0
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.
data.ramal1<-c(NA,data.sma1)
data.ramal1 #forecast 1 periode ke depan
## [1] NA NA NA 819838.0 829615.0 981263.0 1153240.3
## [8] 1150837.0 1142252.3 1012652.0 853142.7 860312.7 995129.0 1163723.0
## [15] 1168707.3 1151901.7 1023174.7 859935.7 869069.7 993851.0 1152883.0
## [22] 1150227.7 1141930.7 1010915.7 856857.0 841056.7 948725.0 1084939.0
## [29] 1080583.7 1062670.0 949244.0 828598.0 689036.0 684551.7 785666.0
## [36] 919353.7 998970.7 911042.0 794457.3 680482.3 779445.0 906551.7
## [43] 1061543.0 1081572.7 973086.7 815469.3 826282.3 970929.7 1145108.3
## [50] 1140951.0 1133935.0 1004158.0 856964.0 865514.3 998847.7 1148167.3
## [57] 1144210.7 1113510.7 996768.7 833068.7 863554.3 991450.7 1163669.7
## [64] 1161932.0 1155533.7 997191.7 826378.0 815855.3 958157.0 1109936.3
## [71] 1123594.7 1134191.7 1036213.7 874504.7 876935.0 999260.7 1169236.7
## [78] 1014943.3 883681.3 718001.0 701119.3 825418.3 983538.0 925535.0
## [85] 913484.3 904276.0 994343.7 840315.0
Selanjutnya akan dilakukan peramalan sejumlah data uji yaitu 24 periode. Pada metode SMA, hasil peramalan 24 periode ke depan akan bernilai sama dengan hasil peramalan 1 periode kedepan. Dalam hal ini akan dilakukan penggabungan data aktual train, data hasil pemulusan dan data hasil ramalan 15 periode kedepan.
data.gab1<-cbind(aktual=c(train_ma1.ts,rep(NA,24)),pemulusan=c(data.sma1,rep(NA,24)),ramalan=c(data.ramal1,rep(data.ramal1[length(data.ramal1)],23)))
data.gab1 #forecast 24 periode ke depan
## aktual pemulusan ramalan
## [1,] 1118527 NA NA
## [2,] 698469 NA NA
## [3,] 642518 819838.0 NA
## [4,] 1147858 829615.0 819838.0
## [5,] 1153413 981263.0 829615.0
## [6,] 1158450 1153240.3 981263.0
## [7,] 1140648 1150837.0 1153240.3
## [8,] 1127659 1142252.3 1150837.0
## [9,] 769649 1012652.0 1142252.3
## [10,] 662120 853142.7 1012652.0
## [11,] 1149169 860312.7 853142.7
## [12,] 1174098 995129.0 860312.7
## [13,] 1167902 1163723.0 995129.0
## [14,] 1164122 1168707.3 1163723.0
## [15,] 1123681 1151901.7 1168707.3
## [16,] 781721 1023174.7 1151901.7
## [17,] 674405 859935.7 1023174.7
## [18,] 1151083 869069.7 859935.7
## [19,] 1156065 993851.0 869069.7
## [20,] 1151501 1152883.0 993851.0
## [21,] 1143117 1150227.7 1152883.0
## [22,] 1131174 1141930.7 1150227.7
## [23,] 758456 1010915.7 1141930.7
## [24,] 680941 856857.0 1010915.7
## [25,] 1083773 841056.7 856857.0
## [26,] 1081461 948725.0 841056.7
## [27,] 1089583 1084939.0 948725.0
## [28,] 1070707 1080583.7 1084939.0
## [29,] 1027720 1062670.0 1080583.7
## [30,] 749305 949244.0 1062670.0
## [31,] 708769 828598.0 949244.0
## [32,] 609034 689036.0 828598.0
## [33,] 735852 684551.7 689036.0
## [34,] 1012112 785666.0 684551.7
## [35,] 1010097 919353.7 785666.0
## [36,] 974703 998970.7 919353.7
## [37,] 748326 911042.0 998970.7
## [38,] 660343 794457.3 911042.0
## [39,] 632778 680482.3 794457.3
## [40,] 1045214 779445.0 680482.3
## [41,] 1041663 906551.7 779445.0
## [42,] 1097752 1061543.0 906551.7
## [43,] 1105303 1081572.7 1061543.0
## [44,] 716205 973086.7 1081572.7
## [45,] 624900 815469.3 973086.7
## [46,] 1137742 826282.3 815469.3
## [47,] 1150147 970929.7 826282.3
## [48,] 1147436 1145108.3 970929.7
## [49,] 1125270 1140951.0 1145108.3
## [50,] 1129099 1133935.0 1140951.0
## [51,] 758105 1004158.0 1133935.0
## [52,] 683688 856964.0 1004158.0
## [53,] 1154750 865514.3 856964.0
## [54,] 1158105 998847.7 865514.3
## [55,] 1131647 1148167.3 998847.7
## [56,] 1142880 1144210.7 1148167.3
## [57,] 1066005 1113510.7 1144210.7
## [58,] 781421 996768.7 1113510.7
## [59,] 651780 833068.7 996768.7
## [60,] 1157462 863554.3 833068.7
## [61,] 1165110 991450.7 863554.3
## [62,] 1168437 1163669.7 991450.7
## [63,] 1152249 1161932.0 1163669.7
## [64,] 1145915 1155533.7 1161932.0
## [65,] 693411 997191.7 1155533.7
## [66,] 639808 826378.0 997191.7
## [67,] 1114347 815855.3 826378.0
## [68,] 1120316 958157.0 815855.3
## [69,] 1095146 1109936.3 958157.0
## [70,] 1155322 1123594.7 1109936.3
## [71,] 1152107 1134191.7 1123594.7
## [72,] 801212 1036213.7 1134191.7
## [73,] 670195 874504.7 1036213.7
## [74,] 1159398 876935.0 874504.7
## [75,] 1168189 999260.7 876935.0
## [76,] 1180123 1169236.7 999260.7
## [77,] 696518 1014943.3 1169236.7
## [78,] 774403 883681.3 1014943.3
## [79,] 683082 718001.0 883681.3
## [80,] 645873 701119.3 718001.0
## [81,] 1147300 825418.3 701119.3
## [82,] 1157441 983538.0 825418.3
## [83,] 471864 925535.0 983538.0
## [84,] 1111148 913484.3 925535.0
## [85,] 1129816 904276.0 913484.3
## [86,] 742067 994343.7 904276.0
## [87,] 649062 840315.0 994343.7
## [88,] NA NA 840315.0
## [89,] NA NA 840315.0
## [90,] NA NA 840315.0
## [91,] NA NA 840315.0
## [92,] NA NA 840315.0
## [93,] NA NA 840315.0
## [94,] NA NA 840315.0
## [95,] NA NA 840315.0
## [96,] NA NA 840315.0
## [97,] NA NA 840315.0
## [98,] NA NA 840315.0
## [99,] NA NA 840315.0
## [100,] NA NA 840315.0
## [101,] NA NA 840315.0
## [102,] NA NA 840315.0
## [103,] NA NA 840315.0
## [104,] NA NA 840315.0
## [105,] NA NA 840315.0
## [106,] NA NA 840315.0
## [107,] NA NA 840315.0
## [108,] NA NA 840315.0
## [109,] NA NA 840315.0
## [110,] NA NA 840315.0
## [111,] NA NA 840315.0
Adapun plot data deret waktu dari hasil peramalan yang dilakukan adalah sebagai berikut.
ts.plot(Penumpang1.ts, xlab="Time Period ", ylab="Jumlah Penumpang", main= "SMA N=3 Data Jumlah Penumpang Transjakarta")
points(Penumpang1.ts)
lines(data.gab1[,2],col="yellow",lwd=2)
lines(data.gab1[,3],col="blue",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), lty=8, col=c("black","yellow","blue"), 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.sma1 = train_ma1.ts-data.ramal1[1:length(train_ma1.ts)]
SSE_train.sma1 = sum(error_train.sma1[5:length(train_ma1.ts)]^2)
MSE_train.sma1 = mean(error_train.sma1[5:length(train_ma1.ts)]^2)
MAPE_train.sma1 = mean(abs((error_train.sma1[5:length(train_ma1.ts)]/train_ma1.ts[5:length(train_ma1.ts)])*100))
akurasi_train.sma1 <- matrix(c(SSE_train.sma1, MSE_train.sma1, MAPE_train.sma1))
row.names(akurasi_train.sma1)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_train.sma1) <- c("Akurasi m = 3")
akurasi_train.sma1
## Akurasi m = 3
## SSE 5.716142e+12
## MSE 6.886918e+10
## MAPE 2.650875e+01
Dalam hal ini nilai MAPE data latih pada metode pemulusan SMA kurang dari 2%, nilai ini dapat dikategorikan sebagai nilai akurasi yang sangat baik. Selanjutnya dilakukan perhitungan nilai MAPE data uji pada metde pemulusan SMA
#Menghitung nilai keakuratan data uji
error_test.sma1 = test_ma1.ts-data.gab1[88:109,3]
SSE_test.sma1 = sum(error_test.sma1^2)
MSE_test.sma1 = mean(error_test.sma1^2)
MAPE_test.sma1 = mean(abs((error_test.sma1/test_ma1.ts*100)))
akurasi_test.sma1 <- matrix(c(SSE_test.sma1, MSE_test.sma1, MAPE_test.sma1))
row.names(akurasi_test.sma1)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_test.sma1) <- c("Akurasi m = 4")
akurasi_test.sma1
## Akurasi m = 4
## SSE 2.039071e+12
## MSE 9.268505e+10
## MAPE 2.625048e+01
Perhitungan akurasi menggunakan data latih menghasilkan nilai MAPE yang kurang dari 10% sehingga nilai akurasi ini dapat dikategorikan sebagai sangat baik.
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.
dma1 <- SMA(data.sma1, n = 3)
At1 <- 2*data.sma1 - dma1
Bt1 <- 2/(3-1)*(data.sma1 - dma1)
data.dma1<- At1+Bt1
data.ramal22<- c(NA, data.dma1)
t = 1:24
f = c()
for (i in t) {
f[i] = At1[length(At1)] + Bt1[length(Bt1)]*(i)
}
data.gab22 <- cbind(aktual = c(train_ma1.ts,rep(NA,24)), pemulusan1 = c(data.sma1,rep(NA,24)),pemulusan2 = c(data.dma1, rep(NA,24)),At1 = c(At1, rep(NA,24)), Bt1 = c(Bt1,rep(NA,24)),ramalan = c(data.ramal22, f[-1]))
data.gab22
## aktual pemulusan1 pemulusan2 At1 Bt1 ramalan
## [1,] 1118527 NA NA NA NA NA
## [2,] 698469 NA NA NA NA NA
## [3,] 642518 819838.0 NA NA NA NA
## [4,] 1147858 829615.0 NA NA NA NA
## [5,] 1153413 981263.0 1189978.3 1085620.7 104357.667 NA
## [6,] 1158450 1153240.3 1483642.1 1318441.2 165200.889 1189978.33
## [7,] 1140648 1150837.0 1262284.1 1206560.6 55723.556 1483642.11
## [8,] 1127659 1142252.3 1129203.9 1135728.1 -6524.222 1262284.11
## [9,] 769649 1012652.0 834128.4 923390.2 -89261.778 1129203.89
## [10,] 662120 853142.7 554063.3 703603.0 -149539.667 834128.44
## [11,] 1149169 860312.7 763533.1 811922.9 -48389.778 554063.33
## [12,] 1174098 995129.0 1179664.1 1087396.6 92267.556 763533.11
## [13,] 1167902 1163723.0 1478392.6 1321057.8 157334.778 1179664.11
## [14,] 1164122 1168707.3 1287749.1 1228228.2 59520.889 1478392.56
## [15,] 1123681 1151901.7 1132817.0 1142359.3 -9542.333 1287749.11
## [16,] 781721 1023174.7 840334.9 931754.8 -91419.889 1132817.00
## [17,] 674405 859935.7 556465.7 708200.7 -151735.000 840334.89
## [18,] 1151083 869069.7 772422.3 820746.0 -48323.667 556465.67
## [19,] 1156065 993851.0 1166315.4 1080083.2 86232.222 772422.33
## [20,] 1151501 1152883.0 1448113.2 1300498.1 147615.111 1166315.44
## [21,] 1143117 1150227.7 1252708.6 1201468.1 51240.444 1448113.22
## [22,] 1131174 1141930.7 1129097.8 1135514.2 -6416.444 1252708.56
## [23,] 758456 1010915.7 830697.7 920806.7 -90109.000 1129097.78
## [24,] 680941 856857.0 564102.1 710479.6 -146377.444 830697.67
## [25,] 1083773 841056.7 717283.8 779170.2 -61886.444 564102.11
## [26,] 1081461 948725.0 1081749.2 1015237.1 66512.111 717283.78
## [27,] 1089583 1084939.0 1338336.6 1211637.8 126698.778 1081749.22
## [28,] 1070707 1080583.7 1165585.9 1123084.8 42501.111 1338336.56
## [29,] 1027720 1062670.0 1035881.6 1049275.8 -13394.222 1165585.89
## [30,] 749305 949244.0 786066.9 867655.4 -81588.556 1035881.56
## [31,] 708769 828598.0 592119.3 710358.7 -118239.333 786066.89
## [32,] 609034 689036.0 422522.7 555779.3 -133256.667 592119.33
## [33,] 735852 684551.7 585531.2 635041.4 -49510.222 422522.67
## [34,] 1012112 785666.0 917495.6 851580.8 65914.778 585531.22
## [35,] 1010097 919353.7 1165013.4 1042183.6 122829.889 917495.56
## [36,] 974703 998970.7 1194251.8 1096611.2 97640.556 1165013.44
## [37,] 748326 911042.0 846881.8 878961.9 -32080.111 1194251.78
## [38,] 660343 794457.3 580392.0 687424.7 -107032.667 846881.78
## [39,] 632778 680482.3 450792.6 565637.4 -114844.889 580392.00
## [40,] 1045214 779445.0 835411.9 807428.4 27983.444 450792.56
## [41,] 1041663 906551.7 1142002.3 1024277.0 117725.333 835411.89
## [42,] 1097752 1061543.0 1352935.9 1207239.4 145696.444 1142002.33
## [43,] 1105303 1081572.7 1211606.4 1146589.6 65016.889 1352935.89
## [44,] 716205 973086.7 841791.8 907439.2 -65647.444 1211606.44
## [45,] 624900 815469.3 532988.9 674229.1 -141240.222 841791.78
## [46,] 1137742 826282.3 735621.4 780951.9 -45330.444 532988.89
## [47,] 1150147 970929.7 1171001.4 1070965.6 100035.889 735621.44
## [48,] 1147436 1145108.3 1473778.1 1309443.2 164334.889 1171001.44
## [49,] 1125270 1140951.0 1251527.0 1196239.0 55288.000 1473778.11
## [50,] 1129099 1133935.0 1121808.8 1127871.9 -6063.111 1251527.00
## [51,] 758105 1004158.0 826444.7 915301.3 -88856.667 1121808.78
## [52,] 683688 856964.0 574187.3 715575.7 -141388.333 826444.67
## [53,] 1154750 865514.3 778785.4 822149.9 -43364.444 574187.33
## [54,] 1158105 998847.7 1182325.7 1090586.7 91739.000 778785.44
## [55,] 1131647 1148167.3 1436149.1 1292158.2 143990.889 1182325.67
## [56,] 1142880 1144210.7 1238481.6 1191346.1 47135.444 1436149.11
## [57,] 1066005 1113510.7 1069939.6 1091725.1 -21785.556 1238481.56
## [58,] 781421 996768.7 820646.0 908707.3 -88061.333 1069939.56
## [59,] 651780 833068.7 536974.0 685021.3 -148047.333 820646.00
## [60,] 1157462 863554.3 795068.6 829311.4 -34242.889 536974.00
## [61,] 1165110 991450.7 1182302.9 1086876.8 95426.111 795068.56
## [62,] 1168437 1163669.7 1478559.2 1321114.4 157444.778 1182302.89
## [63,] 1152249 1161932.0 1274427.8 1218179.9 56247.889 1478559.22
## [64,] 1145915 1155533.7 1145844.1 1150688.9 -4844.778 1274427.78
## [65,] 693411 997191.7 781803.4 889497.6 -107694.111 1145844.11
## [66,] 639808 826378.0 493065.1 659721.6 -166656.444 781803.44
## [67,] 1114347 815855.3 687949.3 751902.3 -63953.000 493065.11
## [68,] 1120316 958157.0 1140877.4 1049517.2 91360.222 687949.33
## [69,] 1095146 1109936.3 1407176.6 1258556.4 148620.111 1140877.44
## [70,] 1155322 1123594.7 1242992.0 1183293.3 59698.667 1407176.56
## [71,] 1152107 1134191.7 1157426.6 1145809.1 11617.444 1242992.00
## [72,] 801212 1036213.7 912641.0 974427.3 -61786.333 1157426.56
## [73,] 670195 874504.7 593574.0 734039.3 -140465.333 912641.00
## [74,] 1159398 876935.0 772369.4 824652.2 -52282.778 593574.00
## [75,] 1168189 999260.7 1163981.8 1081621.2 82360.556 772369.44
## [76,] 1180123 1169236.7 1477421.8 1323329.2 154092.556 1163981.78
## [77,] 696518 1014943.3 922536.2 968739.8 -46203.556 1477421.78
## [78,] 774403 883681.3 605803.1 744742.2 -138939.111 922536.22
## [79,] 683082 718001.0 409585.9 563793.4 -154207.556 605803.11
## [80,] 645873 701119.3 568156.9 634638.1 -66481.222 409585.89
## [81,] 1147300 825418.3 979895.9 902657.1 77238.778 568156.89
## [82,] 1157441 983538.0 1277230.2 1130384.1 146846.111 979895.89
## [83,] 471864 925535.0 953610.8 939572.9 14037.889 1277230.22
## [84,] 1111148 913484.3 858748.1 886116.2 -27368.111 953610.78
## [85,] 1129816 904276.0 883964.4 894120.2 -10155.778 858748.11
## [86,] 742067 994343.7 1108295.0 1051319.3 56975.667 883964.44
## [87,] 649062 840315.0 694988.6 767651.8 -72663.222 1108295.00
## [88,] NA NA NA NA NA 694988.56
## [89,] NA NA NA NA NA 622325.33
## [90,] NA NA NA NA NA 549662.11
## [91,] NA NA NA NA NA 476998.89
## [92,] NA NA NA NA NA 404335.67
## [93,] NA NA NA NA NA 331672.44
## [94,] NA NA NA NA NA 259009.22
## [95,] NA NA NA NA NA 186346.00
## [96,] NA NA NA NA NA 113682.78
## [97,] NA NA NA NA NA 41019.56
## [98,] NA NA NA NA NA -31643.67
## [99,] NA NA NA NA NA -104306.89
## [100,] NA NA NA NA NA -176970.11
## [101,] NA NA NA NA NA -249633.33
## [102,] NA NA NA NA NA -322296.56
## [103,] NA NA NA NA NA -394959.78
## [104,] NA NA NA NA NA -467623.00
## [105,] NA NA NA NA NA -540286.22
## [106,] NA NA NA NA NA -612949.44
## [107,] NA NA NA NA NA -685612.67
## [108,] NA NA NA NA NA -758275.89
## [109,] NA NA NA NA NA -830939.11
## [110,] NA NA NA NA NA -903602.33
## [111,] NA NA NA NA NA -976265.56
Hasil pemulusan menggunakan metode DMA divisualisasikan sebagai berikut
ts.plot(Penumpang1.ts, xlab="Time Period ", ylab="Jumalh Penumpang", main= "DMA N=3 Data Jumlah Penumpang Transjakarta")
points(Penumpang1.ts)
lines(data.gab22[,3],col="green",lwd=2)
lines(data.gab22[,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.dma1 = train_ma1.ts-data.ramal22[1:length(train_ma1.ts)]
SSE_train.dma1 = sum(error_train.dma1[6:length(train_ma1.ts)]^2)
MSE_train.dma1 = mean(error_train.dma1[6:length(train_ma1.ts)]^2)
MAPE_train.dma1 = mean(abs((error_train.dma1[6:length(train_ma1.ts)]/train_ma1.ts[6:length(train_ma1.ts)])*100))
akurasi_train.dma1 <- matrix(c(SSE_train.dma1, MSE_train.dma1, MAPE_train.dma1))
row.names(akurasi_train.dma1)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_train.dma1) <- c("Akurasi m = 3")
akurasi_train.dma1
## Akurasi m = 3
## SSE 9.514369e+12
## MSE 1.160289e+11
## MAPE 3.102598e+01
Perhitungan akurasi pada data latih menggunakan nilai MAPE menghasilkan nilai MAPE yang kurang dari 10% sehingga dikategorikan sangat baik. Selanjutnya, perhitungan nilai akurasi dilakukan pada data uji.
#Menghitung nilai keakuratan data uji
error_test.dma1 = test_ma1.ts-data.gab22[88:109,6]
SSE_test.dma1 = sum(error_test.dma1^2)
MSE_test.dma1 = mean(error_test.dma1^2)
MAPE_test.dma1 = mean(abs((error_test.dma1/test_ma1.ts*100)))
akurasi_test.dma1 <- matrix(c(SSE_test.dma1, MSE_test.dma1, MAPE_test.dma1))
row.names(akurasi_test.dma1)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_test.dma1) <- c("Akurasi m = 3")
akurasi_test.dma1
## Akurasi m = 3
## SSE 3.135139e+13
## MSE 1.425063e+12
## MAPE 1.116544e+02
Pada data latih, metode SMA lebih baik dibandingkan dengan metode DMA, sedangkan pada data uji, metode DMA lebih baik dibandingkan SMA
Metode Exponential Smoothing adalah metode pemulusan dengan melakukan pembobotan menurun secara eksponensial. Nilai yang lebih baru diberi bobot yang lebih besar dari nilai terdahulu. Terdapat satu atau lebih parameter pemulusan yang ditentukan secara eksplisit, dan hasil pemilihan parameter tersebut akan menentukan bobot yang akan diberikan pada nilai pengamatan. Ada dua macam model, yaitu model tunggal dan ganda.
Pembagian data latih dan data uji dilakukan dengan perbandingan 80% data latih dan 20% data uji.
#membagi training dan testing
training1<-Penumpang1[1:87,]
testing1<-Penumpang1[88:109,]
train1.ts <- ts(training1$Jumlah_Penumpang)
test1.ts <- ts(testing1$Jumlah_Penumpang)
Eksplorasi dilakukan dengan membuat plot data deret waktu untuk keseluruhan data, data latih, dan data uji.
#eksplorasi data
plot(Penumpang1.ts, col="black",main="Plot semua data")
points(Penumpang1.ts)
plot(train1.ts, col="red",main="Plot data latih")
points(train1.ts)
plot(test1.ts, col="blue",main="Plot data uji")
points(test1.ts)
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 .
#Cara 1 (fungsi ses)
ses1.1 <- ses(train1.ts, h = 22, alpha = 0.2)
plot(ses1.1)
ses1.1
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 88 857996.1 565843.3 1150149 411187.0 1304805
## 89 857996.1 560057.6 1155935 402338.4 1313654
## 90 857996.1 554382.0 1161610 393658.5 1322334
## 91 857996.1 548810.7 1167181 385137.8 1330854
## 92 857996.1 543337.9 1172654 376768.0 1339224
## 93 857996.1 537958.8 1178033 368541.3 1347451
## 94 857996.1 532668.5 1183324 360450.5 1355542
## 95 857996.1 527463.0 1188529 352489.3 1363503
## 96 857996.1 522338.1 1193654 344651.5 1371341
## 97 857996.1 517290.3 1198702 336931.6 1379060
## 98 857996.1 512316.3 1203676 329324.4 1386668
## 99 857996.1 507412.8 1208579 321825.2 1394167
## 100 857996.1 502576.9 1213415 314429.4 1401563
## 101 857996.1 497806.0 1218186 307132.9 1408859
## 102 857996.1 493097.4 1222895 299931.7 1416060
## 103 857996.1 488448.8 1227543 292822.3 1423170
## 104 857996.1 483858.0 1232134 285801.3 1430191
## 105 857996.1 479322.8 1236669 278865.3 1437127
## 106 857996.1 474841.3 1241151 272011.5 1443981
## 107 857996.1 470411.6 1245580 265236.9 1450755
## 108 857996.1 466032.0 1249960 258538.8 1457453
## 109 857996.1 461700.8 1254291 251914.8 1464077
ses2.2<- ses(train1.ts, h = 22, alpha = 0.7)
plot(ses2.2)
ses2.2
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 88 707732.2 391234.116 1024230 223690.16 1191774
## 89 707732.2 321397.059 1094067 116883.60 1298581
## 90 707732.2 262379.929 1153084 26624.69 1388840
## 91 707732.2 210316.429 1205148 -52999.56 1468464
## 92 707732.2 163208.323 1252256 -125045.19 1540510
## 93 707732.2 119863.120 1295601 -191335.96 1606800
## 94 707732.2 79501.463 1335963 -253063.79 1668528
## 95 707732.2 41580.819 1373884 -311058.41 1726523
## 96 707732.2 5705.516 1409759 -365924.95 1781389
## 97 707732.2 -28423.536 1443888 -418120.83 1833585
## 98 707732.2 -61038.943 1476503 -468001.79 1883466
## 99 707732.2 -92325.844 1507790 -515850.98 1931315
## 100 707732.2 -122434.456 1537899 -561898.13 1977362
## 101 707732.2 -151488.656 1566953 -606332.69 2021797
## 102 707732.2 -179592.026 1595056 -649313.09 2064777
## 103 707732.2 -206832.223 1622297 -690973.37 2106438
## 104 707732.2 -233284.211 1648749 -731428.20 2146893
## 105 707732.2 -259012.693 1674477 -770776.52 2186241
## 106 707732.2 -284073.976 1699538 -809104.44 2224569
## 107 707732.2 -308517.422 1723982 -846487.46 2261952
## 108 707732.2 -332386.590 1747851 -882992.21 2298457
## 109 707732.2 -355720.149 1771185 -918677.81 2334142
Untuk mendapatkan gambar hasil pemulusan pada data latih dengan
fungsi ses() , perlu digunakan fungsi
autoplot() dan autolayer() dari library
packages ggplot2 .
autoplot(ses1.1) +
autolayer(fitted(ses1.1), series="Fitted") +
ylab("Jumlah Penumpang") + xlab("Periode")
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
22 periode. Selanjutnya akan digunakan fungsi HoltWinters()
dengan nilai inisialisasi parameter dan panjang periode peramalan yang
sama dengan fungsi ses() .
#Cara 2 (fungsi Holtwinter)
ses11<- HoltWinters(train1.ts, gamma = FALSE, beta = FALSE, alpha = 0.2)
plot(ses11)
#ramalan
ramalan11<- forecast(ses11, h=22)
ramalan11
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 88 857996.1 564558.4 1151434 409221.9 1306770
## 89 857996.1 558747.2 1157245 400334.4 1315658
## 90 857996.1 553046.7 1162945 391616.3 1324376
## 91 857996.1 547450.8 1168541 383058.1 1332934
## 92 857996.1 541954.0 1174038 374651.5 1341341
## 93 857996.1 536551.2 1179441 366388.6 1349604
## 94 857996.1 531237.7 1184754 358262.3 1357730
## 95 857996.1 526009.3 1189983 350266.1 1365726
## 96 857996.1 520861.9 1195130 342393.8 1373598
## 97 857996.1 515791.9 1200200 334640.0 1381352
## 98 857996.1 510796.0 1205196 326999.3 1388993
## 99 857996.1 505870.9 1210121 319467.1 1396525
## 100 857996.1 501013.8 1214978 312038.7 1403953
## 101 857996.1 496221.8 1219770 304710.1 1411282
## 102 857996.1 491492.6 1224500 297477.3 1418515
## 103 857996.1 486823.5 1229169 290336.7 1425655
## 104 857996.1 482212.5 1233780 283284.7 1432707
## 105 857996.1 477657.4 1238335 276318.3 1439674
## 106 857996.1 473156.2 1242836 269434.3 1446558
## 107 857996.1 468707.0 1247285 262629.9 1453362
## 108 857996.1 464308.1 1251684 255902.4 1460090
## 109 857996.1 459957.9 1256034 249249.2 1466743
ses22<- HoltWinters(train1.ts, gamma = FALSE, beta = FALSE, alpha = 0.7)
plot(ses22)
#ramalan
ramalan22<- forecast(ses22, h=22)
ramalan22
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 88 707732.2 390894.291 1024570 223170.45 1192294
## 89 707732.2 320982.249 1094482 116249.20 1299215
## 90 707732.2 261901.753 1153563 25893.38 1389571
## 91 707732.2 209782.352 1205682 -53816.36 1469281
## 92 707732.2 162623.666 1252841 -125939.35 1541404
## 93 707732.2 119231.922 1296232 -192301.29 1607766
## 94 707732.2 78826.929 1336637 -254095.40 1669560
## 95 707732.2 40865.570 1374599 -312152.29 1727617
## 96 707732.2 4951.747 1410513 -367077.74 1782542
## 97 707732.2 -29213.949 1444678 -419329.66 1834794
## 98 707732.2 -61864.376 1477329 -469264.18 1884729
## 99 707732.2 -93184.869 1508649 -517164.74 1932629
## 100 707732.2 -123325.809 1538790 -563261.33 1978726
## 101 707732.2 -152411.204 1567876 -607743.61 2023208
## 102 707732.2 -180544.749 1596009 -650770.15 2066235
## 103 707732.2 -207814.194 1623279 -692475.17 2107940
## 104 707732.2 -234294.584 1649759 -732973.43 2148438
## 105 707732.2 -260050.691 1675515 -772364.00 2187828
## 106 707732.2 -285138.882 1700603 -810733.07 2226197
## 107 707732.2 -309608.573 1725073 -848156.24 2263621
## 108 707732.2 -333503.369 1748968 -884700.17 2300165
## 109 707732.2 -356861.982 1772326 -920424.09 2335888
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 .
#SES
ses1.opt <- ses(train1.ts, h = 22, alpha = NULL)
plot(ses1.opt)
ses1.opt
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 88 965682.1 687621.3 1243743 540424.8 1390939
## 89 965682.1 687621.3 1243743 540424.8 1390939
## 90 965682.1 687621.3 1243743 540424.8 1390939
## 91 965682.1 687621.3 1243743 540424.8 1390939
## 92 965682.1 687621.3 1243743 540424.8 1390939
## 93 965682.1 687621.3 1243743 540424.8 1390939
## 94 965682.1 687621.3 1243743 540424.8 1390939
## 95 965682.1 687621.3 1243743 540424.8 1390939
## 96 965682.1 687621.3 1243743 540424.8 1390939
## 97 965682.1 687621.3 1243743 540424.8 1390939
## 98 965682.1 687621.3 1243743 540424.8 1390939
## 99 965682.1 687621.3 1243743 540424.8 1390939
## 100 965682.1 687621.3 1243743 540424.8 1390939
## 101 965682.1 687621.3 1243743 540424.8 1390939
## 102 965682.1 687621.3 1243743 540424.8 1390939
## 103 965682.1 687621.3 1243743 540424.8 1390939
## 104 965682.1 687621.3 1243743 540424.8 1390939
## 105 965682.1 687621.3 1243743 540424.8 1390939
## 106 965682.1 687621.3 1243743 540424.8 1390939
## 107 965682.1 687621.3 1243743 540424.8 1390939
## 108 965682.1 687621.3 1243743 540424.8 1390939
## 109 965682.1 687621.3 1243743 540424.8 1390939
#Lamda Optimum Holt Winter
sesopt1<- HoltWinters(train1.ts, gamma = FALSE, beta = FALSE,alpha = NULL)
sesopt1
## Holt-Winters exponential smoothing without trend and without seasonal component.
##
## Call:
## HoltWinters(x = train1.ts, alpha = NULL, beta = FALSE, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.07556144
## beta : FALSE
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 917924.4
plot(sesopt1)
#ramalan
ramalanopt1<- forecast(sesopt1, h=22)
ramalanopt1
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 88 917924.4 632641.4 1203207 481621.7 1354227
## 89 917924.4 631828.1 1204021 480377.9 1355471
## 90 917924.4 631017.2 1204832 479137.7 1356711
## 91 917924.4 630208.5 1205640 477900.9 1357948
## 92 917924.4 629402.1 1206447 476667.7 1359181
## 93 917924.4 628598.0 1207251 475437.8 1360411
## 94 917924.4 627796.0 1208053 474211.4 1361637
## 95 917924.4 626996.3 1208852 472988.3 1362860
## 96 917924.4 626198.8 1209650 471768.6 1364080
## 97 917924.4 625403.5 1210445 470552.2 1365296
## 98 917924.4 624610.3 1211238 469339.2 1366510
## 99 917924.4 623819.2 1212029 468129.4 1367719
## 100 917924.4 623030.3 1212818 466922.8 1368926
## 101 917924.4 622243.5 1213605 465719.5 1370129
## 102 917924.4 621458.7 1214390 464519.3 1371329
## 103 917924.4 620676.1 1215173 463322.3 1372526
## 104 917924.4 619895.5 1215953 462128.5 1373720
## 105 917924.4 619116.9 1216732 460937.8 1374911
## 106 917924.4 618340.3 1217508 459750.1 1376099
## 107 917924.4 617565.8 1218283 458565.6 1377283
## 108 917924.4 616793.3 1219055 457384.1 1378465
## 109 917924.4 616022.7 1219826 456205.6 1379643
Setelah dilakukan peramalan, akan dilakukan perhitungan keakuratan hasil peramalan. Perhitungan akurasi ini dilakukan baik pada data latih dan data uji.
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
SSE11<-ses11$SSE
MSE11<-ses11$SSE/length(train1.ts)
RMSE11<-sqrt(MSE11)
akurasi11 <- matrix(c(SSE11,MSE11,RMSE11))
row.names(akurasi11)<- c("SSE", "MSE", "RMSE")
colnames(akurasi11) <- c("Akurasi lamda=0.2")
akurasi11
## Akurasi lamda=0.2
## SSE 4.476072e+12
## MSE 5.144911e+10
## RMSE 2.268240e+05
SSE22<-ses22$SSE
MSE22<-ses22$SSE/length(train1.ts)
RMSE22<-sqrt(MSE22)
akurasi22 <- matrix(c(SSE22,MSE22,RMSE22))
row.names(akurasi22)<- c("SSE", "MSE", "RMSE")
colnames(akurasi22) <- c("Akurasi lamda=0.7")
akurasi22
## Akurasi lamda=0.7
## SSE 5.199428e+12
## MSE 5.976354e+10
## RMSE 2.444658e+05
#Cara Manual
fitted11<-ramalan11$fitted
sisaan11<-ramalan11$residuals
head(sisaan11)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA -420058.0 -391997.4 191742.1 158948.7 132195.9
resid11<-training1$Jumlah_Penumpang-ramalan11$fitted
head(resid11)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA -420058.0 -391997.4 191742.1 158948.7 132195.9
#Cara Manual
SSE1.1=sum(sisaan11[2:length(train1.ts)]^2)
SSE1.1
## [1] 4.476072e+12
MSE1.1 = SSE1.1/length(train1.ts)
MSE1.1
## [1] 51449108300
MAPE1.1 = sum(abs(sisaan11[2:length(train1.ts)]/train1.ts[2:length(train1.ts)])*
100)/length(train1.ts)
MAPE1.1
## [1] 24.45344
akurasi1.1 <- matrix(c(SSE1.1,MSE1.1,MAPE1.1))
row.names(akurasi1.1)<- c("SSE", "MSE", "MAPE")
colnames(akurasi1.1) <- c("Akurasi lamda=0.2")
akurasi1.1
## Akurasi lamda=0.2
## SSE 4.476072e+12
## MSE 5.144911e+10
## MAPE 2.445344e+01
fitted22<-ramalan22$fitted
sisaan22<-ramalan22$residuals
head(sisaan22)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA -420058.00 -181968.40 450749.48 140779.84 47270.95
resid22<-training1$Jumlah_Penumpang-ramalan22$fitted
head(resid22)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA -420058.00 -181968.40 450749.48 140779.84 47270.95
SSE2.2=sum(sisaan22[2:length(train1.ts)]^2)
SSE2.2
## [1] 5.199428e+12
MSE2.2 = SSE2.2/length(train1.ts)
MSE2.2
## [1] 59763543419
MAPE2.2 = sum(abs(sisaan22[2:length(train1.ts)]/train1.ts[2:length(train1.ts)])*
100)/length(train1.ts)
MAPE2.2
## [1] 21.87365
akurasi2.2 <- matrix(c(SSE2.2,MSE2.2,MAPE2.2))
row.names(akurasi2.2)<- c("SSE", "MSE", "MAPE")
colnames(akurasi2.2) <- c("Akurasi lamda=0.7")
akurasi2.2
## Akurasi lamda=0.7
## SSE 5.199428e+12
## MSE 5.976354e+10
## MAPE 2.187365e+01
Berdasarkan nilai SSE, MSE, dan RMSE di antara kedua parameter, nilai parameter \(\lambda=0,2\) menghasilkan akurasi yang lebih baik dibanding \(\lambda=0,7\) . Hal ini dilihat dari nilai masing-masing ukuran akurasi yang lebih kecil. Namun, pada nilai MAPE nilai parameter \(\lambda=0,7\) menghasilkan akurasi yang lebih baik dibandingkan \(\lambda=0,2\).
Akurasi data uji dapat dihitung dengan cara yang hampir sama dengan perhitungan akurasi data latih.
selisih11<-ramalan11$mean-testing1$Jumlah_Penumpang
SSEtesting11<-sum(selisih11^2)
MSEtesting11<-SSEtesting11/length(testing1)
selisih22<-ramalan22$mean-testing1$Jumlah_Penumpang
SSEtesting22<-sum(selisih22^2)
MSEtesting22<-SSEtesting22/length(testing1)
selisihopt1<-ramalanopt1$mean-testing1$Jumlah_Penumpang
SSEtestingopt1<-sum(selisihopt1^2)
MSEtestingopt1<-SSEtestingopt1/length(testing1)
akurasitesting11 <- matrix(c(SSEtesting11,SSEtesting22,SSEtestingopt1))
row.names(akurasitesting11)<- c("SSE1", "SSE2", "SSEopt")
akurasitesting11
## [,1]
## SSE1 1.890227e+12
## SSE2 3.593488e+12
## SSEopt 1.488053e+12
akurasitesting22 <- matrix(c(MSEtesting11,MSEtesting22,MSEtestingopt1))
row.names(akurasitesting22)<- c("MSE1", "MSE2", "MSEopt")
akurasitesting22
## [,1]
## MSE1 9.451133e+11
## MSE2 1.796744e+12
## MSEopt 7.440267e+11
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.
#cara lain
accuracy(ramalanopt1,testing1$Jumlah_Penumpang)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -30870.1 223452.1 197615.3 -9.582909 24.29139 1.238009 0.3052778
## Test set 122556.4 260074.6 254161.2 6.143201 25.31645 1.592254 NA
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
des1.1<- HoltWinters(train1.ts, gamma = FALSE, beta = 0.2, alpha = 0.2)
plot(des1.1)
#ramalan
ramalandes11<- forecast(des1.1, h=22)
ramalandes11
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 88 814236.0 259706.15 1368766 -33844.24 1662316
## 89 802113.0 231836.20 1372390 -70050.07 1674276
## 90 789989.9 198953.65 1381026 -113922.03 1693902
## 91 777866.8 160767.02 1394967 -165905.89 1721640
## 92 765743.8 117157.14 1414330 -226183.88 1757671
## 93 753620.7 68153.60 1439088 -294710.77 1801952
## 94 741497.6 13900.36 1469095 -371266.38 1854262
## 95 729374.6 -45381.24 1504130 -455512.20 1914261
## 96 717251.5 -109425.86 1543929 -547042.43 1981545
## 97 705128.5 -177950.56 1588207 -645424.35 2055681
## 98 693005.4 -250673.45 1636684 -750226.86 2136238
## 99 680882.3 -327325.55 1689090 -861038.57 2222803
## 100 668759.3 -407657.33 1745176 -977477.86 2314996
## 101 656636.2 -491441.51 1804714 -1099197.14 2412470
## 102 644513.2 -578473.52 1867500 -1225883.56 2514910
## 103 632390.1 -668570.54 1933351 -1357257.50 2622038
## 104 620267.0 -761569.77 2002104 -1493069.99 2733604
## 105 608144.0 -857326.45 2073614 -1633099.63 2849388
## 106 596020.9 -955711.80 2147754 -1777149.48 2969191
## 107 583897.9 -1056611.07 2224407 -1925044.04 3092840
## 108 571774.8 -1159921.75 2303471 -2076626.52 3220176
## 109 559651.7 -1265551.97 2384855 -2231756.45 3351060
#Lamda=0.6 dan gamma=0.3
des2.2<- HoltWinters(train1.ts, gamma = FALSE, beta = 0.3, alpha = 0.6)
plot(des2.2)
#ramalan
ramalandes22<- forecast(des2.2, h=22)
ramalandes22
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 88 686042.91 298148.65 1073937 92809.84 1279276
## 89 630913.44 138975.43 1122851 -121440.82 1383268
## 90 575783.97 -41199.61 1192768 -367810.99 1519379
## 91 520654.51 -238429.88 1279739 -640264.88 1681574
## 92 465525.04 -450102.62 1381153 -934806.63 1865857
## 93 410395.57 -674460.83 1495252 -1248749.12 2069540
## 94 355266.10 -910268.26 1620800 -1580201.69 2290734
## 95 300136.63 -1156611.60 1756885 -1927767.53 2528041
## 96 245007.16 -1412785.91 1902800 -2290368.55 2780383
## 97 189877.70 -1678226.84 2057982 -2667141.65 3046897
## 98 134748.23 -1952468.92 2221965 -3057374.94 3326871
## 99 79618.76 -2235118.89 2394356 -3460466.98 3619705
## 100 24489.29 -2525838.02 2574817 -3875899.74 3924878
## 101 -30640.18 -2824329.91 2763050 -4303219.92 4241940
## 102 -85769.65 -3130331.88 2958793 -4742025.76 4570486
## 103 -140899.11 -3443608.59 3161810 -5191957.37 4910159
## 104 -196028.58 -3763947.35 3371890 -5652689.45 5260632
## 105 -251158.05 -4091154.47 3588838 -6123925.78 5621610
## 106 -306287.52 -4425052.41 3812477 -6605394.85 5992820
## 107 -361416.99 -4765477.57 4042644 -7096846.42 6374012
## 108 -416546.46 -5112278.40 4279185 -7598048.74 6764956
## 109 -471675.93 -5465313.96 4521962 -8108786.26 7165434
Selanjutnya jika ingin membandingkan plot data latih dan data uji adalah sebagai berikut.
#Visually evaluate the prediction
plot(Penumpang1.ts)
lines(des1.1$fitted[,1], lty=2, col="blue")
lines(ramalandes11$mean, col="red")
Untuk mendapatkan nilai parameter optimum dari DES, argumen
alpha dan beta dapat dibuat NULL
seperti berikut.
#Lamda dan gamma optimum
des1.opt<- HoltWinters(train1.ts, gamma = FALSE)
des1.opt
## Holt-Winters exponential smoothing with trend and without seasonal component.
##
## Call:
## HoltWinters(x = train1.ts, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 1
## beta : 0.1267806
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 649062.00
## b -34604.88
plot(des1.opt)
#ramalan
ramalandesopt1<- forecast(des1.opt, h=22)
ramalandesopt1
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 88 614457.12 253531.29 975382.9 62468.7 1166446
## 89 579852.24 36106.42 1123598.1 -251735.2 1411440
## 90 545247.36 -162116.67 1252611.4 -536572.6 1627067
## 91 510642.49 -354555.85 1375840.8 -812564.2 1833849
## 92 476037.61 -545950.69 1498025.9 -1086958.6 2039034
## 93 441432.73 -738494.07 1621359.5 -1363109.6 2245975
## 94 406827.85 -933342.80 1746998.5 -1642786.3 2456442
## 95 372222.97 -1131152.59 1875598.5 -1926991.5 2671437
## 96 337618.09 -1332309.17 2007545.4 -2216315.3 2891551
## 97 303013.22 -1537041.67 2143068.1 -2511107.9 3117134
## 98 268408.34 -1745483.54 2282300.2 -2811573.5 3348390
## 99 233803.46 -1957707.49 2425314.4 -3117823.3 3585430
## 100 199198.58 -2173746.62 2572143.8 -3429907.9 3828305
## 101 164593.70 -2393607.66 2722795.1 -3747837.7 4077025
## 102 129988.82 -2617279.59 2877257.2 -4071595.6 4331573
## 103 95383.95 -2844739.38 3035507.3 -4401146.7 4591915
## 104 60779.07 -3075955.89 3197514.0 -4736443.1 4858001
## 105 26174.19 -3310892.56 3363240.9 -5077429.0 5129777
## 106 -8430.69 -3549509.29 3532647.9 -5424043.1 5407182
## 107 -43035.57 -3791763.81 3705692.7 -5776220.7 5690150
## 108 -77640.45 -4037612.59 3882331.7 -6133895.2 5978614
## 109 -112245.33 -4287011.58 4062520.9 -6496999.3 6272509
Selanjutnya akan dilakukan perhitungan akurasi pada data latih maupun data uji dengan ukuran akurasi SSE, MSE dan MAPE.
#Akurasi Data Training
ssedes1.train1<-des1.1$SSE
msedes1.train1<-ssedes1.train1/length(train1.ts)
sisaandes11<-ramalandes11$residuals
head(sisaandes11)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA NA 364107 1202119 1324659 1369187
mapedes1.train1 <- sum(abs(sisaandes11[3:length(train1.ts)]/train1.ts[3:length(train1.ts)])
*100)/length(train1.ts)
akurasides1.1 <- matrix(c(ssedes1.train1,msedes1.train1,mapedes1.train1))
row.names(akurasides1.1)<- c("SSE", "MSE", "MAPE")
colnames(akurasides1.1) <- c("Akurasi lamda=0.2 dan gamma=0.2")
akurasides1.1
## Akurasi lamda=0.2 dan gamma=0.2
## SSE 1.695101e+13
## MSE 1.948392e+11
## MAPE 3.418812e+01
ssedes2.train2<-des2.2$SSE
msedes2.train2<-ssedes2.train2/length(train1.ts)
sisaandes22<-ramalandes22$residuals
head(sisaandes22)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA NA 364107.0 1005501.5 581284.1 306448.0
mapedes2.train2 <- sum(abs(sisaandes22[3:length(train1.ts)]/train1.ts[3:length(train1.ts)])
*100)/length(train1.ts)
akurasides2.2 <- matrix(c(ssedes2.train2,msedes2.train2,mapedes2.train2))
row.names(akurasides2.2)<- c("SSE", "MSE", "MAPE")
colnames(akurasides2.2) <- c("Akurasi lamda=0.6 dan gamma=0.3")
akurasides2.2
## Akurasi lamda=0.6 dan gamma=0.3
## SSE 7.743802e+12
## MSE 8.900922e+10
## MAPE 2.580630e+01
Hasil akurasi dari data latih didapatkan skenario 2 dengan lamda=0.6 dan gamma=0.3 memiliki hasil yang lebih baik. Namun untuk kedua skenario dapat dikategorikan peramalan sangat baik berdasarkan nilai MAPE-nya.
#Akurasi Data Testing
selisihdes11<-ramalandes11$mean-testing1$Jumlah_Penumpang
selisihdes11
## Time Series:
## Start = 88
## End = 109
## Frequency = 1
## [1] -359125.99 -392044.05 -410236.11 -401742.17 -406915.23 -16258.29
## [7] 73877.65 -455838.41 -480285.47 -466566.53 -406310.59 -519015.66
## [13] -122278.72 -47287.78 -564599.84 -603108.90 -614795.96 -629320.02
## [19] -625927.08 -163159.14 -132608.20 -34265.27
SSEtestingdes11<-sum(selisihdes11^2)
MSEtestingdes11<-SSEtestingdes11/length(testing1$Jumlah_Penumpang)
MAPEtestingdes11<-sum(abs(selisihdes11/testing1$Jumlah_Penumpang)*100)/length(testing1$Jumlah_Penumpang)
selisihdes22<-ramalandes22$mean-testing1$Jumlah_Penumpang
selisihdes22
## Time Series:
## Start = 88
## End = 109
## Frequency = 1
## [1] -487319.1 -563243.6 -624442.0 -658954.5 -707134.0 -359483.4
## [7] -312353.9 -885076.4 -952529.8 -981817.3 -964567.8 -1120279.2
## [13] -766548.7 -734564.2 -1294882.6 -1376398.1 -1431091.6 -1488622.1
## [19] -1528235.5 -1108474.0 -1120929.5 -1065592.9
SSEtestingdes22<-sum(selisihdes22^2)
MSEtestingdes22<-SSEtestingdes22/length(testing1$Jumlah_Penumpang)
MAPEtestingdes22<-sum(abs(selisihdes22/testing1$Jumlah_Penumpang)*100)/length(testing1$Jumlah_Penumpang)
selisihdesopt1<-ramalandesopt1$mean-testing1$Jumlah_Penumpang
selisihdesopt1
## Time Series:
## Start = 88
## End = 109
## Frequency = 1
## [1] -558904.9 -614304.8 -654978.6 -668966.5 -696621.4 -328446.3
## [7] -260792.1 -812990.0 -859918.9 -868681.8 -830907.7 -966094.5
## [13] -591839.4 -539330.3 -1079124.2 -1140115.1 -1174283.9 -1211289.8
## [19] -1230378.7 -790092.6 -782023.4 -706162.3
SSEtestingdesopt1<-sum(selisihdesopt1^2)
MSEtestingdesopt1<-SSEtestingdesopt1/length(testing1$Jumlah_Penumpang)
MAPEtestingdesopt1<-sum(abs(selisihdesopt1/testing1$Jumlah_Penumpang)*100)/length(testing1$Jumlah_Penumpang)
akurasitestingdes1 <-
matrix(c(SSEtestingdes11,MSEtestingdes11,MAPEtestingdes11,SSEtestingdes22,MSEtestingdes22,
MAPEtestingdes22,SSEtestingdesopt1,MSEtestingdesopt1,MAPEtestingdesopt1),
nrow=3,ncol=3)
row.names(akurasitestingdes1)<- c("SSE", "MSE", "MAPE")
colnames(akurasitestingdes1) <- c("des ske1","des ske2","des opt")
akurasitestingdes1
## des ske1 des ske2 des opt
## SSE 3.785159e+12 2.186434e+13 1.520619e+13
## MSE 1.720527e+11 9.938337e+11 6.911904e+11
## MAPE 3.155151e+01 9.260952e+01 7.656490e+01
MSEfull1 <-
matrix(c(MSEtesting11,MSEtesting22,MSEtestingopt1,MSEtestingdes11,MSEtestingdes22,
MSEtestingdesopt1),nrow=3,ncol=2)
row.names(MSEfull1)<- c("ske 1", "ske 2", "ske opt")
colnames(MSEfull1) <- c("ses","des")
MSEfull1
## ses des
## ske 1 9.451133e+11 172052696472
## ske 2 1.796744e+12 993833700042
## ske opt 7.440267e+11 691190394469
Kedua metode dapat dibandingkan dengan menggunakan ukuran akurasi yang sama. Contoh di atas adalah perbandingan kedua metode dengan ukuran akurasi MSE. Hasilnya didapatkan metode DES lebih baik dibandingkan metode SES dilihat dari MSE yang lebih kecil nilainya.
#membagi data menjadi training dan testing
training11<-Penumpang1[1:87,1]
testing11<-Penumpang1[88:109,1]
training11.ts<-ts(training11, frequency = 13)
testing11.ts<-ts(testing11, frequency = 13)
Kemudian akan dilakukan eskplorasi dengan plot data deret waktu sebagai berikut.
#Membuat plot time series
plot(Penumpang1.ts, col="red",main="Plot semua data")
points(Penumpang1.ts)
plot(training11.ts, col="blue",main="Plot data latih")
points(training11.ts)
plot(testing11.ts, col="green",main="Plot data uji")
points(testing11.ts)
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.
Perhitungan dengan model aditif dilakukan jika plot data asli menunjukkan fluktuasi musiman yang relatif stabil (konstan).
#Pemulusan dengan winter aditif
winter11 <- HoltWinters(training11.ts,alpha=0.2,beta=0.1,gamma=0.1,seasonal = "additive")
winter11$fitted
## Time Series:
## Start = c(2, 1)
## End = c(7, 9)
## Frequency = 13
## xhat level trend season
## 2.000000 1179749.0 1027172.8 -188.18918 152764.42
## 2.076923 1134492.8 1023859.2 -500.72916 111134.35
## 2.153846 761843.9 1021196.1 -716.96502 -258635.27
## 2.230769 650773.4 1024454.6 -319.42210 -373361.73
## 2.307692 1168348.5 1028861.5 153.20991 139333.81
## 2.384615 1176633.4 1025561.6 -192.09945 151263.88
## 2.461538 1167460.4 1021255.8 -603.46649 146808.08
## 2.538462 1140308.4 1017460.4 -922.65464 123770.65
## 2.615385 749285.1 1017099.5 -866.48360 -266947.96
## 2.692308 714197.2 1092610.8 6771.29521 -385184.88
## 2.769231 1254173.9 1108233.9 7656.47081 138283.58
## 2.846154 1160827.4 1001243.7 -3808.18735 163391.81
## 2.923077 1134054.7 982024.7 -5349.27475 157379.27
## 3.000000 1111269.8 966156.7 -6401.14840 151514.26
## 3.076923 1058852.7 955418.2 -6834.88424 110269.40
## 3.153846 687311.3 950954.1 -6597.79801 -257045.10
## 3.230769 641177.3 1012438.1 210.37693 -371471.20
## 3.307692 1174599.5 1034274.0 2372.93146 137952.57
## 3.384615 1086155.6 943480.8 -6943.67901 149618.42
## 3.461538 970158.1 841112.9 -16486.11074 145531.32
## 3.538462 880588.6 777765.5 -21172.23205 123995.34
## 3.615385 527959.4 782898.0 -18541.76474 -236396.85
## 3.692308 470240.5 860783.7 -8899.01191 -381644.18
## 3.769231 1046392.4 952777.2 1190.23731 92424.94
## 3.846154 1046810.5 894354.2 -4771.09059 157227.46
## 3.923077 952960.9 812289.6 -12500.44137 153171.77
## 4.000000 866627.8 735752.6 -18904.09950 149779.32
## 4.076923 848451.1 752565.7 -15332.37492 111217.75
## 4.153846 534595.2 775875.7 -11468.13631 -229812.40
## 4.230769 514013.0 877038.9 -204.99979 -362820.98
## 4.307692 1107398.9 995091.9 11620.80116 100686.13
## 4.384615 1043719.6 928474.0 3796.92363 111448.69
## 4.461538 970714.4 848507.0 -4579.46808 126786.84
## 4.538462 1010611.3 877333.0 -1238.91508 134517.21
## 4.615385 707727.2 904001.3 1551.79825 -197825.83
## 4.692308 662553.6 993494.8 10345.97380 -341287.19
## 4.769231 1184564.0 1096384.1 19600.30177 68579.63
## 4.846154 1249692.4 1104891.4 18491.00175 126310.05
## 4.923077 1161281.3 1025064.9 8659.25326 127557.14
## 5.000000 1101379.1 938205.5 -892.61235 164066.22
## 5.076923 1074836.6 947987.1 174.80590 126674.70
## 5.153846 781895.9 964815.5 1840.17469 -184759.85
## 5.230769 729923.4 1036605.9 8835.19731 -315517.78
## 5.307692 1214517.4 1128032.5 17094.33004 69390.62
## 5.384615 1207491.5 1115424.3 14124.08165 77943.12
## 5.461538 1190086.0 1044334.3 5602.67121 140149.05
## 5.538462 1082792.4 942275.8 -5163.44914 145680.06
## 5.615385 785727.0 952046.2 -3670.05662 -162649.13
## 5.692308 723900.5 1024252.8 3917.60240 -304269.87
## 5.769231 1194028.4 1117077.7 12808.33237 64142.43
## 5.846154 1220485.9 1121530.1 11972.74359 86983.06
## 5.923077 1218419.7 1118588.7 10481.32512 89349.68
## 6.000000 1192385.3 1024068.3 -18.84853 168335.89
## 6.076923 1035799.7 913534.0 -11070.39471 133336.18
## 6.153846 751893.8 918173.0 -9499.44949 -156779.76
## 6.230769 697745.7 982358.0 -2131.00554 -282481.25
## 6.307692 1123033.7 1059707.0 5816.99949 57509.62
## 6.384615 1122302.0 1071981.7 6462.76604 43857.48
## 6.461538 1188548.9 1084405.5 7058.86684 97084.57
## 6.538462 1164962.7 1013997.0 -687.87164 151653.63
## 6.615385 771473.8 914355.6 -10583.22621 -132298.50
## 6.692308 709825.5 981357.2 -2824.74279 -268706.95
## 6.769231 1137347.7 1070205.1 6342.52793 60800.08
## 6.846154 1173318.1 1085102.7 7198.03333 81017.39
## 6.923077 1041951.7 996940.7 -2337.96920 47348.99
## 7.000000 1057533.8 941093.0 -7688.94381 124129.71
## 7.076923 982955.7 858513.7 -15177.97904 139619.96
## 7.153846 626693.6 775919.2 -21919.63269 -127305.99
## 7.230769 595924.1 858120.8 -11507.50407 -250689.23
## 7.307692 1018732.2 958916.7 -277.16622 60092.69
## 7.384615 884293.3 849265.9 -11214.53102 46241.88
## 7.461538 942842.5 883422.3 -6677.43611 66097.62
## 7.538462 1023273.8 914139.6 -2937.96609 112072.21
## 7.615385 745133.6 854960.3 -8562.10268 -101264.56
xhat11 <- winter11$fitted[,2]
winter11.opt<- HoltWinters(training11.ts, alpha= NULL, beta = NULL, gamma = NULL, seasonal = "additive")
winter11.opt
## Holt-Winters exponential smoothing with trend and additive seasonal component.
##
## Call:
## HoltWinters(x = training11.ts, alpha = NULL, beta = NULL, gamma = NULL, seasonal = "additive")
##
## Smoothing parameters:
## alpha: 0.008449337
## beta : 0
## gamma: 0.7411293
##
## Coefficients:
## [,1]
## a 999629.5521
## b -188.1892
## s1 147867.4819
## s2 150721.3069
## s3 -225292.0050
## s4 -258680.9990
## s5 -306463.6717
## s6 -239863.9159
## s7 131665.4440
## s8 133645.9221
## s9 -367557.2472
## s10 89002.7219
## s11 34146.5045
## s12 -250963.1585
## s13 -222563.2133
winter11.opt$fitted
## Time Series:
## Start = c(2, 1)
## End = c(7, 9)
## Frequency = 13
## xhat level trend season
## 2.000000 1179749.0 1027173 -188.1892 152764.423
## 2.076923 1137798.7 1026853 -188.1892 111134.346
## 2.153846 767721.6 1026545 -188.1892 -258635.269
## 2.230769 652925.2 1026475 -188.1892 -373361.731
## 2.307692 1165614.1 1026468 -188.1892 139333.808
## 2.384615 1177233.2 1026157 -188.1892 151263.885
## 2.461538 1172410.3 1025790 -188.1892 146808.077
## 2.538462 1149008.1 1025426 -188.1892 123770.654
## 2.615385 758051.5 1025188 -188.1892 -266947.962
## 2.692308 642779.0 1028152 -188.1892 -385184.885
## 2.769231 1167036.7 1028941 -188.1892 138283.577
## 2.846154 1187849.5 1024646 -188.1892 163391.808
## 2.923077 1180769.4 1023578 -188.1892 157379.269
## 3.000000 1163643.5 1022551 -188.1892 141280.653
## 3.076923 1122308.6 1021737 -188.1892 100759.714
## 3.153846 772577.2 1021113 -188.1892 -248347.572
## 3.230769 665315.4 1023081 -188.1892 -357576.959
## 3.307692 1152069.2 1023602 -188.1892 128655.393
## 3.384615 1155188.1 1019668 -188.1892 135708.076
## 3.461538 1146119.7 1014865 -188.1892 131442.491
## 3.538462 1130464.0 1011211 -188.1892 119441.512
## 3.615385 1017081.9 1010023 -188.1892 7247.565
## 3.692308 709409.5 1009775 -188.1892 -300177.644
## 3.769231 792708.3 1011829 -188.1892 -218932.209
## 3.846154 1097986.7 1011265 -188.1892 86909.381
## 3.923077 1091592.1 1007379 -188.1892 84400.767
## 4.000000 1089982.4 1003315 -188.1892 86856.003
## 4.076923 1065399.3 1002748 -188.1892 62839.367
## 4.153846 941319.8 1002359 -188.1892 -60851.450
## 4.230769 707449.1 1003493 -188.1892 -295855.727
## 4.307692 809366.8 1006666 -188.1892 -197111.396
## 4.384615 739860.2 1005691 -188.1892 -265642.677
## 4.461538 834293.5 1004532 -188.1892 -170049.786
## 4.538462 1039187.6 1006907 -188.1892 32468.493
## 4.615385 1009583.0 1007657 -188.1892 2114.604
## 4.692308 903222.9 1008633 -188.1892 -105222.114
## 4.769231 758585.7 1010321 -188.1892 -251547.283
## 4.846154 778374.8 1013264 -188.1892 -234700.618
## 4.923077 759949.3 1012904 -188.1892 -252766.664
## 5.000000 1065840.5 1012072 -188.1892 53957.145
## 5.076923 1057842.7 1012635 -188.1892 45396.303
## 5.153846 1067210.8 1013294 -188.1892 54105.462
## 5.230769 1009975.7 1013650 -188.1892 -3485.901
## 5.307692 748823.4 1014585 -188.1892 -265572.960
## 5.384615 666765.0 1017076 -188.1892 -350123.153
## 5.461538 1070613.3 1017857 -188.1892 52944.543
## 5.538462 1127950.6 1014130 -188.1892 114008.939
## 5.615385 1117421.1 1014191 -188.1892 103418.235
## 5.692308 1072170.6 1014406 -188.1892 57953.034
## 5.769231 1035573.6 1015031 -188.1892 20730.819
## 5.846154 766044.3 1015829 -188.1892 -249596.196
## 5.923077 709853.4 1018850 -188.1892 -308808.560
## 6.000000 1137628.6 1018523 -188.1892 119293.814
## 6.076923 1133016.1 1014129 -188.1892 119075.777
## 6.153846 1115051.9 1013783 -188.1892 101457.494
## 6.230769 1107631.8 1013639 -188.1892 94181.102
## 6.307692 980670.4 1013345 -188.1892 -32486.607
## 6.384615 748578.3 1014633 -188.1892 -265866.226
## 6.461538 762823.6 1017854 -188.1892 -254842.327
## 6.538462 1153497.9 1017990 -188.1892 135695.875
## 6.615385 1151993.5 1013718 -188.1892 138463.252
## 6.692308 1142100.7 1013593 -188.1892 128696.028
## 6.769231 1119908.6 1013625 -188.1892 106471.732
## 6.846154 1043315.9 1013946 -188.1892 29558.379
## 6.923077 689747.6 1010827 -188.1892 -320891.507
## 7.000000 764627.9 1011354 -188.1892 -246538.250
## 7.076923 1115645.4 1010477 -188.1892 105356.445
## 7.153846 1111457.4 1006320 -188.1892 105325.897
## 7.230769 1091251.9 1006434 -188.1892 85005.687
## 7.307692 1102476.4 1006805 -188.1892 95859.121
## 7.384615 1031774.6 1001289 -188.1892 30673.801
## 7.461538 774951.3 1001771 -188.1892 -226631.919
## 7.538462 784925.8 1004582 -188.1892 -219467.621
## 7.615385 1147747.7 1004031 -188.1892 143904.556
xhat11.opt <- winter11.opt$fitted[,2]
#Forecast
forecast11 <- predict(winter11, n.ahead = 22)
forecast11.opt <- predict(winter11.opt, n.ahead = 22)
#Plot time series
plot(training11.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
xlim=c(1,25),pch=12)
lines(xhat11,type="l",col="red")
lines(xhat11.opt,type="l",col="blue")
lines(forecast11,type="l",col="red")
lines(forecast11.opt,type="l",col="blue")
legend("topleft",c("Actual Data",expression(paste(winter11)),
expression(paste(winter11.opt))),cex=0.5,
col=c("black","red","blue"),lty=1)
#Akurasi data training
SSE11<-winter11$SSE
MSE11<-winter11$SSE/length(training11.ts)
RMSE11<-sqrt(MSE11)
akurasi11 <- matrix(c(SSE11,MSE11,RMSE11))
row.names(akurasi11)<- c("SSE", "MSE", "RMSE")
colnames(akurasi11) <- c("Akurasi")
akurasi11
## Akurasi
## SSE 8.355452e+12
## MSE 9.603968e+10
## RMSE 3.099027e+05
SSE11.opt<-winter11.opt$SSE
MSE11.opt<-winter11.opt$SSE/length(training11.ts)
RMSE11.opt<-sqrt(MSE11.opt)
akurasi11.opt <- matrix(c(SSE11.opt,MSE11.opt,RMSE11.opt))
row.names(akurasi11.opt)<- c("SSE1.opt", "MSE1.opt", "RMSE1.opt")
colnames(akurasi11.opt) <- c("Akurasi")
akurasi11.opt
## Akurasi
## SSE1.opt 4.488631e+12
## MSE1.opt 5.159345e+10
## RMSE1.opt 2.271419e+05
akurasi11.train = data.frame(Model_Winter = c("Winter 1","Winter1 optimal"),
Nilai_SSE=c(SSE11,SSE11.opt),
Nilai_MSE=c(MSE11,MSE11.opt),Nilai_RMSE=c(RMSE11,RMSE11.opt))
akurasi11.train
## Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1 Winter 1 8.355452e+12 96039681806 309902.7
## 2 Winter1 optimal 4.488631e+12 51593454573 227141.9
#Akurasi Data Testing
forecast11<-data.frame(forecast11)
testing11.ts<-data.frame(testing11.ts)
selisih11<-forecast11-testing11.ts
SSEtesting11<-sum(selisih11^2)
MSEtesting11<-SSEtesting11/length(testing11.ts)
forecast11.opt<-data.frame(forecast11.opt)
selisih11.opt<-forecast11.opt-testing11.ts
SSEtesting11.opt<-sum(selisih11.opt^2)
MSEtesting11.opt<-SSEtesting11.opt/length(testing11.ts)
Model multiplikatif digunakan cocok digunakan jika plot data asli menunjukkan fluktuasi musiman yang bervariasi.
#Pemulusan dengan winter multiplikatif
winter22 <- HoltWinters(training11.ts,alpha=0.2,beta=0.1,gamma=0.3,seasonal = "multiplicative")
winter22$fitted
## Time Series:
## Start = c(2, 1)
## End = c(7, 9)
## Frequency = 13
## xhat level trend season
## 2.000000 1178154.3 1027172.8 -188.18918 1.1471977
## 2.076923 1132716.5 1024538.2 -432.82615 1.1060546
## 2.153846 765435.4 1022471.6 -596.20783 0.7490496
## 2.230769 658407.3 1026223.7 -161.37302 0.6416835
## 2.307692 1169501.4 1031048.5 337.24500 1.1339127
## 2.384615 1178909.2 1028137.1 12.38046 1.1466321
## 2.461538 1170154.4 1024164.9 -386.07665 1.1429758
## 2.538462 1141634.7 1020514.8 -712.47762 1.1194666
## 2.615385 754480.6 1020067.2 -685.99562 0.7401359
## 2.692308 712624.2 1121171.5 9493.03626 0.6302702
## 2.769231 1309908.9 1145208.1 10947.39054 1.1329868
## 2.846154 1209835.3 1045127.2 -155.43779 1.1577684
## 2.923077 1175896.1 1023195.0 -2333.11485 1.1518660
## 3.000000 1144473.6 1004465.0 -3972.80350 1.1439106
## 3.076923 1088437.4 990895.2 -4932.50440 1.1039337
## 3.153846 735916.5 982750.4 -5253.72734 0.7528583
## 3.230769 682527.1 1055015.5 2498.15598 0.6454073
## 3.307692 1223116.4 1078207.0 4567.48228 1.1296133
## 3.384615 1126635.3 991708.3 -4539.12746 1.1412788
## 3.461538 1005207.9 896463.7 -13609.67727 1.1385890
## 3.538462 915112.0 835540.1 -18341.07488 1.1198154
## 3.615385 671321.1 834523.3 -16608.64643 0.8207716
## 3.692308 570840.1 900465.2 -8353.58706 0.6398751
## 3.769231 1010906.6 1018343.4 4269.59241 0.9885524
## 3.846154 1092600.0 969488.8 -1042.83376 1.1281993
## 3.923077 997301.0 891818.1 -8705.61151 1.1293023
## 4.000000 908329.9 818555.3 -15161.33263 1.1306158
## 4.076923 896032.0 827608.1 -12739.92557 1.0996037
## 4.153846 681004.8 841356.0 -10091.13588 0.8192392
## 4.230769 616091.3 933005.0 82.87090 0.6602715
## 4.307692 1101806.1 1081272.8 14901.36993 1.0051378
## 4.384615 1029456.5 1019448.2 7228.76817 1.0027073
## 4.461538 1003004.7 945984.1 -840.51564 1.0612193
## 4.538462 1115845.7 970536.5 1698.77722 1.1477116
## 4.615385 893307.7 978212.6 2296.51132 0.9110652
## 4.692308 767524.8 1036296.2 7875.21816 0.7350563
## 4.769231 1070503.8 1141509.6 17609.03591 0.9235498
## 4.846154 1204823.1 1171807.8 18877.94900 1.0118733
## 4.923077 1137384.6 1102390.5 10048.42316 1.0224244
## 5.000000 1199408.8 1023689.7 1173.50495 1.1703111
## 5.076923 1161277.1 1017231.3 410.30900 1.1411455
## 5.153846 942597.9 1017085.6 354.71372 0.9264405
## 5.230769 817055.5 1058252.3 4435.90676 0.7688573
## 5.307692 1060981.2 1147443.7 12911.45854 0.9143590
## 5.384615 1057109.7 1161454.0 13021.34616 0.9000697
## 5.461538 1226004.4 1113216.0 6895.40508 1.0945380
## 5.538462 1169525.3 1015185.9 -3597.13952 1.1561272
## 5.615385 975444.5 1009501.9 -3805.82450 0.9699197
## 5.692308 846661.4 1044805.6 105.12779 0.8102715
## 5.769231 1059401.3 1124334.9 8047.54283 0.9355508
## 5.846154 1063028.2 1152231.2 10032.42131 0.9146189
## 5.923077 1092153.8 1180388.5 11844.90857 0.9160570
## 6.000000 1285397.2 1105177.1 3139.27630 1.1597746
## 6.076923 1127844.1 996986.3 -7993.73479 1.1403970
## 6.153846 948372.7 986625.4 -8230.44400 0.9693147
## 6.230769 844698.7 1013872.3 -4682.71452 0.8370069
## 6.307692 979781.4 1069033.1 1301.64101 0.9153971
## 6.384615 936318.3 1108687.7 5136.93031 0.8406335
## 6.461538 1126990.2 1165164.1 10270.88382 0.9587857
## 6.538462 1281217.8 1107478.6 3475.24126 1.1532593
## 6.615385 1011326.7 1004989.3 -7121.21054 1.0134874
## 6.692308 899076.1 1027088.3 -4199.19580 0.8789576
## 6.769231 1037056.5 1084123.6 1924.26110 0.9548902
## 6.846154 1044117.9 1116012.9 4920.76378 0.9314716
## 6.923077 865760.6 1046299.1 -2542.69318 0.8294661
## 7.000000 1021421.8 1021728.4 -4745.49729 1.0043648
## 7.076923 1066756.1 949609.0 -11482.88619 1.1371138
## 7.153846 853680.1 864099.5 -18885.54239 1.0100165
## 7.230769 795231.1 903355.6 -13071.38146 0.8932328
## 7.307692 921385.4 971385.1 -4961.29193 0.9533968
## 7.384615 759164.4 872124.9 -14391.18242 0.8850816
## 7.461538 826753.8 937270.7 -6437.48315 0.8881867
## 7.538462 1006800.9 999076.2 386.80792 1.0073418
## 7.615385 987332.6 946902.1 -4869.27994 1.0480872
xhat22 <- winter22$fitted[,1]
winter22.opt<- HoltWinters(training11.ts, alpha= NULL, beta = NULL, gamma = NULL, seasonal = "multiplicative")
winter22.opt$fitted
## Time Series:
## Start = c(2, 1)
## End = c(7, 9)
## Frequency = 13
## xhat level trend season
## 2.000000 1178154.3 1027173 -188.1892 1.1471977
## 2.076923 1135692.9 1026985 -188.1892 1.1060546
## 2.153846 768980.5 1026796 -188.1892 0.7490496
## 2.230769 658636.8 1026608 -188.1892 0.6416835
## 2.307692 1163657.3 1026420 -188.1892 1.1339127
## 2.384615 1176494.5 1026232 -188.1892 1.1466321
## 2.461538 1172527.9 1026044 -188.1892 1.1429758
## 2.538462 1148200.3 1025855 -188.1892 1.1194666
## 2.615385 758993.9 1025667 -188.1892 0.7401359
## 2.692308 646210.3 1025479 -188.1892 0.6302702
## 2.769231 1161427.8 1025291 -188.1892 1.1329868
## 2.846154 1186613.6 1025103 -188.1892 1.1577684
## 2.923077 1180347.4 1024914 -188.1892 1.1518660
## 3.000000 1165298.0 1024726 -188.1892 1.1373886
## 3.076923 1124384.2 1024538 -188.1892 1.0976564
## 3.153846 776272.5 1024350 -188.1892 0.7579589
## 3.230769 668359.9 1024162 -188.1892 0.6527120
## 3.307692 1151877.7 1023974 -188.1892 1.1251164
## 3.384615 1159058.1 1023785 -188.1892 1.1323381
## 3.461538 1154672.6 1023597 -188.1892 1.1282611
## 3.538462 1141821.0 1023409 -188.1892 1.1159087
## 3.615385 1023731.9 1023221 -188.1892 1.0006836
## 3.692308 725056.7 1023033 -188.1892 0.7088631
## 3.769231 814540.3 1022844 -188.1892 0.7964947
## 3.846154 1110128.7 1022656 -188.1892 1.0857344
## 3.923077 1106708.9 1022468 -188.1892 1.0825889
## 4.000000 1108289.8 1022280 -188.1892 1.0843351
## 4.076923 1083256.3 1022092 -188.1892 1.0600378
## 4.153846 954499.8 1021903 -188.1892 0.9342131
## 4.230769 724734.3 1021715 -188.1892 0.7094616
## 4.307692 831779.9 1021527 -188.1892 0.8144015
## 4.384615 762372.2 1021339 -188.1892 0.7465815
## 4.461538 851962.0 1021151 -188.1892 0.8344694
## 4.538462 1046196.2 1020963 -188.1892 1.0249045
## 4.615385 1011518.8 1020774 -188.1892 0.9911155
## 4.692308 902113.6 1020586 -188.1892 0.8840802
## 4.769231 765170.5 1020398 -188.1892 0.7500129
## 4.846154 785346.3 1020210 -188.1892 0.7699311
## 4.923077 764642.1 1020022 -188.1892 0.7497716
## 5.000000 1060463.6 1019833 -188.1892 1.0400320
## 5.076923 1050874.8 1019645 -188.1892 1.0308182
## 5.153846 1054808.1 1019457 -188.1892 1.0348674
## 5.230769 995552.6 1019269 -188.1892 0.9769125
## 5.307692 747015.6 1019081 -188.1892 0.7331644
## 5.384615 662091.6 1018892 -188.1892 0.6499350
## 5.461538 1054588.9 1018704 -188.1892 1.0354170
## 5.538462 1118135.7 1018516 -188.1892 1.0980115
## 5.615385 1106434.4 1018328 -188.1892 1.0867216
## 5.692308 1059769.5 1018140 -188.1892 1.0410805
## 5.769231 1023971.5 1017951 -188.1892 1.0060998
## 5.846154 763953.2 1017763 -188.1892 0.7507585
## 5.923077 704830.7 1017575 -188.1892 0.6927853
## 6.000000 1125444.5 1017387 -188.1892 1.1064156
## 6.076923 1125148.2 1017199 -188.1892 1.1063290
## 6.153846 1107306.2 1017011 -188.1892 1.0889868
## 6.230769 1098674.3 1016822 -188.1892 1.0806978
## 6.307692 973672.9 1016634 -188.1892 0.9579190
## 6.384615 745961.8 1016446 -188.1892 0.7340281
## 6.461538 763576.0 1016258 -188.1892 0.7514997
## 6.538462 1143613.8 1016070 -188.1892 1.1257355
## 6.615385 1145797.5 1015881 -188.1892 1.1280940
## 6.692308 1135046.9 1015693 -188.1892 1.1177166
## 6.769231 1113378.5 1015505 -188.1892 1.0965823
## 6.846154 1035665.6 1015317 -188.1892 1.0202309
## 6.923077 694957.4 1015129 -188.1892 0.6847273
## 7.000000 774940.3 1014940 -188.1892 0.7636744
## 7.076923 1114706.1 1014752 -188.1892 1.0987045
## 7.153846 1113959.2 1014564 -188.1892 1.0981720
## 7.230769 1093503.6 1014376 -188.1892 1.0782063
## 7.307692 1101420.5 1014188 -188.1892 1.0862140
## 7.384615 1035033.6 1014000 -188.1892 1.0209332
## 7.461538 788691.1 1013811 -188.1892 0.7780911
## 7.538462 801813.3 1013623 -188.1892 0.7911838
## 7.615385 1152777.9 1013435 -188.1892 1.1377069
xhat22.opt <- winter22.opt$fitted[,1]
#Forecast
forecast22 <- predict(winter22, n.ahead = 22)
forecast22.opt <- predict(winter22.opt, n.ahead = 22)
#Plot time series
plot(training11.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
xlim=c(1,25),pch=12)
lines(xhat22,type="l",col="red")
lines(xhat22.opt,type="l",col="blue")
lines(forecast22,type="l",col="red")
lines(forecast22.opt,type="l",col="blue")
legend("topleft",c("Actual Data",expression(paste(winter22)),
expression(paste(winter22.opt))),cex=0.5,
col=c("black","red","blue"),lty=1)
#Akurasi data training
SSE22<-winter22$SSE
MSE22<-winter22$SSE/length(training11.ts)
RMSE22<-sqrt(MSE22)
akurasi11 <- matrix(c(SSE22,MSE22,RMSE22))
row.names(akurasi11)<- c("SSE2", "MSE2", "RMSE2")
colnames(akurasi11) <- c("Akurasi lamda=0.2")
akurasi11
## Akurasi lamda=0.2
## SSE2 6.611619e+12
## MSE2 7.599562e+10
## RMSE2 2.756730e+05
SSE22.opt<-winter22.opt$SSE
MSE22.opt<-winter22.opt$SSE/length(training11.ts)
RMSE22.opt<-sqrt(MSE22.opt)
akurasi11.opt <- matrix(c(SSE22.opt,MSE22.opt,RMSE22.opt))
row.names(akurasi11.opt)<- c("SSE2.opt", "MSE2.opt", "RMSE2.opt")
colnames(akurasi11.opt) <- c("Akurasi")
akurasi11.opt
## Akurasi
## SSE2.opt 4.472723e+12
## MSE2.opt 5.141061e+10
## RMSE2.opt 2.267391e+05
akurasi22.train = data.frame(Model_Winter = c("Winter 1","winter2 optimal"),
Nilai_SSE=c(SSE22,SSE22.opt),
Nilai_MSE=c(MSE22,MSE22.opt),Nilai_RMSE=c(RMSE22,RMSE22.opt))
akurasi22.train
## Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1 Winter 1 6.611619e+12 75995621642 275673.0
## 2 winter2 optimal 4.472723e+12 51410606367 226739.1
#Akurasi Data Testing
forecast22<-data.frame(forecast22)
testing11.ts<-data.frame(testing11.ts)
selisih22<-forecast22-testing11.ts
SSEtesting22<-sum(selisih22^2)
MSEtesting22<-SSEtesting22/length(testing11.ts)
forecast22.opt<-data.frame(forecast22.opt)
selisih22.opt<-forecast22.opt-testing11.ts
SSEtesting22.opt<-sum(selisih22.opt^2)
MSEtesting22.opt<-SSEtesting22.opt/length(testing11.ts)