1. Pendahuluan

Pada bagian ini akan dijelaskan data yang akan digunakan, pembersihan data, serta referensi sumber dari data tersebut.

1.1 Penjelasan terhadap data (dt.set)

Data yang digunakan berasal dari tabel data produksi bulanan perkebunan besar dalam satuan ton. Pada data tersebut terdapat beberapa jenis tanaman perkebunan besar diantaranya adalah karet kering, minyak sawit, biji sawit, coklat, kopi, teh, kulit kina, gula tebu, serta tembakau. Data tersebut tercatat produksinya dengan periode bulanan, yakni produksi bulan januari, produksi bulan februari, dan seterusnya dalam setiap satu tahunnya.

Data yang akan dipakai adalah data produksi bulanan untuk tanaman perkebunan karet sawit mulai dari tahun 2019 hingga 2018. Pada data tersebut akan diambil setiap bulannya selama 10 tahun, sehingga didapatkan: 10 tahun x 12 bulan = 120 periode data produksi karet kering.

1.2 Pengambilan dan pengolahan data

Sebelum dianalisis menggunakan bantuan R dengan interface RStudio, maka data terlebih dahulu dirapihkan pada Excel dan disimpan pada github dengan format data csv.

2. Library / Packages

2.1 Menginstall packages

Package R yang akan digunakan untuk tugas praktikum pekan pertama dari mata kuliah Metode Peramalan Deret Waktu (MPDW) adalah: forecast, graphics, TTR, TSA . Jika packages tersebut belum tersedia, maka dilakukan tahap penginstallan terlebih dahulu.

#install.packages("forecast")
#install.packages("graphics")
#install.packages("TTR")
#install.packages("TSA")

2.2 Menjalankan package tersebut

Jika packages tersebut sudah ada, maka akan dipanggil library package tersebut.

library("forecast")
## Warning: package 'forecast' was built under R version 4.3.1
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library("graphics")
library("TTR")
## Warning: package 'TTR' was built under R version 4.3.1
library("TSA")
## Warning: package 'TSA' was built under R version 4.3.1
## 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

3. Impor Data

3.1 Package “rio”

Menginstall package library rio terlebih dahulu sebelum digunakan apabila belum tersedia.

#install.packages("rio")

3.2 Memasukkan data kedalam dt.set

Memasukkan data yang akan digunakan berbentuk csv dari link github yang tersedia.

library(rio)
## Warning: package 'rio' was built under R version 4.3.1
dt.set <- import("https://raw.githubusercontent.com/jonathanmarjonoxz/MPDW/main/Responsi1/Data_ProduksiKaretKering.csv")

4. Eksplorasi Data

Melihat data menggunakan fungsi View(), struktur data menggunakan fungsi str(), dan dimensi data menggunakan fungsi dim().

View(dt.set)
str(dt.set)
## 'data.frame':    120 obs. of  2 variables:
##  $ Periode              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Produksi Karet Kering: num  50 45.5 40.1 38.8 47.2 43.5 45.8 41.7 38.4 38.2 ...
dim(dt.set)
## [1] 120   2

Mengubah data agar terbaca sebagai data deret waktu dengan fungsi ts().

dt.set.ts <- ts(dt.set$`Produksi Karet Kering`)

Menampilkan ringkasan data.

Berikut hasil ringkasan datanya, dengan nilai terkecil 31.00, kuartil1 40.15, median 45.52, mean 48.24, serta kuartil3 51.88, dan maksimum data 85.09.

summary(dt.set.ts)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   31.00   40.15   45.52   48.24   51.88   85.09

Membuat plot data deret waktu, saat plot dibuat terlihat ada sedikit perbedaan pola data dari periode data ke 1-60 dengan periode data ke 61-120.

ts.plot(dt.set.ts, xlab="Time Period", ylab="Produksi Karet Kering (Ton)", 
        main = "Time Series Plot")
points(dt.set.ts)

Melihat plot data deret waktu dengan lebih detail dengan cara memberikan sebuah pembatasan dengan batas masing-masing 60 data pada dt.set yang dimiliki, sehingga dibagi 50% pada data deretwaktu, serta 50% sisanya pada data deretwaktu2.

deretwaktu <- dt.set[1:60,]
deretwaktu2 <- dt.set[61:120,]
deretwaktu.ts <- ts(deretwaktu$`Produksi Karet Kering`)
deretwaktu2.ts <- ts(deretwaktu2$`Produksi Karet Kering`)

Kemudian dibuat plot dari data deretwaktu, sehingga terlihat pada plot ini data terlihat mengikuti pola trend.

ts.plot(deretwaktu.ts, xlab="Time Period", ylab="Produksi Karet Kering (Ton)", 
        main = "Time Series Plot")
points(deretwaktu.ts)

Serta dibuat plot dari data deretwaktu2. Namun, pada data deretwaktu2 terlihat data serupa mengikuti pola musiman.

ts.plot(deretwaktu2.ts, xlab="Time Period", ylab="Produksi Karet Kering (Ton)", 
        main = "Time Series Plot")
points(deretwaktu2.ts)

Sehingga akan dicoba secara lebih detail untuk pemulusan analisis deret waktu yang memiliki pola data trend serta pola musiman, namun dalam analisis kali ini data tetap tidak akan dipisah, melainkan dengan memanfaatkan 80% data untuk meramal serta 20% data yang diramal (yang dilakukan forecast).

5. Single Moving Average & Double Moving Average

5.1 Pembagian data

Pembagian data menjadi dua dari dt.set, sehingga dibagi ke dalam dt.ramal dan dt.uji yang dilakukan dengan perbandingan 80% dt.ramal dan 20% dt.uji.

brapadtramal = (80/100)*nrow(dt.set)
brapadtramal
## [1] 96
brapadtuji = (20/100)*nrow(dt.set)
brapadtuji
## [1] 24

Berdasarkan perhitungan dengan rumus di atas diperoleh sebanyak 96 periode untuk data ramal serta 24 periode untuk data uji. Oleh karena itu data ramal akan diambil dari baris 1-96 pada dt.set, serta data uji akan menggunakan baris berikutnya yakni 97-120 pada dt.set.

Berikut sedikit penjelasan untuk penamaannya:

data ramal = dt.ramal = dt.forecast = data yang dimilki untuk meramal.

data uji = dt.uji = dt.test = data yang akan diramal.

#Membagi data dt.ramal dan dt.uji dengan 80% dan 20%
dt.ramal_ma <- dt.set[1:96,] #Periode 1-96
dt.uji_ma <- dt.set[97:120,] #Periode 97-120
#Mengubah agar terbaca sebagai data deret waktu
dt.ramal_ma.ts <- ts(dt.ramal_ma$`Produksi Karet Kering`)
dt.uji_ma.ts <- ts(dt.uji_ma$`Produksi Karet Kering`)

5.2 Eksplorasi data

Eksplorasi data dilakukan pada keseluruhan data dt.set, dt.ramal, serta dt.uji menggunakan plot data deret waktu.

#Eksplorasi pada keseluruhan data
plot(dt.set.ts, col="orchid",main="Plot Semua Data")
points(dt.set.ts)

#Eksplorasi dt.ramal (periode 1-96)
plot(dt.ramal_ma.ts, col="dodgerblue4",main="Plot Data Ramal")
points(dt.ramal_ma.ts)

#Eksplorasi dt.uji (periode 97-120)
plot(dt.uji_ma.ts, col="dodgerblue4",main="Plot Data Uji")
points(dt.uji_ma.ts)

Eksplorasi data juga dapat dilakukan menggunakan package ggplot2 dengan terlebih dahulu memanggil library package ggplot2.

#Eksplorasi dengan package GGPLOT
library(ggplot2)
ggplot() + 
  geom_line(data = dt.ramal_ma, aes(x = Periode, y =`Produksi Karet Kering`, col = "Data Ramal")) +
  geom_line(data = dt.uji_ma, aes(x = Periode, y =`Produksi Karet Kering`, col = "Data Uji")) +
  labs(x = "Periode Waktu", y = "Produksi Karet Kering", color = "Legend") +
  scale_colour_manual(name="Keterangan:", breaks = c("Data Ramal", "Data Uji"),
                      values = c("royalblue", "red2")) + 
  theme_bw() + theme(legend.position = "bottom",
                     plot.caption = element_text(hjust=0.5, size=12))

5.3 Single Moving Average (SMA)

5.3.1 Penjelasan SMA

Ide dasar dari Single Moving Average (SMA) adalah data suatu periode dipengaruhi oleh data periode sebelumnya. Metode pemulusan ini cocok digunakan untuk pola data stasioner atau konstan. Prinsip dasar metode pemulusan ini adalah data pemulusan pada periode ke-t merupakan rata rata dari m buah data pada periode ke-t hingga periode ke (t-m+1). Data pemulusan pada periode ke-t selanjutnya digunakan sebagai nilai peramalan pada periode ke t+1.

5.3.2 Melakukan SMA dengan parameter m=4

Pemulusan menggunakan metode SMA dilakukan dengan fungsi SMA(). Dalam hal ini akan dilakukan pemulusan dengan parameter m=4.

data.sma<-SMA(dt.ramal_ma.ts, n=4)
data.sma
## Time Series:
## Start = 1 
## End = 96 
## Frequency = 1 
##  [1]      NA      NA      NA 43.6000 42.9000 42.4000 43.8250 44.5500 42.3500
## [10] 41.0250 39.5500 42.4250 45.7750 48.0000 48.4250 45.1750 44.4500 43.9500
## [19] 45.4250 46.2000 43.9500 42.6000 41.0750 44.0250 47.7625 50.3175 50.9625
## [28] 47.7975 47.0025 46.4250 47.9950 48.8525 46.4975 45.0775 43.4525 46.5525
## [37] 49.9400 52.1550 52.4000 48.6250 47.8175 47.2300 48.8300 49.7050 47.3100
## [46] 45.8625 44.2075 47.3600 51.6225 53.9975 55.6775 52.7750 50.5150 49.2375
## [55] 49.9525 51.5750 52.3825 55.6850 57.9025 63.2550 62.8725 60.6350 57.3675
## [64] 50.0500 49.7000 49.6500 50.2000 50.1250 47.1825 44.8825 42.4825 42.2625
## [73] 41.3000 39.7150 38.0500 34.7450 36.2200 37.6575 37.5000 37.2750 45.3875
## [82] 53.0800 60.2400 72.1725 63.0500 54.3900 47.8675 36.5850 38.0800 39.5450
## [91] 39.3575 39.1175 47.4975 55.4350 62.8150 75.1025

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 43.6000 42.9000 42.4000 43.8250 44.5500
## [10] 42.3500 41.0250 39.5500 42.4250 45.7750 48.0000 48.4250 45.1750 44.4500
## [19] 43.9500 45.4250 46.2000 43.9500 42.6000 41.0750 44.0250 47.7625 50.3175
## [28] 50.9625 47.7975 47.0025 46.4250 47.9950 48.8525 46.4975 45.0775 43.4525
## [37] 46.5525 49.9400 52.1550 52.4000 48.6250 47.8175 47.2300 48.8300 49.7050
## [46] 47.3100 45.8625 44.2075 47.3600 51.6225 53.9975 55.6775 52.7750 50.5150
## [55] 49.2375 49.9525 51.5750 52.3825 55.6850 57.9025 63.2550 62.8725 60.6350
## [64] 57.3675 50.0500 49.7000 49.6500 50.2000 50.1250 47.1825 44.8825 42.4825
## [73] 42.2625 41.3000 39.7150 38.0500 34.7450 36.2200 37.6575 37.5000 37.2750
## [82] 45.3875 53.0800 60.2400 72.1725 63.0500 54.3900 47.8675 36.5850 38.0800
## [91] 39.5450 39.3575 39.1175 47.4975 55.4350 62.8150 75.1025

Selanjutnya akan dilakukan peramalan sejumlah data uji yaitu 24 periode. Pada metode SMA, hasil peramalan 24 periode ke depan akan bernilai sama dengan hasil peramalan 1 periode kedepan. Dalam hal ini akan dilakukan penggabungan data aktual dt.ramal, data hasil pemulusan dan data hasil ramalan 24 periode kedepan.

data.gab<-cbind(aktual=c(dt.ramal_ma.ts,rep(NA,24)),pemulusan=c(data.sma,rep(NA,24)),ramalan=c(data.ramal,rep(data.ramal[length(data.ramal)],23)))
data.gab #forecast 24 periode ke depan
##        aktual pemulusan ramalan
##   [1,]  50.00        NA      NA
##   [2,]  45.50        NA      NA
##   [3,]  40.10        NA      NA
##   [4,]  38.80   43.6000      NA
##   [5,]  47.20   42.9000 43.6000
##   [6,]  43.50   42.4000 42.9000
##   [7,]  45.80   43.8250 42.4000
##   [8,]  41.70   44.5500 43.8250
##   [9,]  38.40   42.3500 44.5500
##  [10,]  38.20   41.0250 42.3500
##  [11,]  39.90   39.5500 41.0250
##  [12,]  53.20   42.4250 39.5500
##  [13,]  51.80   45.7750 42.4250
##  [14,]  47.10   48.0000 45.7750
##  [15,]  41.60   48.4250 48.0000
##  [16,]  40.20   45.1750 48.4250
##  [17,]  48.90   44.4500 45.1750
##  [18,]  45.10   43.9500 44.4500
##  [19,]  47.50   45.4250 43.9500
##  [20,]  43.30   46.2000 45.4250
##  [21,]  39.90   43.9500 46.2000
##  [22,]  39.70   42.6000 43.9500
##  [23,]  41.40   41.0750 42.6000
##  [24,]  55.10   44.0250 41.0750
##  [25,]  54.85   47.7625 44.0250
##  [26,]  49.92   50.3175 47.7625
##  [27,]  43.98   50.9625 50.3175
##  [28,]  42.44   47.7975 50.9625
##  [29,]  51.67   47.0025 47.7975
##  [30,]  47.61   46.4250 47.0025
##  [31,]  50.26   47.9950 46.4250
##  [32,]  45.87   48.8525 47.9950
##  [33,]  42.25   46.4975 48.8525
##  [34,]  41.93   45.0775 46.4975
##  [35,]  43.76   43.4525 45.0775
##  [36,]  58.27   46.5525 43.4525
##  [37,]  55.80   49.9400 46.5525
##  [38,]  50.79   52.1550 49.9400
##  [39,]  44.74   52.4000 52.1550
##  [40,]  43.17   48.6250 52.4000
##  [41,]  52.57   47.8175 48.6250
##  [42,]  48.44   47.2300 47.8175
##  [43,]  51.14   48.8300 47.2300
##  [44,]  46.67   49.7050 48.8300
##  [45,]  42.99   47.3100 49.7050
##  [46,]  42.65   45.8625 47.3100
##  [47,]  44.52   44.2075 45.8625
##  [48,]  59.28   47.3600 44.2075
##  [49,]  60.04   51.6225 47.3600
##  [50,]  52.15   53.9975 51.6225
##  [51,]  51.24   55.6775 53.9975
##  [52,]  47.67   52.7750 55.6775
##  [53,]  51.00   50.5150 52.7750
##  [54,]  47.04   49.2375 50.5150
##  [55,]  54.10   49.9525 49.2375
##  [56,]  54.16   51.5750 49.9525
##  [57,]  54.23   52.3825 51.5750
##  [58,]  60.25   55.6850 52.3825
##  [59,]  62.97   57.9025 55.6850
##  [60,]  75.57   63.2550 57.9025
##  [61,]  52.70   62.8725 63.2550
##  [62,]  51.30   60.6350 62.8725
##  [63,]  49.90   57.3675 60.6350
##  [64,]  46.30   50.0500 57.3675
##  [65,]  51.30   49.7000 50.0500
##  [66,]  51.10   49.6500 49.7000
##  [67,]  52.10   50.2000 49.6500
##  [68,]  46.00   50.1250 50.2000
##  [69,]  39.53   47.1825 50.1250
##  [70,]  41.90   44.8825 47.1825
##  [71,]  42.50   42.4825 44.8825
##  [72,]  45.12   42.2625 42.4825
##  [73,]  35.68   41.3000 42.2625
##  [74,]  35.56   39.7150 41.3000
##  [75,]  35.84   38.0500 39.7150
##  [76,]  31.90   34.7450 38.0500
##  [77,]  41.58   36.2200 34.7450
##  [78,]  41.31   37.6575 36.2200
##  [79,]  35.21   37.5000 37.6575
##  [80,]  31.00   37.2750 37.5000
##  [81,]  74.03   45.3875 37.2750
##  [82,]  72.08   53.0800 45.3875
##  [83,]  63.85   60.2400 53.0800
##  [84,]  78.73   72.1725 60.2400
##  [85,]  37.54   63.0500 72.1725
##  [86,]  37.44   54.3900 63.0500
##  [87,]  37.76   47.8675 54.3900
##  [88,]  33.60   36.5850 47.8675
##  [89,]  43.52   38.0800 36.5850
##  [90,]  43.30   39.5450 38.0800
##  [91,]  37.01   39.3575 39.5450
##  [92,]  32.64   39.1175 39.3575
##  [93,]  77.04   47.4975 39.1175
##  [94,]  75.05   55.4350 47.4975
##  [95,]  66.53   62.8150 55.4350
##  [96,]  81.79   75.1025 62.8150
##  [97,]     NA        NA 75.1025
##  [98,]     NA        NA 75.1025
##  [99,]     NA        NA 75.1025
## [100,]     NA        NA 75.1025
## [101,]     NA        NA 75.1025
## [102,]     NA        NA 75.1025
## [103,]     NA        NA 75.1025
## [104,]     NA        NA 75.1025
## [105,]     NA        NA 75.1025
## [106,]     NA        NA 75.1025
## [107,]     NA        NA 75.1025
## [108,]     NA        NA 75.1025
## [109,]     NA        NA 75.1025
## [110,]     NA        NA 75.1025
## [111,]     NA        NA 75.1025
## [112,]     NA        NA 75.1025
## [113,]     NA        NA 75.1025
## [114,]     NA        NA 75.1025
## [115,]     NA        NA 75.1025
## [116,]     NA        NA 75.1025
## [117,]     NA        NA 75.1025
## [118,]     NA        NA 75.1025
## [119,]     NA        NA 75.1025
## [120,]     NA        NA 75.1025

