Library/Packages

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

Impor Data

# 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

Eksplorasi Data

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

Single Moving Average & Double Moving Average

Pembagian Data

Pembagian data latih dan data uji dilakukan dengan perbandingan 80% data latih dan 20% data uji.

hitung jumlah data

n = nrow(data_sales)
n
## [1] 100

tentukan batas 80%

n_train = floor(0.8 * n)
n_train
## [1] 80

bagi data

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

# 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.

Eksplorasi keseluruhan data

plot(data_sales.ts, col="red",main="Plot semua data")
points(data_sales.ts)

Eksplorasi data latih

plot(train_ma.ts, col="blue",main="Plot data latih")
points(train_ma.ts)

Eksplorasi data uji

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))

Single Moving Average (SMA)

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.

Double Moving Average (DMA)

Metode pemulusan Double Moving Average (DMA) pada dasarnya mirip dengan SMA. Namun demikian, metode ini lebih cocok digunakan untuk pola data trend. Proses pemulusan dengan rata rata dalam metode ini dilakukan sebanyak 2 kali.

  • Tahap I:

\[ S_{1,t} = \frac{1}{m} \sum_{i=t-m+1}^{t} X_i \]

  • Tahap II:

\[ 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.

Single Exponential Smoothing & Double Exponential Smoothing

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

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

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

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

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.

Akurasi Data Latih

Perhitungan akurasi data dapat dilakukan dengan cara langsung maupun manual. Secara langsung, nilai akurasi dapat diambil dari objek yang tersimpan pada hasil SES, yaitu sum of squared errors (SSE). Nilai akurasi lain dapat dihitung pula dari nilai SSE tersebut.

#Keakuratan Metode
#Pada data training

# 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

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

Double Exponential Smoothing (DES)

Metode pemulusan Double Exponential Smoothing (DES) digunakan untuk data yang memiliki pola tren. Metode DES adalah metode semacam SES, hanya saja dilakukan dua kali, yaitu pertama untuk tahapan ā€˜level’ dan kedua untuk tahapan ā€˜tren’. Pemulusan menggunakan metode ini akan menghasilkan peramalan tidak konstan untuk periode berikutnya.

Pemulusan dengan metode DES kali ini akan menggunakan fungsi HoltWinters() . Jika sebelumnya nilai argumen beta dibuat FALSE , kali ini argumen tersebut akan diinisialisasi bersamaan dengan nilai alpha .

#Lamda=0.2 dan gamma=0.2
des.1<- HoltWinters(train.ts, gamma = FALSE, beta = 0.2, alpha = 0.2)
plot(des.1)

#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 Latih

#Akurasi Data Training
ssedes.train1<-des.1$SSE
msedes.train1<-ssedes.train1/length(train.ts)
sisaandes1<-ramalandes1$residuals
head(sisaandes1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]        NA        NA  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 Uji

#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

Perbandingan SES dan DES

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.

Pemulusan Data Musiman

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.

Winter Aditif

Perhitungan dengan model aditif dilakukan jika plot data asli menunjukkan fluktuasi musiman yang relatif stabil (konstan).

Pemulusan

#Pemulusan dengan winter aditif 
winter1 <- HoltWinters(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]

Peramalan

#Forecast
forecast1 <- predict(winter1, n.ahead = 49)
forecast1.opt <- predict(winter1.opt, n.ahead = 49)

Plot Deret Waktu

#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 Latih

#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 Uji

#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

Winter Multiplikatif

Model multiplikatif digunakan cocok digunakan jika plot data asli menunjukkan fluktuasi musiman yang bervariasi.

Pemulusan

#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]

Peramalan

#Forecast
forecast2 <- predict(winter2, n.ahead = 49)
forecast2.opt <- predict(winter2.opt, n.ahead = 49)

Plot Deret Waktu

#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 Latih

#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 Uji

#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