Package R yang akan digunakan pada perkuliahan Analisis
Deret Waktu sesi UTS adalah: forecast
,
graphics
, TTR
, TSA
. Jika
package tersebut belum ada, silakan install terlebih
dahulu.
#install.packages("forecast")
#install.packages("graphics")
#install.packages("TTR")
#install.packages("TSA")
Jika sudah ada, silakan panggil library package tersebut.
library("forecast")
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library("graphics")
library("TTR")
library("TSA")
## 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) #install packages jika belum ada
# data1 <- import("https://github.com/IffaKuliah/MPDW/blob/01d09f1fb9aeb5a09293e27ba1a795498a43b510/Tugas%20Mandiri%20Iffa_MPDW_(store%20sales)%20301_400.csv")
#via csv gunakan read.csv("namafile.csv")
data_sales = read.csv("C:\\Users\\MUTHI'AH IFFA\\Downloads\\MPDW\\Praktikum\\Tugas Mandiri Iffa_MPDW_(store sales) 301_400.csv")
# menampilkan 5 data pertama
data_sales
## Date Total_Sales
## 1 10/28/2022 238.49
## 2 10/29/2022 204.26
## 3 10/30/2022 207.48
## 4 10/31/2022 250.01
## 5 11/1/2022 236.39
## 6 11/2/2022 286.10
## 7 11/3/2022 225.99
## 8 11/4/2022 214.37
## 9 11/5/2022 229.86
## 10 11/6/2022 203.69
## 11 11/7/2022 225.96
## 12 11/8/2022 240.28
## 13 11/9/2022 244.13
## 14 11/10/2022 235.82
## 15 11/11/2022 212.09
## 16 11/12/2022 204.63
## 17 11/13/2022 203.58
## 18 11/14/2022 222.44
## 19 11/15/2022 235.85
## 20 11/16/2022 240.90
## 21 11/17/2022 232.62
## 22 11/18/2022 208.25
## 23 11/19/2022 212.03
## 24 11/20/2022 200.45
## 25 11/21/2022 215.10
## 26 11/22/2022 242.64
## 27 11/23/2022 284.72
## 28 11/24/2022 233.12
## 29 11/25/2022 215.83
## 30 11/26/2022 201.86
## 31 11/27/2022 201.34
## 32 11/28/2022 251.90
## 33 11/29/2022 273.82
## 34 11/30/2022 245.99
## 35 12/1/2022 229.61
## 36 12/2/2022 208.91
## 37 12/3/2022 200.66
## 38 12/4/2022 238.25
## 39 12/5/2022 219.05
## 40 12/6/2022 233.44
## 41 12/7/2022 242.68
## 42 12/8/2022 231.92
## 43 12/9/2022 250.85
## 44 12/10/2022 200.26
## 45 12/11/2022 207.69
## 46 12/12/2022 214.98
## 47 12/13/2022 230.87
## 48 12/14/2022 238.22
## 49 12/15/2022 229.98
## 50 12/16/2022 215.29
## 51 12/17/2022 250.35
## 52 12/18/2022 211.17
## 53 12/19/2022 261.77
## 54 12/20/2022 238.16
## 55 12/21/2022 267.15
## 56 12/22/2022 231.30
## 57 12/23/2022 212.65
## 58 12/24/2022 244.93
## 59 12/25/2022 203.09
## 60 12/26/2022 225.51
## 61 12/27/2022 246.27
## 62 12/28/2022 271.97
## 63 12/29/2022 233.75
## 64 12/30/2022 257.89
## 65 12/31/2022 201.66
## 66 1/1/2023 238.70
## 67 1/2/2023 223.33
## 68 1/3/2023 269.44
## 69 1/4/2023 239.00
## 70 1/5/2023 262.22
## 71 1/6/2023 217.28
## 72 1/7/2023 241.27
## 73 1/8/2023 212.73
## 74 1/9/2023 264.38
## 75 1/10/2023 235.47
## 76 1/11/2023 247.58
## 77 1/12/2023 233.36
## 78 1/13/2023 226.09
## 79 1/14/2023 200.33
## 80 1/15/2023 204.08
## 81 1/16/2023 220.97
## 82 1/17/2023 229.03
## 83 1/18/2023 270.94
## 84 1/19/2023 269.00
## 85 1/20/2023 246.24
## 86 1/21/2023 206.43
## 87 1/22/2023 218.01
## 88 1/23/2023 229.07
## 89 1/24/2023 237.12
## 90 1/25/2023 239.42
## 91 1/26/2023 235.60
## 92 1/27/2023 209.24
## 93 1/28/2023 214.23
## 94 1/29/2023 244.88
## 95 1/30/2023 252.32
## 96 1/31/2023 231.79
## 97 2/1/2023 251.04
## 98 2/2/2023 232.92
## 99 2/3/2023 222.38
## 100 2/4/2023 197.45
View()
: menampilkan data dalam bentuk tabel,
str()
: menampilkan struktur data, dim()
:
menampilkan dimensi data
View(data_sales)
str(data_sales)
## 'data.frame': 100 obs. of 2 variables:
## $ Date : chr "10/28/2022" "10/29/2022" "10/30/2022" "10/31/2022" ...
## $ Total_Sales: num 238 204 207 250 236 ...
dim(data_sales)
## [1] 100 2
Mengubah data agar terbaca sebagai data deret waktu dengan fungsi
ts()
.
data_sales.ts <- ts(data_sales$Total_Sales)
Menampilkan ringkasan data
summary(data_sales.ts)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 197.4 213.9 231.9 231.1 243.0 286.1
Membuat plot data deret waktu
ts.plot(data_sales.ts, xlab="Time Period", ylab = "Total Sales",
main = "Time Series Plot of Total Sales")
points(data_sales.ts)
#menyimpan plot
dev.copy(png, "plot_data1.png")
## png
## 3
dev.off()
## png
## 2
Pembagian data latih dan data uji dilakukan dengan perbandingan 80% data latih dan 20% data uji.
n = nrow(data_sales)
n
## [1] 100
n_train = floor(0.8 * n)
n_train
## [1] 80
training_ma = data_sales[1:n_train, ]
training_ma
## Date Total_Sales
## 1 10/28/2022 238.49
## 2 10/29/2022 204.26
## 3 10/30/2022 207.48
## 4 10/31/2022 250.01
## 5 11/1/2022 236.39
## 6 11/2/2022 286.10
## 7 11/3/2022 225.99
## 8 11/4/2022 214.37
## 9 11/5/2022 229.86
## 10 11/6/2022 203.69
## 11 11/7/2022 225.96
## 12 11/8/2022 240.28
## 13 11/9/2022 244.13
## 14 11/10/2022 235.82
## 15 11/11/2022 212.09
## 16 11/12/2022 204.63
## 17 11/13/2022 203.58
## 18 11/14/2022 222.44
## 19 11/15/2022 235.85
## 20 11/16/2022 240.90
## 21 11/17/2022 232.62
## 22 11/18/2022 208.25
## 23 11/19/2022 212.03
## 24 11/20/2022 200.45
## 25 11/21/2022 215.10
## 26 11/22/2022 242.64
## 27 11/23/2022 284.72
## 28 11/24/2022 233.12
## 29 11/25/2022 215.83
## 30 11/26/2022 201.86
## 31 11/27/2022 201.34
## 32 11/28/2022 251.90
## 33 11/29/2022 273.82
## 34 11/30/2022 245.99
## 35 12/1/2022 229.61
## 36 12/2/2022 208.91
## 37 12/3/2022 200.66
## 38 12/4/2022 238.25
## 39 12/5/2022 219.05
## 40 12/6/2022 233.44
## 41 12/7/2022 242.68
## 42 12/8/2022 231.92
## 43 12/9/2022 250.85
## 44 12/10/2022 200.26
## 45 12/11/2022 207.69
## 46 12/12/2022 214.98
## 47 12/13/2022 230.87
## 48 12/14/2022 238.22
## 49 12/15/2022 229.98
## 50 12/16/2022 215.29
## 51 12/17/2022 250.35
## 52 12/18/2022 211.17
## 53 12/19/2022 261.77
## 54 12/20/2022 238.16
## 55 12/21/2022 267.15
## 56 12/22/2022 231.30
## 57 12/23/2022 212.65
## 58 12/24/2022 244.93
## 59 12/25/2022 203.09
## 60 12/26/2022 225.51
## 61 12/27/2022 246.27
## 62 12/28/2022 271.97
## 63 12/29/2022 233.75
## 64 12/30/2022 257.89
## 65 12/31/2022 201.66
## 66 1/1/2023 238.70
## 67 1/2/2023 223.33
## 68 1/3/2023 269.44
## 69 1/4/2023 239.00
## 70 1/5/2023 262.22
## 71 1/6/2023 217.28
## 72 1/7/2023 241.27
## 73 1/8/2023 212.73
## 74 1/9/2023 264.38
## 75 1/10/2023 235.47
## 76 1/11/2023 247.58
## 77 1/12/2023 233.36
## 78 1/13/2023 226.09
## 79 1/14/2023 200.33
## 80 1/15/2023 204.08
testing_ma = data_sales[(n_train+1):n, ]
testing_ma
## Date Total_Sales
## 81 1/16/2023 220.97
## 82 1/17/2023 229.03
## 83 1/18/2023 270.94
## 84 1/19/2023 269.00
## 85 1/20/2023 246.24
## 86 1/21/2023 206.43
## 87 1/22/2023 218.01
## 88 1/23/2023 229.07
## 89 1/24/2023 237.12
## 90 1/25/2023 239.42
## 91 1/26/2023 235.60
## 92 1/27/2023 209.24
## 93 1/28/2023 214.23
## 94 1/29/2023 244.88
## 95 1/30/2023 252.32
## 96 1/31/2023 231.79
## 97 2/1/2023 251.04
## 98 2/2/2023 232.92
## 99 2/3/2023 222.38
## 100 2/4/2023 197.45
# ubah ke time series
train_ma.ts <- ts(training_ma$Total_Sales)
train_ma.ts
## Time Series:
## Start = 1
## End = 80
## Frequency = 1
## [1] 238.49 204.26 207.48 250.01 236.39 286.10 225.99 214.37 229.86 203.69
## [11] 225.96 240.28 244.13 235.82 212.09 204.63 203.58 222.44 235.85 240.90
## [21] 232.62 208.25 212.03 200.45 215.10 242.64 284.72 233.12 215.83 201.86
## [31] 201.34 251.90 273.82 245.99 229.61 208.91 200.66 238.25 219.05 233.44
## [41] 242.68 231.92 250.85 200.26 207.69 214.98 230.87 238.22 229.98 215.29
## [51] 250.35 211.17 261.77 238.16 267.15 231.30 212.65 244.93 203.09 225.51
## [61] 246.27 271.97 233.75 257.89 201.66 238.70 223.33 269.44 239.00 262.22
## [71] 217.28 241.27 212.73 264.38 235.47 247.58 233.36 226.09 200.33 204.08
test_ma.ts <- ts(testing_ma$Total_Sales)
test_ma.ts
## Time Series:
## Start = 1
## End = 20
## Frequency = 1
## [1] 220.97 229.03 270.94 269.00 246.24 206.43 218.01 229.07 237.12 239.42
## [11] 235.60 209.24 214.23 244.88 252.32 231.79 251.04 232.92 222.38 197.45
Eksplorasi data dilakukan pada keseluruhan data, data latih serta data uji menggunakan plot data deret waktu.
plot(data_sales.ts, col="red",main="Plot semua data")
points(data_sales.ts)
plot(train_ma.ts, col="blue",main="Plot data latih")
points(train_ma.ts)
plot(test_ma.ts, col="blue",main="Plot data uji")
points(test_ma.ts)
Eksplorasi data juga dapat dilakukan menggunakan package
ggplot2
dengan terlebih dahulu memanggil library
package ggplot2
.
library(ggplot2)
# ubah kolom Date jadi format Date
training_ma$Date <- as.Date(training_ma$Date, format = "%m/%d/%Y")
testing_ma$Date <- as.Date(testing_ma$Date, format = "%m/%d/%Y")
list(training_data = str(training_ma),
testing_data = str(testing_ma))
## 'data.frame': 80 obs. of 2 variables:
## $ Date : Date, format: "2022-10-28" "2022-10-29" ...
## $ Total_Sales: num 238 204 207 250 236 ...
## 'data.frame': 20 obs. of 2 variables:
## $ Date : Date, format: "2023-01-16" "2023-01-17" ...
## $ Total_Sales: num 221 229 271 269 246 ...
## $training_data
## NULL
##
## $testing_data
## NULL
# plot
ggplot() +
geom_line(data = training_ma, aes(x = Date, y = Total_Sales, col = "Data Latih")) +
geom_line(data = testing_ma, aes(x = Date, y = Total_Sales, col = "Data Uji")) +
labs(x = "Date", y = "Total_Sales", color = "Legend") +
scale_colour_manual(name="Keterangan:", breaks = c("Data Latih", "Data Uji"),
values = c("blue", "red")) +
theme_bw() + theme(legend.position = "bottom",
plot.caption = element_text(hjust=0.5, size=12))
data.sma = SMA(train_ma.ts, n=4)
data.sma
## Time Series:
## Start = 1
## End = 80
## Frequency = 1
## [1] NA NA NA 225.0600 224.5350 244.9950 249.6225 240.7125
## [9] 239.0800 218.4775 218.4700 224.9475 228.5150 236.5475 233.0800 224.1675
## [17] 214.0300 210.6850 216.6250 225.6925 232.9525 229.4050 223.4500 213.3375
## [25] 208.9575 217.5550 235.7275 243.8950 244.0775 233.8825 213.0375 217.7325
## [33] 232.2300 243.2625 250.3300 239.5825 221.2925 219.3575 216.7175 222.8500
## [41] 233.3550 231.7725 239.7225 231.4275 222.6800 218.4450 213.4500 222.9400
## [49] 228.5125 228.5900 233.4600 226.6975 234.6450 240.3625 244.5625 249.5950
## [57] 237.3150 239.0075 222.9925 221.5450 229.9500 236.7100 244.3750 252.4700
## [65] 241.3175 233.0000 230.3950 233.2825 242.6175 248.4975 246.9850 239.9425
## [73] 233.3750 233.9150 238.4625 240.0400 245.1975 235.6250 226.8400 215.9650
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.ramal = c(NA,data.sma)
data.ramal #forecast 1 periode ke depan
## [1] NA NA NA NA 225.0600 224.5350 244.9950 249.6225
## [9] 240.7125 239.0800 218.4775 218.4700 224.9475 228.5150 236.5475 233.0800
## [17] 224.1675 214.0300 210.6850 216.6250 225.6925 232.9525 229.4050 223.4500
## [25] 213.3375 208.9575 217.5550 235.7275 243.8950 244.0775 233.8825 213.0375
## [33] 217.7325 232.2300 243.2625 250.3300 239.5825 221.2925 219.3575 216.7175
## [41] 222.8500 233.3550 231.7725 239.7225 231.4275 222.6800 218.4450 213.4500
## [49] 222.9400 228.5125 228.5900 233.4600 226.6975 234.6450 240.3625 244.5625
## [57] 249.5950 237.3150 239.0075 222.9925 221.5450 229.9500 236.7100 244.3750
## [65] 252.4700 241.3175 233.0000 230.3950 233.2825 242.6175 248.4975 246.9850
## [73] 239.9425 233.3750 233.9150 238.4625 240.0400 245.1975 235.6250 226.8400
## [81] 215.9650
Selanjutnya dilakukan peramalan sebanyak 20 periode sesuai dengan jumlah data uji. Pada metode SMA, seluruh hasil peramalan untuk 20 periode ke depan akan memiliki nilai yang sama dengan hasil ramalan satu periode ke depan.
length(data_sales.ts)
## [1] 100
length(data.ramal)
## [1] 81
data.gab = cbind(
aktual = c(data_sales.ts),
pemulusan = c(data.sma,rep(NA,20)),
ramalan = c(data.ramal,rep(data.ramal[length(data.ramal)],19)))
data.gab #forecast 20 periode ke depan
## aktual pemulusan ramalan
## [1,] 238.49 NA NA
## [2,] 204.26 NA NA
## [3,] 207.48 NA NA
## [4,] 250.01 225.0600 NA
## [5,] 236.39 224.5350 225.0600
## [6,] 286.10 244.9950 224.5350
## [7,] 225.99 249.6225 244.9950
## [8,] 214.37 240.7125 249.6225
## [9,] 229.86 239.0800 240.7125
## [10,] 203.69 218.4775 239.0800
## [11,] 225.96 218.4700 218.4775
## [12,] 240.28 224.9475 218.4700
## [13,] 244.13 228.5150 224.9475
## [14,] 235.82 236.5475 228.5150
## [15,] 212.09 233.0800 236.5475
## [16,] 204.63 224.1675 233.0800
## [17,] 203.58 214.0300 224.1675
## [18,] 222.44 210.6850 214.0300
## [19,] 235.85 216.6250 210.6850
## [20,] 240.90 225.6925 216.6250
## [21,] 232.62 232.9525 225.6925
## [22,] 208.25 229.4050 232.9525
## [23,] 212.03 223.4500 229.4050
## [24,] 200.45 213.3375 223.4500
## [25,] 215.10 208.9575 213.3375
## [26,] 242.64 217.5550 208.9575
## [27,] 284.72 235.7275 217.5550
## [28,] 233.12 243.8950 235.7275
## [29,] 215.83 244.0775 243.8950
## [30,] 201.86 233.8825 244.0775
## [31,] 201.34 213.0375 233.8825
## [32,] 251.90 217.7325 213.0375
## [33,] 273.82 232.2300 217.7325
## [34,] 245.99 243.2625 232.2300
## [35,] 229.61 250.3300 243.2625
## [36,] 208.91 239.5825 250.3300
## [37,] 200.66 221.2925 239.5825
## [38,] 238.25 219.3575 221.2925
## [39,] 219.05 216.7175 219.3575
## [40,] 233.44 222.8500 216.7175
## [41,] 242.68 233.3550 222.8500
## [42,] 231.92 231.7725 233.3550
## [43,] 250.85 239.7225 231.7725
## [44,] 200.26 231.4275 239.7225
## [45,] 207.69 222.6800 231.4275
## [46,] 214.98 218.4450 222.6800
## [47,] 230.87 213.4500 218.4450
## [48,] 238.22 222.9400 213.4500
## [49,] 229.98 228.5125 222.9400
## [50,] 215.29 228.5900 228.5125
## [51,] 250.35 233.4600 228.5900
## [52,] 211.17 226.6975 233.4600
## [53,] 261.77 234.6450 226.6975
## [54,] 238.16 240.3625 234.6450
## [55,] 267.15 244.5625 240.3625
## [56,] 231.30 249.5950 244.5625
## [57,] 212.65 237.3150 249.5950
## [58,] 244.93 239.0075 237.3150
## [59,] 203.09 222.9925 239.0075
## [60,] 225.51 221.5450 222.9925
## [61,] 246.27 229.9500 221.5450
## [62,] 271.97 236.7100 229.9500
## [63,] 233.75 244.3750 236.7100
## [64,] 257.89 252.4700 244.3750
## [65,] 201.66 241.3175 252.4700
## [66,] 238.70 233.0000 241.3175
## [67,] 223.33 230.3950 233.0000
## [68,] 269.44 233.2825 230.3950
## [69,] 239.00 242.6175 233.2825
## [70,] 262.22 248.4975 242.6175
## [71,] 217.28 246.9850 248.4975
## [72,] 241.27 239.9425 246.9850
## [73,] 212.73 233.3750 239.9425
## [74,] 264.38 233.9150 233.3750
## [75,] 235.47 238.4625 233.9150
## [76,] 247.58 240.0400 238.4625
## [77,] 233.36 245.1975 240.0400
## [78,] 226.09 235.6250 245.1975
## [79,] 200.33 226.8400 235.6250
## [80,] 204.08 215.9650 226.8400
## [81,] 220.97 NA 215.9650
## [82,] 229.03 NA 215.9650
## [83,] 270.94 NA 215.9650
## [84,] 269.00 NA 215.9650
## [85,] 246.24 NA 215.9650
## [86,] 206.43 NA 215.9650
## [87,] 218.01 NA 215.9650
## [88,] 229.07 NA 215.9650
## [89,] 237.12 NA 215.9650
## [90,] 239.42 NA 215.9650
## [91,] 235.60 NA 215.9650
## [92,] 209.24 NA 215.9650
## [93,] 214.23 NA 215.9650
## [94,] 244.88 NA 215.9650
## [95,] 252.32 NA 215.9650
## [96,] 231.79 NA 215.9650
## [97,] 251.04 NA 215.9650
## [98,] 232.92 NA 215.9650
## [99,] 222.38 NA 215.9650
## [100,] 197.45 NA 215.9650
Adapun plot data deret waktu dari hasil peramalan yang dilakukan adalah sebagai berikut.
ts.plot(data_sales.ts, xlab="Time Period ", ylab="Sales", main= "SMA N=4 Data Sales")
points(data_sales.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.
\[ SSE = \sum_{t=1}^{n} (y_t - \hat{y}_t)^2 \] \[ MSE = \frac{1}{n} \sum_{t=1}^{n} (y_t - \hat{y}_t)^2 \] \[ MAPE = \frac{1}{n} \sum_{t=1}^{n} \left|\frac{y_t - \hat{y}_t}{y_t}\right| * 100 \]
#Menghitung nilai keakuratan data latih
error_train.sma = train_ma.ts-data.ramal[1:length(train_ma.ts)]
SSE_train.sma = sum(error_train.sma[5:length(train_ma.ts)]^2)
MSE_train.sma = mean(error_train.sma[5:length(train_ma.ts)]^2)
MAPE_train.sma = mean(abs((error_train.sma[5:length(train_ma.ts)]/train_ma.ts[5:length(train_ma.ts)])*100))
akurasi_train.sma <- matrix(c(SSE_train.sma, MSE_train.sma, MAPE_train.sma))
row.names(akurasi_train.sma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_train.sma) <- c("Akurasi m = 4")
akurasi_train.sma
## Akurasi m = 4
## SSE 52490.920125
## MSE 690.670002
## MAPE 9.469714
Dalam hal ini nilai MAPE data latih pada metode pemulusan SMA sekitar 9%, nilai ini dapat dikategorikan sebagai nilai akurasi yang sangat baik. Selanjutnya dilakukan perhitungan nilai MAPE data uji pada metode pemulusan SMA.
View(data.gab)
error_test.sma = test_ma.ts-data.gab[81:100,3]
SSE_test.sma = sum(error_test.sma^2)
MSE_test.sma = mean(error_test.sma^2)
MAPE_test.sma = mean(abs((error_test.sma/test_ma.ts*100)))
akurasi_test.sma <- matrix(c(SSE_test.sma, MSE_test.sma, MAPE_test.sma))
row.names(akurasi_test.sma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_test.sma) <- c("Akurasi m = 4")
akurasi_test.sma
## Akurasi m = 4
## SSE 12955.440100
## MSE 647.772005
## MAPE 8.459052
# Hitung error data uji
error_test.sma = test_ma.ts - data.gab[81:100, 3]
# SSE, MSE, MAPE untuk data uji
SSE_test.sma = sum(error_test.sma^2)
MSE_test.sma = mean(error_test.sma^2)
MAPE_test.sma = mean(abs((error_test.sma/test_ma.ts)*100))
# Matriks akurasi data uji
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 (Data Uji)")
akurasi_test.sma
## Akurasi m = 4 (Data Uji)
## SSE 12955.440100
## MSE 647.772005
## MAPE 8.459052
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.
\[ S_{1,t} = \frac{1}{m} \sum_{i=t-m+1}^{t} X_i \]
\[ S_{2,t} = \frac{1}{m} \sum_{i=t-m+1}^{t} S_{1,i} \]
Forecast \(h\) langkah ke depan dihitung dengan:
\[ F_{2,t,t+h} = A_t + B_t \,(h) \]
dengan komponen level (\(A_t\)) dan tren (\(B_t\)):
\[ A_t = 2S_{1,t} - S_{2,t} \qquad\text{dan}\qquad B_t = \frac{2}{m-1}\,\big(S_{1,t} - S_{2,t}\big) \]
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:24
f = c()
for (i in t) {
f[i] = At[length(At)] + Bt[length(Bt)]*(i)
}
data.gab2 <- cbind(aktual = c(data_sales.ts),
pemulusan1 = c(data.sma,rep(NA,24)),
pemulusan2 = c(dma, rep(NA,24)),
At = c(At, rep(NA,24)),
Bt = c(Bt,rep(NA,24)),
ramalan = c(data.ramal2, f[-1]))
## Warning in cbind(aktual = c(data_sales.ts), pemulusan1 = c(data.sma, rep(NA, :
## number of rows of result is not a multiple of vector length (arg 1)
data.gab2
## aktual pemulusan1 pemulusan2 At Bt ramalan
## [1,] 238.49 NA NA NA NA NA
## [2,] 204.26 NA NA NA NA NA
## [3,] 207.48 NA NA NA NA NA
## [4,] 250.01 225.0600 NA NA NA NA
## [5,] 236.39 224.5350 NA NA NA NA
## [6,] 286.10 244.9950 NA NA NA NA
## [7,] 225.99 249.6225 236.0531 263.1919 9.0462500 NA
## [8,] 214.37 240.7125 239.9663 241.4588 0.4975000 272.238125
## [9,] 229.86 239.0800 243.6025 234.5575 -3.0150000 241.956250
## [10,] 203.69 218.4775 236.9731 199.9819 -12.3304167 231.542500
## [11,] 225.96 218.4700 229.1850 207.7550 -7.1433333 187.651458
## [12,] 240.28 224.9475 225.2437 224.6513 -0.1975000 200.611667
## [13,] 244.13 228.5150 222.6025 234.4275 3.9416667 224.453750
## [14,] 235.82 236.5475 227.1200 245.9750 6.2850000 238.369167
## [15,] 212.09 233.0800 230.7725 235.3875 1.5383333 252.260000
## [16,] 204.63 224.1675 230.5775 217.7575 -4.2733333 236.925833
## [17,] 203.58 214.0300 226.9562 201.1038 -8.6175000 213.484167
## [18,] 222.44 210.6850 220.4906 200.8794 -6.5370833 192.486250
## [19,] 235.85 216.6250 216.3769 216.8731 0.1654167 194.342292
## [20,] 240.90 225.6925 216.7581 234.6269 5.9562500 217.038542
## [21,] 232.62 232.9525 221.4887 244.4162 7.6425000 240.583125
## [22,] 208.25 229.4050 226.1687 232.6412 2.1575000 252.058750
## [23,] 212.03 223.4500 227.8750 219.0250 -2.9500000 234.798750
## [24,] 200.45 213.3375 224.7862 201.8887 -7.6325000 216.075000
## [25,] 215.10 208.9575 218.7875 199.1275 -6.5533333 194.256250
## [26,] 242.64 217.5550 215.8250 219.2850 1.1533333 192.574167
## [27,] 284.72 235.7275 218.8944 252.5606 11.2220833 220.438333
## [28,] 233.12 243.8950 226.5337 261.2562 11.5741667 263.782708
## [29,] 215.83 244.0775 235.3137 252.8412 5.8425000 272.830417
## [30,] 201.86 233.8825 239.3956 228.3694 -3.6754167 258.683750
## [31,] 201.34 213.0375 233.7231 192.3519 -13.7904167 224.693958
## [32,] 251.90 217.7325 227.1825 208.2825 -6.3000000 178.561458
## [33,] 273.82 232.2300 224.2206 240.2394 5.3395833 201.982500
## [34,] 245.99 243.2625 226.5656 259.9594 11.1312500 245.578958
## [35,] 229.61 250.3300 235.8887 264.7713 9.6275000 271.090625
## [36,] 208.91 239.5825 241.3512 237.8137 -1.1791667 274.398750
## [37,] 200.66 221.2925 238.6169 203.9681 -11.5495833 236.634583
## [38,] 238.25 219.3575 232.6406 206.0744 -8.8554167 192.418542
## [39,] 219.05 216.7175 224.2375 209.1975 -5.0133333 197.218958
## [40,] 233.44 222.8500 220.0544 225.6456 1.8637500 204.184167
## [41,] 242.68 233.3550 223.0700 243.6400 6.8566667 227.509375
## [42,] 231.92 231.7725 226.1737 237.3712 3.7325000 250.496667
## [43,] 250.85 239.7225 231.9250 247.5200 5.1983333 241.103750
## [44,] 200.26 231.4275 234.0694 228.7856 -1.7612500 252.718333
## [45,] 207.69 222.6800 231.4006 213.9594 -5.8137500 227.024375
## [46,] 214.98 218.4450 228.0687 208.8212 -6.4158333 208.145625
## [47,] 230.87 213.4500 221.5006 205.3994 -5.3670833 202.405417
## [48,] 238.22 222.9400 219.3787 226.5012 2.3741667 200.032292
## [49,] 229.98 228.5125 220.8369 236.1881 5.1170833 228.875417
## [50,] 215.29 228.5900 223.3731 233.8069 3.4779167 241.305208
## [51,] 250.35 233.4600 228.3756 238.5444 3.3895833 237.284792
## [52,] 211.17 226.6975 229.3150 224.0800 -1.7450000 241.933958
## [53,] 261.77 234.6450 230.8481 238.4419 2.5312500 222.335000
## [54,] 238.16 240.3625 233.7912 246.9337 4.3808333 240.973125
## [55,] 267.15 244.5625 236.5669 252.5581 5.3304167 251.314583
## [56,] 231.30 249.5950 242.2912 256.8987 4.8691667 257.888542
## [57,] 212.65 237.3150 242.9587 231.6712 -3.7625000 261.767917
## [58,] 244.93 239.0075 242.6200 235.3950 -2.4083333 227.908750
## [59,] 203.09 222.9925 237.2275 208.7575 -9.4900000 232.986667
## [60,] 225.51 221.5450 230.2150 212.8750 -5.7800000 199.267500
## [61,] 246.27 229.9500 228.3737 231.5262 1.0508333 207.095000
## [62,] 271.97 236.7100 227.7994 245.6206 5.9404167 232.577083
## [63,] 233.75 244.3750 233.1450 255.6050 7.4866667 251.561042
## [64,] 257.89 252.4700 240.8762 264.0637 7.7291667 263.091667
## [65,] 201.66 241.3175 243.7181 238.9169 -1.6004167 271.792917
## [66,] 238.70 233.0000 242.7906 223.2094 -6.5270833 237.316458
## [67,] 223.33 230.3950 239.2956 221.4944 -5.9337500 216.682292
## [68,] 269.44 233.2825 234.4987 232.0663 -0.8108333 215.560625
## [69,] 239.00 242.6175 234.8237 250.4113 5.1958333 231.255417
## [70,] 262.22 248.4975 238.6981 258.2969 6.5329167 255.607083
## [71,] 217.28 246.9850 242.8456 251.1244 2.7595833 264.829792
## [72,] 241.27 239.9425 244.5106 235.3744 -3.0454167 253.883958
## [73,] 212.73 233.3750 242.2000 224.5500 -5.8833333 232.328958
## [74,] 264.38 233.9150 238.5544 229.2756 -3.0929167 218.666667
## [75,] 235.47 238.4625 236.4237 240.5013 1.3591667 226.182708
## [76,] 247.58 240.0400 236.4481 243.6319 2.3945833 241.860417
## [77,] 233.36 245.1975 239.4037 250.9912 3.8625000 246.026458
## [78,] 226.09 235.6250 239.8312 231.4187 -2.8041667 254.853750
## [79,] 200.33 226.8400 236.9256 216.7544 -6.7237500 228.614583
## [80,] 204.08 215.9650 230.9069 201.0231 -9.9612500 210.030625
## [81,] 220.97 NA NA NA NA 191.061875
## [82,] 229.03 NA NA NA NA 181.100625
## [83,] 270.94 NA NA NA NA 171.139375
## [84,] 269.00 NA NA NA NA 161.178125
## [85,] 246.24 NA NA NA NA 151.216875
## [86,] 206.43 NA NA NA NA 141.255625
## [87,] 218.01 NA NA NA NA 131.294375
## [88,] 229.07 NA NA NA NA 121.333125
## [89,] 237.12 NA NA NA NA 111.371875
## [90,] 239.42 NA NA NA NA 101.410625
## [91,] 235.60 NA NA NA NA 91.449375
## [92,] 209.24 NA NA NA NA 81.488125
## [93,] 214.23 NA NA NA NA 71.526875
## [94,] 244.88 NA NA NA NA 61.565625
## [95,] 252.32 NA NA NA NA 51.604375
## [96,] 231.79 NA NA NA NA 41.643125
## [97,] 251.04 NA NA NA NA 31.681875
## [98,] 232.92 NA NA NA NA 21.720625
## [99,] 222.38 NA NA NA NA 11.759375
## [100,] 197.45 NA NA NA NA 1.798125
## [101,] 238.49 NA NA NA NA -8.163125
## [102,] 204.26 NA NA NA NA -18.124375
## [103,] 207.48 NA NA NA NA -28.085625
## [104,] 250.01 NA NA NA NA -38.046875
Hasil pemulusan menggunakan metode DMA divisualisasikan sebagai berikut
ts.plot(data_sales.ts, xlab="Time Period ", ylab="Sales", main= "DMA N=4 Data Sales")
points(data_sales.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_ma.ts-data.ramal2[1:length(train_ma.ts)]
SSE_train.dma = sum(error_train.dma[8:length(train_ma.ts)]^2)
MSE_train.dma = mean(error_train.dma[8:length(train_ma.ts)]^2)
MAPE_train.dma = mean(abs((error_train.dma[8:length(train_ma.ts)]/train_ma.ts[8:length(train_ma.ts)])*100))
akurasi_train.dma <- matrix(c(SSE_train.dma, MSE_train.dma, MAPE_train.dma))
row.names(akurasi_train.dma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_train.dma) <- c("Akurasi m = 4")
akurasi_train.dma
## Akurasi m = 4
## SSE 85657.82897
## MSE 1173.39492
## MAPE 12.54363
Perhitungan akurasi pada data latih menggunakan nilai MAPE menghasilkan nilai MAPE 12% yang kurang dari 20% sehingga dikategorikan cukup baik. Selanjutnya, perhitungan nilai akurasi dilakukan pada data uji.
#Menghitung nilai keakuratan data uji
error_test.dma = test_ma.ts-data.gab2[81:100,6]
SSE_test.dma = sum(error_test.dma^2)
MSE_test.dma = mean(error_test.dma^2)
MAPE_test.dma = mean(abs((error_test.dma/test_ma.ts*100)))
akurasi_test.dma <- matrix(c(SSE_test.dma, MSE_test.dma, MAPE_test.dma))
row.names(akurasi_test.dma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_test.dma) <- c("Akurasi m = 4")
akurasi_test.dma
## Akurasi m = 4
## SSE 434915.29751
## MSE 21745.76488
## MAPE 58.80864
Perhitungan akurasi menggunakan data latih menghasilkan nilai MAPE yang kurang dari 58% sehingga nilai akurasi ini dapat dikategorikan sebagai yang buruk
Pada data latih, metode SMA lebih baik dibandingkan dengan metode DMA, sedangkan pada data uji, metode DMA lebih baik dibandingkan SMA.
Metode Exponential Smoothing merupakan metode pemulusan deret waktu dengan memberikan bobot yang menurun secara eksponensial pada data historis, di mana nilai terbaru mendapat bobot lebih besar dibanding nilai yang lebih lama. Metode ini menggunakan satu atau lebih parameter pemulusan yang secara langsung menentukan besar kecilnya bobot setiap pengamatan. Pemilihan parameter yang tepat akan sangat berpengaruh terhadap hasil ramalan. Secara umum, Exponential Smoothing dibedakan menjadi dua jenis, yaitu model tunggal (single) yang digunakan untuk data tanpa tren maupun musiman, serta model ganda (double) yang mampu menangkap adanya tren pada data.
Pembagian data latih dan data uji dilakukan dengan perbandingan 80% data latih dan 20% data uji.
# jumlah baris data
n = nrow(data_sales)
# hitung batas 80%
n_train = floor(0.8 * n)
# bagi data
training = data_sales[1:n_train, ]
testing = data_sales[(n_train+1):n, ]
# ubah ke time series
train.ts = ts(training$Total_Sales)
test.ts = ts(testing$Total_Sales)
Eksplorasi dilakukan dengan membuat plot data deret waktu untuk keseluruhan data, data latih, dan data uji.
#eksplorasi data
plot(data_sales.ts, col="black",main="Plot semua data")
points(data_sales.ts)
plot(train.ts, col="red",main="Plot data latih")
points(train.ts)
plot(test.ts, col="blue",main="Plot data uji")
points(test.ts)
#Eksplorasi dengan GGPLOT
library(ggplot2)
ggplot() +
geom_line(data = training, aes(x = Date, y = Total_Sales, col = "Data Latih")) +
geom_line(data = testing, aes(x = Date, y = Total_Sales, col = "Data Uji")) +
labs(x = "Periode Waktu", y = "Membaca", 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))
## `geom_line()`: Each group consists of only one observation.
## ā¹ Do you need to adjust the group aesthetic?
## `geom_line()`: Each group consists of only one observation.
## ā¹ Do you need to adjust the group aesthetic?
Single Exponential Smoothing (SES) adalah metode peramalan deret waktu yang dikembangkan untuk mengatasi kelemahan Moving Average. Jika pada Moving Average setiap data periode sebelumnya dianggap memiliki bobot yang sama, maka SES memberikan bobot yang semakin mengecil secara eksponensial terhadap data lama, sehingga data terbaru diberi bobot lebih besar.
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)
ses.1 = ses(train.ts, h = 20, alpha = 0.2)
plot(ses.1)
ses.1
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 81 224.3741 195.0974 253.6508 179.5993 269.1490
## 82 224.3741 194.5176 254.2306 178.7126 270.0357
## 83 224.3741 193.9489 254.7994 177.8427 270.9055
## 84 224.3741 193.3906 255.3577 176.9889 271.7594
## 85 224.3741 192.8422 255.9061 176.1501 272.5981
## 86 224.3741 192.3031 256.4452 175.3257 273.4225
## 87 224.3741 191.7730 256.9753 174.5150 274.2333
## 88 224.3741 191.2513 257.4969 173.7172 275.0311
## 89 224.3741 190.7378 258.0105 172.9317 275.8165
## 90 224.3741 190.2319 258.5163 172.1581 276.5901
## 91 224.3741 189.7335 259.0148 171.3958 277.3525
## 92 224.3741 189.2421 259.5062 170.6443 278.1040
## 93 224.3741 188.7575 259.9908 169.9032 278.8451
## 94 224.3741 188.2794 260.4689 169.1720 279.5763
## 95 224.3741 187.8075 260.9407 168.4504 280.2979
## 96 224.3741 187.3417 261.4066 167.7379 281.0103
## 97 224.3741 186.8817 261.8666 167.0343 281.7139
## 98 224.3741 186.4272 262.3211 166.3393 282.4090
## 99 224.3741 185.9781 262.7702 165.6525 283.0958
## 100 224.3741 185.5342 263.2141 164.9736 283.7747
ses.2 = ses(train.ts, h = 20, alpha = 0.7)
plot(ses.2)
ses.2
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 81 205.5669 173.0759 238.0578 155.87624 255.2575
## 82 205.5669 165.9066 245.2271 144.91172 266.2220
## 83 205.5669 159.8480 251.2857 135.64596 275.4878
## 84 205.5669 154.5033 256.6304 127.47192 283.6618
## 85 205.5669 149.6673 261.4664 120.07588 291.0578
## 86 205.5669 145.2176 265.9161 113.27062 297.8631
## 87 205.5669 141.0742 270.0596 106.93379 304.1999
## 88 205.5669 137.1813 273.9524 100.98020 310.1535
## 89 205.5669 133.4984 277.6353 95.34773 315.7860
## 90 205.5669 129.9948 281.1389 89.98942 321.1443
## 91 205.5669 126.6466 284.4871 84.86876 326.2650
## 92 205.5669 123.4348 287.6989 79.95667 331.1770
## 93 205.5669 120.3439 290.7898 75.22958 335.9041
## 94 205.5669 117.3613 293.7725 70.66803 340.4657
## 95 205.5669 114.4762 296.6575 66.25576 344.8780
## 96 205.5669 111.6798 299.4539 61.97902 349.1547
## 97 205.5669 108.9643 302.1694 57.82602 353.3077
## 98 205.5669 106.3231 304.8106 53.78661 357.3471
## 99 205.5669 103.7504 307.3834 49.85196 361.2818
## 100 205.5669 101.2411 309.8927 46.01430 365.1194
Pada fungsi ses()
, terdapat beberapa argumen yang umum
digunakan, yaitu
y
: nilai data deret waktu
alpha
: parameter pemulusan utama (0ā1), mengatur
bobot data terbaru vs data lama.
beta
: parameter pemulusan tren.
gamma
: parameter pemulusan musiman.
h
: jumlah periode ke depan yang ingin diramalkan
(forecast horizon).
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
10 periode.
Untuk mendapatkan gambar hasil pemulusan pada data latih dengan
fungsi ses()
, perlu digunakan fungsi
autoplot()
dan autolayer()
dari library
packages ggplot2
.
autoplot(ses.1) +
autolayer(fitted(ses.1), series="Fitted") +
ylab("Membaca") + xlab("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(train.ts, gamma = FALSE, beta = FALSE, alpha = 0.2)
plot(ses1)
#ramalan
ramalan1 = forecast(ses1, h=20)
ramalan1
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 81 224.3741 195.0335 253.7148 179.5015 269.2468
## 82 224.3741 194.4524 254.2958 178.6128 270.1354
## 83 224.3741 193.8824 254.8658 177.7411 271.0072
## 84 224.3741 193.3229 255.4254 176.8854 271.8629
## 85 224.3741 192.7733 255.9750 176.0448 272.7035
## 86 224.3741 192.2331 256.5152 175.2186 273.5297
## 87 224.3741 191.7018 257.0465 174.4061 274.3422
## 88 224.3741 191.1790 257.5693 173.6065 275.1417
## 89 224.3741 190.6643 258.0840 172.8194 275.9289
## 90 224.3741 190.1573 258.5909 172.0441 276.7042
## 91 224.3741 189.6578 259.0905 171.2801 277.4682
## 92 224.3741 189.1654 259.5829 170.5270 278.2213
## 93 224.3741 188.6797 260.0686 169.7842 278.9641
## 94 224.3741 188.2006 260.5477 169.0514 279.6969
## 95 224.3741 187.7277 261.0206 168.3282 280.4201
## 96 224.3741 187.2608 261.4874 167.6142 281.1340
## 97 224.3741 186.7998 261.9485 166.9091 281.8392
## 98 224.3741 186.3443 262.4040 166.2125 282.5357
## 99 224.3741 185.8942 262.8540 165.5242 283.2241
## 100 224.3741 185.4494 263.2989 164.8438 283.9044
ses2 = HoltWinters(train.ts, gamma = FALSE, beta = FALSE, alpha = 0.7)
plot(ses2)
#ramalan
ramalan2 = forecast(ses2, h=20)
ramalan2
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 81 205.5669 173.0570 238.0767 155.84731 255.2864
## 82 205.5669 165.8835 245.2502 144.87642 266.2573
## 83 205.5669 159.8214 251.3123 135.60526 275.5285
## 84 205.5669 154.4736 256.6601 127.42646 283.7073
## 85 205.5669 149.6348 261.4989 120.02612 291.1076
## 86 205.5669 145.1825 265.9512 113.21690 297.9168
## 87 205.5669 141.0366 270.0971 106.87638 304.2573
## 88 205.5669 137.1415 273.9922 100.91932 310.2144
## 89 205.5669 133.4565 277.6772 95.28357 315.8501
## 90 205.5669 129.9508 281.1829 89.92215 321.2116
## 91 205.5669 126.6007 284.5330 84.79850 326.3352
## 92 205.5669 123.3870 287.7467 79.88356 331.2502
## 93 205.5669 120.2943 290.8394 75.15372 335.9800
## 94 205.5669 117.3099 293.8238 70.58951 340.5442
## 95 205.5669 114.4232 296.7105 66.17468 344.9590
## 96 205.5669 111.6252 299.5085 61.89544 349.2383
## 97 205.5669 108.9081 302.2256 57.74002 353.3937
## 98 205.5669 106.2653 304.8684 53.69827 357.4354
## 99 205.5669 103.6911 307.4426 49.76132 361.3724
## 100 205.5669 101.1803 309.9534 45.92143 365.2123
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
ses.opt <- ses(train.ts, h = 20, alpha = NULL)
plot(ses.opt)
ses.opt
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 81 230.5971 203.0219 258.1722 188.4245 272.7696
## 82 230.5971 203.0219 258.1722 188.4245 272.7696
## 83 230.5971 203.0219 258.1722 188.4245 272.7696
## 84 230.5971 203.0219 258.1722 188.4245 272.7696
## 85 230.5971 203.0219 258.1722 188.4245 272.7696
## 86 230.5971 203.0219 258.1722 188.4245 272.7696
## 87 230.5971 203.0219 258.1722 188.4245 272.7696
## 88 230.5971 203.0219 258.1722 188.4245 272.7696
## 89 230.5971 203.0219 258.1722 188.4245 272.7696
## 90 230.5971 203.0219 258.1722 188.4245 272.7696
## 91 230.5971 203.0219 258.1722 188.4245 272.7696
## 92 230.5971 203.0219 258.1722 188.4245 272.7696
## 93 230.5971 203.0219 258.1722 188.4245 272.7696
## 94 230.5971 203.0219 258.1722 188.4245 272.7696
## 95 230.5971 203.0219 258.1722 188.4245 272.7696
## 96 230.5971 203.0219 258.1722 188.4245 272.7696
## 97 230.5971 203.0219 258.1722 188.4245 272.7696
## 98 230.5971 203.0219 258.1722 188.4245 272.7696
## 99 230.5971 203.0219 258.1722 188.4245 272.7696
## 100 230.5971 203.0219 258.1722 188.4245 272.7696
#Lamda Optimum Holt Winter
HWopt<- HoltWinters(train.ts, gamma = FALSE, beta = FALSE,alpha = NULL)
HWopt
## Holt-Winters exponential smoothing without trend and without seasonal component.
##
## Call:
## HoltWinters(x = train.ts, alpha = NULL, beta = FALSE, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.03919422
## beta : FALSE
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 232.4459
plot(HWopt)
#ramalan
ramalanopt<- forecast(HWopt, h=20)
ramalanopt
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 81 232.4459 204.1865 260.7052 189.2269 275.6648
## 82 232.4459 204.1648 260.7269 189.1937 275.6980
## 83 232.4459 204.1431 260.7486 189.1606 275.7312
## 84 232.4459 204.1215 260.7703 189.1274 275.7643
## 85 232.4459 204.0998 260.7919 189.0943 275.7974
## 86 232.4459 204.0782 260.8136 189.0612 275.8305
## 87 232.4459 204.0566 260.8352 189.0282 275.8636
## 88 232.4459 204.0350 260.8568 188.9952 275.8966
## 89 232.4459 204.0134 260.8784 188.9621 275.9296
## 90 232.4459 203.9918 260.8999 188.9292 275.9626
## 91 232.4459 203.9703 260.9215 188.8962 275.9955
## 92 232.4459 203.9487 260.9430 188.8633 276.0285
## 93 232.4459 203.9272 260.9645 188.8304 276.0614
## 94 232.4459 203.9057 260.9860 188.7975 276.0943
## 95 232.4459 203.8842 261.0075 188.7646 276.1271
## 96 232.4459 203.8628 261.0290 188.7318 276.1599
## 97 232.4459 203.8413 261.0504 188.6990 276.1928
## 98 232.4459 203.8199 261.0719 188.6662 276.2255
## 99 232.4459 203.7985 261.0933 188.6335 276.2583
## 100 232.4459 203.7771 261.1147 188.6007 276.2910
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
# SES dengan alpha = 0.2
SSE1 = ses1$SSE
MSE1 = ses1$SSE/length(train.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 40947.85671
## MSE 511.84821
## RMSE 22.62406
# SES dengan alpha = 0.7
SSE2 = ses2$SSE
MSE2 = ses2$SSE/length(train.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 50222.10517
## MSE 627.77631
## RMSE 25.05546
Berdasarkan nilai SSE, MSE, RMSE, dan MAPE 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. Berdasarkan nilai MAPE-nya, hasil ini dapat dikategorikan sebagai peramalan sangat baik.
Akurasi data uji dapat dihitung dengan cara yang hampir sama dengan perhitungan akurasi data latih.
# jumlah observasi uji
n_test <- nrow(testing)
# error (ramalan - aktual), samakan panjang dan tipe numeric
e1 <- as.numeric(ramalan1$mean)[1:n_test] - as.numeric(testing$Total_Sales)
e2 <- as.numeric(ramalan2$mean)[1:n_test] - as.numeric(testing$Total_Sales)
eopt <- as.numeric(ramalanopt$mean)[1:n_test] - as.numeric(testing$Total_Sales)
# SSE / MSE / RMSE untuk masing-masing model (abaikan NA)
SSEtesting1 <- sum(e1^2, na.rm = TRUE)
MSEtesting1 <- mean(e1^2, na.rm = TRUE)
RMSEtesting1 <- sqrt(MSEtesting1)
SSEtesting2 <- sum(e2^2, na.rm = TRUE)
MSEtesting2 <- mean(e2^2, na.rm = TRUE)
RMSEtesting2 <- sqrt(MSEtesting2)
SSEtestingopt <- sum(eopt^2, na.rm = TRUE)
MSEtestingopt <- mean(eopt^2, na.rm = TRUE)
RMSEtestingopt <- sqrt(MSEtestingopt)
# Tabel ringkas
akurasitesting_SSE <- matrix(c(SSEtesting1, SSEtesting2, SSEtestingopt),
nrow = 3,
dimnames = list(c("SSE1","SSE2","SSEopt"), "Nilai"))
akurasitesting_MSE <- matrix(c(MSEtesting1, MSEtesting2, MSEtestingopt),
nrow = 3,
dimnames = list(c("MSE1","MSE2","MSEopt"), "Nilai"))
akurasitesting_RMSE <- matrix(c(RMSEtesting1, RMSEtesting2, RMSEtestingopt),
nrow = 3,
dimnames = list(c("RMSE1","RMSE2","RMSEopt"), "Nilai"))
akurasitesting_SSE
## Nilai
## SSE1 8672.019
## SSE2 22163.232
## SSEopt 7221.043
akurasitesting_MSE
## Nilai
## MSE1 433.6009
## MSE2 1108.1616
## MSEopt 361.0522
akurasitesting_RMSE
## Nilai
## RMSE1 20.82309
## RMSE2 33.28906
## RMSEopt 19.00137
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.
# Potong data testing agar panjangnya sama dengan ramalan
actual1 <- testing$Total_Sales[1:length(ramalan1$mean)]
actual2 <- testing$Total_Sales[1:length(ramalan2$mean)]
actualopt <- testing$Total_Sales[1:length(ramalanopt$mean)]
# Hitung akurasi dengan panjang yang cocok
accuracy(ramalan1, actual1)
## ME RMSE MAE MPE MAPE MASE
## Training set -0.8934093 22.76680 18.73105 -1.244116 8.151149 0.8021429
## Test set 8.5298676 20.82309 16.72076 3.022518 6.987823 0.7160537
## ACF1
## Training set 0.09485997
## Test set NA
accuracy(ramalan2, actual2)
## ME RMSE MAE MPE MAPE MASE
## Training set -0.5953552 25.21354 21.55706 -1.020979 9.304053 0.9231643
## Test set 27.3371420 33.28906 28.14883 11.151272 11.562356 1.2054519
## ACF1
## Training set -0.1920365
## Test set NA
accuracy(ramalanopt, actualopt)
## ME RMSE MAE MPE MAPE MASE
## Training set -1.9520209 21.99767 17.83761 -1.7066992 7.807157 0.7638819
## Test set 0.4581264 19.00137 15.04400 -0.4661955 6.484786 0.6442477
## ACF1
## Training set 0.162544
## Test set 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
des.1<- HoltWinters(train.ts, gamma = FALSE, beta = 0.2, alpha = 0.2)
plot(des.1)
#ramalan
ramalandes1<- forecast(des.1, h=20)
ramalandes1
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 81 219.6232 171.16093 268.0854 145.5065782 293.7397
## 82 216.6273 166.78890 266.4657 140.4060388 292.8486
## 83 213.6314 161.97879 265.2841 134.6355308 292.6273
## 84 210.6356 156.70514 264.5660 128.1560967 293.1150
## 85 207.6397 150.95754 264.3219 120.9518105 294.3276
## 86 204.6438 144.73856 264.5491 113.0266257 296.2611
## 87 201.6480 138.06080 265.2351 104.3997840 298.8962
## 88 198.6521 130.94359 266.3606 95.1008685 302.2033
## 89 195.6562 123.41013 267.9024 85.1653436 306.1471
## 90 192.6604 115.48513 269.8356 74.6310270 310.6897
## 91 189.6645 107.19325 272.1358 63.5355942 315.7934
## 92 186.6686 98.55797 274.7793 51.9149960 321.4223
## 93 183.6728 89.60112 277.7445 39.8025851 327.5430
## 94 180.6769 80.34255 281.0113 27.2287379 334.1251
## 95 177.6811 70.80014 284.5620 14.2207962 341.1413
## 96 174.6852 60.98987 288.3805 0.8031962 348.5672
## 97 171.6893 50.92596 292.4527 -13.0023037 356.3810
## 98 168.6935 40.62107 296.7658 -27.1763552 364.5633
## 99 165.6976 30.08646 301.3087 -41.7017459 373.0969
## 100 162.7017 19.33214 306.0713 -56.5631382 381.9666
#Lamda=0.6 dan gamma=0.3
des.2<- HoltWinters(train.ts, gamma = FALSE, beta = 0.3, alpha = 0.6)
plot(des.2)
#ramalan
ramalandes2<- forecast(des.2, h=20)
ramalandes2
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 81 196.21640 157.988976 234.4438 137.75260 254.6802
## 82 188.50989 140.028839 236.9909 114.36452 262.6553
## 83 180.80339 119.998948 241.6078 87.81102 273.7958
## 84 173.09688 98.288246 247.9055 58.68695 287.5068
## 85 165.39037 75.154221 255.6265 27.38609 303.3947
## 86 157.68387 50.770028 264.5977 -5.82674 321.1945
## 87 149.97736 25.257502 274.6972 -40.76520 340.7199
## 88 142.27086 -1.293349 285.8351 -77.29165 361.8334
## 89 134.56435 -28.813055 297.9418 -115.29983 384.4285
## 90 126.85784 -57.245997 310.9617 -154.70468 408.4204
## 91 119.15134 -86.546302 324.8490 -195.43605 433.7387
## 92 111.44483 -116.675213 339.5649 -237.43467 460.3243
## 93 103.73833 -147.599350 355.0760 -280.64948 488.1261
## 94 96.03182 -179.289502 371.3531 -325.03581 517.0994
## 95 88.32531 -211.719780 388.3704 -370.55406 547.2047
## 96 80.61881 -244.866992 406.1046 -417.16877 578.4064
## 97 72.91230 -278.710177 424.5348 -464.84787 610.6725
## 98 65.20579 -313.230247 443.6418 -513.56219 643.9738
## 99 57.49929 -348.409706 463.4083 -563.28495 678.2835
## 100 49.79278 -384.232429 483.8180 -613.99150 713.5771
Selanjutnya jika ingin membandingkan plot data latih dan data uji adalah sebagai berikut.
plot(data_sales.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.
#Lamda dan gamma optimum
des.opt<- HoltWinters(train.ts, gamma = FALSE)
des.opt
## Holt-Winters exponential smoothing with trend and without seasonal component.
##
## Call:
## HoltWinters(x = train.ts, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.7056246
## beta : 0.1546692
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 204.000734
## b -4.539343
plot(des.opt)
#ramalan
ramalandesopt<- forecast(des.opt, h=20)
ramalandesopt
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 81 199.4614 162.312247 236.6105 142.646677 256.2761
## 82 194.9220 147.003415 242.8407 121.636823 268.2073
## 83 190.3827 131.440319 249.3251 100.238105 280.5273
## 84 185.8434 115.508707 256.1780 78.275790 293.4109
## 85 181.3040 99.161776 263.4463 55.678299 306.9297
## 86 176.7647 82.381233 271.1481 32.417656 321.1117
## 87 172.2253 65.162273 279.2884 8.486513 335.9642
## 88 167.6860 47.506884 287.8651 -16.112092 351.4841
## 89 163.1466 29.420557 296.8727 -41.369758 367.6631
## 90 158.6073 10.910576 306.3040 -67.275348 384.4900
## 91 154.0680 -8.014928 316.1508 -93.816427 401.9523
## 92 149.5286 -27.347503 326.4047 -120.980065 420.0373
## 93 144.9893 -47.078674 337.0572 -148.753304 438.7319
## 94 140.4499 -67.200119 348.1000 -177.123416 458.0233
## 95 135.9106 -87.703764 359.5249 -206.078052 477.8992
## 96 131.3712 -108.581830 371.3243 -235.605315 498.3478
## 97 126.8319 -129.826857 383.4907 -265.693797 519.3576
## 98 122.2926 -151.431711 396.0168 -296.332587 540.9177
## 99 117.7532 -173.389579 408.8960 -327.511265 563.0177
## 100 113.2139 -195.693957 422.1217 -359.219885 585.6476
Selanjutnya akan dilakukan perhitungan akurasi pada data latih maupun data uji dengan ukuran akurasi SSE, MSE dan MAPE.
#Akurasi Data Training
ssedes.train1<-des.1$SSE
msedes.train1<-ssedes.train1/length(train.ts)
sisaandes1<-ramalandes1$residuals
head(sisaandes1)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA NA 37.45000 105.22200 99.08072 153.53447
mapedes.train1 <- sum(abs(sisaandes1[3:length(train.ts)]/train.ts[3:length(train.ts)])
*100)/length(train.ts)
akurasides.1 <- matrix(c(ssedes.train1,msedes.train1,mapedes.train1))
row.names(akurasides.1)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.1) <- c("Akurasi lamda=0.2 dan gamma=0.2")
akurasides.1
## Akurasi lamda=0.2 dan gamma=0.2
## SSE 117926.71682
## MSE 1474.08396
## MAPE 11.84989
ssedes.train2<-des.2$SSE
msedes.train2<-ssedes.train2/length(train.ts)
sisaandes2<-ramalandes2$residuals
head(sisaandes2)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] NA NA 37.45000 84.99900 32.56878 69.06431
mapedes.train2 <- sum(abs(sisaandes2[3:length(train.ts)]/train.ts[3:length(train.ts)])
*100)/length(train.ts)
akurasides.2 <- matrix(c(ssedes.train2,msedes.train2,mapedes.train2))
row.names(akurasides.2)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.2) <- c("Akurasi lamda=0.6 dan gamma=0.3")
akurasides.2
## Akurasi lamda=0.6 dan gamma=0.3
## SSE 68790.6779
## MSE 859.8835
## MAPE 10.4216
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
selisihdes1<-ramalandes1$mean-testing$Total_Sales
selisihdes1
## Time Series:
## Start = 81
## End = 100
## Frequency = 1
## [1] -1.346837 -12.402702 -57.308567 -58.364431 -38.600296 -1.786161
## [7] -16.362026 -30.417891 -41.463756 -46.759621 -45.935485 -22.571350
## [13] -30.557215 -64.203080 -74.638945 -57.104810 -79.350675 -64.226539
## [19] -56.682404 -34.748269
SSEtestingdes1<-sum(selisihdes1^2)
MSEtestingdes1<-SSEtestingdes1/length(testing$Total_Sales)
MAPEtestingdes1<-sum(abs(selisihdes1/testing$Total_Sales)*100)/length(testing$Total_Sales)
selisihdes2<-ramalandes2$mean-testing$Total_Sales
selisihdes2
## Time Series:
## Start = 81
## End = 100
## Frequency = 1
## [1] -24.75360 -40.52011 -90.13661 -95.90312 -80.84963 -48.74613
## [7] -68.03264 -86.79914 -102.55565 -112.56216 -116.44866 -97.79517
## [13] -110.49167 -148.84818 -163.99469 -151.17119 -178.12770 -167.71421
## [19] -164.88071 -147.65722
SSEtestingdes2<-sum(selisihdes2^2)
MSEtestingdes2<-SSEtestingdes2/length(testing$Total_Sales)
MAPEtestingdes2<-sum(abs(selisihdes2/testing$Total_Sales)*100)/length(testing$Total_Sales)
selisihdesopt<-ramalandesopt$mean-testing$Total_Sales
selisihdesopt
## Time Series:
## Start = 81
## End = 100
## Frequency = 1
## [1] -21.50861 -34.10795 -80.55729 -83.15664 -64.93598 -29.66532
## [7] -45.78467 -61.38401 -73.97335 -80.81270 -81.53204 -59.71138
## [13] -69.24073 -104.43007 -116.40941 -100.41876 -124.20810 -110.62744
## [19] -104.62678 -84.23613
SSEtestingdesopt<-sum(selisihdesopt^2)
MSEtestingdesopt<-SSEtestingdesopt/length(testing$Total_Sales)
MAPEtestingdesopt<-sum(abs(selisihdesopt/testing$Total_Sales)*100)/length(testing$Total_Sales)
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 44787.32202 279921.11413 133250.66055
## MSE 2239.36610 13996.05571 6662.53303
## MAPE 17.52351 47.21252 32.65071
MSEfull <-
matrix(c(MSEtesting1,MSEtesting2,MSEtestingopt,MSEtestingdes1,MSEtestingdes2,
MSEtestingdesopt),nrow=3,ncol=2)
row.names(MSEfull)<- c("ske 1", "ske 2", "ske opt")
colnames(MSEfull) <- c("ses","des")
MSEfull
## ses des
## ske 1 433.6009 2239.366
## ske 2 1108.1616 13996.056
## ske opt 361.0522 6662.533
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.
Pertama impor kembali data baru untuk latihan data musiman.
#Import data
library(rio)
data3 <- import("https://raw.githubusercontent.com/rizkynurhambali/praktikum-sta1341/main/Pertemuan%201/Electric_Production.csv")
data3.ts <- ts(data3$Yt)
Selanjutnya melakukan pembagian data dan mengubahnya menjadi data deret waktu.
#membagi data menjadi training dan testing
training<-data3[1:192,2]
testing<-data3[193:241,2]
training.ts<-ts(training, frequency = 13)
testing.ts<-ts(testing, frequency = 13)
Kemudian akan dilakukan eskplorasi dengan plot data deret waktu sebagai berikut.
#Membuat plot time series
plot(data3.ts, col="red",main="Plot semua data")
points(data3.ts)
plot(training.ts, col="blue",main="Plot data latih")
points(training.ts)
plot(testing.ts, col="green",main="Plot data uji")
points(testing.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. Perbedaan persamaan dan contoh datanya adalah sebagai berikut.
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
winter1 <- HoltWinters(training.ts,alpha=0.2,beta=0.1,gamma=0.1,seasonal = "additive")
winter1$fitted
## Time Series:
## Start = c(2, 1)
## End = c(15, 10)
## Frequency = 13
## xhat level trend season
## 2.000000 88.54720 87.09424 0.182710904 1.2702538462
## 2.076923 89.35006 87.80409 0.235424883 1.3105461538
## 2.153846 80.20116 88.31712 0.263185721 -8.3791461538
## 2.230769 79.24275 88.64359 0.269514524 -9.6703615385
## 2.307692 86.99289 88.94230 0.272433583 -2.2218384615
## 2.384615 96.28834 89.38477 0.289437697 6.6141307692
## 2.461538 96.00536 89.91460 0.313476850 5.7772846154
## 2.538462 96.01483 90.31015 0.321683558 5.3830000000
## 2.615385 88.18864 88.87382 0.145882946 -0.8310692308
## 2.692308 79.68943 87.51016 -0.005071818 -7.8156615385
## 2.769231 81.37692 88.00770 0.045189654 -6.6759769231
## 2.846154 93.80604 90.67977 0.307877345 2.8183923077
## 2.923077 105.56926 92.67246 0.476358567 12.4204461538
## 3.000000 92.62681 90.89474 0.250951296 1.4811097582
## 3.076923 91.82073 90.23887 0.160269181 1.4215895083
## 3.153846 79.92237 88.32350 -0.047295489 -8.3538309434
## 3.230769 79.56744 89.18277 0.043361094 -9.6586853012
## 3.307692 89.63976 91.52076 0.272824225 -2.1538220045
## 3.384615 100.17500 93.06477 0.399942979 6.7102873806
## 3.461538 99.49776 93.30379 0.383850936 5.8101114488
## 3.538462 96.86370 91.97165 0.212251801 4.6797975513
## 3.615385 87.94223 89.43933 -0.062206265 -1.4348882870
## 3.692308 81.72203 89.39687 -0.060230876 -7.6146156534
## 3.769231 88.21262 93.48340 0.354444600 -5.6252261566
## 3.846154 102.28161 98.01694 0.772354299 3.4923171948
## 3.923077 109.95628 97.76731 0.670156106 11.5188170705
## 4.000000 96.45785 95.01187 0.327596431 1.1183812995
## 4.076923 93.27897 92.63090 0.056739478 0.5913308268
## 4.153846 82.39203 90.54114 -0.157909864 -7.9912046133
## 4.230769 83.24525 91.98393 0.002159568 -8.7408327760
## 4.307692 93.16522 94.55184 0.258734485 -1.6453469861
## 4.384615 103.12062 96.08821 0.386498014 6.6459192062
## 4.461538 98.72020 93.50678 0.089705553 5.1237149089
## 4.538462 93.74063 90.38964 -0.230978441 3.5819652871
## 4.615385 86.12278 87.99692 -0.447153075 -1.4269867301
## 4.692308 82.66807 88.93283 -0.308846681 -5.9559137485
## 4.769231 88.83358 92.68947 0.097701909 -3.9535873604
## 4.846154 97.37066 94.06196 0.225180215 3.0835244197
## 4.923077 103.75558 93.46412 0.142879019 10.1485783719
## 5.000000 89.83351 90.01489 -0.216332596 0.0349534879
## 5.076923 88.30330 88.87887 -0.308300739 -0.2672665429
## 5.153846 81.98633 89.54783 -0.210574838 -7.3509268847
## 5.230769 85.90162 93.41859 0.197558586 -7.7145331056
## 5.307692 96.13950 96.76169 0.512112279 -1.1342928718
## 5.384615 102.62193 96.70768 0.455500182 5.4587493611
## 5.461538 98.00088 94.01883 0.141065657 3.8409789325
## 5.538462 94.94451 92.27470 -0.047453868 2.7172667510
## 5.615385 92.59431 93.39841 0.069661833 -0.8737611515
## 5.692308 93.07702 96.98535 0.421389715 -4.3297193897
## 5.769231 96.75259 99.55959 0.636675391 -3.4436741371
## 5.846154 103.10340 99.75639 0.592687520 2.7543196387
## 5.923077 105.68439 96.74080 0.231859596 8.7117319094
## 6.000000 92.42340 92.92884 -0.172522180 -0.3329190837
## 6.076923 92.41103 92.48686 -0.199468137 0.1236370614
## 6.153846 88.52750 94.24918 -0.003288663 -5.7183931869
## 6.230769 91.29324 97.43403 0.315525294 -6.4563183365
## 6.307692 97.06080 98.07361 0.347930457 -1.3607412575
## 6.384615 100.64814 96.31032 0.136808437 4.2010112593
## 6.461538 97.01442 94.03220 -0.104684399 3.0869008327
## 6.538462 98.44481 95.23319 0.025883230 3.1857295552
## 6.615385 99.17923 98.31464 0.331439093 0.5331503774
## 6.692308 97.04449 100.04203 0.471034586 -3.4685766847
## 6.769231 97.00332 100.18475 0.438202829 -3.6196256246
## 6.846154 100.11056 98.56694 0.232602346 1.3110079451
## 6.923077 103.68868 96.58348 0.010995242 7.0942048051
## 7.000000 94.36425 94.95764 -0.152688284 -0.4407029133
## 7.076923 97.19534 96.29106 -0.004077185 0.9083549571
## 7.153846 92.50134 96.88841 0.056066081 -4.4431373574
## 7.230769 91.00883 97.24901 0.086519218 -6.3266976845
## 7.307692 94.45064 96.63900 0.016866551 -2.2052293388
## 7.384615 98.84380 95.68862 -0.079858282 3.2350399181
## 7.461538 100.65223 96.98526 0.057791633 3.6091713458
## 7.538462 103.82082 99.14489 0.267975103 4.4079530094
## 7.615385 100.32328 99.00460 0.227148744 1.0915323476
## 7.692308 95.55830 98.95839 0.199813096 -3.5999037105
## 7.769231 92.91824 97.34207 0.018199036 -4.4420275564
## 7.846154 96.55018 96.22130 -0.095697716 0.4245795264
## 7.923077 103.12001 96.71708 -0.036549304 6.4394707021
## 8.000000 97.94835 97.72655 0.068052587 0.1537414845
## 8.076923 101.54991 100.10218 0.298809633 1.1489280204
## 8.153846 95.84290 99.91410 0.250121347 -4.3213248080
## 8.230769 92.47007 98.94698 0.128397347 -6.6053083563
## 8.307692 96.16915 98.67311 0.088169871 -2.5921286679
## 8.384615 105.28753 101.17259 0.329300899 3.7856395767
## 8.461538 106.10177 101.33886 0.312998339 4.4499052278
## 8.538462 105.20143 100.73543 0.221355011 4.2446475737
## 8.615385 100.66439 99.59684 0.085360402 0.9821897524
## 8.692308 92.54708 97.05118 -0.177741338 -4.3263599496
## 8.769231 91.24261 96.36846 -0.228238908 -4.8976145629
## 8.846154 98.61515 97.99658 -0.042603094 0.6611731718
## 8.923077 107.48299 100.42101 0.204099864 6.8578782687
## 9.000000 102.79394 101.43235 0.284824131 1.0767696682
## 9.076923 101.40941 100.31103 0.144209235 0.9541748739
## 9.153846 93.36339 98.24811 -0.076502971 -4.8082208067
## 9.230769 91.10740 97.97025 -0.096638763 -6.7662182592
## 9.307692 98.78026 100.26533 0.142533328 -1.6276045550
## 9.384615 107.19184 103.06334 0.408080060 3.7204293355
## 9.461538 108.98540 104.40103 0.501041166 4.0833319157
## 9.538462 106.94934 102.94349 0.305183177 3.7006691355
## 9.615385 99.93468 100.02234 -0.017449623 -0.0702172047
## 9.692308 93.72638 98.42970 -0.174969143 -4.5283502321
## 9.769231 95.51776 99.70297 -0.030144716 -4.1550713072
## 9.846154 103.94185 102.08300 0.210872141 1.6479850052
## 9.923077 111.92110 104.32622 0.414107058 7.1807753385
## 10.000000 103.38305 102.66243 0.206317044 0.5143100816
## 10.076923 100.86361 100.79349 -0.001208003 0.0713260494
## 10.153846 94.37309 99.40208 -0.140228201 -4.8887639742
## 10.230769 96.03563 101.73780 0.107366006 -5.8095298959
## 10.307692 105.52255 105.60466 0.483315370 -0.5654176269
## 10.384615 111.26036 106.63052 0.537570308 4.0922737620
## 10.461538 108.62477 105.00374 0.321135025 3.2998999571
## 10.538462 104.17746 101.79880 -0.031472426 2.4101379369
## 10.615385 98.18817 99.17879 -0.290325698 -0.7002952864
## 10.692308 95.91847 100.04245 -0.174927137 -3.9490525238
## 10.769231 99.76741 102.83645 0.121965399 -3.1910038772
## 10.846154 107.25711 104.51823 0.277947147 2.4609246729
## 10.923077 109.32521 102.88842 0.087171032 6.3496152814
## 11.000000 98.71496 99.31013 -0.279375094 -0.3157901071
## 11.076923 97.18659 98.04890 -0.377560384 -0.4847547387
## 11.153846 96.08721 100.11844 -0.132850116 -3.8983871467
## 11.230769 100.11078 104.13447 0.282037749 -4.3057324407
## 11.307692 105.29822 105.27839 0.368226191 -0.3483978739
## 11.384615 107.60341 104.15756 0.219319730 3.2265326286
## 11.461538 102.21632 100.49565 -0.168802443 1.8894701528
## 11.538462 98.30324 97.39091 -0.462396883 1.3747248492
## 11.615385 95.99321 96.71560 -0.483687592 -0.2387010429
## 11.692308 94.72813 97.81499 -0.325379889 -2.7614823791
## 11.769231 97.02166 99.69371 -0.104970502 -2.5670768851
## 11.846154 100.71093 99.16086 -0.147757693 1.6978202108
## 11.923077 101.23787 96.73046 -0.376022233 4.8834307805
## 12.000000 92.65642 93.97857 -0.613609632 -0.7085312692
## 12.076923 97.21159 96.97055 -0.253050118 0.4940863328
## 12.153846 99.02272 101.07850 0.183050144 -2.2388356875
## 12.230769 100.01589 103.56361 0.413255791 -3.9609786697
## 12.307692 103.06139 103.62713 0.378282052 -0.9440237177
## 12.384615 102.37023 100.65313 0.043054321 1.6740439349
## 12.461538 98.91689 98.38942 -0.187622303 0.7150923914
## 12.538462 100.49986 99.28918 -0.078884125 1.2895620150
## 12.615385 102.23343 101.67164 0.167250707 0.3945297684
## 12.692308 102.47326 103.97249 0.380610203 -1.8798448320
## 12.769231 101.47797 103.88263 0.333563088 -2.7382256467
## 12.846154 102.57289 101.70562 0.082505751 0.7847620493
## 12.923077 103.64818 99.82855 -0.113451988 3.9330811843
## 13.000000 102.68460 101.85078 0.100116478 0.7337067884
## 13.076923 107.98625 105.31158 0.436184409 2.2384873802
## 13.153846 104.73152 105.62557 0.423965454 -1.3180130996
## 13.230769 101.13431 104.92379 0.311390991 -4.1008736240
## 13.307692 100.67092 102.87998 0.075870810 -2.2849346415
## 13.384615 101.45081 100.83563 -0.136151530 0.7513374379
## 13.461538 102.01468 100.97339 -0.108759813 1.1500451015
## 13.538462 105.82224 103.40306 0.145082604 2.2741013432
## 13.615385 106.65137 105.10285 0.300553760 1.2479677542
## 13.692308 102.05629 103.96737 0.156950282 -2.0680332916
## 13.769231 97.96489 101.78438 -0.077043485 -3.7424549963
## 13.846154 100.71704 100.87626 -0.160151196 0.0009310938
## 13.923077 106.79843 102.03894 -0.027868062 4.7873550482
## 14.000000 105.19774 103.04431 0.075455328 2.0779785129
## 14.076923 104.98227 102.75380 0.038858463 2.1896115597
## 14.153846 98.55409 100.51164 -0.189242858 -1.7683109539
## 14.230769 92.67075 98.12290 -0.409192608 -5.0429543447
## 14.307692 94.19119 97.73162 -0.407401688 -3.1330240016
## 14.384615 99.30646 98.71398 -0.268425525 0.8609043059
## 14.461538 103.36297 101.19140 0.006159350 2.1654147678
## 14.538462 105.52907 102.49699 0.136101853 2.8959859686
## 14.615385 101.50983 100.87589 -0.039617605 0.6735538408
## 14.692308 95.34420 98.61041 -0.262204177 -3.0040083612
## 14.769231 93.79057 98.14771 -0.282254107 -4.0748858368
## 14.846154 100.63922 100.16178 -0.052621419 0.5300636299
## 14.923077 108.52678 103.08151 0.244614170 5.2006486056
## 15.000000 105.10792 102.96757 0.208758658 1.9315910555
## 15.076923 104.19741 102.75371 0.166496227 1.2772062730
## 15.153846 97.53718 100.28256 -0.097267947 -2.6481099535
## 15.230769 93.60600 98.87054 -0.228743603 -5.0357906646
## 15.307692 97.39566 100.05973 -0.086949641 -2.5771193498
## 15.384615 104.65059 102.52325 0.168097095 1.9592438048
## 15.461538 106.32013 103.39635 0.238597278 2.6851847820
## 15.538462 104.51802 102.22710 0.097812660 2.1931081356
## 15.615385 99.40513 99.77873 -0.156805755 -0.2167924469
## 15.692308 95.91455 99.19796 -0.199202360 -3.0842080810
xhat1 <- winter1$fitted[,2]
winter1.opt<- HoltWinters(training.ts, alpha= NULL, beta = NULL, gamma = NULL, seasonal = "additive")
winter1.opt
## Holt-Winters exponential smoothing with trend and additive seasonal component.
##
## Call:
## HoltWinters(x = training.ts, alpha = NULL, beta = NULL, gamma = NULL, seasonal = "additive")
##
## Smoothing parameters:
## alpha: 0.4047538
## beta : 0
## gamma: 1
##
## Coefficients:
## [,1]
## a 109.2446603
## b 0.1827109
## s1 -0.8266228
## s2 5.6964456
## s3 0.3679335
## s4 -1.1981680
## s5 -9.2800809
## s6 -8.1509015
## s7 -0.8688158
## s8 4.3878031
## s9 3.5559231
## s10 -1.7827396
## s11 -7.2290284
## s12 -4.4226157
## s13 4.2285397
winter1.opt$fitted
## Time Series:
## Start = c(2, 1)
## End = c(15, 10)
## Frequency = 13
## xhat level trend season
## 2.000000 88.54720 87.09424 0.1827109 1.27025385
## 2.076923 89.83701 88.34376 0.1827109 1.31054615
## 2.153846 80.69475 88.89119 0.1827109 -8.37914615
## 2.230769 79.51454 89.00219 0.1827109 -9.67036154
## 2.307692 87.09484 89.13397 0.1827109 -2.22183846
## 2.384615 96.41638 89.61954 0.1827109 6.61413077
## 2.461538 96.19692 90.23692 0.1827109 5.77728462
## 2.538462 96.07390 90.50819 0.1827109 5.38300000
## 2.615385 86.46083 87.10919 0.1827109 -0.83106923
## 2.692308 77.30331 84.93626 0.1827109 -7.81566154
## 2.769231 80.60867 87.10194 0.1827109 -6.67597692
## 2.846154 95.91289 92.91179 0.1827109 2.81839231
## 2.923077 108.25457 95.65141 0.1827109 12.42044615
## 3.000000 93.20737 90.18551 0.1827109 2.83914360
## 3.076923 90.32767 88.29804 0.1827109 1.84691449
## 3.153846 76.58257 84.88445 0.1827109 -8.48459417
## 3.230769 78.69108 88.25364 0.1827109 -9.74526943
## 3.307692 91.84113 93.43486 0.1827109 -1.77644065
## 3.384615 102.73524 95.29915 0.1827109 7.25337618
## 3.461538 100.21016 94.11993 0.1827109 5.90751297
## 3.538462 90.83985 90.54153 0.1827109 0.11560808
## 3.615385 83.49537 87.60802 0.1827109 -4.29536258
## 3.692308 84.91386 89.63059 0.1827109 -4.89943847
## 3.769231 98.69569 96.91347 0.1827109 1.59950930
## 3.846154 108.07204 101.31064 0.1827109 6.57868522
## 3.923077 101.37750 97.08140 0.1827109 4.11338553
## 4.000000 93.78116 93.80379 0.1827109 -0.20534367
## 4.076923 86.32915 89.58838 0.1827109 -3.44194863
## 4.153846 84.62433 88.24005 0.1827109 -3.79843832
## 4.230769 88.54712 90.75867 0.1827109 -2.39426445
## 4.307692 94.86717 93.98792 0.1827109 0.69654855
## 4.384615 101.50057 96.06739 0.1827109 5.25046883
## 4.461538 91.45842 90.89943 0.1827109 0.37627394
## 4.538462 83.24697 87.53147 0.1827109 -4.46721922
## 4.615385 86.17978 87.58666 0.1827109 -1.58959214
## 4.692308 96.27035 90.54530 0.1827109 5.54233193
## 4.769231 101.43021 93.45005 0.1827109 7.79745781
## 4.846154 91.38710 91.11409 0.1827109 0.09030026
## 4.923077 91.26030 92.05308 0.1827109 -0.97549101
## 5.000000 83.53302 90.02369 0.1827109 -6.67338307
## 5.076923 85.38448 90.89533 0.1827109 -5.69355390
## 5.153846 94.05673 94.23719 0.1827109 -0.36316922
## 5.230769 100.06283 97.79404 0.1827109 2.08608484
## 5.307692 102.27950 98.61078 0.1827109 3.48600641
## 5.384615 92.72689 95.16261 0.1827109 -2.61843196
## 5.461538 88.32418 92.98695 0.1827109 -4.84547383
## 5.538462 88.79909 93.27114 0.1827109 -4.65476077
## 5.615385 100.98689 98.31138 0.1827109 2.49279706
## 5.692308 111.94349 102.21532 0.1827109 9.54545443
## 5.769231 103.39476 99.11864 0.1827109 4.09341078
## 5.846154 97.10793 95.72270 0.1827109 1.20251756
## 5.923077 86.98379 91.02977 0.1827109 -4.22869146
## 6.000000 85.12035 90.59787 0.1827109 -5.66022600
## 6.076923 92.32631 93.19119 0.1827109 -1.04758767
## 6.153846 102.16008 97.37841 0.1827109 4.59896421
## 6.230769 101.69657 98.49534 0.1827109 3.01851924
## 6.307692 93.45207 95.12307 0.1827109 -1.85370801
## 6.384615 86.58977 92.49380 0.1827109 -6.08674523
## 6.461538 88.96591 93.47944 0.1827109 -4.69623507
## 6.538462 102.23383 99.56220 0.1827109 2.48891673
## 6.615385 112.54312 104.39503 0.1827109 7.96537679
## 6.692308 106.89912 101.99375 0.1827109 4.72265749
## 6.769231 96.53654 97.52332 0.1827109 -1.16949671
## 6.846154 87.94903 93.73409 0.1827109 -5.96777363
## 6.923077 89.40455 94.35441 0.1827109 -5.13256869
## 7.000000 95.07372 97.00610 0.1827109 -2.11509058
## 7.076923 104.93349 99.90919 0.1827109 4.84159144
## 7.153846 104.33259 98.17701 0.1827109 5.97286168
## 7.230769 92.16043 94.18729 0.1827109 -2.20956889
## 7.307692 86.68788 92.49428 0.1827109 -5.98910466
## 7.384615 89.13828 93.86151 0.1827109 -4.90593768
## 7.461538 104.92159 100.75828 0.1827109 3.98060122
## 7.538462 112.97685 103.46658 0.1827109 9.32756555
## 7.615385 103.46508 99.11712 0.1827109 4.16525234
## 7.692308 95.53725 97.47496 0.1827109 -2.12042143
## 7.769231 87.16267 93.99075 0.1827109 -7.01078793
## 7.846154 89.05654 94.19804 0.1827109 -5.32420844
## 7.923077 97.29197 98.61085 0.1827109 -1.50159702
## 8.000000 105.33771 103.26939 0.1827109 1.88560833
## 8.076923 107.33941 105.13122 0.1827109 2.02548523
## 8.153846 102.00469 101.98527 0.1827109 -0.16328577
## 8.230769 92.42519 97.21056 0.1827109 -4.96807537
## 8.307692 92.53293 96.59732 0.1827109 -4.24710571
## 8.384615 108.28247 103.13174 0.1827109 4.96801882
## 8.461538 109.64985 101.77231 0.1827109 7.69482244
## 8.538462 101.50937 98.66428 0.1827109 2.66238312
## 8.615385 99.25339 97.58915 0.1827109 1.48153716
## 8.692308 85.68796 93.01839 0.1827109 -7.51314505
## 8.769231 88.16348 94.95540 0.1827109 -6.97463745
## 8.846154 101.22070 100.14124 0.1827109 0.89674536
## 8.923077 109.52547 104.26205 0.1827109 5.08071372
## 9.000000 109.78942 105.25173 0.1827109 4.35498391
## 9.076923 97.07022 99.75727 0.1827109 -2.86976727
## 9.153846 89.95844 97.22958 0.1827109 -7.45385671
## 9.230769 92.42705 98.38296 0.1827109 -6.13862240
## 9.307692 108.14849 102.87183 0.1827109 5.09395743
## 9.384615 107.51956 104.63676 0.1827109 2.70008776
## 9.461538 109.60618 106.56815 0.1827109 2.85532466
## 9.538462 103.53115 102.53588 0.1827109 0.81255474
## 9.615385 92.24640 97.57278 0.1827109 -5.50908977
## 9.692308 92.92902 97.67952 0.1827109 -4.93320255
## 9.769231 101.68174 101.11587 0.1827109 0.38315559
## 9.846154 110.55227 103.68131 0.1827109 6.68825239
## 9.923077 111.75162 105.30143 0.1827109 6.26747259
## 10.000000 97.53619 101.34755 0.1827109 -3.99407157
## 10.076923 93.02390 99.69698 0.1827109 -6.85578297
## 10.153846 94.39574 100.23939 0.1827109 -6.02635940
## 10.230769 105.80055 105.42367 0.1827109 0.19417341
## 10.307692 116.86588 109.26234 0.1827109 7.42083737
## 10.384615 111.40625 105.95179 0.1827109 5.27175296
## 10.461538 98.53463 101.69530 0.1827109 -3.34338034
## 10.538462 92.25371 98.82607 0.1827109 -6.75507567
## 10.615385 93.15827 98.59638 0.1827109 -5.62081558
## 10.692308 103.18480 103.15036 0.1827109 -0.14827069
## 10.769231 110.47042 106.40042 0.1827109 3.88728831
## 10.846154 114.39263 105.40776 0.1827109 8.80216511
## 10.923077 99.20822 98.84147 0.1827109 0.18404548
## 11.000000 89.19355 95.70102 0.1827109 -6.69017605
## 11.076923 91.60643 97.75051 0.1827109 -6.32679004
## 11.153846 106.65603 105.14418 0.1827109 1.32913269
## 11.230769 115.19897 109.44550 0.1827109 5.57076350
## 11.307692 107.73168 105.26546 0.1827109 2.28351458
## 11.384615 100.37571 101.44969 0.1827109 -1.25669860
## 11.461538 89.05419 96.70315 0.1827109 -7.83167310
## 11.538462 89.09274 96.27161 0.1827109 -7.36157698
## 11.615385 100.74188 99.75143 0.1827109 0.80774081
## 11.692308 105.76128 101.21588 0.1827109 4.36268394
## 11.769231 103.73492 101.39346 0.1827109 2.15874378
## 11.846154 97.05259 97.99304 0.1827109 -1.12316779
## 11.923077 90.51653 95.03693 0.1827109 -4.70311879
## 12.000000 90.98883 94.75093 0.1827109 -3.94481345
## 12.076923 107.36613 102.90550 0.1827109 4.27791726
## 12.153846 115.37260 107.80378 0.1827109 7.38610424
## 12.230769 105.36510 106.02765 0.1827109 -0.84525848
## 12.307692 99.92337 103.33746 0.1827109 -3.59679403
## 12.384615 89.68292 98.00606 0.1827109 -8.50584869
## 12.461538 90.10334 98.65564 0.1827109 -8.73501070
## 12.538462 102.27626 104.60628 0.1827109 -2.51272800
## 12.615385 111.92661 109.05119 0.1827109 2.69271903
## 12.692308 114.16629 109.62844 0.1827109 4.35513871
## 12.769231 101.19820 104.12623 0.1827109 -3.11074224
## 12.846154 93.78483 99.34136 0.1827109 -5.73923383
## 12.923077 93.90562 99.11533 0.1827109 -5.39242933
## 13.000000 115.52513 107.56352 0.1827109 7.77890166
## 13.076923 120.74574 109.35021 0.1827109 11.21281734
## 13.153846 108.80925 104.12119 0.1827109 4.50535204
## 13.230769 95.48763 100.37518 0.1827109 -5.07025671
## 13.307692 86.55367 98.07702 0.1827109 -11.70605539
## 13.384615 92.04636 99.68289 0.1827109 -7.81924268
## 13.461538 104.15667 104.22644 0.1827109 -0.25248025
## 13.538462 112.61748 108.67935 0.1827109 3.75541499
## 13.615385 112.71371 109.25804 0.1827109 3.27295613
## 13.692308 100.25818 104.08080 0.1827109 -4.00532839
## 13.769231 90.02226 100.25581 0.1827109 -10.41625662
## 13.846154 95.81379 101.97142 0.1827109 -6.34033350
## 13.923077 113.76164 106.81584 0.1827109 6.76308435
## 14.000000 116.59169 106.27119 0.1827109 10.13778603
## 14.076923 104.53835 101.10153 0.1827109 3.25411242
## 14.153846 95.75801 96.84767 0.1827109 -1.27237575
## 14.230769 85.17482 93.71083 0.1827109 -8.71871707
## 14.307692 87.53341 96.96379 0.1827109 -9.61309391
## 14.384615 101.43050 102.65382 0.1827109 -1.40603758
## 14.461538 113.74394 107.53378 0.1827109 6.02744559
## 14.538462 110.66496 106.14450 0.1827109 4.33775607
## 14.615385 96.26539 100.69228 0.1827109 -4.60959820
## 14.692308 88.77656 98.49306 0.1827109 -9.89920668
## 14.769231 92.94907 100.92828 0.1827109 -8.16191698
## 14.846154 106.79689 106.09882 0.1827109 0.51535843
## 14.923077 115.68067 109.80455 0.1827109 5.69340501
## 15.000000 108.81515 106.36607 0.1827109 2.26637414
## 15.076923 101.10521 104.19297 0.1827109 -3.27046998
## 15.153846 94.31776 100.28928 0.1827109 -6.15423099
## 15.230769 95.09352 99.11430 0.1827109 -4.20349180
## 15.307692 100.23340 101.56452 0.1827109 -1.51382220
## 15.384615 111.44482 105.76020 0.1827109 5.50191628
## 15.461538 108.51799 104.61968 0.1827109 3.71560446
## 15.538462 97.29717 101.06364 0.1827109 -3.94917968
## 15.615385 91.08628 99.01613 0.1827109 -8.11255803
## 15.692308 95.30405 101.70792 0.1827109 -6.58657959
xhat1.opt <- winter1.opt$fitted[,2]
#Forecast
forecast1 <- predict(winter1, n.ahead = 49)
forecast1.opt <- predict(winter1.opt, n.ahead = 49)
#Plot time series
plot(training.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
xlim=c(1,25),pch=12)
lines(xhat1,type="l",col="red")
lines(xhat1.opt,type="l",col="blue")
lines(forecast1,type="l",col="red")
lines(forecast1.opt,type="l",col="blue")
legend("topleft",c("Actual Data",expression(paste(winter1)),
expression(paste(winter1.opt))),cex=0.5,
col=c("black","red","blue"),lty=1)
#Akurasi data training
SSE1<-winter1$SSE
MSE1<-winter1$SSE/length(training.ts)
RMSE1<-sqrt(MSE1)
akurasi1 <- matrix(c(SSE1,MSE1,RMSE1))
row.names(akurasi1)<- c("SSE", "MSE", "RMSE")
colnames(akurasi1) <- c("Akurasi")
akurasi1
## Akurasi
## SSE 19249.76741
## MSE 100.25921
## RMSE 10.01295
SSE1.opt<-winter1.opt$SSE
MSE1.opt<-winter1.opt$SSE/length(training.ts)
RMSE1.opt<-sqrt(MSE1.opt)
akurasi1.opt <- matrix(c(SSE1.opt,MSE1.opt,RMSE1.opt))
row.names(akurasi1.opt)<- c("SSE1.opt", "MSE1.opt", "RMSE1.opt")
colnames(akurasi1.opt) <- c("Akurasi")
akurasi1.opt
## Akurasi
## SSE1.opt 13896.693461
## MSE1.opt 72.378612
## RMSE1.opt 8.507562
akurasi1.train = data.frame(Model_Winter = c("Winter 1","Winter1 optimal"),
Nilai_SSE=c(SSE1,SSE1.opt),
Nilai_MSE=c(MSE1,MSE1.opt),Nilai_RMSE=c(RMSE1,RMSE1.opt))
akurasi1.train
## Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1 Winter 1 19249.77 100.25921 10.012952
## 2 Winter1 optimal 13896.69 72.37861 8.507562
#Akurasi Data Testing
forecast1<-data.frame(forecast1)
testing.ts<-data.frame(testing.ts)
selisih1<-forecast1-testing.ts
SSEtesting1<-sum(selisih1^2)
MSEtesting1<-SSEtesting1/length(testing.ts)
forecast1.opt<-data.frame(forecast1.opt)
selisih1.opt<-forecast1.opt-testing.ts
SSEtesting1.opt<-sum(selisih1.opt^2)
MSEtesting1.opt<-SSEtesting1.opt/length(testing.ts)
akurasi_testing <- data.frame(
Model = c("Model1", "Model Optimum"),
SSE = c(SSEtesting1, SSEtesting1.opt),
MSE = c(MSEtesting1, MSEtesting1.opt)
)
akurasi_testing
## Model SSE MSE
## 1 Model1 6589.276 6589.276
## 2 Model Optimum 11578.072 11578.072
Model multiplikatif digunakan cocok digunakan jika plot data asli menunjukkan fluktuasi musiman yang bervariasi.
#Pemulusan dengan winter multiplikatif
winter2 <- HoltWinters(training.ts,alpha=0.2,beta=0.1,gamma=0.3,seasonal = "multiplicative")
winter2$fitted
## Time Series:
## Start = c(2, 1)
## End = c(15, 10)
## Frequency = 13
## xhat level trend season
## 2.000000 88.53261 87.09424 0.1827109045 1.0143871
## 2.076923 89.35114 87.79949 0.2349649788 1.0149565
## 2.153846 80.24923 88.30776 0.2622954117 0.9060538
## 2.230769 79.27077 88.62929 0.2682192600 0.8917097
## 2.307692 87.01558 88.92396 0.2708642461 0.9755676
## 2.384615 96.19416 89.36447 0.2878291241 1.0729692
## 2.461538 96.06461 89.89390 0.3119889327 1.0649483
## 2.538462 96.16187 90.27182 0.3185824660 1.0615017
## 2.615385 88.25357 88.90655 0.1501970777 0.9909813
## 2.692308 79.77034 87.52036 -0.0034420368 0.9114848
## 2.769231 81.45889 88.05059 0.0499250122 0.9246131
## 2.846154 94.18287 90.92384 0.3322574326 1.0320721
## 2.923077 106.25007 92.81553 0.4882006614 1.1387548
## 3.000000 93.46197 91.20474 0.2783017380 1.0216317
## 3.076923 92.30178 90.43192 0.1731900926 1.0187259
## 3.153846 80.18948 88.47318 -0.0400032385 0.9067805
## 3.230769 79.77237 89.37403 0.0540816599 0.8920280
## 3.307692 90.21214 91.95454 0.3067245472 0.9777900
## 3.384615 101.04367 93.44425 0.4250231729 1.0764297
## 3.461538 100.14205 93.55838 0.3939339204 1.0658817
## 3.538462 95.89750 92.22149 0.2208517869 1.0373764
## 3.615385 87.26861 89.98293 -0.0250898510 0.9701057
## 3.692308 82.72934 90.11707 -0.0091659726 0.9181141
## 3.769231 90.94402 94.40508 0.4205508742 0.9590659
## 3.846154 104.66983 98.61350 0.7993377080 1.0528804
## 3.923077 109.23068 97.98853 0.6569069904 1.1073060
## 4.000000 96.75250 95.68286 0.3606495383 1.0073820
## 4.076923 92.38005 93.29629 0.0859275109 0.9892681
## 4.153846 83.81772 91.39417 -0.1128770171 0.9182354
## 4.230769 85.45819 92.71399 0.0303930079 0.9214379
## 4.307692 94.60832 95.04857 0.2608113224 0.9926444
## 4.384615 103.63941 96.30573 0.3604457716 1.0721373
## 4.461538 97.80625 93.80116 0.0739449194 1.0418763
## 4.538462 91.06052 90.97260 -0.2163054328 1.0033521
## 4.615385 86.28690 89.13601 -0.3783346868 0.9721627
## 4.692308 87.05379 90.14658 -0.2394443535 0.9682634
## 4.769231 93.59512 93.19998 0.0898402441 1.0032726
## 4.846154 96.96847 93.61124 0.1219827348 1.0345155
## 4.923077 99.22324 93.01543 0.0502027675 1.0661641
## 5.000000 87.79593 90.54665 -0.2016953336 0.9717857
## 5.076923 86.28955 89.81792 -0.2543989997 0.9634453
## 5.153846 85.00109 90.99589 -0.1111620516 0.9352627
## 5.230769 89.95472 94.60387 0.2607528223 0.9482431
## 5.307692 98.32000 97.32698 0.5069887906 1.0049678
## 5.384615 100.43759 96.83671 0.4072623072 1.0328413
## 5.461538 94.95598 94.62258 0.1451235701 1.0019867
## 5.538462 91.77859 93.49402 0.0177549954 0.9814656
## 5.615385 94.60933 95.35019 0.2015964981 0.9901366
## 5.692308 100.13739 98.69709 0.5161262797 1.0093151
## 5.769231 101.28129 99.94716 0.5895208040 1.0074064
## 5.846154 102.14189 99.20095 0.4559482280 1.0249355
## 5.923077 99.39523 96.32403 0.1226610371 1.0305717
## 6.000000 90.31449 93.74335 -0.1476729777 0.9649430
## 6.076923 91.90313 93.75353 -0.1318874069 0.9816441
## 6.153846 93.82687 95.72360 0.0783082468 0.9793841
## 6.230769 96.01347 97.97498 0.2956147751 0.9770316
## 6.307692 97.13890 97.63602 0.2321578999 0.9925483
## 6.384615 95.60013 95.72537 0.0178772024 0.9985051
## 6.461538 92.85689 94.33582 -0.1228657071 0.9856064
## 6.538462 96.87797 96.38135 0.0939735919 1.0041736
## 6.615385 103.06711 99.83024 0.4294659819 1.0280013
## 6.692308 103.19638 100.86124 0.4896193790 1.0182092
## 6.769231 99.26808 99.82004 0.3365373227 0.9911289
## 6.846154 95.98688 97.62517 0.0833960170 0.9823794
## 6.923077 95.74407 96.29227 -0.0582331575 0.9949086
## 7.000000 92.94046 96.18588 -0.0630490484 0.9668926
## 7.076923 98.81105 97.95434 0.1201014538 1.0075107
## 7.153846 99.03531 98.35065 0.1477230448 1.0054512
## 7.230769 94.56569 97.50155 0.0480402216 0.9694115
## 7.307692 92.72518 96.09727 -0.0971920884 0.9658866
## 7.384615 93.35030 95.35594 -0.1616050529 0.9806287
## 7.461538 99.00402 97.71843 0.0908044867 1.0122155
## 7.538462 105.03356 100.21137 0.3310176930 1.0446695
## 7.615385 103.73062 99.91940 0.2687192957 1.0353585
## 7.692308 99.38981 99.26591 0.1764976955 0.9994711
## 7.769231 92.93362 96.85860 -0.0818831413 0.9602890
## 7.846154 92.05196 95.58744 -0.2008101981 0.9650405
## 7.923077 96.33428 96.93178 -0.0462956801 0.9943108
## 8.000000 98.36221 99.30240 0.1953957420 0.9885868
## 8.076923 103.28299 101.74828 0.4204440891 1.0109062
## 8.153846 100.98221 101.34421 0.3379934370 0.9931159
## 8.230769 94.73900 99.42154 0.1119269153 0.9518306
## 8.307692 94.51815 98.63409 0.0219886463 0.9580571
## 8.384615 102.94833 101.51761 0.3081417194 1.0110246
## 8.461538 106.70059 102.12724 0.3382906693 1.0413316
## 8.538462 105.45757 101.47046 0.2387835794 1.0368534
## 8.615385 102.84323 100.34822 0.1026819546 1.0238158
## 8.692308 94.09543 97.45546 -0.1968626872 0.9674767
## 8.769231 90.93956 96.41657 -0.2810657930 0.9459519
## 8.846154 96.46524 98.16200 -0.0784160941 0.9835004
## 8.923077 103.60955 101.02919 0.2161452365 1.0233513
## 9.000000 104.69135 102.79117 0.3707284352 1.0148257
## 9.076923 101.70248 101.40236 0.1947741562 1.0010369
## 9.153846 95.92768 99.33374 -0.0315646779 0.9660179
## 9.230769 92.68928 98.56284 -0.1054986990 0.9414156
## 9.307692 99.81572 100.66183 0.1149506849 0.9904634
## 9.384615 105.12424 103.24873 0.3621457722 1.0146062
## 9.461538 108.49481 104.93468 0.4945254804 1.0290774
## 9.538462 106.01147 103.62131 0.3137361078 1.0199781
## 9.615385 99.56343 100.95581 0.0158126979 0.9860535
## 9.692308 95.07612 99.44945 -0.1364047115 0.9573376
## 9.769231 97.45291 100.54385 -0.0133241229 0.9693862
## 9.846154 104.65436 102.61756 0.1953789005 1.0179104
## 9.923077 109.44368 104.66953 0.3810385386 1.0418190
## 10.000000 103.10656 103.53167 0.2291487498 0.9936945
## 10.076923 99.07431 101.72805 0.0258718767 0.9736657
## 10.153846 96.31956 100.69366 -0.0801543902 0.9573223
## 10.230769 99.44740 102.79318 0.1378128134 0.9661560
## 10.307692 108.58852 106.11592 0.4563059634 1.0189195
## 10.384615 110.15718 106.50290 0.4493727539 1.0299658
## 10.461538 106.11909 105.06510 0.2606561821 1.0075321
## 10.538462 100.63282 102.32344 -0.0395761486 0.9838583
## 10.615385 96.93247 100.37342 -0.2306203992 0.9679425
## 10.692308 98.60592 101.59446 -0.0854540957 0.9714007
## 10.769231 103.45229 104.01203 0.1648479002 0.9930446
## 10.846154 109.41878 105.00548 0.2477085164 1.0395769
## 10.923077 105.44358 103.00218 0.0226076830 1.0234778
## 11.000000 96.93067 100.20193 -0.2596785244 0.9698668
## 11.076923 95.14966 99.29784 -0.3241197648 0.9613629
## 11.153846 100.04880 101.94293 -0.0271989041 0.9816817
## 11.230769 105.75038 105.33492 0.3147203969 1.0009535
## 11.307692 107.58715 105.38386 0.2881421925 1.0181235
## 11.384615 104.66325 103.75981 0.0969228338 1.0077657
## 11.461538 97.55474 100.58892 -0.2298584078 0.9720571
## 11.538462 94.08311 98.29783 -0.4359807662 0.9613869
## 11.615385 96.63056 98.51832 -0.3703340921 0.9845394
## 11.692308 99.34954 99.62645 -0.2224874086 0.9994525
## 11.769231 100.83629 100.68448 -0.0944361484 1.0024480
## 11.846154 100.41036 99.40215 -0.2132251807 1.0123142
## 11.923077 95.48671 96.99343 -0.4327747567 0.9888780
## 12.000000 91.19320 95.32123 -0.5567174431 0.9623139
## 12.076923 98.16691 98.81541 -0.1516272151 0.9949640
## 12.153846 105.17655 102.85483 0.2674771768 1.0199204
## 12.230769 104.32817 104.17268 0.3725138619 0.9979242
## 12.307692 103.12657 103.33047 0.2510422764 0.9956079
## 12.384615 96.95865 100.20136 -0.0869737416 0.9684788
## 12.461538 93.46784 98.85008 -0.2134040283 0.9475972
## 12.538462 97.82865 100.93427 0.0163552048 0.9690743
## 12.615385 104.58355 104.04181 0.3254739572 1.0020722
## 12.692308 108.08535 106.02741 0.4914869650 1.0147058
## 12.769231 104.02783 104.94910 0.3345064967 0.9880725
## 12.846154 100.70286 102.22659 0.0288055592 0.9848171
## 12.923077 97.84440 100.64538 -0.1321961895 0.9734484
## 13.000000 105.11097 103.89954 0.2064391617 1.0096535
## 13.076923 112.13127 106.95389 0.4912306168 1.0436143
## 13.153846 110.38355 106.53368 0.4000864320 1.0322610
## 13.230769 103.23469 104.74813 0.1815224349 0.9838467
## 13.307692 97.44901 102.10881 -0.1005619379 0.9553052
## 13.384615 95.56008 100.46335 -0.2550509841 0.9536144
## 13.461538 98.93321 101.73100 -0.1027815483 0.9734817
## 13.538462 105.47109 104.86887 0.2212839501 1.0036249
## 13.615385 109.33067 106.70923 0.3831912125 1.0209002
## 13.692308 104.98142 105.16089 0.1900387879 0.9964925
## 13.769231 97.46417 102.41567 -0.1034871288 0.9526154
## 13.846154 97.90938 101.54490 -0.1802162895 0.9659122
## 13.923077 104.52088 103.31554 0.0148701359 1.0115210
## 14.000000 109.36382 104.80220 0.1620487953 1.0419150
## 14.076923 107.27727 103.81331 0.0469545448 1.0329000
## 14.153846 101.63699 101.20752 -0.2183192677 1.0064144
## 14.230769 92.92857 98.19107 -0.4981321764 0.9512312
## 14.307692 91.10083 97.65756 -0.5016701188 0.9376768
## 14.384615 96.11288 99.29718 -0.2875414910 0.9707427
## 14.461538 103.53990 102.49621 0.0611156284 1.0095807
## 14.538462 106.27300 103.80937 0.1863201645 1.0218982
## 14.615385 101.96682 102.13055 -0.0001936158 0.9983987
## 14.692308 95.81515 99.80938 -0.2322916359 0.9622209
## 14.769231 93.46126 99.27083 -0.2629176749 0.9439777
## 14.846154 100.25923 101.51029 -0.0126798894 0.9877989
## 14.923077 107.87566 104.58361 0.2959208571 1.0285673
## 15.000000 107.87494 104.65754 0.2737217585 1.0280533
## 15.076923 104.20359 103.98187 0.1787823748 1.0004122
## 15.153846 98.59750 101.52286 -0.0849966184 0.9719989
## 15.230769 94.72519 99.86706 -0.2420769598 0.9508176
## 15.307692 96.92941 100.88085 -0.1164901618 0.9619414
## 15.384615 104.74592 103.51268 0.1583413438 1.0103683
## 15.461538 107.10612 104.34992 0.2262311270 1.0241926
## 15.538462 103.07030 103.04807 0.0734236000 0.9995035
## 15.615385 97.74427 100.86374 -0.1523525163 0.9705384
## 15.692308 96.30204 100.61680 -0.1618105752 0.9586586
xhat2 <- winter2$fitted[,2]
winter2.opt<- HoltWinters(training.ts, alpha= NULL, beta = NULL, gamma = NULL, seasonal = "multiplicative")
winter2.opt$fitted
## Time Series:
## Start = c(2, 1)
## End = c(15, 10)
## Frequency = 13
## xhat level trend season
## 2.000000 88.53261 87.09424 0.1827109 1.0143871
## 2.076923 89.85599 88.34915 0.1827109 1.0149565
## 2.153846 80.70334 88.88853 0.1827109 0.9060538
## 2.230769 79.51360 88.98712 0.1827109 0.8917097
## 2.307692 87.11336 89.11235 0.1827109 0.9755676
## 2.384615 96.33626 89.60203 0.1827109 1.0729692
## 2.461538 96.28074 90.22613 0.1827109 1.0649483
## 2.538462 96.21829 90.46084 0.1827109 1.0615017
## 2.615385 86.56156 87.16663 0.1827109 0.9909813
## 2.692308 77.54931 84.89750 0.1827109 0.9114848
## 2.769231 80.77230 87.17523 0.1827109 0.9246131
## 2.846154 96.64178 93.45588 0.1827109 1.0320721
## 2.923077 109.36987 95.86067 0.1827109 1.1387548
## 3.000000 93.70705 90.61214 0.1827109 1.0320744
## 3.076923 90.59173 88.56243 0.1827109 1.0208077
## 3.153846 77.13591 85.06700 0.1827109 0.9048231
## 3.230769 79.06775 88.56937 0.1827109 0.8908833
## 3.307692 92.59594 94.26733 0.1827109 0.9803696
## 3.384615 103.78942 95.87317 0.1827109 1.0805108
## 3.461538 100.78495 94.37753 0.1827109 1.0658280
## 3.538462 91.00444 90.76103 0.1827109 1.0006674
## 3.615385 83.49430 87.71880 0.1827109 0.9498619
## 3.692308 84.91196 89.86589 0.1827109 0.9429571
## 3.769231 98.97174 97.68380 0.1827109 1.0112932
## 3.846154 108.95070 101.97984 0.1827109 1.0664446
## 3.923077 101.79227 97.62984 0.1827109 1.0406872
## 4.000000 93.95942 94.27772 0.1827109 0.9946960
## 4.076923 86.24818 89.90384 0.1827109 0.9573924
## 4.153846 84.56313 88.49984 0.1827109 0.9535486
## 4.230769 88.24762 91.19265 0.1827109 0.9657705
## 4.307692 95.00497 94.70100 0.1827109 1.0012780
## 4.384615 102.05857 96.74792 0.1827109 1.0529032
## 4.461538 91.90183 91.56065 0.1827109 1.0017272
## 4.538462 83.55005 87.96788 0.1827109 0.9478105
## 4.615385 86.27732 87.88294 0.1827109 0.9796932
## 4.692308 95.52978 90.89766 0.1827109 1.0488515
## 4.769231 100.76753 94.00147 0.1827109 1.0698987
## 4.846154 91.80141 92.05151 0.1827109 0.9953074
## 4.923077 91.58649 92.83381 0.1827109 0.9846261
## 5.000000 83.72803 90.60269 0.1827109 0.9222632
## 5.076923 85.47422 91.45600 0.1827109 0.9327305
## 5.153846 94.38371 95.03332 0.1827109 0.9912586
## 5.230769 100.14578 98.53188 0.1827109 1.0144983
## 5.307692 102.38262 99.31470 0.1827109 1.0289978
## 5.384615 92.62050 95.87866 0.1827109 0.9641805
## 5.461538 88.17674 93.62665 0.1827109 0.9399567
## 5.538462 88.86090 93.98320 0.1827109 0.9436632
## 5.615385 101.88481 99.35813 0.1827109 1.0235478
## 5.692308 112.90948 102.86700 0.1827109 1.0956797
## 5.769231 103.25886 99.65327 0.1827109 1.0342850
## 5.846154 97.00321 96.38176 0.1827109 1.0045435
## 5.923077 86.99401 91.68618 0.1827109 0.9469366
## 6.000000 85.17274 91.20638 0.1827109 0.9319793
## 6.076923 92.34426 93.98854 0.1827109 0.9805992
## 6.153846 102.34633 98.30426 0.1827109 1.0391865
## 6.230769 101.82672 99.32491 0.1827109 1.0233057
## 6.307692 93.53970 95.93311 0.1827109 0.9731978
## 6.384615 86.62670 93.14927 0.1827109 0.9281567
## 6.461538 88.94459 94.19275 0.1827109 0.9424547
## 6.538462 102.37957 100.73210 0.1827109 1.0145148
## 6.615385 113.20001 105.50318 0.1827109 1.0710986
## 6.692308 107.50677 102.98819 0.1827109 1.0420260
## 6.769231 96.71634 98.40403 0.1827109 0.9810279
## 6.846154 87.75526 94.40647 0.1827109 0.9277516
## 6.923077 89.33483 95.15314 0.1827109 0.9370539
## 7.000000 95.17698 98.03785 0.1827109 0.9690128
## 7.076923 105.23727 101.02324 0.1827109 1.0398329
## 7.153846 104.54889 99.21892 0.1827109 1.0517825
## 7.230769 92.47249 95.29506 0.1827109 0.9685238
## 7.307692 86.89044 93.38193 0.1827109 0.9286675
## 7.384615 89.28659 94.76837 0.1827109 0.9403430
## 7.461538 105.16305 102.12565 0.1827109 1.0279028
## 7.538462 113.05719 104.70315 0.1827109 1.0779068
## 7.615385 103.87759 100.59221 0.1827109 1.0307881
## 7.692308 95.97917 98.81572 0.1827109 0.9695020
## 7.769231 87.41478 94.97650 0.1827109 0.9186161
## 7.846154 89.12684 95.07371 0.1827109 0.9356518
## 7.923077 97.40834 99.80948 0.1827109 0.9741595
## 8.000000 105.58459 104.60160 0.1827109 1.0076375
## 8.076923 107.61235 106.37332 0.1827109 1.0099132
## 8.153846 101.90838 103.10331 0.1827109 0.9866619
## 8.230769 92.24318 98.23178 0.1827109 0.9372927
## 8.307692 92.49618 97.63318 0.1827109 0.9456151
## 8.384615 108.52078 104.64225 0.1827109 1.0352570
## 8.461538 109.78091 103.22016 0.1827109 1.0616815
## 8.538462 101.57719 100.20955 0.1827109 1.0118030
## 8.615385 99.42846 99.10430 0.1827109 1.0014247
## 8.692308 86.12138 94.40256 0.1827109 0.9105158
## 8.769231 88.55589 96.34342 0.1827109 0.9174292
## 8.846154 101.75387 101.87985 0.1827109 0.9969755
## 8.923077 109.83049 105.84806 0.1827109 1.0358360
## 9.000000 110.01030 106.69981 0.1827109 1.0292637
## 9.076923 97.46338 101.20200 0.1827109 0.9613222
## 9.153846 90.03918 98.35822 0.1827109 0.9137237
## 9.230769 92.43338 99.58176 0.1827109 0.9265160
## 9.307692 108.24064 104.47398 0.1827109 1.0342448
## 9.384615 107.64421 106.17123 0.1827109 1.0121318
## 9.461538 109.65286 108.05514 0.1827109 1.0130731
## 9.538462 103.44461 104.00051 0.1827109 0.9929105
## 9.615385 91.90737 98.96436 0.1827109 0.9269802
## 9.692308 92.87522 99.21407 0.1827109 0.9343887
## 9.769231 101.76152 102.95094 0.1827109 0.9866956
## 9.846154 110.82824 105.54890 0.1827109 1.0482034
## 9.923077 112.03849 107.01395 0.1827109 1.0451677
## 10.000000 97.70480 103.07116 0.1827109 0.9462580
## 10.076923 93.16784 101.21640 0.1827109 0.9188230
## 10.153846 94.52006 101.73175 0.1827109 0.9274450
## 10.230769 106.06110 107.32729 0.1827109 0.9865232
## 10.307692 117.51478 111.15904 0.1827109 1.0554422
## 10.384615 111.69627 107.73366 0.1827109 1.0350262
## 10.461538 98.84435 103.45277 0.1827109 0.9537694
## 10.538462 92.17238 100.25786 0.1827109 0.9176808
## 10.615385 92.97723 100.02129 0.1827109 0.9278795
## 10.692308 103.21582 105.06061 0.1827109 0.9807351
## 10.769231 110.66191 108.40142 0.1827109 1.0191352
## 10.846154 114.64360 107.33769 0.1827109 1.0662498
## 10.923077 99.67739 101.00613 0.1827109 0.9850631
## 11.000000 89.82673 97.57292 0.1827109 0.9188906
## 11.076923 92.05120 99.53266 0.1827109 0.9231395
## 11.153846 107.04427 107.43761 0.1827109 0.9946474
## 11.230769 115.53779 111.65848 0.1827109 1.0330523
## 11.307692 108.10847 107.42471 0.1827109 1.0046563
## 11.384615 100.58245 103.41822 0.1827109 0.9708643
## 11.461538 89.44296 98.36577 0.1827109 0.9076037
## 11.538462 89.27178 97.68650 0.1827109 0.9121538
## 11.615385 100.56970 101.45356 0.1827109 0.9895060
## 11.692308 105.45217 103.02103 0.1827109 1.0217864
## 11.769231 103.72615 103.32279 0.1827109 1.0021317
## 11.846154 96.80933 99.88387 0.1827109 0.9674492
## 11.923077 90.52228 96.88022 0.1827109 0.9326143
## 12.000000 91.16764 96.55083 0.1827109 0.9424615
## 12.076923 107.36168 105.23185 0.1827109 1.0184711
## 12.153846 115.40337 110.11078 0.1827109 1.0463299
## 12.230769 105.52956 108.38328 0.1827109 0.9720315
## 12.307692 99.99543 105.49989 0.1827109 0.9461862
## 12.384615 89.59563 99.74260 0.1827109 0.8966260
## 12.461538 90.21541 100.49321 0.1827109 0.8960972
## 12.538462 102.87438 107.15081 0.1827109 0.9584553
## 12.615385 112.73185 111.58620 0.1827109 1.0086155
## 12.692308 114.65062 111.83790 0.1827109 1.0234780
## 12.769231 101.05064 106.19466 0.1827109 0.9499262
## 12.846154 93.39153 101.13896 0.1827109 0.9217330
## 12.923077 93.68900 101.04717 0.1827109 0.9255073
## 13.000000 116.29239 110.38086 0.1827109 1.0518147
## 13.076923 121.05116 111.81039 0.1827109 1.0808805
## 13.153846 109.10540 106.80074 0.1827109 1.0198344
## 13.230769 96.07012 102.95840 0.1827109 0.9314436
## 13.307692 86.83997 100.18397 0.1827109 0.8652271
## 13.384615 92.27190 101.89860 0.1827109 0.9039059
## 13.461538 104.25868 106.87043 0.1827109 0.9738965
## 13.538462 112.85947 111.45579 0.1827109 1.0109368
## 13.615385 113.18630 111.93741 0.1827109 1.0095093
## 13.692308 100.62319 106.54471 0.1827109 0.9428054
## 13.769231 90.07018 102.25860 0.1827109 0.8792369
## 13.846154 95.82520 104.18663 0.1827109 0.9181355
## 13.923077 113.61614 109.51221 0.1827109 1.0357466
## 14.000000 116.72322 109.04055 0.1827109 1.0686663
## 14.076923 104.83834 104.09465 0.1827109 1.0053798
## 14.153846 96.12373 99.68072 0.1827109 0.9625519
## 14.230769 85.97748 96.21085 0.1827109 0.8919421
## 14.307692 88.12381 99.51433 0.1827109 0.8839160
## 14.384615 101.90875 105.74016 0.1827109 0.9621033
## 14.461538 114.08514 110.66903 0.1827109 1.0291686
## 14.538462 110.96977 109.16701 0.1827109 1.0148154
## 14.615385 96.88938 103.59658 0.1827109 0.9336100
## 14.692308 89.33367 100.91822 0.1827109 0.8836088
## 14.769231 93.28991 103.42685 0.1827109 0.9003986
## 14.846154 107.07768 109.07083 0.1827109 0.9800843
## 14.923077 115.99251 112.78056 0.1827109 1.0268161
## 15.000000 108.68158 109.26298 0.1827109 0.9930184
## 15.076923 100.70952 107.09553 0.1827109 0.9387693
## 15.153846 93.93569 103.03776 0.1827109 0.9100491
## 15.230769 95.13584 101.88013 0.1827109 0.9321301
## 15.307692 100.13873 104.51063 0.1827109 0.9564956
## 15.384615 111.50513 108.98780 0.1827109 1.0213851
## 15.461538 108.70123 107.83274 0.1827109 1.0063489
## 15.538462 97.45285 104.17391 0.1827109 0.9338445
## 15.615385 91.39364 101.86678 0.1827109 0.8955816
## 15.692308 95.71457 104.74922 0.1827109 0.9121587
xhat2.opt <- winter2.opt$fitted[,2]
#Forecast
forecast2 <- predict(winter2, n.ahead = 49)
forecast2.opt <- predict(winter2.opt, n.ahead = 49)
#Plot time series
plot(training.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
xlim=c(1,25),pch=12)
lines(xhat2,type="l",col="red")
lines(xhat2.opt,type="l",col="blue")
lines(forecast2,type="l",col="red")
lines(forecast2.opt,type="l",col="blue")
legend("topleft",c("Actual Data",expression(paste(winter2)),
expression(paste(winter2.opt))),cex=0.5,
col=c("black","red","blue"),lty=1)
#Akurasi data training
SSE2<-winter2$SSE
MSE2<-winter2$SSE/length(training.ts)
RMSE2<-sqrt(MSE2)
akurasi1 <- matrix(c(SSE2,MSE2,RMSE2))
row.names(akurasi1)<- c("SSE2", "MSE2", "RMSE2")
colnames(akurasi1) <- c("Akurasi lamda=0.2")
akurasi1
## Akurasi lamda=0.2
## SSE2 18378.242877
## MSE2 95.720015
## RMSE2 9.783661
SSE2.opt<-winter2.opt$SSE
MSE2.opt<-winter2.opt$SSE/length(training.ts)
RMSE2.opt<-sqrt(MSE2.opt)
akurasi1.opt <- matrix(c(SSE2.opt,MSE2.opt,RMSE2.opt))
row.names(akurasi1.opt)<- c("SSE2.opt", "MSE2.opt", "RMSE2.opt")
colnames(akurasi1.opt) <- c("Akurasi")
akurasi1.opt
## Akurasi
## SSE2.opt 14014.482201
## MSE2.opt 72.992095
## RMSE2.opt 8.543541
akurasi2.train = data.frame(Model_Winter = c("Winter 1","winter2 optimal"),
Nilai_SSE=c(SSE2,SSE2.opt),
Nilai_MSE=c(MSE2,MSE2.opt),Nilai_RMSE=c(RMSE2,RMSE2.opt))
akurasi2.train
## Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1 Winter 1 18378.24 95.72001 9.783661
## 2 winter2 optimal 14014.48 72.99209 8.543541
#Akurasi Data Testing
# Pastikan forecast2 dan testing.ts dalam bentuk data.frame
forecast2 <- data.frame(forecast2)
testing.ts <- data.frame(testing.ts)
# Samakan panjangnya (ambil baris minimum dari keduanya)
n <- min(nrow(forecast2), nrow(testing.ts))
# Hitung selisih antar nilai prediksi dan aktual
selisih2 <- forecast2[1:n, 1] - testing.ts[1:n, 1]
# Hitung SSE & MSE
SSEtesting2 <- sum(selisih2^2)
MSEtesting2 <- SSEtesting2 / n
# Ulangi proses untuk forecast2.opt
forecast2.opt <- data.frame(forecast2.opt)
selisih2.opt <- forecast2.opt[1:n, 1] - testing.ts[1:n, 1]
SSEtesting2.opt <- sum(selisih2.opt^2)
MSEtesting2.opt <- SSEtesting2.opt / n
SSEtesting2.opt
## [1] 12039.46
MSEtesting2.opt
## [1] 245.7033
# Atau rapikan dalam tabel
akurasi_testing2 <- data.frame(
Model = c("Model2", "Model2 Optimal"),
SSE = c(SSEtesting2, SSEtesting2.opt),
MSE = c(MSEtesting2, MSEtesting2.opt))
View(akurasi_testing2)
berdasarkan hasil penghitungan, model2 lebih baik dengan SSE dan MSE yang lebih kecil daripada model2 optimal
SMA
DMA
SES
SES
berdasakan perbandingan MAPE, metode SMA lebih bagus karena MAPE <10% dan memang ini terjadi karena data ini bersifat konstan yang mana cocok dengan metode ini