5.3.3 Plot hasil SMA

Adapun plot data deret waktu dari hasil peramalan yang dilakukan adalah sebagai berikut. Sehingga dapat dilihat plot dari data aktual (warna hitam), data pemulusan (warna biru), serta data peramalan (warna merah) dengan menggunakan parameter m=4.

ts.plot(dt.set.ts, xlab="Time Period", ylab="Produksi Karet Kering", main= "SMA N=4 Data Produksi Karet Kering")
points(dt.set.ts)
lines(data.gab[,2],col="cyan4",lwd=2)
lines(data.gab[,3],col="red2",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), lty=8, col=c("black","cyan4","red2"), cex=0.5)

5.3.4 Akurasi data ramal

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 dt.ramal maupun pada dt.uji.

#Menghitung nilai keakuratan dt.ramal
error_dt.ramal.sma = dt.ramal_ma.ts-data.ramal[1:length(dt.ramal_ma.ts)]
SSE_dt.ramal.sma = sum(error_dt.ramal.sma[5:length(dt.ramal_ma.ts)]^2)
MSE_dt.ramal.sma = mean(error_dt.ramal.sma[5:length(dt.ramal_ma.ts)]^2)
MAPE_dt.ramal.sma = mean(abs((error_dt.ramal.sma[5:length(dt.ramal_ma.ts)]/dt.ramal_ma.ts[5:length(dt.ramal_ma.ts)])*100))

akurasi_dt.ramal.sma <- matrix(c(SSE_dt.ramal.sma, MSE_dt.ramal.sma, MAPE_dt.ramal.sma))
row.names(akurasi_dt.ramal.sma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_dt.ramal.sma) <- c("Akurasi m = 4")
akurasi_dt.ramal.sma
##      Akurasi m = 4
## SSE    11171.17876
## MSE      121.42586
## MAPE      15.61109

Dalam hal ini diperoleh nilai MAPE dari dt.ramal pada metode pemulusan SMA sebesar 15.61, karena cukup besar sehingga dapat dikatakan nilai ini memberikan nilai akurasi yang kurang baik. Selanjutnya dilakukan perhitungan nilai MAPE dt.uji pada metode pemulusan SMA.

5.3.5 Akurasi data uji

#Menghitung nilai keakuratan dt.uji
error_dt.uji.sma = dt.uji_ma.ts-data.gab[97:120,3]
SSE_dt.uji.sma = sum(error_dt.uji.sma^2)
MSE_dt.uji.sma = mean(error_dt.uji.sma^2)
MAPE_dt.uji.sma = mean(abs((error_dt.uji.sma/dt.uji_ma.ts*100)))

akurasi_dt.uji.sma <- matrix(c(SSE_dt.uji.sma, MSE_dt.uji.sma, MAPE_dt.uji.sma))
row.names(akurasi_dt.uji.sma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_dt.uji.sma) <- c("Akurasi m = 4")
akurasi_dt.uji.sma
##      Akurasi m = 4
## SSE    22848.12525
## MSE      952.00522
## MAPE      69.76289

Perhitungan akurasi menggunakan dt.uji menghasilkan nilai MAPE yang besar yakni 69.76, sehingga memiliki nilai akurasi yang kurang baik.

5.3.6 Kesimpulan dari SMA

library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.3.1
tabelSMA<-cbind(MAPE_dt.ramal.sma,MAPE_dt.uji.sma)
kable(tabelSMA,caption="Tabel Akurasi Metode SMA")
Tabel Akurasi Metode SMA
MAPE_dt.ramal.sma MAPE_dt.uji.sma
15.61109 69.76289

Karena tidak ditemukan hasil peramalan yang akurat dengan SMA, maka dapat dikatakan pemanfaatkan SMA kurang ideal untuk dijadikan sebagai pemulusan dari data tersebut, oleh karena itu akan dicoba cara pemulusan lainnya yang lebih sesuai.

5.4 Double Moving Average (DMA)

5.4.1 Penjelasan 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.

5.4.2 Melakukan DMA dengan parameter m=4

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(dt.ramal_ma.ts,rep(NA,24)), pemulusan1 = c(data.sma,rep(NA,24)),pemulusan2 = c(data.dma, rep(NA,24)),At = c(At, rep(NA,24)), Bt = c(Bt,rep(NA,24)),ramalan = c(data.ramal2, f[-1]))
data.gab2
##        aktual pemulusan1 pemulusan2       At          Bt   ramalan
##   [1,]  50.00         NA         NA       NA          NA        NA
##   [2,]  45.50         NA         NA       NA          NA        NA
##   [3,]  40.10         NA         NA       NA          NA        NA
##   [4,]  38.80    43.6000         NA       NA          NA        NA
##   [5,]  47.20    42.9000         NA       NA          NA        NA
##   [6,]  43.50    42.4000         NA       NA          NA        NA
##   [7,]  45.80    43.8250   44.89792 44.46875  0.42916667        NA
##   [8,]  41.70    44.5500   46.43542 45.68125  0.75416667  44.89792
##   [9,]  38.40    42.3500   40.79792 41.41875 -0.62083333  46.43542
##  [10,]  38.20    41.0250   37.83750 39.11250 -1.27500000  40.79792
##  [11,]  39.90    39.5500   35.68542 37.23125 -1.54583333  37.83750
##  [12,]  53.20    42.4250   44.23750 43.51250  0.72500000  35.68542
##  [13,]  51.80    45.7750   51.74375 49.35625  2.38750000  44.23750
##  [14,]  47.10    48.0000   54.77083 52.06250  2.70833333  51.74375
##  [15,]  41.60    48.4250   52.20625 50.69375  1.51250000  54.77083
##  [16,]  40.20    45.1750   42.39375 43.50625 -1.11250000  52.20625
##  [17,]  48.90    44.4500   41.01250 42.38750 -1.37500000  42.39375
##  [18,]  45.10    43.9500   41.36667 42.40000 -1.03333333  41.01250
##  [19,]  47.50    45.4250   46.55000 46.10000  0.45000000  41.36667
##  [20,]  43.30    46.2000   48.18958 47.39375  0.79583333  46.55000
##  [21,]  39.90    43.9500   42.39792 43.01875 -0.62083333  48.18958
##  [22,]  39.70    42.6000   39.36042 40.65625 -1.29583333  42.39792
##  [23,]  41.40    41.0750   37.10625 38.69375 -1.58750000  39.36042
##  [24,]  55.10    44.0250   45.87917 45.13750  0.74166667  37.10625
##  [25,]  54.85    47.7625   54.25729 51.65938  2.59791667  45.87917
##  [26,]  49.92    50.3175   57.85500 54.84000  3.01500000  54.25729
##  [27,]  43.98    50.9625   55.45521 53.65813  1.79708333  57.85500
##  [28,]  42.44    47.7975   45.44333 46.38500 -0.94166667  55.45521
##  [29,]  51.67    47.0025   43.64000 44.98500 -1.34500000  45.44333
##  [30,]  47.61    46.4250   43.72187 44.80312 -1.08125000  43.64000
##  [31,]  50.26    47.9950   49.14500 48.68500  0.46000000  43.72187
##  [32,]  45.87    48.8525   50.99208 50.13625  0.85583333  49.14500
##  [33,]  42.25    46.4975   44.92250 45.55250 -0.63000000  50.99208
##  [34,]  41.93    45.0775   41.69729 43.04938 -1.35208333  44.92250
##  [35,]  43.76    43.4525   39.25667 40.93500 -1.67833333  41.69729
##  [36,]  58.27    46.5525   48.48167 47.71000  0.77166667  39.25667
##  [37,]  55.80    49.9400   56.08063 53.62438  2.45625000  48.48167
##  [38,]  50.79    52.1550   59.03833 56.28500  2.75333333  56.08063
##  [39,]  44.74    52.4000   55.96354 54.53813  1.42541667  59.03833
##  [40,]  43.17    48.6250   45.03333 46.47000 -1.43666667  55.96354
##  [41,]  52.57    47.8175   43.76438 45.38563 -1.62125000  45.03333
##  [42,]  48.44    47.2300   44.24979 45.44188 -1.19208333  43.76438
##  [43,]  51.14    48.8300   50.00396 49.53438  0.46958333  44.24979
##  [44,]  46.67    49.7050   51.88729 51.01438  0.87291667  50.00396
##  [45,]  42.99    47.3100   45.71208 46.35125 -0.63916667  51.88729
##  [46,]  42.65    45.8625   42.42188 43.79813 -1.37625000  45.71208
##  [47,]  44.52    44.2075   39.93458 41.64375 -1.70916667  42.42188
##  [48,]  59.28    47.3600   49.31833 48.53500  0.78333333  39.93458
##  [49,]  60.04    51.6225   58.88813 55.98188  2.90625000  49.31833
##  [50,]  52.15    53.9975   61.83188 58.69813  3.13375000  58.88813
##  [51,]  51.24    55.6775   61.53271 59.19063  2.34208333  61.83188
##  [52,]  47.67    52.7750   51.53646 52.03187 -0.49541667  61.53271
##  [53,]  51.00    50.5150   45.97125 47.78875 -1.81750000  51.53646
##  [54,]  47.04    49.2375   44.54792 46.42375 -1.87583333  45.97125
##  [55,]  54.10    49.9525   48.84000 49.28500 -0.44500000  44.54792
##  [56,]  54.16    51.5750   53.66667 52.83000  0.83666667  48.84000
##  [57,]  54.23    52.3825   55.04188 53.97813  1.06375000  53.66667
##  [58,]  60.25    55.6850   61.16208 58.97125  2.19083333  55.04188
##  [59,]  62.97    57.9025   63.76292 61.41875  2.34416667  61.16208
##  [60,]  75.57    63.2550   73.16958 69.20375  3.96583333  63.76292
##  [61,]  52.70    62.8725   67.77875 65.81625  1.96250000  73.16958
##  [62,]  51.30    60.6350   59.74958 60.10375 -0.35416667  67.77875
##  [63,]  49.90    57.3675   51.25917 53.70250 -2.44333333  59.74958
##  [64,]  46.30    50.0500   37.24792 42.36875 -5.12083333  51.25917
##  [65,]  51.30    49.7000   41.80313 44.96188 -3.15875000  37.24792
##  [66,]  51.10    49.6500   46.24688 47.60813 -1.36125000  41.80313
##  [67,]  52.10    50.2000   50.70000 50.50000  0.20000000  46.24688
##  [68,]  46.00    50.1250   50.46875 50.33125  0.13750000  50.70000
##  [69,]  39.53    47.1825   43.67104 45.07563 -1.40458333  50.46875
##  [70,]  41.90    44.8825   39.52417 41.66750 -2.14333333  43.67104
##  [71,]  42.50    42.4825   36.33979 38.79688 -2.45708333  39.52417
##  [72,]  45.12    42.2625   39.02917 40.32250 -1.29333333  36.33979
##  [73,]  35.68    41.3000   38.91354 39.86813 -0.95458333  39.02917
##  [74,]  35.56    39.7150   36.84000 37.99000 -1.15000000  38.91354
##  [75,]  35.84    38.0500   34.24688 35.76813 -1.52125000  36.84000
##  [76,]  31.90    34.7450   28.56583 31.03750 -2.47166667  34.24688
##  [77,]  41.58    36.2200   34.61583 35.25750 -0.64166667  28.56583
##  [78,]  41.31    37.6575   39.30646 38.64688  0.65958333  34.61583
##  [79,]  35.21    37.5000   39.11563 38.46938  0.64625000  39.30646
##  [80,]  31.00    37.2750   37.46146 37.38688  0.07458333  39.11563
##  [81,]  74.03    45.3875   55.27500 51.32000  3.95500000  37.46146
##  [82,]  72.08    53.0800   69.36229 62.84938  6.51291667  55.27500
##  [83,]  63.85    60.2400   78.98063 71.48438  7.49625000  69.36229
##  [84,]  78.73    72.1725   96.26000 86.62500  9.63500000  78.98063
##  [85,]  37.54    63.0500   64.57396 63.96438  0.60958333  96.26000
##  [86,]  37.44    54.3900   40.93479 46.31688 -5.38208333  64.57396
##  [87,]  37.76    47.8675   28.69667 36.36500 -7.66833333  40.93479
##  [88,]  33.60    36.5850   13.43813 22.69688 -9.25875000  28.69667
##  [89,]  43.52    38.0800   27.82896 31.92938 -4.10041667  13.43813
##  [90,]  43.30    39.5450   37.92104 38.57063 -0.64958333  27.82896
##  [91,]  37.01    39.3575   40.96688 40.32313  0.64375000  37.92104
##  [92,]  32.64    39.1175   39.27167 39.21000  0.06166667  40.96688
##  [93,]  77.04    47.4975   57.69438 53.61563  4.07875000  39.27167
##  [94,]  75.05    55.4350   72.24021 65.51813  6.72208333  57.69438
##  [95,]  66.53    62.8150   82.14625 74.41375  7.73250000  72.24021
##  [96,]  81.79    75.1025   99.91917 89.99250  9.92666667  82.14625
##  [97,]     NA         NA         NA       NA          NA  99.91917
##  [98,]     NA         NA         NA       NA          NA 109.84583
##  [99,]     NA         NA         NA       NA          NA 119.77250
## [100,]     NA         NA         NA       NA          NA 129.69917
## [101,]     NA         NA         NA       NA          NA 139.62583
## [102,]     NA         NA         NA       NA          NA 149.55250
## [103,]     NA         NA         NA       NA          NA 159.47917
## [104,]     NA         NA         NA       NA          NA 169.40583
## [105,]     NA         NA         NA       NA          NA 179.33250
## [106,]     NA         NA         NA       NA          NA 189.25917
## [107,]     NA         NA         NA       NA          NA 199.18583
## [108,]     NA         NA         NA       NA          NA 209.11250
## [109,]     NA         NA         NA       NA          NA 219.03917
## [110,]     NA         NA         NA       NA          NA 228.96583
## [111,]     NA         NA         NA       NA          NA 238.89250
## [112,]     NA         NA         NA       NA          NA 248.81917
## [113,]     NA         NA         NA       NA          NA 258.74583
## [114,]     NA         NA         NA       NA          NA 268.67250
## [115,]     NA         NA         NA       NA          NA 278.59917
## [116,]     NA         NA         NA       NA          NA 288.52583
## [117,]     NA         NA         NA       NA          NA 298.45250
## [118,]     NA         NA         NA       NA          NA 308.37917
## [119,]     NA         NA         NA       NA          NA 318.30583
## [120,]     NA         NA         NA       NA          NA 328.23250

5.4.3 Plot hasil DMA

Hasil pemulusan menggunakan metode DMA divisualisasikan sebagai berikut.

ts.plot(dt.set.ts, xlab="Time Period", ylab="Produksi Karet Kering", main= "DMA N=4 Data Produksi Karet Kering")
points(dt.set.ts)
lines(data.gab2[,3],col="cyan4",lwd=2)
lines(data.gab2[,6],col="red2",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), lty=8, col=c("black","cyan4","red2"), cex=0.8)

5.4.4 Akurasi data ramal

Selanjutnya perhitungan akurasi dilakukan baik pada dt.ramal maupun dt.uji. Perhitungan akurasi dilakukan dengan ukuran akurasi SSE, MSE dan MAPE.

#Menghitung nilai keakuratan dt.ramal
error_dt.ramal.dma = dt.ramal_ma.ts-data.ramal2[1:length(dt.ramal_ma.ts)]
SSE_dt.ramal.dma = sum(error_dt.ramal.dma[8:length(dt.ramal_ma.ts)]^2)
MSE_dt.ramal.dma = mean(error_dt.ramal.dma[8:length(dt.ramal_ma.ts)]^2)
MAPE_dt.ramal.dma = mean(abs((error_dt.ramal.dma[8:length(dt.ramal_ma.ts)]/dt.ramal_ma.ts[8:length(dt.ramal_ma.ts)])*100))

akurasi_dt.ramal.dma <- matrix(c(SSE_dt.ramal.dma, MSE_dt.ramal.dma, MAPE_dt.ramal.dma))
row.names(akurasi_dt.ramal.dma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_dt.ramal.dma) <- c("Akurasi m = 4")
akurasi_dt.ramal.dma
##      Akurasi m = 4
## SSE    14660.64830
## MSE      164.72639
## MAPE      18.91563

Perhitungan akurasi dt.ramal menggunakan nilai MAPE menghasilkan nilai MAPE sebesar 18.92 sehingga dikategorikan baik. Selanjutnya, perhitungan akurasi dilakukan pada dt.uji.

5.4.5 Akurasi data uji

#Menghitung nilai keakuratan dt.uji
error_dt.uji.dma = dt.uji_ma.ts-data.gab2[97:120,6]
SSE_dt.uji.dma = sum(error_dt.uji.dma^2)
MSE_dt.uji.dma = mean(error_dt.uji.dma^2)
MAPE_dt.uji.dma = mean(abs((error_dt.uji.dma/dt.uji_ma.ts*100)))

akurasi_dt.uji.dma <- matrix(c(SSE_dt.uji.dma, MSE_dt.uji.dma, MAPE_dt.uji.dma))
row.names(akurasi_dt.uji.dma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_dt.uji.dma) <- c("Akurasi m = 4")
akurasi_dt.uji.dma
##      Akurasi m = 4
## SSE    778950.8765
## MSE     32456.2865
## MAPE      373.9132

Perhitungan akurasi menggunakan dt.uji menghasilkan nilai MAPE yang besar yakni 373.91, sehingga nilai akurasi ini tidak baik.

5.4.6 Kesimpulan dari DMA

library(kableExtra)
tabelSMA<-cbind(MAPE_dt.ramal.dma,MAPE_dt.uji.dma)
kable(tabelSMA,caption="Tabel Akurasi Metode DMA")
Tabel Akurasi Metode DMA
MAPE_dt.ramal.dma MAPE_dt.uji.dma
18.91563 373.9132

Pada dt.ramal maupun dt.uji, metode SMA lebih baik dibandingkan dengan menggunakan metode DMA. Hal tersebut dapat dilihat dari nilai MAPE yang diberikan oleh pemulusan dengan SMA lebih kecil dibandingkan dengan DMA. Pada DMA nilai MAPE data ramal sebesar 18.92 yang lebih besar daripada nilai MAPE data ramal pada SMA yaitu 15.61, kemudian untuk MAPE data uji pada DMA didapatkan 373.91 yang juga lebih besar dibandingkan MAPE data uji SMA yaitu 69.76.

6. Single Exponential Smoothing & Double Exponential Smoothing

Metode Exponential Smoothing adalah metode pemulusan dengan melakukan pembobotan menurun secara eksponensial. Nilai yang lebih baru diberi bobot yang lebih besar dari nilai terdahulu. Terdapat satu atau lebih parameter pemulusan yang ditentukan secara eksplisit, dan hasil pemilihan parameter tersebut akan menentukan bobot yang akan diberikan pada nilai pengamatan. Ada dua macam model, yaitu model tunggal dan ganda.

6.1 Pembagian data

Data yang digunakan masih sama dengan pembagian data yang telah dilakukan pada tahapan sebelumnya, yakni 80% untuk data ramal serta 20% untuk data uji.

#Membagi forecasting dan testing
forecasting<-dt.set[1:96,]
testing<-dt.set[97:120,]
forecast.ts<-ts(forecasting$`Produksi Karet Kering`)
test.ts<-ts(testing$`Produksi Karet Kering`)

6.2 Eksplorasi

Eksplorasi dilakukan dengan membuat plot data deret waktu untuk keseluruhan data, data ramal, dan data uji. Hal ini sama dengan hasil yang sebelumnya.

#Eksplorasi data, sama serperti sebelumnya
plot(dt.set.ts, col="blueviolet",main="Plot Semua Data")
points(dt.set)

#Plot data ramal
plot(forecast.ts, col = "brown2",main="Plot Data Ramal")
points(forecast.ts)

#Plot data uji
plot(test.ts, col="cyan3", main="Plot Data Uji")
points(test.ts)

#Dengan package GGPLOT
library(ggplot2)
ggplot() + 
  geom_line(data = forecasting, aes(x = Periode, y = `Produksi Karet Kering`, col = "Data Ramal")) +
  geom_line(data = testing, aes(x = Periode, y = `Produksi Karet Kering`, col = "Data Uji")) +
  labs(x = "Periode Waktu", y = "Produksi Karet Kering", color = "Legend") +
  scale_colour_manual(name="Keterangan:", breaks = c("Data Ramal", "Data Uji"),
                      values = c("cyan3", "brown2")) + 
  theme_bw() + theme(legend.position = "bottom",
                     plot.caption = element_text(hjust=0.5, size=12))

6.3 SES

6.3.1 Penjelasan SES

Single Exponential Smoothing merupakan metode pemulusan yang tepat digunakan untuk data dengan pola stasioner atau konstan.

Nilai pemulusan pada periode ke-t didapat dari persamaan:\[ \tilde{y}_T=\lambda y_t+(1-\lambda)\tilde{y}_{T-1} \]

Nilai parameter \(\lambda\) adalah nilai antara 0 dan 1.

Nilai pemulusan periode ke-t bertindak sebagai nilai ramalan pada periode ke-\((T+\tau)\).

\[ \tilde{y}_{T+\tau}(T)=\tilde{y}_T \]

Pemulusan dengan metode SES dapat dilakukan dengan dua fungsi dari packages berbeda, yaitu (1) fungsi ses() dari packages forecast dan (2) fungsi HoltWinters dari packages stats .

6.3.2 Pemulusan SES dengan fungsi, holt winter, dan menggunakan autoplot

Dengan menggunakan h=24 serta alpha =0.2 serta 0.7.

#Dengan cara fungsi SES
ses.1 <- ses(forecast.ts, h = 24, alpha = 0.2)
plot(ses.1)

ses.1
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  97       61.27642 47.97916 74.57368 40.94002 81.61283
##  98       61.27642 47.71582 74.83702 40.53728 82.01557
##  99       61.27642 47.45750 75.09534 40.14221 82.41064
## 100       61.27642 47.20392 75.34892 39.75439 82.79845
## 101       61.27642 46.95483 75.59801 39.37344 83.17940
## 102       61.27642 46.71000 75.84284 38.99901 83.55384
## 103       61.27642 46.46922 76.08363 38.63076 83.92209
## 104       61.27642 46.23229 76.32056 38.26841 84.28444
## 105       61.27642 45.99903 76.55381 37.91167 84.64118
## 106       61.27642 45.76928 76.78356 37.56030 84.99255
## 107       61.27642 45.54289 77.00996 37.21406 85.33878
## 108       61.27642 45.31971 77.23314 36.87273 85.68011
## 109       61.27642 45.09961 77.45324 36.53612 86.01673
## 110       61.27642 44.88246 77.67039 36.20402 86.34883
## 111       61.27642 44.66815 77.88470 35.87626 86.67659
## 112       61.27642 44.45657 78.09628 35.55268 87.00017
## 113       61.27642 44.24762 78.30523 35.23312 87.31973
## 114       61.27642 44.04120 78.51164 34.91743 87.63542
## 115       61.27642 43.83723 78.71562 34.60548 87.94737
## 116       61.27642 43.63561 78.91723 34.29713 88.25572
## 117       61.27642 43.43627 79.11657 33.99227 88.56058
## 118       61.27642 43.23914 79.31371 33.69078 88.86207
## 119       61.27642 43.04414 79.50871 33.39255 89.16030
## 120       61.27642 42.85120 79.70165 33.09747 89.45537
ses.2<- ses(forecast.ts, h = 24, alpha = 0.7)
plot(ses.2)

ses.2
##     Point Forecast    Lo 80     Hi 80    Lo 95     Hi 95
##  97       77.68759 65.39093  89.98426 58.88147  96.49372
##  98       77.68759 62.67760  92.69758 54.73179 100.64339
##  99       77.68759 60.38465  94.99053 51.22503 104.15016
## 100       77.68759 58.36187  97.01332 48.13144 107.24374
## 101       77.68759 56.53161  98.84357 45.33231 110.04288
## 102       77.68759 54.84755 100.52763 42.75676 112.61842
## 103       77.68759 53.27941 102.09578 40.35850 115.01669
## 104       77.68759 51.80611 103.56908 38.10527 117.26991
## 105       77.68759 50.41227 104.96291 35.97359 119.40160
## 106       77.68759 49.08628 106.28891 33.94566 121.42953
## 107       77.68759 47.81910 107.55609 32.00767 123.36751
## 108       77.68759 46.60353 108.77165 30.14862 125.22656
## 109       77.68759 45.43374 109.94144 28.35958 127.01560
## 110       77.68759 44.30492 111.07026 26.63320 128.74198
## 111       77.68759 43.21304 112.16214 24.96332 130.41187
## 112       77.68759 42.15470 113.22049 23.34472 132.03046
## 113       77.68759 41.12698 114.24821 21.77296 133.60223
## 114       77.68759 40.12737 115.24782 20.24419 135.13100
## 115       77.68759 39.15368 116.22150 18.75506 136.62012
## 116       77.68759 38.20400 117.17119 17.30265 138.07254
## 117       77.68759 37.27663 118.09856 15.88435 139.49083
## 118       77.68759 36.37006 119.00512 14.49789 140.87730
## 119       77.68759 35.48297 119.89221 13.14120 142.23399
## 120       77.68759 34.61414 120.76104 11.81244 143.56274

Untuk mendapatkan gambar hasil pemulusan pada data forecast dengan fungsi ses() , perlu digunakan fungsi autoplot() dan autolayer() dari library packages ggplot2 .

autoplot(ses.1) +
  autolayer(fitted(ses.1), series="Fitted") +
  ylab("Produksi Karet Kering") + xlab("Periode")

autoplot(ses.2) +
  autolayer(fitted(ses.2), series="Fitted") +
  ylab("Produksi Karet Kering") + xlab("Periode")

Pada fungsi ses() , terdapat beberapa argumen yang umum digunakan, yaitu nilai y , gamma , beta , alpha , dan h .

Nilai y adalah nilai data deret waktu, gamma adalah parameter pemulusan untuk komponen musiman, beta adalah parameter pemulusan untuk tren, dan alpha adalah parameter pemulusan untuk stasioner, serta h adalah banyaknya periode yang akan diramalkan.

Kasus di atas merupakan contoh inisialisasi nilai parameter λ dengan nilai alpha 0,2 dan 0,7 dan banyak periode data yang akan diramalkan adalah sebanyak 24 periode. Selanjutnya akan digunakan fungsi HoltWinters() dengan nilai inisialisasi parameter dan panjang periode peramalan yang sama dengan fungsi ses() .

#Dengan fungsi Holtwinter (cara kedua)
#alpha = 0.2
ses1<- HoltWinters(forecast.ts, gamma = FALSE, beta = FALSE, alpha = 0.2)
plot(ses1)

#Ramalan
ramalan1<- forecast(ses1, h=24)
ramalan1
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
##  97       61.27642 47.94624 74.60661 40.88967 81.66318
##  98       61.27642 47.68225 74.87059 40.48593 82.06691
##  99       61.27642 47.42329 75.12955 40.08989 82.46296
## 100       61.27642 47.16908 75.38376 39.70111 82.85174
## 101       61.27642 46.91938 75.63347 39.31922 83.23363
## 102       61.27642 46.67394 75.87891 38.94385 83.60899
## 103       61.27642 46.43256 76.12029 38.57469 83.97815
## 104       61.27642 46.19504 76.35780 38.21144 84.34140
## 105       61.27642 45.96121 76.59164 37.85383 84.69902
## 106       61.27642 45.73089 76.82195 37.50159 85.05126
## 107       61.27642 45.50394 77.04891 37.15449 85.39836
## 108       61.27642 45.28020 77.27264 36.81232 85.74053
## 109       61.27642 45.05956 77.49329 36.47487 86.07798
## 110       61.27642 44.84187 77.71098 36.14194 86.41090
## 111       61.27642 44.62703 77.92582 35.81337 86.73947
## 112       61.27642 44.41493 78.13792 35.48899 87.06385
## 113       61.27642 44.20546 78.34739 35.16864 87.38421
## 114       61.27642 43.99853 78.55431 34.85217 87.70068
## 115       61.27642 43.79405 78.75879 34.53945 88.01340
## 116       61.27642 43.59194 78.96091 34.23034 88.32251
## 117       61.27642 43.39211 79.16074 33.92472 88.62812
## 118       61.27642 43.19448 79.35836 33.62248 88.93036
## 119       61.27642 42.99900 79.55385 33.32351 89.22933
## 120       61.27642 42.80558 79.74727 33.02771 89.52514
#alpha = 0.7
ses2<- HoltWinters(forecast.ts, gamma = FALSE, beta = FALSE, alpha = 0.7)
plot(ses2)

#Ramalan
ramalan2<- forecast(ses2, h=24)
ramalan2
##     Point Forecast    Lo 80     Hi 80    Lo 95     Hi 95
##  97       77.68759 65.40007  89.97512 58.89545  96.47974
##  98       77.68759 62.68876  92.68643 54.74885 100.62633
##  99       77.68759 60.39751  94.97767 51.24470 104.13048
## 100       77.68759 58.37623  96.99895 48.15342 107.22177
## 101       77.68759 56.54734  98.82785 45.35636 110.01882
## 102       77.68759 54.86453 100.51065 42.78273 112.59245
## 103       77.68759 53.29755 102.07763 40.38625 114.98894
## 104       77.68759 51.82535 103.54984 38.13470 117.24048
## 105       77.68759 50.43255 104.94264 36.00460 119.37059
## 106       77.68759 49.10754 106.26764 33.97818 121.39701
## 107       77.68759 47.84130 107.53388 32.04163 123.33356
## 108       77.68759 46.62664 108.74855 30.18396 125.19122
## 109       77.68759 45.45772 109.91746 28.39626 126.97893
## 110       77.68759 44.32974 111.04545 26.67116 128.70403
## 111       77.68759 43.23867 112.13651 25.00251 130.37267
## 112       77.68759 42.18111 113.19407 23.38512 131.99007
## 113       77.68759 41.15416 114.22103 21.81453 133.56066
## 114       77.68759 40.15529 115.21989 20.28689 135.08829
## 115       77.68759 39.18233 116.19286 18.79887 136.57631
## 116       77.68759 38.23335 117.14183 17.34754 138.02765
## 117       77.68759 37.30667 118.06852 15.93030 139.44489
## 118       77.68759 36.40078 118.97440 14.54486 140.83032
## 119       77.68759 35.51435 119.86084 13.18918 142.18600
## 120       77.68759 34.64617 120.72902 11.86141 143.51377

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 .

6.3.3 Pemulusan ses dengan optimum fungsi, holt winter, serta plot

#SES
ses.opt <- ses(forecast.ts, h = 24, alpha = NULL)
plot(ses.opt)

ses.opt
##     Point Forecast    Lo 80     Hi 80    Lo 95     Hi 95
##  97       77.77087 65.47434  90.06739 58.96496  96.57678
##  98       77.77087 62.71923  92.82251 54.75137 100.79037
##  99       77.77087 60.39562  95.14612 51.19772 104.34402
## 100       77.77087 58.34803  97.19371 48.06620 107.47554
## 101       77.77087 56.49661  99.04513 45.23470 110.30704
## 102       77.77087 54.79389 100.74784 42.63061 112.91112
## 103       77.77087 53.20893 102.33281 40.20662 115.33511
## 104       77.77087 51.72022 103.82152 37.92984 117.61190
## 105       77.77087 50.31211 105.22963 35.77632 119.76542
## 106       77.77087 48.97276 106.56898 33.72796 121.81377
## 107       77.77087 47.69300 107.84874 31.77073 123.77100
## 108       77.77087 46.46550 109.07623 29.89345 125.64829
## 109       77.77087 45.28436 110.25738 28.08704 127.45469
## 110       77.77087 44.14468 111.39706 26.34405 129.19769
## 111       77.77087 43.04238 112.49936 24.65823 130.88351
## 112       77.77087 41.97401 113.56773 23.02429 132.51744
## 113       77.77087 40.93661 114.60513 21.43773 134.10401
## 114       77.77087 39.92764 115.61410 19.89464 135.64709
## 115       77.77087 38.94488 116.59686 18.39164 137.15009
## 116       77.77087 37.98639 117.55535 16.92576 138.61598
## 117       77.77087 37.05045 118.49128 15.49437 140.04737
## 118       77.77087 36.13555 119.40619 14.09515 141.44659
## 119       77.77087 35.24033 120.30141 12.72602 142.81572
## 120       77.77087 34.36356 121.17818 11.38512 144.15662
#Lamda Optimum Holt Winter
sesopt<- HoltWinters(forecast.ts, gamma = FALSE, beta = FALSE,alpha = NULL)
sesopt
## Holt-Winters exponential smoothing without trend and without seasonal component.
## 
## Call:
## HoltWinters(x = forecast.ts, alpha = NULL, beta = FALSE, gamma = FALSE)
## 
## Smoothing parameters:
##  alpha: 0.7085903
##  beta : FALSE
##  gamma: FALSE
## 
## Coefficients:
##      [,1]
## a 77.8083
plot(sesopt)

#Ramalan
ramalanopt<- forecast(sesopt, h=24)
ramalanopt
##     Point Forecast    Lo 80     Hi 80    Lo 95     Hi 95
##  97        77.8083 65.52089  90.09571 59.01633  96.60027
##  98        77.8083 62.74883  92.86777 54.77683 100.83977
##  99        77.8083 60.41304  95.20356 51.20455 104.41205
## 100        77.8083 58.35574  97.26086 48.05817 107.55843
## 101        77.8083 56.49611  99.12049 45.21412 110.40248
## 102        77.8083 54.78621 100.83039 42.59905 113.01755
## 103        77.8083 53.19481 102.42179 40.16521 115.45139
## 104        77.8083 51.70023 103.91637 37.87945 117.73715
## 105        77.8083 50.28670 105.32990 35.71764 119.89896
## 106        77.8083 48.94230 106.67430 33.66156 121.95503
## 107        77.8083 47.65779 107.95881 31.69708 123.91952
## 108        77.8083 46.42581 109.19079 29.81293 125.80367
## 109        77.8083 45.24041 110.37619 28.00000 127.61660
## 110        77.8083 44.09665 111.51994 26.25079 129.36581
## 111        77.8083 42.99046 112.62614 24.55900 131.05760
## 112        77.8083 41.91834 113.69826 22.91934 132.69726
## 113        77.8083 40.87733 114.73927 21.32725 134.28935
## 114        77.8083 39.86487 115.75173 19.77883 135.83777
## 115        77.8083 38.87873 116.73787 18.27066 137.34594
## 116        77.8083 37.91696 117.69964 16.79977 138.81683
## 117        77.8083 36.97785 118.63875 15.36351 140.25309
## 118        77.8083 36.05985 119.55675 13.95955 141.65705
## 119        77.8083 35.16161 120.45499 12.58581 143.03079
## 120        77.8083 34.28190 121.33470 11.24041 144.37619

Setelah dilakukan peramalan, akan dilakukan perhitungan keakuratan hasil peramalan. Perhitungan akurasi ini dilakukan baik pada data ramal dan data uji.

6.3.4 Akurasi data ramal

#Keakuratan Metode -> pada data forecast/ramal
SSE1<-ses1$SSE
MSE1<-ses1$SSE/length(forecast.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         10203.6243
## MSE           106.2878
## RMSE           10.3096
SSE2<-ses2$SSE
MSE2<-ses2$SSE/length(forecast.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        8657.874662
## MSE          90.186194
## RMSE          9.496641

Diperoleh SSE sebesar 10203.62, MSE 106.29, dan RMSE 10.31 untuk lamda = 0.2, SSE sebesar 8657.87, MSE 90.19, dan RMSE 9.50 untuk lamda = 0.7.

#Cara Manual (lamda=0.2)
fitted1<-ramalan1$fitted
sisaan1<-ramalan1$residuals
head(sisaan1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]    NA -4.50 -9.00 -8.50  1.60 -2.42
resid1<-forecasting$`Produksi Karet Kering`-ramalan1$fitted
head(resid1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]    NA -4.50 -9.00 -8.50  1.60 -2.42
SSE.1=sum(sisaan1[2:length(forecast.ts)]^2)
SSE.1
## [1] 10203.62
MSE.1 = SSE.1/length(forecast.ts)
MSE.1
## [1] 106.2878
MAPE.1 = sum(abs(sisaan1[2:length(forecast.ts)]/forecast.ts[2:length(forecast.ts)])*
               100)/length(forecast.ts)
MAPE.1
## [1] 14.43152
akurasi.1 <- matrix(c(SSE.1,MSE.1,MAPE.1))
row.names(akurasi.1)<- c("SSE", "MSE", "MAPE")
colnames(akurasi.1) <- c("Akurasi lamda=0.2")
akurasi.1
##      Akurasi lamda=0.2
## SSE        10203.62429
## MSE          106.28775
## MAPE          14.43152
#Cara Manual (lamda=0.7)
fitted2<-ramalan2$fitted
sisaan2<-ramalan2$residuals
head(sisaan2)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA -4.50000 -6.75000 -3.32500  7.40250 -1.47925
resid2<-forecasting$`Produksi Karet Kering`-ramalan2$fitted
head(resid2)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA -4.50000 -6.75000 -3.32500  7.40250 -1.47925
SSE.2=sum(sisaan2[2:length(forecast.ts)]^2)
SSE.2
## [1] 8657.875
MSE.2 = SSE.2/length(forecast.ts)
MSE.2
## [1] 90.18619
MAPE.2 = sum(abs(sisaan2[2:length(forecast.ts)]/forecast.ts[2:length(forecast.ts)])*
               100)/length(forecast.ts)
MAPE.2
## [1] 12.24126
akurasi.2 <- matrix(c(SSE.2,MSE.2,MAPE.2))
row.names(akurasi.2)<- c("SSE", "MSE", "MAPE")
colnames(akurasi.2) <- c("Akurasi lamda=0.7")
akurasi.2
##      Akurasi lamda=0.7
## SSE         8657.87466
## MSE           90.18619
## MAPE          12.24126

Berdasarkan nilai SSE, MSE, RMSE, dan MAPE di antara kedua parameter, nilai parameter \(\lambda=0,7\) menghasilkan akurasi yang lebih baik dibandingkan \(\lambda=0,2\). Hal ini dilihat dari nilai masing-masing ukuran akurasi yang lebih kecil. Berdasarkan nilai MAPE-nya, hasil ini dapat dikategorikan sebagai peramalan yang sangat baik. MAPE \(\lambda=0,2\) dan \(\lambda=0,7\) secara berturut-turut sebesar 14.43 dan 12.24.

6.3.5 Akurasi data uji

Akurasi data uji dapat dihitung dengan cara yang hampir sama dengan perhitungan akurasi data latih.

selisih1<-ramalan1$mean-testing$`Produksi Karet Kering`
SSEtesting1<-sum(selisih1^2)
MSEtesting1<-SSEtesting1/length(testing)

selisih2<-ramalan2$mean-testing$`Produksi Karet Kering`
SSEtesting2<-sum(selisih2^2)
MSEtesting2<-SSEtesting2/length(testing)

selisihopt<-ramalanopt$mean-testing$`Produksi Karet Kering`
SSEtestingopt<-sum(selisihopt^2)
MSEtestingopt<-SSEtestingopt/length(testing)

akurasitesting1 <- matrix(c(SSEtesting1,SSEtesting2,SSEtestingopt))
row.names(akurasitesting1)<- c("SSE1", "SSE2", "SSEopt")
akurasitesting1
##             [,1]
## SSE1    9374.694
## SSE2   26385.467
## SSEopt 26558.478
akurasitesting2 <- matrix(c(MSEtesting1,MSEtesting2,MSEtestingopt))
row.names(akurasitesting2)<- c("MSE1", "MSE2", "MSEopt")
akurasitesting2
##             [,1]
## MSE1    4687.347
## MSE2   13192.734
## MSEopt 13279.239

Selain dengan cara di atas, perhitungan nilai akurasi dapat menggunakan fungsi accuracy() dari package forecast . Penggunaannya yaitu dengan menuliskan accuracy(hasil ramalan, kondisi aktual) .

#Cara alternatif
accuracy(ramalanopt,testing$`Produksi Karet Kering`)
##                       ME      RMSE       MAE        MPE     MAPE     MASE
## Training set   0.4131004  9.546261  6.190649  -1.465869 12.33682 1.068381
## Test set     -29.9207996 33.265647 30.745391 -73.992447 74.97842 5.306033
##                    ACF1
## Training set 0.04588025
## Test set             NA

Karena memiliki MAPE yang cukup besar untuk ramalan optimum (untuk training 12.34 dan testing 74.98), sehingga memiliki tingkat akurasi yang belum baik. Berikutnya akan dicoba metode pemulusan dengan DES.

Oleh karena itu, diperoleh untuk lamda 0.2 dengan akurasi data ramal = 14.43 (MAPE) dan akurasi data uji sebesar = 9374.69 (SSE). Untuk lamda 0.7 diperoleh akurasi data ramal = 12.24 (MAPE) dan akurasi data uji sebesar = 26385.47 (SSE). Sedangkan untuk akurasi dengan lamda optimum diperoleh akurasi data ramal = 12.34 (MAPE) dan akurasi data latih = 74.98 (MAPE).

6.4 DES

6.4.1 Penjelasan pemulusan 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 .

6.4.2 Melakukan pemulusan metode DES serta plotnya

Menggunakan parameter lamda=0.2, gamma=0.2 serta lamda=0.6, gamma=0.3.

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

#Ramalan
ramalandes1<- forecast(des.1, h=24)
ramalandes1
##     Point Forecast    Lo 80     Hi 80    Lo 95     Hi 95
##  97       65.96863 50.85246  81.08480 42.85045  89.08681
##  98       68.61154 53.06612  84.15696 44.83687  92.38621
##  99       71.25445 55.14314  87.36576 46.61433  95.89458
## 100       73.89737 57.07558  90.71915 48.17066  99.62407
## 101       76.54028 58.86017  94.22038 49.50089 103.57966
## 102       79.18319 60.49775  97.86863 50.60627 107.76011
## 103       81.82610 61.99221 101.65999 51.49279 112.15941
## 104       84.46901 63.34961 105.58841 52.16967 116.76835
## 105       87.11192 64.57717 109.64668 52.64799 121.57586
## 106       89.75484 65.68260 113.82707 52.93953 126.57014
## 107       92.39775 66.67360 118.12190 53.05606 131.73944
## 108       95.04066 67.55749 122.52383 53.00877 137.07255
## 109       97.68357 68.34107 127.02607 52.80808 142.55906
## 110      100.32648 69.03054 131.62243 52.46346 148.18950
## 111      102.96939 69.63147 136.30731 51.98344 153.95534
## 112      105.61231 70.14886 141.07575 51.37564 159.84897
## 113      108.25522 70.58713 145.92330 50.64685 165.86358
## 114      110.89813 70.95024 150.84602 49.80310 171.99315
## 115      113.54104 71.24169 155.84039 48.84977 178.23232
## 116      116.18395 71.46461 160.90329 47.79162 184.57628
## 117      118.82686 71.62180 166.03193 46.63295 191.02078
## 118      121.46978 71.71576 171.22379 45.37758 197.56197
## 119      124.11269 71.74874 176.47663 44.02895 204.19643
## 120      126.75560 71.72278 181.78842 42.59017 210.92103
#Lamda=0.6 dan gamma=0.3
des.2<- HoltWinters(forecast.ts, gamma = FALSE, beta = 0.3, alpha = 0.6)
plot(des.2)

#Ramalan
ramalandes2<- forecast(des.2, h=24)
ramalandes2
##     Point Forecast    Lo 80    Hi 80     Lo 95    Hi 95
##  97       86.38461 72.70305 100.0662  65.46047 107.3087
##  98       92.84343 75.49210 110.1948  66.30686 119.3800
##  99       99.30224 77.54039 121.0641  66.02036 132.5841
## 100      105.76106 78.98712 132.5350  64.81385 146.7083
## 101      112.21988 79.92444 144.5153  62.82827 161.6115
## 102      118.67870 80.41433 156.9431  60.15840 177.1990
## 103      125.13752 80.50039 169.7746  56.87093 193.4041
## 104      131.59633 80.21484 182.9778  53.01511 210.1776
## 105      138.05515 79.58253 196.5278  48.62899 227.4813
## 106      144.51397 78.62337 210.4046  43.74300 245.2849
## 107      150.97279 77.35379 224.5918  38.38225 263.5633
## 108      157.43161 75.78765 239.0756  32.56795 282.2953
## 109      163.89042 73.93690 253.8439  26.31838 301.4625
## 110      170.34924 71.81199 268.8865  19.64952 321.0490
## 111      176.80806 69.42219 284.1939  12.57555 341.0406
## 112      183.26688 66.77581 299.7579   5.10916 361.4246
## 113      189.72570 63.88033 315.5711  -2.73818 382.1896
## 114      196.18451 60.74260 331.6264 -10.95602 403.3250
## 115      202.64333 57.36887 347.9178 -19.53478 424.8214
## 116      209.10215 53.76492 364.4394 -28.46564 446.6699
## 117      215.56097 49.93609 381.1858 -37.74042 468.8624
## 118      222.01979 45.88736 398.1522 -47.35152 491.3911
## 119      228.47860 41.62335 415.3339 -57.29184 514.2490
## 120      234.93742 37.14843 432.7264 -67.55473 537.4296

Selanjutnya jika ingin membandingkan plot data ramal dan data uji adalah sebagai berikut.

#Visually evaluate the prediction
plot(dt.set.ts)
lines(des.1$fitted[,1], lty=2, col="blue")
lines(ramalandes1$mean, col="red")

6.4.3 Metode pemulusan DES optimum

Untuk mendapatkan nilai parameter optimum dari DES, argumen alpha dan beta dapat dibuat NULL seperti berikut.

#Lamda dan gamma optimum
des.opt<- HoltWinters(forecast.ts, gamma = FALSE)
des.opt
## Holt-Winters exponential smoothing with trend and without seasonal component.
## 
## Call:
## HoltWinters(x = forecast.ts, gamma = FALSE)
## 
## Smoothing parameters:
##  alpha: 0.774612
##  beta : 0.05266104
##  gamma: FALSE
## 
## Coefficients:
##        [,1]
## a 79.005407
## b  1.528393
plot(des.opt)

#Ramalan
ramalandesopt<- forecast(des.opt, h=24)
ramalandesopt
##     Point Forecast    Lo 80     Hi 80       Lo 95     Hi 95
##  97       80.53380 67.84439  93.22321 61.12702210  99.94058
##  98       82.06219 65.68900  98.43539 57.02155685 107.10283
##  99       83.59059 63.94062 103.24056 53.53854873 113.64262
## 100       85.11898 62.41046 107.82750 50.38929620 119.84866
## 101       86.64737 61.00983 112.28492 47.43813056 125.85661
## 102       88.17576 59.68931 116.66222 44.60949861 131.74203
## 103       89.70416 58.41846 120.98986 41.85680581 137.55151
## 104       91.23255 57.17713 125.28797 39.14928467 143.31582
## 105       92.76094 55.95140 129.57049 36.46560217 149.05629
## 106       94.28934 54.73122 133.84745 33.79041854 154.78825
## 107       95.81773 53.50918 138.12628 31.11239107 160.52307
## 108       97.34612 52.27968 142.41256 28.42294729 166.26930
## 109       98.87452 51.03840 146.71063 25.71549529 172.03354
## 110      100.40291 49.78199 151.02383 22.98489589 177.82092
## 111      101.93130 48.50779 155.35481 20.22709856 183.63550
## 112      103.45969 47.21371 159.70568 17.43888347 189.48050
## 113      104.98809 45.89805 164.07812 14.61767466 195.35850
## 114      106.51648 44.55946 168.47350 11.76140189 201.27156
## 115      108.04487 43.19686 172.89289  8.86839681 207.22135
## 116      109.57327 41.80936 177.33717  5.93731366 213.20922
## 117      111.10166 40.39625 181.80707  2.96706797 219.23625
## 118      112.63005 38.95696 186.30314 -0.04321143 225.30331
## 119      114.15844 37.49105 190.82584 -3.09422042 231.41111
## 120      115.68684 35.99814 195.37554 -6.18650989 237.56018

Selanjutnya akan dilakukan perhitungan akurasi pada data latih maupun data uji dengan ukuran akurasi SSE, MSE dan MAPE.

6.4.4 Akurasi data ramal

#Akurasi data ramal
ssedes.forecast1<-des.1$SSE
msedes.forecast1<-ssedes.forecast1/length(forecast.ts)
sisaandes1<-ramalandes1$residuals
head(sisaandes1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]       NA       NA -0.90000  2.51600 14.84816 12.01996
mapedes.forecast1 <- sum(abs(sisaandes1[3:length(forecast.ts)]/forecast.ts[3:length(forecast.ts)])
                      *100)/length(forecast.ts)

akurasides.1 <- matrix(c(ssedes.forecast1,msedes.forecast1,mapedes.forecast1))
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                       13278.0436
## MSE                         138.3130
## MAPE                         16.7852

Diperoleh nilai MAPE sebesar 16.78 untuk metode DES dengan lamda=0.2 dan gamma=0.2.

ssedes.forecast2<-des.2$SSE
msedes.forecast2<-ssedes.forecast2/length(forecast.ts)
sisaandes2<-ramalandes2$residuals
head(sisaandes2)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]        NA        NA -0.900000  3.002000 13.722440  3.440577
mapedes.forecast2 <- sum(abs(sisaandes2[3:length(forecast.ts)]/forecast.ts[3:length(forecast.ts)])
                      *100)/length(forecast.ts)

akurasides.2 <- matrix(c(ssedes.forecast2,msedes.forecast2,mapedes.forecast2))
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                      10638.85009
## MSE                        110.82136
## MAPE                        13.61711

Diperoleh nilai MAPE sebesar 13.62 untuk lamda=0.6 dan gamma=0.3. Hasil dari akurasi dari data forecasting didapatkan pada skenario kedua yakni lamda=0.6 dan gamma=0.3 memiliki hasil yang lebih baik. Namun untuk kedua skenario dapat dikategorikan peramalan yang baik berdasarkan nilai MAPE-nya.

6.4.5 Akurasi data uji

#Akurasi data uji
selisihdes1<-ramalandes1$mean-testing$`Produksi Karet Kering`
selisihdes1
## Time Series:
## Start = 97 
## End = 120 
## Frequency = 1 
##  [1] 26.738630 29.251542 31.594453 38.667365 31.010277 33.823189 42.956100
##  [8] 50.149012  7.031924 11.604836 23.067747  9.950659 57.523571 60.316482
## [15] 63.819394 68.882306 65.505218 67.948129 73.261041 80.863953 69.456864
## [22] 70.259776 75.342688 74.365600
SSEtestingdes1<-sum(selisihdes1^2)
MSEtestingdes1<-SSEtestingdes1/length(testing$`Produksi Karet Kering`)
MAPEtestingdes1<-sum(abs(selisihdes1/testing$`Produksi Karet Kering`)*100)/length(testing$`Produksi Karet Kering`)

selisihdes2<-ramalandes2$mean-testing$`Produksi Karet Kering`
selisihdes2
## Time Series:
## Start = 97 
## End = 120 
## Frequency = 1 
##  [1]  47.15461  53.48343  59.64224  70.53106  66.68988  73.31870  86.26752
##  [8]  97.27633  57.97515  66.36397  81.64279  72.34161 123.73042 130.33924
## [15] 137.65806 146.53688 146.97570 153.23451 162.36333 173.78215 166.19097
## [22] 170.80979 179.70860 182.54742
SSEtestingdes2<-sum(selisihdes2^2)
MSEtestingdes2<-SSEtestingdes2/length(testing$`Produksi Karet Kering`)
MAPEtestingdes2<-sum(abs(selisihdes2/testing$`Produksi Karet Kering`)*100)/length(testing$`Produksi Karet Kering`)

selisihdesopt<-ramalandesopt$mean-testing$`Produksi Karet Kering`
selisihdesopt
## Time Series:
## Start = 97 
## End = 120 
## Frequency = 1 
##  [1] 41.30380 42.70219 43.93059 49.88898 41.11737 42.81576 50.83416 56.91255
##  [9] 12.68094 16.13934 26.48773 12.25612 58.71452 60.39291 62.78130 66.72969
## [17] 62.23809 63.56648 67.76487 74.25327 61.73166 61.42005 65.38844 63.29684
SSEtestingdesopt<-sum(selisihdesopt^2)
MSEtestingdesopt<-SSEtestingdesopt/length(testing$`Produksi Karet Kering`)
MAPEtestingdesopt<-sum(abs(selisihdesopt/testing$`Produksi Karet Kering`)*100)/length(testing$`Produksi Karet Kering`)

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  68891.2561 356787.2043 67942.6655
## MSE   2870.4690  14866.1335  2830.9444
## MAPE   114.2049    256.1443   118.6527

Didapakan nilai MAPEnya secara berturut-turut sebesar 114.20, 256.14, dan 118.65 (optimum).

6.5 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    4687.347  2870.469
## ske 2   13192.734 14866.134
## ske opt 13279.239  2830.944

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. Hal ini sesuai sebab metode pemulusan DES lebih baik digunakan untuk data yang trend (bukan stasioner/konstan).

7. Pemulusan Data Musiman

7.1 Pembagian data

Dikarenakan data yang digunakan masih sama, maka sama seperti sebelumnya data akan dibagi dengan cara yang sama. Untuk frequency dicoba menggunakan nilai 3 serta nilai 11, sebab dilihat dari pola datanya membentuk pola yang mirip setiap 3 bulan, maupun 11 bulan.

#Membagi forecasting dan testing
forecasting<-dt.set[1:96,2]
testing<-dt.set[97:120,2]
forecast1.ts<-ts(forecasting, frequency = 3)
test1.ts<-ts(testing, frequency = 3)
forecast2.ts<-ts(forecasting,frequency=11)
test2.ts<-ts(testing, frequency = 11)

7.2 Eksplorasi

Sama seperti sebelumnya, dilakukan eksplorasi dengan plot deret waktu, tentunya akan menghasilkan hasil yang serupa.

#Membuat plot time series
plot(dt.set.ts, col="red",main="Plot Semua Data")
points(dt.set.ts)

#frequency=3
plot(forecast1.ts, col="blue",main="Plot Data Ramal")
points(forecast1.ts)

plot(test1.ts, col="green",main="Plot data Uji")
points(test1.ts)

#frequency=7
plot(forecast2.ts, col="orange",main="Plot Data Ramal")
points(forecast2.ts)

plot(test2.ts, col="pink",main="Plot data Uji")
points(test2.ts)

Metode Holt-Winter untuk peramalan data musiman menggunakan tiga persamaan pemulusan yang terdiri atas persamaan untuk level \((L_t)\) , trend \((B_t)\) , dan komponen seasonal / musiman \((S_t)\) dengan parameter pemulusan berupa \(\alpha\), \(\beta\), dan \(\gamma\). Metode Holt-Winter musiman terbagi menjadi dua, yaitu metode aditif dan metode multiplikatif.

Pemulusan data musiman dengan metode Winter dilakukan menggunakan fungsi HoltWinters() dengan memasukkan argumen tambahan, yaitu gamma() dan seasonal() . Arguman seasonal() diinisialisasi menyesuaikan jenis musiman, aditif atau multiplikatif.

7.3 Winter Aditif

7.3.1 Pemulusan winter aditif

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

#Pemulusan dengan winter aditif (frequency 3)
winter1f3 <- HoltWinters(forecast1.ts,alpha=0.2,beta=0.1,gamma=0.1,seasonal = "additive")
winter1f3$fitted
## Time Series:
## Start = c(2, 1) 
## End = c(32, 3) 
## Frequency = 3 
##               xhat    level       trend      season
##  2.000000 41.37444 44.35000 -0.55333333 -2.42222222
##  2.333333 45.65473 43.28178 -0.60482222  2.97777778
##  2.666667 41.85654 42.98601 -0.57391689 -0.55555556
##  3.000000 39.57156 42.74078 -0.54104762 -2.62817778
##  3.333333 46.13035 43.44543 -0.41647880  3.10139911
##  3.666667 41.21371 42.14288 -0.50508571 -0.42407847
##  4.000000 38.38379 41.07505 -0.56135998 -2.12990252
##  4.333333 42.65887 40.47693 -0.56503571  2.74697147
##  4.666667 38.09073 39.36012 -0.62021306 -0.64917552
##  5.000000 39.29913 41.76176 -0.31802773 -2.14460544
##  5.333333 46.40216 43.94391 -0.06801032  2.52626207
##  5.666667 44.52098 44.01547 -0.05405354  0.55956576
##  6.000000 42.12021 43.37722 -0.11247312 -1.14453580
##  6.333333 45.31191 42.88070 -0.15087728  2.58208921
##  6.666667 43.69421 43.44744 -0.07911557  0.32588746
##  7.000000 42.30033 43.64948 -0.05099985 -1.29815247
##  7.333333 47.56055 44.63842  0.05299351  2.86913606
##  7.666667 44.24543 43.83930 -0.03221743  0.43835033
##  8.000000 41.93669 42.93800 -0.11912613 -0.88217899
##  8.333333 44.73597 42.37153 -0.16385997  2.52829227
##  8.666667 41.40062 41.54048 -0.23057927  0.09071555
##  9.000000 43.03207 44.04978  0.04340840 -1.06111438
##  9.333333 48.99795 46.45677  0.27976698  2.26141506
##  9.666667 48.40582 46.92095  0.29820791  1.18666626
## 10.000000 46.42800 46.33399  0.20969147 -0.11568009
## 10.333333 48.21119 45.74608  0.12993142  2.33517878
## 10.666667 47.59948 46.56778  0.19910757  0.83260051
## 11.000000 46.53358 46.76899  0.19931790 -0.43472030
## 11.333333 50.59932 47.71359  0.27384623  2.61188339
## 11.666667 48.05427 47.04157  0.17925989  0.83344185
## 12.000000 45.98654 46.05998  0.06317446 -0.13660699
## 12.333333 47.52742 45.31184 -0.01795641  2.23353804
## 12.666667 44.81620 44.54040 -0.09330487  0.36910011
## 13.000000 46.85250 47.13786  0.17577122 -0.46113044
## 13.333333 51.38999 49.10313  0.35472127  1.93214419
## 13.666667 51.12598 49.33785  0.34272140  1.44540445
## 14.000000 48.87305 48.40338  0.21500187  0.25466979
## 14.333333 49.46285 47.47777  0.10094090  1.88414470
## 14.666667 49.29775 48.20014  0.16308381  0.93452632
## 15.000000 48.13603 48.19167  0.14592883 -0.20157409
## 15.333333 51.27712 48.93840  0.20600827  2.13271633
## 15.666667 49.20275 48.22298  0.11386585  0.86590640
## 16.000000 47.12265 47.09430 -0.01038920  0.03874369
## 16.333333 47.85368 46.18938 -0.09984220  1.76414666
## 16.666667 45.62517 45.42280 -0.16651582  0.36888619
## 17.000000 47.77476 47.98725  0.10658081 -0.31906832
## 17.333333 52.39621 50.54688  0.35188559  1.49745219
## 17.666667 52.65775 50.84952  0.34696129  1.46127271
## 18.000000 51.89369 50.91293  0.31860622  0.66215079
## 18.333333 52.09869 50.38680  0.23413247  1.47775500
## 18.666667 51.96121 50.40119  0.21215874  1.34785241
## 19.000000 50.06710 49.62911  0.11373463  0.32425581
## 19.333333 52.13368 50.54943  0.19439259  1.38986007
## 19.666667 52.33816 51.14908  0.23491901  0.95415598
## 20.000000 52.68201 51.76237  0.27275585  0.64688762
## 20.333333 55.52480 53.54872  0.42411558  1.55196578
## 20.666667 57.14040 55.46188  0.57301948  1.10550335
## 21.000000 61.91476 59.72082  0.94161146  1.25232652
## 21.333333 61.72438 58.81948  0.75731636  2.14758139
## 21.666667 60.62062 57.49192  0.54882885  2.57987128
## 22.000000 56.74619 55.89662  0.33441647  0.51514609
## 22.333333 55.58093 54.14180  0.12549273  1.31363135
## 22.666667 55.17321 53.41111  0.03987419  1.72222175
## 23.000000 52.27420 52.63634 -0.04158994 -0.32054884
## 23.333333 53.48600 52.55991 -0.04507403  0.97115717
## 23.666667 52.21921 51.01764 -0.19479394  1.39636524
## 24.000000 47.50194 48.28500 -0.44857816 -0.33448520
## 24.333333 46.52770 46.71604 -0.56061696  0.37227752
## 24.666667 45.08994 45.34988 -0.64117091  0.38122839
## 25.000000 43.29151 44.71472 -0.64056967 -0.78264040
## 25.333333 41.80911 42.55185 -0.79279991  0.05006171
## 25.666667 39.97508 40.50923 -0.91778215  0.38363334
## 26.000000 36.37238 38.76443 -1.00048373 -1.39156136
## 26.333333 35.32967 36.86947 -1.08993142 -0.44986724
## 26.666667 36.11751 37.02960 -0.96492483  0.05282702
## 27.000000 34.49275 37.10318 -0.86107495 -1.74935214
## 27.333333 35.58898 36.38555 -0.84672996  0.05015912
## 27.666667 34.15074 34.62103 -0.93850959  0.46822656
## 28.000000 39.82547 41.65837 -0.14092446 -1.69197218
## 28.333333 48.15556 47.96835  0.50416611 -0.31695942
## 28.666667 56.08803 51.61140  0.81805499  3.65856710
## 29.000000 59.11714 56.95785  1.27089447  0.88839011
## 29.333333 55.69127 53.91332  0.83935170  0.93859610
## 29.666667 57.04667 51.10242  0.47432633  5.46992499
## 30.000000 46.97022 47.71941  0.08859293 -0.83778097
## 30.333333 44.43364 45.13396 -0.17881153 -0.52150538
## 30.666667 48.50233 44.77242 -0.19708438  3.92699139
## 31.000000 41.32634 43.53487 -0.30113091 -1.90739881
## 31.333333 41.38842 42.37047 -0.38745771 -0.59459677
## 31.666667 43.18171 40.23333 -0.56242603  3.51080528
## 32.000000 44.30460 46.44256  0.11473979 -2.25270601
## 32.333333 52.14156 52.70638  0.72964787 -1.29447008
## 32.666667 63.55060 56.31372  1.01741666  6.21946856
xhat1f3 <- winter1f3$fitted[,2]

winter1f3.opt<- HoltWinters(forecast1.ts, alpha= NULL,  beta = NULL, gamma = NULL, seasonal = "additive")
winter1f3.opt
## Holt-Winters exponential smoothing with trend and additive seasonal component.
## 
## Call:
## HoltWinters(x = forecast1.ts, alpha = NULL, beta = NULL, gamma = NULL,     seasonal = "additive")
## 
## Smoothing parameters:
##  alpha: 0.7948401
##  beta : 0.001457291
##  gamma: 0.5627274
## 
## Coefficients:
##          [,1]
## a  70.0261792
## b  -0.4461708
## s1 -0.1794088
## s2 -0.5980759
## s3 11.4583774
winter1f3.opt$fitted
## Time Series:
## Start = c(2, 1) 
## End = c(32, 3) 
## Frequency = 3 
##               xhat    level      trend      season
##  2.000000 41.37444 44.35000 -0.5533333 -2.42222222
##  2.333333 44.17186 41.75040 -0.5563153  2.97777778
##  2.666667 42.49261 43.60097 -0.5528078 -0.55555556
##  3.000000 40.57780 43.84888 -0.5516409 -2.71943957
##  3.333333 50.22984 47.44805 -0.5455920  3.32737416
##  3.666667 39.12788 40.12261 -0.5554722 -0.43925273
##  4.000000 36.31573 38.98858 -0.5563153 -2.11654095
##  4.333333 41.71844 39.92996 -0.5541327  2.34261221
##  4.666667 36.85093 37.93046 -0.5562391 -0.52328599
##  5.000000 47.93281 50.36911 -0.5373017 -1.89900347
##  5.333333 54.50546 52.90561 -0.5328223  2.13267453
##  5.666667 47.30943 46.48663 -0.5414002  1.36419922
##  6.000000 39.40659 41.40715 -0.5480135 -1.45253949
##  6.333333 42.22039 41.48976 -0.5470945  1.27772039
##  6.666667 46.41758 46.25189 -0.5393574  0.70505069
##  7.000000 42.76344 44.66526 -0.5408835 -1.36094146
##  7.333333 49.40267 47.88919 -0.5353971  2.04887544
##  7.666667 42.51362 42.50315 -0.5424659  0.55293671
##  8.000000 38.52367 39.88327 -0.5454933 -0.81410977
##  8.333333 41.07297 40.27277 -0.5441308  1.34432787
##  8.666667 39.69602 39.98858 -0.5437520  0.25119678
##  9.000000 50.48431 51.68852 -0.5259093 -0.67830350
##  9.333333 55.49387 54.63264 -0.5208525  1.38208307
##  9.666667 51.18372 49.68145 -0.5273088  2.02957228
## 10.000000 42.71840 43.42834 -0.5356529 -0.17428860
## 10.333333 42.87401 42.67141 -0.5359754  0.73858473
## 10.666667 49.79895 49.12683 -0.5257869  1.19790970
## 11.000000 46.12642 46.86118 -0.5283224 -0.20642964
## 11.333333 50.84892 49.61839 -0.5235344  1.75407351
## 11.666667 45.55330 45.13740 -0.5293016  0.94519687
## 12.000000 41.72017 41.98251 -0.5331278  0.27078807
## 12.333333 42.26254 41.61616 -0.5328848  1.17926107
## 12.666667 42.30620 42.27352 -0.5311502  0.56383406
## 13.000000 54.21339 54.43103 -0.5126592  0.29501302
## 13.333333 56.02080 55.17948 -0.5108214  1.35214161
## 13.666667 52.40097 50.51101 -0.5168803  2.40684028
## 14.000000 43.85732 43.90488 -0.5257541  0.47818595
## 14.333333 43.05452 42.83282 -0.5265502  0.74825059
## 14.666667 50.87641 49.86955 -0.5155283  1.52238820
## 15.000000 47.29795 47.41747 -0.5183504  0.39883598
## 15.333333 51.28583 49.95293 -0.5139001  1.84680391
## 15.666667 46.49204 45.77018 -0.5192467  1.24110626
## 16.000000 42.78647 42.46737 -0.5233032  0.84239703
## 16.333333 42.62605 41.83560 -0.5234613  1.31391000
## 16.666667 43.13306 42.81753 -0.5212675  0.83679885
## 17.000000 55.45457 55.13050 -0.5025642  0.82664217
## 17.333333 59.30792 58.27261 -0.4972529  1.53256497
## 17.666667 54.28136 52.08595 -0.5055440  2.70094903
## 18.000000 50.00997 49.16302 -0.5090668  1.35602563
## 18.333333 46.98846 46.79404 -0.5117773  0.70618894
## 18.666667 51.31350 49.47080 -0.5071306  2.34982677
## 19.000000 46.14072 45.56692 -0.5120807  1.08587759
## 19.333333 52.04765 51.38120 -0.5028614  1.16931826
## 19.666667 53.91335 52.55731 -0.5004146  1.85645509
## 20.000000 53.81330 52.30858 -0.5000478  2.00476935
## 20.333333 57.84527 56.92468 -0.4925921  1.41318674
## 20.666667 61.91178 60.50542 -0.4866561  1.89301165
## 21.000000 73.15191 70.87487 -0.4708356  2.74788032
## 21.333333 55.65834 54.14803 -0.4945253  2.00483197
## 21.666667 53.15959 50.18932 -0.4995736  3.46984111
## 22.000000 46.98227 47.09890 -0.5033493  0.38672493
## 22.333333 47.05078 46.05325 -0.5041395  1.50166548
## 22.666667 51.52087 48.92656 -0.4992176  3.09352405
## 23.000000 47.90107 48.09282 -0.4997051  0.30795719
## 23.333333 52.42798 50.93059 -0.4948414  1.99223465
## 23.666667 47.86918 45.32653 -0.5022871  3.04493494
## 24.000000 38.47670 38.19593 -0.5119464  0.79271952
## 24.333333 41.14711 40.40496 -0.5079812  1.25012949
## 24.666667 42.54808 40.97231 -0.5064141  2.08218416
## 25.000000 43.19466 42.51016 -0.5034350  1.18793608
## 25.333333 36.92795 36.03377 -0.5121394  1.40631997
## 25.666667 36.29972 34.43433 -0.5137239  2.37910996
## 26.000000 33.36132 33.55521 -0.5142564  0.32037496
## 26.333333 32.61187 31.87943 -0.5159490  1.24839110
## 26.666667 40.31218 38.49171 -0.5055611  2.32603626
## 27.000000 38.42651 38.77925 -0.5044053  0.15166642
## 27.333333 37.49386 35.71823 -0.5081311  2.28375355
## 27.666667 31.97411 30.04853 -0.5156530  2.44123330
## 28.000000 62.27397 62.96058 -0.4669391 -0.21967715
## 28.333333 71.36633 70.28787 -0.4555806  1.53404364
## 28.666667 70.69027 63.85801 -0.4642869  7.29654924
## 29.000000 70.24147 69.78402 -0.4549744  0.91242090
## 29.333333 43.51005 43.33661 -0.4928529  0.66628942
## 29.666667 45.74389 38.01904 -0.4998839  8.22472904
## 30.000000 27.80118 31.17324 -0.5091318 -2.86293461
## 30.333333 34.73634 35.27325 -0.5024149 -0.03449213
## 30.666667 48.56319 41.75244 -0.4922407  7.30299642
## 31.000000 34.38500 37.07680 -0.4983371 -2.19346575
## 31.333333 39.14920 38.66492 -0.4952965  0.97957350
## 31.666667 39.18838 32.99585 -0.5028362  6.69536543
## 32.000000 60.22960 62.57900 -0.4589922 -1.89041147
## 32.333333 73.68612 73.89986 -0.4418255  0.22809241
## 32.666667 78.38524 67.77006 -0.4501146 11.06530136
xhat1f3.opt <- winter1f3.opt$fitted[,2]

#Pemulisan dengan winter aditif (frequency 11)
winter1f11 <- HoltWinters(forecast2.ts,alpha=0.2,beta=0.1,gamma=0.1,seasonal = "additive")
winter1f11$fitted
## Time Series:
## Start = c(2, 1) 
## End = c(9, 8) 
## Frequency = 11 
##              xhat    level        trend     season
## 2.000000 52.09857 42.71942  0.227082009  9.1520661
## 2.090909 51.23160 43.16679  0.249110617  7.8157025
## 2.181818 46.37849 43.52958  0.260478563  2.5884298
## 2.272727 40.85224 43.93436  0.274908804 -3.3570248
## 2.363636 39.73711 44.35882  0.289863911 -4.9115702
## 2.454545 47.47427 44.74126  0.299121628  2.4338843
## 2.545455 48.72341 45.32553  0.327636278  3.0702479
## 2.636364 43.58117 44.92848  0.255167999 -1.6024793
## 2.727273 40.76212 45.96742  0.333544562 -5.5388430
## 2.818182 41.19945 46.80854  0.384302194 -5.9933884
## 2.909091 43.63424 46.93295  0.358313164 -3.6570248
## 3.000000 56.02422 46.50442  0.279628405  9.2401805
## 3.090909 51.70752 43.85920 -0.012856078  7.8611743
## 3.181818 47.22598 44.52484  0.054993583  2.6461507
## 3.272727 43.01491 46.10464  0.207473912 -3.2972044
## 3.363636 43.16417 47.69313  0.345575798 -4.8745394
## 3.454545 51.11171 48.20187  0.361892491  2.5479429
## 3.545455 49.79826 46.82942  0.188458350  2.7803748
## 3.636364 46.32915 47.39223  0.225893232 -1.2889731
## 3.727273 42.78999 47.87429  0.251510231 -5.3358124
## 3.818182 43.92337 49.61981  0.400910413 -6.0973445
## 3.909091 46.87812 50.41004  0.439842992 -3.9717638
## 4.000000 58.34178 49.92426  0.347280581  8.0702426
## 4.090909 55.14080 46.98918  0.019044912  8.1325729
## 4.181818 47.77957 44.73207 -0.208571128  3.2560720
## 4.272727 43.87802 46.62158  0.001237481 -2.7447968
## 4.363636 44.43762 49.00722  0.239676995 -4.8092726
## 4.454545 52.73830 50.51737  0.366724582  1.8542063
## 4.545455 52.42131 49.28443  0.206758582  2.9301143
## 4.636364 46.47616 47.64093  0.021732449 -1.1865051
## 4.727273 44.28683 48.88143  0.143609283 -4.7382117
## 4.818182 44.14073 49.85568  0.226672697 -5.9416142
## 4.909091 47.50685 51.48220  0.366658024 -4.3420135
## 5.000000 58.78871 51.68149  0.349921111  6.7572999
## 5.090909 56.12772 48.87167  0.033946889  7.2221088
## 5.181818 50.06977 46.21007 -0.235607602  4.0953065
## 5.272727 42.72687 44.86451 -0.346602997 -1.7910388
## 5.363636 43.51191 47.82853 -0.015540349 -4.3010823
## 5.454545 52.64797 51.11861  0.315021447  1.2143423
## 5.545455 53.82911 51.33404  0.305061963  2.1900098
## 5.636364 50.67556 51.12128  0.253279786 -0.6989978
## 5.727273 46.56066 50.77345  0.193168601 -4.4059581
## 5.818182 46.75477 51.85448  0.281955487 -5.3816729
## 5.909091 48.07218 52.19349  0.287660183 -4.4089611
## 6.000000 59.58833 53.68671  0.408216500  5.4934031
## 6.090909 59.45280 53.00926  0.299649940  6.1438908
## 6.181818 56.11087 52.26435  0.195193939  3.6513249
## 6.272727 53.09856 53.28737  0.277976577 -0.4667882
## 6.363636 53.03620 55.53963  0.475405418 -2.9788351
## 6.454545 62.62238 60.52180  0.926081319  1.1745044
## 6.545455 62.17392 59.46340  0.727633625  1.9828811
## 6.636364 57.58697 58.01625  0.510155263 -0.9394425
## 6.727273 53.29462 56.98902  0.356415940 -4.0508105
## 6.818182 50.80418 55.94651  0.216523523 -5.3588541
## 6.909091 52.56190 56.26220  0.226439992 -3.9267359
## 7.000000 61.45259 56.19626  0.197202001  5.0591368
## 7.090909 60.25916 54.52294  0.010150115  5.7260668
## 7.181818 55.38868 51.68126 -0.275032995  3.9824554
## 7.272727 47.96521 48.23449 -0.592206597  0.3229272
## 7.363636 44.53960 46.42924 -0.713510781 -1.1761315
## 7.454545 44.93422 45.30781 -0.754302740  0.3807136
## 7.545455 44.95304 44.59066 -0.750587154  1.1129677
## 7.636364 39.49502 41.98547 -0.936048023 -1.5543998
## 7.727273 34.63729 40.26242 -1.014748408 -4.6103802
## 7.818182 33.17833 39.48821 -0.990694141 -5.3191883
## 7.909091 33.18190 38.24185 -1.016260682 -4.0436878
## 8.000000 42.36784 38.90521 -0.848298711  4.3109293
## 8.090909 41.56122 37.84534 -0.869455501  4.5853343
## 8.181818 37.42292 35.70564 -0.996479925  2.7137610
## 8.272727 32.13735 33.42458 -1.124938399 -0.1622895
## 8.363636 39.05178 40.67817 -0.287085399 -1.3392993
## 8.454545 47.76578 46.99673  0.373478904  0.3955760
## 8.545455 51.65334 50.58705  0.695163264  0.3711242
## 8.636364 56.06504 56.69755  1.236696521 -1.8692013
## 8.727273 50.58127 54.22923  0.866195707 -4.5141631
## 8.818182 47.64909 52.46718  0.603370377 -5.4214544
## 8.909091 48.12648 51.09273  0.405588532 -3.3718399
## 9.000000 52.93438 48.59302  0.115058996  4.2263021
## 9.090909 50.82921 46.82520 -0.073228654  4.0772366
## 9.181818 47.22225 45.24613 -0.223812892  2.1999271
## 9.272727 45.74094 42.97987 -0.428057834  3.1891225
## 9.363636 40.54451 39.93163 -0.690076537  1.3029579
## 9.454545 48.26279 46.54065  0.039833322  1.6823134
## 9.545455 55.05076 51.93792  0.575577433  2.5372572
## 9.636364 52.26331 54.80935  0.805162296 -3.3512046
xhat1f11 <- winter1f11$fitted[,2]

winter1f11.opt<- HoltWinters(forecast2.ts, alpha= NULL,  beta = NULL, gamma = NULL, seasonal = "additive")
winter1f11.opt
## Holt-Winters exponential smoothing with trend and additive seasonal component.
## 
## Call:
## HoltWinters(x = forecast2.ts, alpha = NULL, beta = NULL, gamma = NULL,     seasonal = "additive")
## 
## Smoothing parameters:
##  alpha: 1
##  beta : 0
##  gamma: 1
## 
## Coefficients:
##          [,1]
## a   83.392479
## b    0.227082
## s1  -5.538843
## s2  -5.993388
## s3  -3.657025
## s4   9.152066
## s5   7.815702
## s6   2.588430
## s7  -3.357025
## s8  -4.911570
## s9   2.433884
## s10  3.070248
## s11 -1.602479
winter1f11.opt$fitted
## Time Series:
## Start = c(2, 1) 
## End = c(9, 8) 
## Frequency = 11 
##              xhat    level    trend    season
## 2.000000 52.09857 42.71942 0.227082  9.152066
## 2.090909 52.09072 44.04793 0.227082  7.815702
## 2.181818 46.79981 43.98430 0.227082  2.588430
## 2.272727 41.38163 44.51157 0.227082 -3.357025
## 2.363636 40.27254 44.95702 0.227082 -4.911570
## 2.454545 47.77254 45.11157 0.227082  2.433884
## 2.545455 49.76345 46.46612 0.227082  3.070248
## 2.636364 40.65435 42.02975 0.227082 -1.602479
## 2.727273 43.79072 49.10248 0.227082 -5.538843
## 2.818182 43.07254 48.83884 0.227082 -5.993388
## 2.909091 42.46345 45.89339 0.227082 -3.657025
## 3.000000 52.73617 43.35702 0.227082  9.152066
## 3.090909 40.29072 32.24793 0.227082  7.815702
## 3.181818 50.09981 47.28430 0.227082  2.588430
## 3.272727 49.13163 52.26157 0.227082 -3.357025
## 3.363636 48.59254 53.27702 0.227082 -4.911570
## 3.454545 51.55254 48.89157 0.227082  2.433884
## 3.545455 43.30345 40.00612 0.227082  3.070248
## 3.636364 47.22435 48.59975 0.227082 -1.602479
## 3.727273 43.90072 49.21248 0.227082 -5.538843
## 3.818182 50.03254 55.79884 0.227082 -5.993388
## 3.909091 48.43345 51.86339 0.227082 -3.657025
## 4.000000 55.28617 45.90702 0.227082  9.152066
## 4.090909 40.82072 32.77793 0.227082  7.815702
## 4.181818 38.75981 35.94430 0.227082  2.588430
## 4.272727 52.55163 55.68157 0.227082 -3.357025
## 4.363636 54.47254 59.15702 0.227082 -4.911570
## 4.454545 58.36254 55.70157 0.227082  2.433884
## 4.545455 45.60345 42.30612 0.227082  3.070248
## 4.636364 38.72435 40.09975 0.227082 -1.602479
## 4.727273 48.86072 54.17248 0.227082 -5.538843
## 4.818182 48.21254 53.97884 0.227082 -5.993388
## 4.909091 53.70345 57.13339 0.227082 -3.657025
## 5.000000 59.70617 50.32702 0.227082  9.152066
## 5.090909 41.88072 33.83793 0.227082  7.815702
## 5.181818 37.64981 34.83430 0.227082  2.588430
## 5.272727 38.80163 41.93157 0.227082 -3.357025
## 5.363636 57.95254 62.63702 0.227082 -4.911570
## 5.454545 67.61254 64.95157 0.227082  2.433884
## 5.545455 53.01345 49.71612 0.227082  3.070248
## 5.636364 46.79435 48.16975 0.227082 -1.602479
## 5.727273 43.96072 49.27248 0.227082 -5.538843
## 5.818182 50.77254 56.53884 0.227082 -5.993388
## 5.909091 49.60345 53.03339 0.227082 -3.657025
## 6.000000 67.13617 57.75702 0.227082  9.152066
## 6.090909 53.05072 45.00793 0.227082  7.815702
## 6.181818 49.22981 46.41430 0.227082  2.588430
## 6.272727 54.53163 57.66157 0.227082 -3.357025
## 6.363636 61.64254 66.32702 0.227082 -4.911570
## 6.454545 83.14254 80.48157 0.227082  2.433884
## 6.545455 53.56345 50.26612 0.227082  3.070248
## 6.636364 46.85435 48.22975 0.227082 -1.602479
## 6.727273 46.19072 51.50248 0.227082 -5.538843
## 6.818182 46.07254 51.83884 0.227082 -5.993388
## 6.909091 53.86345 57.29339 0.227082 -3.657025
## 7.000000 64.13617 54.75702 0.227082  9.152066
## 7.090909 50.99072 42.94793 0.227082  7.815702
## 7.181818 40.99981 38.18430 0.227082  2.588430
## 7.272727 33.81163 36.94157 0.227082 -3.357025
## 7.363636 40.57254 45.25702 0.227082 -4.911570
## 7.454545 50.07254 47.41157 0.227082  2.433884
## 7.545455 45.98345 42.68612 0.227082  3.070248
## 7.636364 31.23435 32.60975 0.227082 -1.602479
## 7.727273 31.85072 37.16248 0.227082 -5.538843
## 7.818182 35.61254 41.37884 0.227082 -5.993388
## 7.909091 34.46345 37.89339 0.227082 -3.657025
## 8.000000 54.61617 45.23702 0.227082  9.152066
## 8.090909 40.20072 32.15793 0.227082  7.815702
## 8.181818 30.20981 27.39430 0.227082  2.588430
## 8.272727 25.28163 28.41157 0.227082 -3.357025
## 8.363636 72.70254 77.38702 0.227082 -4.911570
## 8.454545 79.65254 76.99157 0.227082  2.433884
## 8.545455 64.71345 61.41612 0.227082  3.070248
## 8.636364 74.28435 75.65975 0.227082 -1.602479
## 8.727273 33.83072 39.14248 0.227082 -5.538843
## 8.818182 37.21254 42.97884 0.227082 -5.993388
## 8.909091 40.32345 43.75339 0.227082 -3.657025
## 9.000000 46.63617 37.25702 0.227082  9.152066
## 9.090909 42.41072 34.36793 0.227082  7.815702
## 9.181818 38.29981 35.48430 0.227082  2.588430
## 9.272727 31.29163 34.42157 0.227082 -3.357025
## 9.363636 31.31254 35.99702 0.227082 -4.911570
## 9.454545 84.61254 81.95157 0.227082  2.433884
## 9.545455 75.91345 72.61612 0.227082  3.070248
## 9.636364 62.08435 63.45975 0.227082 -1.602479
xhat1f11.opt <- winter1f11.opt$fitted[,2]

Untuk peramalan digunakan cara berikut, dengan n.ahead adalah nilai data yang akan diramal yaitu sejumlah 24 periode.

#Forecast
forecast1f3 <- predict(winter1f3, n.ahead = 24)
forecast1f3.opt <- predict(winter1f3.opt, n.ahead = 24)

forecast1f11 <- predict(winter1f11, n.ahead = 24)
forecast1f11.opt <- predict(winter1f11.opt, n.ahead = 24)

7.3.2 Membuat plot

Membuat plot deret waktu.

#Plot time series (untuk frequency=3)
plot(forecast1.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
     xlim=c(1,12),pch=12)
lines(xhat1f3,type="l",col="red")
lines(xhat1f3.opt,type="l",col="blue")
lines(forecast1f3,type="l",col="red")
lines(forecast1f3.opt,type="l",col="blue")
legend("topleft",c("Actual Data",expression(paste(winter1f3)),
                   expression(paste(winter1f3.opt))),cex=0.5,
       col=c("black","red","blue"),lty=1)

#Plot time series (untuk frequency=11)
plot(forecast2.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
     xlim=c(1,12),pch=12)
lines(xhat1f11,type="l",col="red")
lines(xhat1f11.opt,type="l",col="blue")
lines(forecast1f11,type="l",col="red")
lines(forecast1f11.opt,type="l",col="blue")
legend("topleft",c("Actual Data",expression(paste(winter1f11)),
                   expression(paste(winter1f11.opt))),cex=0.5,
       col=c("black","red","blue"),lty=1)

7.3.3 Akurasi data ramal

#Akurasi data ramal (frequency=3)
SSE1f3<-winter1f3$SSE
MSE1f3<-winter1f3$SSE/length(forecast1.ts)
RMSE1f3<-sqrt(MSE1)
akurasi1f3 <- matrix(c(SSE1f3,MSE1f3,RMSE1f3))
row.names(akurasi1f3)<- c("SSE", "MSE", "RMSE")
colnames(akurasi1f3) <- c("Akurasi frequency = 3")
akurasi1f3
##      Akurasi frequency = 3
## SSE             10790.3377
## MSE               112.3994
## RMSE               10.3096
#Akurasi data ramal (frequency=7)
SSE1f11<-winter1f11$SSE
MSE1f11<-winter1f11$SSE/length(forecast2.ts)
RMSE1f11<-sqrt(MSE1)
akurasi1f11 <- matrix(c(SSE1f11,MSE1f11,RMSE1f11))
row.names(akurasi1f11)<- c("SSE", "MSE", "RMSE")
colnames(akurasi1f11) <- c("Akurasi frequency = 11")
akurasi1f11
##      Akurasi frequency = 11
## SSE              12560.4961
## MSE                130.8385
## RMSE                10.3096

Didapatkan untuk frequency 3, dengan SSE 10790.34, MSE 112.40, RMSE 10.31, kemudian untuk frequency = 7, dengan SSE 12560.50, MSE 130.84, dan RMSE 10.3096

#Akurasi data ramal dengan winter aditif dengan parameter optimum
#frequency=3
SSE1f3.opt<-winter1f3.opt$SSE
MSE1f3.opt<-winter1f3.opt$SSE/length(forecast1.ts)
RMSE1f3.opt<-sqrt(MSE1f3.opt)
akurasi1f3.opt <- matrix(c(SSE1f3.opt,MSE1f3.opt,RMSE1f3.opt))
row.names(akurasi1f3.opt)<- c("SSE1f3.opt", "MSE1f3.opt", "RMSE1f3.opt")
colnames(akurasi1f3.opt) <- c("Akurasi")
akurasi1f3.opt
##                 Akurasi
## SSE1f3.opt  8150.811571
## MSE1f3.opt    84.904287
## RMSE1f3.opt    9.214352
#frequency=7
SSE1f11.opt<-winter1f11.opt$SSE
MSE1f11.opt<-winter1f11.opt$SSE/length(forecast2.ts)
RMSE1f11.opt<-sqrt(MSE1f11.opt)
akurasi1f11.opt <- matrix(c(SSE1f11.opt,MSE1f11.opt,RMSE1f11.opt))
row.names(akurasi1f11.opt)<- c("SSE1f11.opt", "MSE1f11.opt", "RMSE1f11.opt")
colnames(akurasi1f11.opt) <- c("Akurasi")
akurasi1f11.opt
##                  Akurasi
## SSE1f11.opt  11951.94935
## MSE1f11.opt    124.49947
## RMSE1f11.opt    11.15793

Maka hasil akurasi tersebut akan digabungkan dalam sebuah tabel agar mempermudah untuk membandingkannya.

akurasi1f3.forecast = data.frame(Model_Winter = c("Winter 1f3","Winter1 optimalf3"),
                            Nilai_SSE=c(SSE1f3,SSE1f3.opt),
                            Nilai_MSE=c(MSE1f3,MSE1f3.opt),Nilai_RMSE=c(RMSE1f3,RMSE1f3.opt))
akurasi1f3.forecast
##        Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1        Winter 1f3 10790.338 112.39935  10.309595
## 2 Winter1 optimalf3  8150.812  84.90429   9.214352
akurasi1f11.forecast = data.frame(Model_Winter = c("Winter 1f11","Winter1 optimalf11"),
                            Nilai_SSE=c(SSE1f11,SSE1f11.opt),
                            Nilai_MSE=c(MSE1f11,MSE1f11.opt),Nilai_RMSE=c(RMSE1f11,RMSE1f11.opt))
akurasi1f11.forecast
##         Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1        Winter 1f11  12560.50  130.8385   10.30960
## 2 Winter1 optimalf11  11951.95  124.4995   11.15793

7.3.4 Akurasi data uji

#Akurasi Data Testing
forecast1f3<-data.frame(forecast1f3)
testingf3.ts<-data.frame(test.ts)
selisih1f3<-forecast1f3-testingf3.ts
SSEtesting1f3<-sum(selisih1f3^2)
MSEtesting1f3<-SSEtesting1f3/length(testingf3.ts)

forecast1f3.opt<-data.frame(forecast1f3.opt)
selisih1f3.opt<-forecast1f3.opt-testingf3.ts
SSEtesting1f3.opt<-sum(selisih1f3.opt^2)
MSEtesting1f3.opt<-SSEtesting1f3.opt/length(testingf3.ts)

forecast1f11<-data.frame(forecast1f11)
testingf11.ts<-data.frame(test2.ts)
selisih1f11<-forecast1f11-testingf11.ts
SSEtesting1f11<-sum(selisih1f11^2)
MSEtesting1f11<-SSEtesting1f11/length(testingf11.ts)

forecast1f11.opt<-data.frame(forecast1f11.opt)
selisih1f11.opt<-forecast1f11.opt-testingf11.ts
SSEtesting1f11.opt<-sum(selisih1f11.opt^2)
MSEtesting1f11.opt<-SSEtesting1f11.opt/length(testingf11.ts)

cat("SSE frequency 3:" ,SSEtesting1f3, "\n")
## SSE frequency 3: 32704.4
cat("SSE optimum frequency 3:", SSEtesting1f3.opt, "\n")
## SSE optimum frequency 3: 14578.49
cat("SSE frequency 11:" ,SSEtesting1f11, "\n")
## SSE frequency 11: 30736.15
cat("SSE optimum frequency 11:", SSEtesting1f11.opt, "\n")
## SSE optimum frequency 11: 40287.72

Karena berdasarkan plot, hasil yang diperoleh paling serupa dengan frequency 11, maka walaupun akurasi untuk data ramal/forecast dan ujinya lebih baik di frequency 3, tetap digunakan frequency 11.

7.4 Winter Multiplikatif

Mengembalikan penamaan

forecast.ts = forecast2.ts
test.ts = test2.ts

7.4.1 Pemulusan dengan winter multiplikastif

Model ini baik digunakan jika plot data asli menunjukkan fluktuasi musiman yang bervariasi.

#Pemulusan dengan winter multiplikatif 
winter2 <- HoltWinters(forecast.ts,alpha=0.2,beta=0.1,gamma=0.3,seasonal = "multiplicative")
winter2$fitted
## Time Series:
## Start = c(2, 1) 
## End = c(9, 8) 
## Frequency = 11 
##              xhat    level       trend    season
## 2.000000 51.85127 42.71942  0.22708201 1.2073456
## 2.090909 51.11613 43.16992  0.24942406 1.1772662
## 2.181818 46.32919 43.53553  0.26104199 1.0578269
## 2.272727 40.90539 43.94230  0.27561544 0.9250864
## 2.363636 39.78668 44.36809  0.29063255 0.8909051
## 2.454545 47.49785 44.75151  0.29991116 1.0543031
## 2.545455 48.89911 45.31741  0.32650969 1.0713172
## 2.636364 43.49895 44.93467  0.25558560 0.9625735
## 2.727273 40.50133 46.02158  0.33871804 0.8736210
## 2.818182 40.96108 47.00101  0.40278850 0.8640885
## 2.909091 43.52752 47.15820  0.37822907 0.9156665
## 3.000000 57.09164 46.70042  0.29462837 1.2148437
## 3.090909 52.49473 44.41173  0.03629648 1.1810362
## 3.181818 47.75940 44.88921  0.08041484 1.0620369
## 3.272727 43.20874 46.30491  0.21394312 0.9288437
## 3.363636 43.15777 47.96393  0.35845090 0.8931217
## 3.454545 51.90089 48.50651  0.37686348 1.0617289
## 3.545455 49.71336 47.10121  0.19864685 1.0510258
## 3.636364 47.11464 47.67218  0.23587972 0.9834388
## 3.727273 42.84596 48.00880  0.24595369 0.8879118
## 3.818182 43.22440 49.92475  0.41295307 0.8586884
## 3.909091 46.07972 50.95390  0.47457258 0.8959964
## 4.000000 57.59022 50.57362  0.38908737 1.1300464
## 4.090909 57.72043 48.19110  0.11192669 1.1949652
## 4.181818 50.37365 45.96648 -0.12172754 1.0987877
## 4.272727 45.52660 47.28204  0.02200085 0.9624252
## 4.363636 44.56739 49.43894  0.23549071 0.8971899
## 4.454545 52.13127 51.06156  0.37420394 1.0135218
## 4.545455 53.26191 49.97723  0.22835080 1.0608762
## 4.636364 47.66024 48.30302  0.03809466 0.9859151
## 4.727273 45.69258 49.33710  0.13769277 0.9235528
## 4.818182 43.79003 50.06976  0.19718951 0.8711496
## 4.909091 45.92792 51.95437  0.36593136 0.8778222
## 5.000000 55.62452 52.48937  0.38283867 1.0520558
## 5.090909 56.79157 50.47034  0.14265149 1.1220751
## 5.181818 54.64631 48.09238 -0.10940960 1.1388689
## 5.272727 46.48207 46.20466 -0.28724064 1.0122972
## 5.363636 44.85024 48.44591 -0.03439138 0.9264374
## 5.454545 50.84200 51.69069  0.29352621 0.9780275
## 5.545455 53.13624 52.25170  0.32027394 1.0107332
## 5.636364 52.99373 52.19675  0.28275189 1.0097986
## 5.727273 48.33710 51.42509  0.17731049 0.9367220
## 5.818182 47.43200 52.17096  0.23416611 0.9051023
## 5.909091 46.30258 52.31850  0.22550416 0.8812153
## 6.000000 54.27710 54.31370  0.40247383 0.9919753
## 6.090909 57.93012 54.69257  0.40011294 1.0515030
## 6.181818 59.43922 54.38890  0.32973518 1.0862700
## 6.272727 59.39205 54.86792  0.34466301 1.0756978
## 6.363636 56.11808 55.87781  0.41118630 0.9969635
## 6.454545 60.01892 60.19123  0.80140964 0.9840354
## 6.545455 60.27895 59.50511  0.65265649 1.0020144
## 6.636364 57.95367 58.36559  0.47343857 0.9849529
## 6.727273 54.57879 57.20369  0.30990451 0.9489720
## 6.818182 50.49852 55.76880  0.13542540 0.9033041
## 6.909091 51.49258 56.08168  0.15317100 0.9156703
## 7.000000 55.81304 56.14910  0.14459621 0.9914615
## 7.090909 57.57067 55.54470  0.06969597 1.0351756
## 7.181818 58.00553 53.37890 -0.15385383 1.0898165
## 7.272727 53.83486 49.83447 -0.49291145 1.0910654
## 7.363636 49.90318 47.15381 -0.71168593 1.0745240
## 7.454545 42.20365 45.06418 -0.84948046 0.9545162
## 7.545455 42.50017 44.82576 -0.78837404 0.9650928
## 7.636364 39.65810 42.62402 -0.92971105 0.9511634
## 7.727273 36.36638 40.83260 -1.01588130 0.9133444
## 7.818182 35.06708 39.70146 -1.02740777 0.9067340
## 7.909091 33.70641 37.97548 -1.09726460 0.9139923
## 8.000000 36.74999 38.60112 -0.92497443 0.9754180
## 8.090909 37.14315 38.61113 -0.83147587 0.9831521
## 8.181818 36.54625 37.38640 -0.87080135 1.0008394
## 8.272727 35.46944 35.40728 -0.98163331 1.0303202
## 8.363636 43.14043 41.91081 -0.23311726 1.0350966
## 8.454545 46.17376 47.26935  0.32604919 0.9701306
## 8.545455 48.12302 51.23950  0.69045880 0.9266910
## 8.636364 55.51947 58.53561  1.35102367 0.9270762
## 8.727273 51.85289 56.00788  0.96314899 0.9101624
## 8.818182 48.28215 53.80393  0.64643869 0.8867185
## 8.909091 50.54137 52.07709  0.40911084 0.9629458
## 9.000000 49.20923 48.96755  0.05724540 1.0037622
## 9.090909 46.43555 47.89121 -0.05611280 0.9707424
## 9.181818 45.33839 47.18908 -0.12071396 0.9632454
## 9.272727 56.35801 45.33913 -0.29363755 1.2511352
## 9.363636 47.96833 41.25406 -0.67278135 1.1820311
## 9.454545 47.71781 45.50021 -0.18088786 1.0529241
## 9.545455 53.50268 50.51100  0.33827949 1.0521817
## 9.636364 45.82645 53.32553  0.58590441 0.8500322
xhat2 <- winter2$fitted[,2]

#Winter multiplikatif parameter optimum
winter2.opt<- HoltWinters(forecast.ts, alpha= NULL,  beta = NULL, gamma = NULL, seasonal = "multiplicative")
winter2.opt$fitted
## Time Series:
## Start = c(2, 1) 
## End = c(9, 8) 
## Frequency = 11 
##              xhat    level    trend    season
## 2.000000 51.85127 42.71942 0.227082 1.2073456
## 2.090909 50.95038 43.05147 0.227082 1.1772662
## 2.181818 46.09317 43.34637 0.227082 1.0578269
## 2.272727 40.60201 43.66288 0.227082 0.9250864
## 2.363636 39.39441 43.99134 0.227082 0.8909051
## 2.454545 46.94861 44.30338 0.227082 1.0543031
## 2.545455 48.13585 44.70438 0.227082 1.0713172
## 2.636364 43.21211 44.66519 0.227082 0.9625735
## 2.727273 39.78290 45.31085 0.227082 0.8736210
## 2.818182 39.87190 45.91623 0.227082 0.8640885
## 2.909091 42.46261 46.14636 0.227082 0.9156665
## 3.000000 56.42730 46.08995 0.227082 1.2182841
## 3.090909 53.74092 45.15799 0.227082 1.1841099
## 3.181818 48.73196 45.49292 0.227082 1.0658782
## 3.272727 43.37219 46.25936 0.227082 0.9330074
## 3.363636 42.50558 47.14588 0.227082 0.8972539
## 3.454545 51.07550 47.52737 0.227082 1.0695442
## 3.545455 49.46998 46.99578 0.227082 1.0475853
## 3.636364 47.43835 47.42020 0.227082 0.9956151
## 3.727273 43.11902 47.66348 0.227082 0.9003658
## 3.818182 42.23226 48.63581 0.227082 0.8643011
## 3.909091 44.27654 49.25838 0.227082 0.8947382
## 4.000000 54.55338 49.27264 0.227082 1.1020946
## 4.090909 58.11505 48.42345 0.227082 1.1945408
## 4.181818 53.09892 47.52134 0.227082 1.1120560
## 4.272727 47.51679 48.18536 0.227082 0.9814997
## 4.363636 44.88897 49.20544 0.227082 0.9080857
## 4.454545 50.54100 50.04314 0.227082 1.0053865
## 4.545455 53.14148 49.72805 0.227082 1.0637842
## 4.636364 49.14724 49.07434 0.227082 0.9968725
## 4.727273 47.43988 49.62405 0.227082 0.9516309
## 4.818182 44.66184 49.94989 0.227082 0.8900864
## 4.909091 44.97669 50.86086 0.227082 0.8803777
## 5.000000 52.06601 51.26867 0.227082 1.0110739
## 5.090909 55.41113 50.65227 0.227082 1.0890690
## 5.181818 57.48252 49.77832 0.227082 1.1495263
## 5.272727 51.15341 48.94582 0.227082 1.0402764
## 5.363636 47.59012 49.90695 0.227082 0.9492579
## 5.454545 49.76997 51.36641 0.227082 0.9646558
## 5.545455 51.67964 51.82533 0.227082 0.9928386
## 5.636364 53.33254 52.01080 0.227082 1.0209552
## 5.727273 49.79447 51.71673 0.227082 0.9586219
## 5.818182 48.86719 52.06198 0.227082 0.9345586
## 5.909091 46.67580 52.10534 0.227082 0.8919098
## 6.000000 50.59516 53.11458 0.227082 0.9485110
## 6.090909 53.89815 53.69482 0.227082 0.9995596
## 6.181818 57.27157 53.95310 0.227082 1.0570577
## 6.272727 59.98239 54.44494 0.227082 1.0971313
## 6.363636 57.02387 54.92790 0.227082 1.0338843
## 6.454545 55.96569 56.84055 0.227082 0.9806905
## 6.545455 56.40557 56.75473 0.227082 0.9898872
## 6.636364 55.74437 56.49717 0.227082 0.9827255
## 6.727273 54.51503 56.16543 0.227082 0.9667068
## 6.818182 51.48461 55.59400 0.227082 0.9223147
## 6.909091 52.70760 55.80228 0.227082 0.9407139
## 7.000000 54.50789 55.86878 0.227082 0.9716918
## 7.090909 56.18585 55.86302 0.227082 1.0017071
## 7.181818 59.57796 55.13462 0.227082 1.0761584
## 7.272727 60.09013 53.61121 0.227082 1.1161225
## 7.363636 60.29893 52.30689 0.227082 1.1478084
## 7.454545 49.28257 51.07687 0.227082 0.9605999
## 7.545455 48.99375 50.89677 0.227082 0.9583344
## 7.636364 47.36276 49.81844 0.227082 0.9463936
## 7.727273 44.93270 48.87366 0.227082 0.9151126
## 7.818182 44.57875 48.16709 0.227082 0.9211596
## 7.909091 44.04654 47.10085 0.227082 0.9306671
## 8.000000 45.25488 47.07889 0.227082 0.9566419
## 8.090909 44.18494 46.91850 0.227082 0.9372021
## 8.181818 43.94428 46.24574 0.227082 0.9455910
## 8.272727 45.17294 45.18653 0.227082 0.9947005
## 8.363636 49.63083 48.13961 0.227082 1.0261365
## 8.454545 47.20755 50.42239 0.227082 0.9320443
## 8.545455 45.46079 52.32730 0.227082 0.8650239
## 8.636364 48.61700 56.16831 0.227082 0.8620739
## 8.727273 47.05855 55.18802 0.227082 0.8492008
## 8.818182 45.14532 54.35080 0.227082 0.8271725
## 8.909091 49.23719 53.73892 0.227082 0.9123741
## 9.000000 48.75908 52.35554 0.227082 0.9272850
## 9.090909 45.45335 52.05173 0.227082 0.8694411
## 9.181818 44.20065 52.04609 0.227082 0.8455704
## 9.272727 62.24827 51.47410 0.227082 1.2040008
## 9.363636 58.62751 49.39044 0.227082 1.1815889
## 9.454545 53.51984 51.08176 0.227082 1.0430919
## 9.545455 57.31677 53.24834 0.227082 1.0718338
## 9.636364 43.17172 54.28313 0.227082 0.7919933
xhat2.opt <- winter2.opt$fitted[,2]

Peramalan, dengan periode yang ingin diramal sebanyak 24 periode kedepan, sehingga n.ahead=24.

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

7.4.2 Plot deret waktu (winter multiplikatif)

#Plot time series
plot(forecast.ts,main="Winter 0.2;0.1;0.1",type="l",col="black",
     xlim=c(1,12),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)

7.4.3 Akurasi data ramal

#Akurasi data training
SSE2<-winter2$SSE
MSE2<-winter2$SSE/length(forecast.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        12217.96374
## MSE2          127.27046
## RMSE2          11.28142

Didapatkan hasil SSE sebesar 12217.96, MSE sebesar 127.27, serta RMSE sebesar 11.28.

#Akurasi data latih, dengan parameter optimum
SSE2.opt<-winter2.opt$SSE
MSE2.opt<-winter2.opt$SSE/length(forecast.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  11028.71149
## MSE2.opt    114.88241
## RMSE2.opt    10.71832

Didapatkan hasil SSE sebesar 11028.71, MSE sebesar 114.88, serta RMSE sebesar 10.72.

Lalu dibuat sebuah tabel untuk melihat perbandingan antara winter multiplikatif dengan yang menggunakan parameter optimum maupun bukan yang optimum.

akurasi2.forecast = 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.forecast
##      Model_Winter Nilai_SSE Nilai_MSE Nilai_RMSE
## 1        Winter 1  12217.96  127.2705   11.28142
## 2 winter2 optimal  11028.71  114.8824   10.71832

7.4.4 Akurasi Data Uji (Winter Multiplikatif)

#Akurasi Data Testing
forecast2<-data.frame(forecast2)
testing.ts<-data.frame(test.ts)
selisih2<-forecast2-testing.ts
SSEtesting2<-sum(selisih2^2)
MSEtesting2<-SSEtesting2/length(testing.ts)

forecast2.opt<-data.frame(forecast2.opt)
selisih2.opt<-forecast2.opt-testing.ts
SSEtesting2.opt<-sum(selisih2.opt^2)
MSEtesting2.opt<-SSEtesting2.opt/length(testing.ts)

SSEtesting2
## [1] 36984.97
SSEtesting2.opt
## [1] 9913.769

8. Keputusan Metode Pumulusan Terbaik

8.1 SMA atau DMA?

Pada langkah metode Single Moving Average (SMA) dan Double Moving Average (DMA) telah diketahui metode pemulusan dengan Single Moving Average (SMA) lebih baik dibandingkan dengan DMA. Hal ini diakibatkan nilai MAPE yang diberikan oleh pemulusan dengan SMA lebih kecil dibandingkan dengan DMA.

8.2 SES atau DES?

Metode Double Exponential Smoothing (DES) lebih baik dibandingkan metode SES dilihat dari MSE yang lebih kecil nilainya. Hal ini sesuai sebab metode pemulusan DES lebih baik digunakan untuk data yang trend (bukan stasioner/konstan).

8.3 Winter Aditif atau Multiplikatif?

Sebelumnya dimanfaatkan nilai frequency=11 dengan parameter yang optimum, sehingga untuk winter aditif diperoleh keakuratan data ramal dengan nilai SSE sebesar 11951.95 dengan nilai SSE data uji sebesar 40287.72. Sedangkan untuk winter multiplikatif diperoleh keakuratan data ramal dengan nilai SSE sebesar 11028.71 dengan nilai SSE data uji 9913.769. Karena SSE data latih winter multiplikatif < daripada SSE data latih winter aditif, serta SSE data uji winter multiplikatif juga < daripada SSE data uji winter aditif maka dapat dikatakan winter multiplikatif lebih baik dibandingkan metode pemulusan winter aditif.

8.4 SMA, DES, atau winter multiplikatif?

#SMA vs DES

#SMA
cat("MAPE data ramal SMA:", MAPE_dt.ramal.sma, "\n")
## MAPE data ramal SMA: 15.61109
cat("MAPE data uji SMA:", MAPE_dt.uji.sma, "\n\n")
## MAPE data uji SMA: 69.76289
#DES
cat("MAPE data ramal DES:", mapedes.forecast2, "\n")
## MAPE data ramal DES: 13.61711
cat("MAAPE data uji DES:", MAPEtestingdes2, "\n")
## MAAPE data uji DES: 256.1443
cat("MAPE data ramal optim DES:", MAPEtestingdesopt , "\n\n")
## MAPE data ramal optim DES: 118.6527
#Diambil yang SMA karena mayoritas akurasi MAPE SMA didapatkan < daripada akurasi MAPE pada DES

#SMA vs winter multiplikatif

#SMA
cat("SSE data ramal SMA:", SSE_dt.ramal.sma, "\n")
## SSE data ramal SMA: 11171.18
cat("SSE data uji SMA:", SSE_dt.uji.sma, "\n\n")
## SSE data uji SMA: 22848.13
#Winter multiplikatif
cat("SSE data ramal optim winter multi:", SSE2.opt, "\n")
## SSE data ramal optim winter multi: 11028.71
cat("SSE data uji optim winter multi:", SSEtesting2.opt, "\n")
## SSE data uji optim winter multi: 9913.769

Oleh karena itu, untuk data tersebut disarankan menggunakan metode pemulusan winter multiplikatif.

9. Saran

Terkait data yang digunakan terkategorikan sebagai data yang kurang baik, hal ini disebabkan terlihat adanya dua pola yang berbeda. Maka hal ini mengakibatkan sulitnya menentukan pola sebaran data. Secara garis besar pola data deret waktu ada pola horizontal (konstan), pola musiman, pola siklis, ataupun pola trend. Pada analisis kali ini diasumsikan polanya mengikuti pola trend ataupun musiman dengan pengambilan asumsi berdasarkan eksplorasi data memalui plot time series. Sehingga hal ini mengakibatkan diharuskan mencoba satu persatu dari beragam metode pemulusan yang tersedia.