Impor Data

Data yang digunakan adalah data IDX COMPOSITE (JKSE) dari April 2020 - Desember 2022 yang bersumber dari yahoo finance.

#install.packages("rio") #install jika belum ada
library(tseries)
## Warning: package 'tseries' was built under R version 4.3.1
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(forecast)
## Warning: package 'forecast' was built under R version 4.3.1
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
library(imputeTS)
## Warning: package 'imputeTS' was built under R version 4.3.1
## 
## Attaching package: 'imputeTS'
## The following object is masked from 'package:tseries':
## 
##     na.remove
library(ggplot2)
library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following object is masked from 'package:imputeTS':
## 
##     na.locf
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(zoo)
library(rio)
## Warning: package 'rio' was built under R version 4.3.1
data1 <- import("https://raw.githubusercontent.com/divanm/mpdw/main/Data/DATA%20IDX%20COMPOSITE%20JKSE.csv")
data1
##           Date     Open     High      Low    Close Adj Close     Volume
## 1   2020-04-06 4623.429 4975.536 4562.902 4649.079  4649.079  255758500
## 2   2020-04-13 4649.079 4747.725 4480.607 4634.821  4634.821  218419900
## 3   2020-04-20 4634.821 4669.542 4441.090 4496.064  4496.064  238397200
## 4   2020-04-27 4496.064 4726.774 4474.893 4716.403  4716.403  183906700
## 5   2020-05-04 4716.403 4716.403 4576.228 4597.430  4597.430  179791700
## 6   2020-05-11 4597.430 4659.862 4460.273 4507.607  4507.607  231060000
## 7   2020-05-18 4507.607 4609.042 4487.179 4545.952  4545.952  139287000
## 8   2020-05-25 4545.952 4755.957 4541.834 4753.612  4753.612  288083800
## 9   2020-06-01 4753.612 5014.764 4753.612 4947.782  4947.782  372565600
## 10  2020-06-08 4947.782 5139.406 4712.073 4880.359  4880.359  490084700
## 11  2020-06-15 4880.359 5018.985 4809.619 4942.275  4942.275  336775500
## 12  2020-06-22 4942.275 4977.651 4879.133 4904.088  4904.088  260206800
## 13  2020-06-29 4904.088 4997.482 4862.041 4973.794  4973.794  249816600
## 14  2020-07-06 4973.794 5111.564 4973.490 5031.256  5031.256  358094500
## 15  2020-07-13 5031.256 5116.464 5024.934 5079.585  5079.585  349862400
## 16  2020-07-20 5079.585 5162.980 5031.888 5082.991  5082.991  427056800
## 17  2020-07-27 5082.991 5149.630 5080.121 5149.627  5149.627  356913600
## 18  2020-08-03 5149.627 5187.964 4928.468 5143.893  5143.893  423927900
## 19  2020-08-10 5157.834 5279.349 5157.834 5247.690  5247.690  340206700
## 20  2020-08-17 5247.690 5327.316 5243.995 5272.810  5272.810  188318800
## 21  2020-08-24 5272.810 5381.948 5261.408 5346.659  5346.659  665155800
## 22  2020-08-31 5346.659 5369.447 5188.609 5239.851  5239.851  568186400
## 23  2020-09-07 5235.010 5256.305 4754.799 5016.712  5016.712  492882200
## 24  2020-09-14 5060.024 5187.279 5013.186 5059.223  5059.223  503336800
## 25  2020-09-21 5058.990 5075.819 4820.331 4945.791  4945.791  406370800
## 26  2020-09-28 4962.953 4991.762 4841.362 4926.734  4926.734  440809400
## 27  2020-10-05 4947.040 5057.836 4915.685 5053.663  5053.663  421591900
## 28  2020-10-12 5078.129 5182.531 5064.171 5103.414  5103.414  525143900
## 29  2020-10-19 5116.758 5135.078 5063.697 5112.188  5112.188  522912300
## 30  2020-10-26 5113.149 5158.265 5110.618 5128.225  5128.225  210436500
## 31  2020-11-02 5108.029 5335.529 5073.500 5335.529  5335.529  516535700
## 32  2020-11-09 5371.971 5520.908 5319.420 5461.058  5461.058  669558400
## 33  2020-11-16 5500.034 5628.442 5462.460 5571.656  5571.656  789934400
## 34  2020-11-23 5583.330 5795.836 5583.330 5783.335  5783.335 1255563200
## 35  2020-11-30 5779.671 5853.156 5563.862 5810.483  5810.483 1160743700
## 36  2020-12-07 5854.303 6004.423 5854.303 5938.329  5938.329 1003237500
## 37  2020-12-14 5959.275 6160.977 5959.275 6104.324  6104.324 1292048600
## 38  2020-12-21 6131.623 6195.154 5853.261 6008.709  6008.709  692226400
## 39  2020-12-28 6067.000 6143.870 5962.010 5979.073  5979.073  526030000
## 40  2021-01-04 5997.830 6275.742 5929.048 6257.835  6257.835 1007037000
## 41  2021-01-11 6278.413 6472.312 6278.374 6373.412  6373.412 1527600500
## 42  2021-01-18 6365.026 6504.992 6283.313 6307.127  6307.127 1081229300
## 43  2021-01-25 6322.519 6322.727 5825.292 5862.352  5862.352  813369600
## 44  2021-02-01 5856.777 6179.368 5735.469 6151.729  6151.729  872980000
## 45  2021-02-08 6193.551 6286.291 6157.135 6222.521  6222.521  563483000
## 46  2021-02-15 6244.385 6314.555 6173.594 6231.932  6231.932  739117700
## 47  2021-02-22 6267.025 6312.873 6184.517 6241.796  6241.796  880483600
## 48  2021-03-01 6281.857 6394.452 6245.308 6258.749  6258.749  987879800
## 49  2021-03-08 6304.000 6364.357 6167.718 6358.209  6358.209  652024500
## 50  2021-03-15 6374.762 6387.736 6268.839 6356.160  6356.160  742809300
## 51  2021-03-22 6346.795 6354.939 6058.843 6195.562  6195.562  712370600
## 52  2021-03-29 6205.569 6230.990 5892.645 6011.456  6011.456  462735200
## 53  2021-04-05 6040.055 6113.156 5944.421 6070.209  6070.209  720785500
## 54  2021-04-12 6080.792 6115.620 5883.524 6086.258  6086.258  669695000
## 55  2021-04-19 6084.785 6096.995 5973.247 6016.864  6016.864  675194300
## 56  2021-04-26 6018.340 6033.900 5950.868 5995.616  5995.616  641211400
## 57  2021-05-03 5999.661 6005.088 5922.493 5928.309  5928.309  667078400
## 58  2021-05-10 5942.106 5985.372 5911.376 5938.351  5938.351  240955800
## 59  2021-05-17 5950.137 5958.793 5742.038 5773.120  5773.120  696962000
## 60  2021-05-24 5793.067 5904.838 5759.340 5848.616  5848.616  679387300
## 61  2021-05-31 5869.218 6103.859 5860.536 6065.166  6065.166  687508700
## 62  2021-06-07 6075.507 6134.882 5972.449 6095.497  6095.497 1116799300
## 63  2021-06-14 6110.797 6124.872 5944.053 6007.120  6007.120  955804200
## 64  2021-06-21 5959.965 6130.096 5884.918 6022.399  6022.399  851733600
## 65  2021-06-28 6015.279 6043.432 5913.591 6023.008  6023.008  825550700
## 66  2021-07-05 6024.165 6080.222 5985.354 6039.844  6039.844  754205300
## 67  2021-07-12 6060.054 6114.286 5947.618 6072.510  6072.510  716924100
## 68  2021-07-19 6062.966 6166.305 6015.149 6101.690  6101.690  597748400
## 69  2021-07-26 6109.031 6160.463 6068.512 6070.039  6070.039  869133600
## 70  2021-08-02 6098.008 6263.539 6048.101 6203.431  6203.431 1228093800
## 71  2021-08-09 6203.747 6239.015 6042.475 6139.492  6139.492  869347300
## 72  2021-08-16 6144.943 6147.304 5938.407 6030.772  6030.772  796085900
## 73  2021-08-23 6037.700 6138.497 6021.954 6041.366  6041.366  977033500
## 74  2021-08-30 6062.113 6169.056 6054.281 6126.921  6126.921  893890700
## 75  2021-09-06 6137.126 6150.358 5982.766 6094.873  6094.873  958513400
## 76  2021-09-13 6080.062 6137.669 6052.970 6133.246  6133.246  992844400
## 77  2021-09-20 6132.034 6163.884 5996.407 6144.815  6144.815  950159400
## 78  2021-09-27 6141.470 6286.943 6086.263 6228.845  6228.845 1102928200
## 79  2021-10-04 6234.799 6497.656 6234.799 6481.769  6481.769 1172175100
## 80  2021-10-11 6482.957 6680.009 6451.678 6633.338  6633.338  941178200
## 81  2021-10-18 6649.281 6687.134 6585.557 6643.738  6643.738  757917300
## 82  2021-10-25 6626.367 6680.117 6509.878 6591.346  6591.346  899190300
## 83  2021-11-01 6618.122 6627.851 6480.010 6581.785  6581.785  828841100
## 84  2021-11-08 6599.405 6714.158 6592.055 6651.054  6651.054  921099300
## 85  2021-11-15 6661.849 6720.988 6592.228 6720.263  6720.263 1134263700
## 86  2021-11-22 6731.515 6754.464 6544.896 6561.553  6561.553 1087199900
## 87  2021-11-29 6552.803 6647.477 6484.578 6538.506  6538.506  795330100
## 88  2021-12-06 6552.816 6652.922 6525.985 6652.922  6652.922 1078695000
## 89  2021-12-13 6663.739 6688.379 6559.303 6601.932  6601.932 1011838100
## 90  2021-12-20 6571.345 6592.167 6529.593 6562.900  6562.900  941359400
## 91  2021-12-27 6570.558 6621.579 6562.554 6581.482  6581.482  763376600
## 92  2022-01-03 6586.260 6738.110 6586.133 6701.316  6701.316  884588500
## 93  2022-01-10 6697.376 6727.767 6625.757 6693.401  6693.401  854569300
## 94  2022-01-17 6711.406 6726.373 6534.270 6726.373  6726.373  805658500
## 95  2022-01-24 6700.822 6712.262 6523.929 6645.511  6645.511  986322200
## 96  2022-01-31 6656.707 6731.391 6626.656 6731.391  6731.391  777116900
## 97  2022-02-07 6751.349 6874.351 6748.909 6815.607  6815.607 1238259600
## 98  2022-02-14 6791.316 6899.410 6698.509 6892.818  6892.818 1092845600
## 99  2022-02-21 6896.752 6929.911 6758.861 6888.171  6888.171 1127214800
## 100 2022-02-28 6964.697 6996.935 6861.959 6928.328  6928.328  769293800
## 101 2022-03-07 6905.324 6929.863 6814.183 6922.602  6922.602 1085654100
## 102 2022-03-14 6949.206 7032.702 6894.921 6954.965  6954.965  949839000
## 103 2022-03-21 6945.893 7055.341 6929.934 7002.532  7002.532 1086012100
## 104 2022-03-28 6996.318 7099.497 6987.223 7078.760  7078.760  890142300
## 105 2022-04-04 7082.247 7216.494 7060.214 7210.835  7210.835  986772300
## 106 2022-04-11 7212.003 7355.300 7146.586 7235.532  7235.532 1073108900
## 107 2022-04-18 7245.504 7297.394 7174.810 7225.606  7225.606 1118782600
## 108 2022-04-25 7204.161 7267.112 7121.860 7228.914  7228.914  805992800
## 109 2022-05-02       NA       NA       NA       NA        NA         NA
## 110 2022-05-09 7154.917 7156.484 6509.879 6597.993  6597.993  778348200
## 111 2022-05-16 6603.893 6965.106 6574.136 6918.144  6918.144  816107000
## 112 2022-05-23 6930.939 7032.822 6802.713 7026.256  7026.256  750357000
## 113 2022-05-30 7052.173 7233.995 6974.616 7182.961  7182.961  949041500
## 114 2022-06-06 7163.174 7257.997 7051.223 7086.648  7086.648 1281571500
## 115 2022-06-13 6992.230 7138.496 6882.644 6936.967  6936.967 1322143900
## 116 2022-06-20 6937.008 7067.747 6859.599 7042.937  7042.937 1133599100
## 117 2022-06-27 7043.018 7070.519 6777.317 6794.328  6794.328  840889500
## 118 2022-07-04 6794.368 6796.519 6559.637 6740.219  6740.219  810131700
## 119 2022-07-11 6740.019 6757.087 6607.702 6651.905  6651.905  794121300
## 120 2022-07-18 6652.065 6901.720 6611.926 6886.962  6886.962  853012300
## 121 2022-07-25 6887.042 7032.353 6857.801 6951.123  6951.123 1387470600
## 122 2022-08-01 6951.123 7090.767 6902.630 7084.655  7084.655 1102623400
## 123 2022-08-08 7084.655 7181.100 7021.673 7129.277  7129.277 1169007600
## 124 2022-08-15 7129.277 7230.111 7080.753 7172.434  7172.434  931624200
## 125 2022-08-22 7172.434 7210.163 7064.501 7135.248  7135.248 1241361100
## 126 2022-08-29 7135.088 7223.126 7015.347 7177.179  7177.179 1359158600
## 127 2022-09-05 7177.139 7287.700 7147.976 7242.656  7242.656 1535050500
## 128 2022-09-12 7242.696 7377.495 7163.073 7168.870  7168.870 1462367300
## 129 2022-09-19 7168.950 7252.186 7127.457 7178.583  7178.583 1266925400
## 130 2022-09-26 7178.503 7178.503 6926.860 7040.798  7040.798 1036700200
## 131 2022-10-03 7040.798 7135.908 6995.062 7026.783  7026.783 1020558200
## 132 2022-10-10 7026.663 7026.663 6814.530 6814.530  6814.530 1046699200
## 133 2022-10-17 6814.530 7058.911 6747.380 7017.771  7017.771  995211200
## 134 2022-10-24 7017.811 7108.816 7016.702 7056.040  7056.040  989950000
## 135 2022-10-31 7056.040 7128.136 6962.853 7045.527  7045.527  907843500
## 136 2022-11-07 7045.527 7111.440 6956.288 7089.206  7089.206  989493100
## 137 2022-11-14 7089.206 7104.764 6955.529 7082.181  7082.181  831349300
## 138 2022-11-21 7082.181 7108.831 7013.221 7053.150  7053.150  816522900
## 139 2022-11-28 7053.110 7090.277 6967.950 7019.639  7019.639  932257000
## 140 2022-12-05 7019.639 7053.903 6683.629 6715.118  6715.118  763168800
## 141 2022-12-12 6715.118 6854.098 6641.810 6812.193  6812.193 1047258100
## 142 2022-12-19 6812.154 6844.121 6715.045 6800.673  6800.673  668236600
## 143 2022-12-26 6800.713 6858.147 6796.167 6835.808  6835.808  117543200

Mengecek ringkasan dan tipe data

str(data1)
## 'data.frame':    143 obs. of  7 variables:
##  $ Date     : IDate, format: "2020-04-06" "2020-04-13" ...
##  $ Open     : num  4623 4649 4635 4496 4716 ...
##  $ High     : num  4976 4748 4670 4727 4716 ...
##  $ Low      : num  4563 4481 4441 4475 4576 ...
##  $ Close    : num  4649 4635 4496 4716 4597 ...
##  $ Adj Close: num  4649 4635 4496 4716 4597 ...
##  $ Volume   : int  255758500 218419900 238397200 183906700 179791700 231060000 139287000 288083800 372565600 490084700 ...
summary(data1)
##       Date                 Open           High           Low      
##  Min.   :2020-04-06   Min.   :4496   Min.   :4609   Min.   :4441  
##  1st Qu.:2020-12-10   1st Qu.:5808   1st Qu.:5918   1st Qu.:5737  
##  Median :2021-08-16   Median :6256   Median :6319   Median :6162  
##  Mean   :2021-08-16   Mean   :6185   Mean   :6276   Mean   :6090  
##  3rd Qu.:2022-04-21   3rd Qu.:6869   3rd Qu.:6956   3rd Qu.:6749  
##  Max.   :2022-12-26   Max.   :7246   Max.   :7377   Max.   :7175  
##                       NA's   :1      NA's   :1      NA's   :1     
##      Close        Adj Close        Volume         
##  Min.   :4496   Min.   :4496   Min.   :1.175e+08  
##  1st Qu.:5820   1st Qu.:5820   1st Qu.:6.086e+08  
##  Median :6237   Median :6237   Median :8.210e+08  
##  Mean   :6196   Mean   :6196   Mean   :7.996e+08  
##  3rd Qu.:6874   3rd Qu.:6874   3rd Qu.:1.006e+09  
##  Max.   :7243   Max.   :7243   Max.   :1.535e+09  
##  NA's   :1      NA's   :1      NA's   :1

Mengubah tipe data Close menjadi numeric dan tipe data Date menjadi Date

data1$Date <- as.Date(data1$Date)
data1$Close <- as.numeric(data1$Close)

Mengecek keberadaan missing value

# Cek apakah ada missing value:
data1[which(is.na(data1$Close)),]
##           Date Open High Low Close Adj Close Volume
## 109 2022-05-02   NA   NA  NA    NA        NA     NA

Dari output di atas, dapat terlihat bahwa terdapat missing value pada baris ke-87 atau pada tanggal 2 mei 2022. Hal ini melanggar salah satu syarat data time series, yaitu rentang waktu yang tidak sama. Oleh karena itu, akan dilakukan penanganan missing value # Menduga missing value

data <- na_interpolation(data1, option = "spline")
data[109,]
##           Date    Open     High      Low    Close Adj Close    Volume
## 109 2022-05-02 7324.78 7258.343 6799.028 6840.217  6840.217 697324161
# Cek berdasarkan plot
ggplot(data, aes(x=Date, y=Close), x_axis_labels=daily$Date)+
  labs(title = "Distribution of Missing Values",
       y="Nilai IHSG",
       subtitle = "Time Series with missing regions") +
  geom_line() + geom_point() + theme_minimal() + 
  theme(legend.position="none", plot.title = element_text(hjust = 0.5),
        plot.subtitle = element_text(hjust = 0.5))

# Cek berdasarkan tabel
data[which(is.na(data$Close)),]
## [1] Date      Open      High      Low       Close     Adj Close Volume   
## <0 rows> (or 0-length row.names)

Setelah dilakukan penanganan, dapat terlihat bahwa nilai data Close pada tanggal 2 mei 2022 telah terisi dengan nilai 6840.217

Eksplorasi Data

Eksplorasi data diperlukan untuk melihat pola dari data time series. Selain itu, eksplorasi juga berguna dalam pembagian data training dan data testing. Data testing yang baik adalah data testing yang memiliki pola seperti data trainingnya. Maka dari itu, diperlukan eksplorasi data untuk menentukan proporsi terbaik data training vs data testing.

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

Close <- data$Close
data1.ts <- ts(Close)
data1.ts
## Time Series:
## Start = 1 
## End = 143 
## Frequency = 1 
##   [1] 4649.079 4634.821 4496.064 4716.403 4597.430 4507.607 4545.952 4753.612
##   [9] 4947.782 4880.359 4942.275 4904.088 4973.794 5031.256 5079.585 5082.991
##  [17] 5149.627 5143.893 5247.690 5272.810 5346.659 5239.851 5016.712 5059.223
##  [25] 4945.791 4926.734 5053.663 5103.414 5112.188 5128.225 5335.529 5461.058
##  [33] 5571.656 5783.335 5810.483 5938.329 6104.324 6008.709 5979.073 6257.835
##  [41] 6373.412 6307.127 5862.352 6151.729 6222.521 6231.932 6241.796 6258.749
##  [49] 6358.209 6356.160 6195.562 6011.456 6070.209 6086.258 6016.864 5995.616
##  [57] 5928.309 5938.351 5773.120 5848.616 6065.166 6095.497 6007.120 6022.399
##  [65] 6023.008 6039.844 6072.510 6101.690 6070.039 6203.431 6139.492 6030.772
##  [73] 6041.366 6126.921 6094.873 6133.246 6144.815 6228.845 6481.769 6633.338
##  [81] 6643.738 6591.346 6581.785 6651.054 6720.263 6561.553 6538.506 6652.922
##  [89] 6601.932 6562.900 6581.482 6701.316 6693.401 6726.373 6645.511 6731.391
##  [97] 6815.607 6892.818 6888.171 6928.328 6922.602 6954.965 7002.532 7078.760
## [105] 7210.835 7235.532 7225.606 7228.914 6840.217 6597.993 6918.144 7026.256
## [113] 7182.961 7086.648 6936.967 7042.937 6794.328 6740.219 6651.905 6886.962
## [121] 6951.123 7084.655 7129.277 7172.434 7135.248 7177.179 7242.656 7168.870
## [129] 7178.583 7040.798 7026.783 6814.530 7017.771 7056.040 7045.527 7089.206
## [137] 7082.181 7053.150 7019.639 6715.118 6812.193 6800.673 6835.808

Mengambil kolom data yang diambil yaitu Date dan Close

data <- data[c("Date","Close")]
View(data)

Membuat plot data deret waktu

ts.plot(data1.ts, xlab="Time Period ", ylab="Close", 
        main = "Time Series Plot")
points(data1.ts)

# Double Moving Average (DMA) dan Double Exponential Smoothing (DES)

Pembagian Data

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

#membagi data latih dan data uji
training_ma <- data[1:115,]
testing_ma <- data[116:143,]
train_ma.ts <- ts(training_ma$Close)
test_ma.ts <- ts(testing_ma$Close)

Eksplorasi Data

Eksplorasi data dilakukan pada keseluruhan data, data latih serta data uji menggunakan plot data deret waktu.

#eksplorasi keseluruhan data
plot(data1.ts, col="red",main="Plot semua data")
points(data1.ts)

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

#eksplorasi data uji
plot(test_ma.ts, col="blue",main="Plot data uji")
points(test_ma.ts)

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

#Eksplorasi dengan GGPLOT
library(ggplot2)
ggplot() + 
  geom_line(data = training_ma, aes(x = Date, y = Close, col = "Data Latih")) +
  geom_line(data = testing_ma, aes(x = Date, y = Close, col = "Data Uji")) +
  labs(x = "Periode Waktu", y = "Close", color = "Legend") +
  scale_colour_manual(name="Keterangan:", breaks = c("Data Latih", "Data Uji"),
                      values = c("blue", "red")) + 
  theme_bw() + theme(legend.position = "bottom",
                     plot.caption = element_text(hjust=0.5, size=12))

Double Moving Average (DMA)

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

data.sma<-SMA(train_ma.ts, n=4)
data.sma
## Time Series:
## Start = 1 
## End = 115 
## Frequency = 1 
##   [1]       NA       NA       NA 4624.092 4611.179 4579.376 4591.848 4601.150
##   [9] 4688.738 4781.926 4881.007 4918.626 4925.129 4962.853 4997.181 5041.906
##  [17] 5085.865 5114.024 5156.050 5203.505 5252.763 5276.753 5219.008 5165.611
##  [25] 5065.394 4987.115 4996.353 5007.401 5049.000 5099.373 5169.839 5259.250
##  [33] 5374.117 5537.894 5656.633 5775.951 5909.118 5965.461 6007.609 6087.485
##  [41] 6154.757 6229.362 6200.182 6173.655 6135.932 6117.134 6211.995 6238.750
##  [49] 6272.672 6303.729 6292.170 6230.347 6158.347 6090.871 6046.197 6042.237
##  [57] 6006.762 5969.785 5908.849 5872.099 5906.313 5945.600 6004.100 6047.546
##  [65] 6037.006 6023.093 6039.440 6059.263 6071.021 6111.917 6128.663 6110.934
##  [73] 6103.765 6084.638 6073.483 6099.102 6124.964 6150.445 6247.169 6372.192
##  [81] 6496.922 6587.548 6612.552 6616.981 6636.112 6628.664 6617.844 6618.311
##  [89] 6588.728 6589.065 6599.809 6611.907 6634.775 6675.643 6691.650 6699.169
##  [97] 6729.721 6771.332 6831.997 6881.231 6907.980 6923.516 6952.107 6989.715
## [105] 7061.773 7131.915 7187.683 7225.222 7132.567 6973.182 6896.317 6845.652
## [113] 6931.339 7053.502 7058.208

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 4624.092 4611.179 4579.376 4591.848
##   [9] 4601.150 4688.738 4781.926 4881.007 4918.626 4925.129 4962.853 4997.181
##  [17] 5041.906 5085.865 5114.024 5156.050 5203.505 5252.763 5276.753 5219.008
##  [25] 5165.611 5065.394 4987.115 4996.353 5007.401 5049.000 5099.373 5169.839
##  [33] 5259.250 5374.117 5537.894 5656.633 5775.951 5909.118 5965.461 6007.609
##  [41] 6087.485 6154.757 6229.362 6200.182 6173.655 6135.932 6117.134 6211.995
##  [49] 6238.750 6272.672 6303.729 6292.170 6230.347 6158.347 6090.871 6046.197
##  [57] 6042.237 6006.762 5969.785 5908.849 5872.099 5906.313 5945.600 6004.100
##  [65] 6047.546 6037.006 6023.093 6039.440 6059.263 6071.021 6111.917 6128.663
##  [73] 6110.934 6103.765 6084.638 6073.483 6099.102 6124.964 6150.445 6247.169
##  [81] 6372.192 6496.922 6587.548 6612.552 6616.981 6636.112 6628.664 6617.844
##  [89] 6618.311 6588.728 6589.065 6599.809 6611.907 6634.775 6675.643 6691.650
##  [97] 6699.169 6729.721 6771.332 6831.997 6881.231 6907.980 6923.516 6952.107
## [105] 6989.715 7061.773 7131.915 7187.683 7225.222 7132.567 6973.182 6896.317
## [113] 6845.652 6931.339 7053.502 7058.208

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

data.gab<-cbind(aktual=c(train_ma.ts,rep(NA,28)),pemulusan=c(data.sma,rep(NA,28)),ramalan=c(data.ramal,rep(data.ramal[length(data.ramal)],27)))
data.gab #forecast 28 periode ke depan
##          aktual pemulusan  ramalan
##   [1,] 4649.079        NA       NA
##   [2,] 4634.821        NA       NA
##   [3,] 4496.064        NA       NA
##   [4,] 4716.403  4624.092       NA
##   [5,] 4597.430  4611.179 4624.092
##   [6,] 4507.607  4579.376 4611.179
##   [7,] 4545.952  4591.848 4579.376
##   [8,] 4753.612  4601.150 4591.848
##   [9,] 4947.782  4688.738 4601.150
##  [10,] 4880.359  4781.926 4688.738
##  [11,] 4942.275  4881.007 4781.926
##  [12,] 4904.088  4918.626 4881.007
##  [13,] 4973.794  4925.129 4918.626
##  [14,] 5031.256  4962.853 4925.129
##  [15,] 5079.585  4997.181 4962.853
##  [16,] 5082.991  5041.906 4997.181
##  [17,] 5149.627  5085.865 5041.906
##  [18,] 5143.893  5114.024 5085.865
##  [19,] 5247.690  5156.050 5114.024
##  [20,] 5272.810  5203.505 5156.050
##  [21,] 5346.659  5252.763 5203.505
##  [22,] 5239.851  5276.753 5252.763
##  [23,] 5016.712  5219.008 5276.753
##  [24,] 5059.223  5165.611 5219.008
##  [25,] 4945.791  5065.394 5165.611
##  [26,] 4926.734  4987.115 5065.394
##  [27,] 5053.663  4996.353 4987.115
##  [28,] 5103.414  5007.401 4996.353
##  [29,] 5112.188  5049.000 5007.401
##  [30,] 5128.225  5099.373 5049.000
##  [31,] 5335.529  5169.839 5099.373
##  [32,] 5461.058  5259.250 5169.839
##  [33,] 5571.656  5374.117 5259.250
##  [34,] 5783.335  5537.894 5374.117
##  [35,] 5810.483  5656.633 5537.894
##  [36,] 5938.329  5775.951 5656.633
##  [37,] 6104.324  5909.118 5775.951
##  [38,] 6008.709  5965.461 5909.118
##  [39,] 5979.073  6007.609 5965.461
##  [40,] 6257.835  6087.485 6007.609
##  [41,] 6373.412  6154.757 6087.485
##  [42,] 6307.127  6229.362 6154.757
##  [43,] 5862.352  6200.182 6229.362
##  [44,] 6151.729  6173.655 6200.182
##  [45,] 6222.521  6135.932 6173.655
##  [46,] 6231.932  6117.134 6135.932
##  [47,] 6241.796  6211.995 6117.134
##  [48,] 6258.749  6238.750 6211.995
##  [49,] 6358.209  6272.672 6238.750
##  [50,] 6356.160  6303.729 6272.672
##  [51,] 6195.562  6292.170 6303.729
##  [52,] 6011.456  6230.347 6292.170
##  [53,] 6070.209  6158.347 6230.347
##  [54,] 6086.258  6090.871 6158.347
##  [55,] 6016.864  6046.197 6090.871
##  [56,] 5995.616  6042.237 6046.197
##  [57,] 5928.309  6006.762 6042.237
##  [58,] 5938.351  5969.785 6006.762
##  [59,] 5773.120  5908.849 5969.785
##  [60,] 5848.616  5872.099 5908.849
##  [61,] 6065.166  5906.313 5872.099
##  [62,] 6095.497  5945.600 5906.313
##  [63,] 6007.120  6004.100 5945.600
##  [64,] 6022.399  6047.546 6004.100
##  [65,] 6023.008  6037.006 6047.546
##  [66,] 6039.844  6023.093 6037.006
##  [67,] 6072.510  6039.440 6023.093
##  [68,] 6101.690  6059.263 6039.440
##  [69,] 6070.039  6071.021 6059.263
##  [70,] 6203.431  6111.917 6071.021
##  [71,] 6139.492  6128.663 6111.917
##  [72,] 6030.772  6110.934 6128.663
##  [73,] 6041.366  6103.765 6110.934
##  [74,] 6126.921  6084.638 6103.765
##  [75,] 6094.873  6073.483 6084.638
##  [76,] 6133.246  6099.102 6073.483
##  [77,] 6144.815  6124.964 6099.102
##  [78,] 6228.845  6150.445 6124.964
##  [79,] 6481.769  6247.169 6150.445
##  [80,] 6633.338  6372.192 6247.169
##  [81,] 6643.738  6496.922 6372.192
##  [82,] 6591.346  6587.548 6496.922
##  [83,] 6581.785  6612.552 6587.548
##  [84,] 6651.054  6616.981 6612.552
##  [85,] 6720.263  6636.112 6616.981
##  [86,] 6561.553  6628.664 6636.112
##  [87,] 6538.506  6617.844 6628.664
##  [88,] 6652.922  6618.311 6617.844
##  [89,] 6601.932  6588.728 6618.311
##  [90,] 6562.900  6589.065 6588.728
##  [91,] 6581.482  6599.809 6589.065
##  [92,] 6701.316  6611.907 6599.809
##  [93,] 6693.401  6634.775 6611.907
##  [94,] 6726.373  6675.643 6634.775
##  [95,] 6645.511  6691.650 6675.643
##  [96,] 6731.391  6699.169 6691.650
##  [97,] 6815.607  6729.721 6699.169
##  [98,] 6892.818  6771.332 6729.721
##  [99,] 6888.171  6831.997 6771.332
## [100,] 6928.328  6881.231 6831.997
## [101,] 6922.602  6907.980 6881.231
## [102,] 6954.965  6923.516 6907.980
## [103,] 7002.532  6952.107 6923.516
## [104,] 7078.760  6989.715 6952.107
## [105,] 7210.835  7061.773 6989.715
## [106,] 7235.532  7131.915 7061.773
## [107,] 7225.606  7187.683 7131.915
## [108,] 7228.914  7225.222 7187.683
## [109,] 6840.217  7132.567 7225.222
## [110,] 6597.993  6973.182 7132.567
## [111,] 6918.144  6896.317 6973.182
## [112,] 7026.256  6845.652 6896.317
## [113,] 7182.961  6931.339 6845.652
## [114,] 7086.648  7053.502 6931.339
## [115,] 6936.967  7058.208 7053.502
## [116,]       NA        NA 7058.208
## [117,]       NA        NA 7058.208
## [118,]       NA        NA 7058.208
## [119,]       NA        NA 7058.208
## [120,]       NA        NA 7058.208
## [121,]       NA        NA 7058.208
## [122,]       NA        NA 7058.208
## [123,]       NA        NA 7058.208
## [124,]       NA        NA 7058.208
## [125,]       NA        NA 7058.208
## [126,]       NA        NA 7058.208
## [127,]       NA        NA 7058.208
## [128,]       NA        NA 7058.208
## [129,]       NA        NA 7058.208
## [130,]       NA        NA 7058.208
## [131,]       NA        NA 7058.208
## [132,]       NA        NA 7058.208
## [133,]       NA        NA 7058.208
## [134,]       NA        NA 7058.208
## [135,]       NA        NA 7058.208
## [136,]       NA        NA 7058.208
## [137,]       NA        NA 7058.208
## [138,]       NA        NA 7058.208
## [139,]       NA        NA 7058.208
## [140,]       NA        NA 7058.208
## [141,]       NA        NA 7058.208
## [142,]       NA        NA 7058.208
## [143,]       NA        NA 7058.208

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 4 kali.

dma <- SMA(data.sma, n = 4)
At <- 2*data.sma - dma
Bt <- 2/(4-1)*(data.sma - dma)
data.dma<- At+Bt
data.ramal2<- c(NA, data.dma)

t = 1:28
f = c()

for (i in t) {
  f[i] = At[length(At)] + Bt[length(Bt)]*(i)
}

data.gab2 <- cbind(aktual = c(train_ma.ts,rep(NA,28)), pemulusan1 = c(data.sma,rep(NA,28)),pemulusan2 = c(data.dma, rep(NA,28)),At = c(At, rep(NA,28)), Bt = c(Bt,rep(NA,28)),ramalan = c(data.ramal2, f[-1]))
data.gab2
##          aktual pemulusan1 pemulusan2       At          Bt  ramalan
##   [1,] 4649.079         NA         NA       NA          NA       NA
##   [2,] 4634.821         NA         NA       NA          NA       NA
##   [3,] 4496.064         NA         NA       NA          NA       NA
##   [4,] 4716.403   4624.092         NA       NA          NA       NA
##   [5,] 4597.430   4611.179         NA       NA          NA       NA
##   [6,] 4507.607   4579.376         NA       NA          NA       NA
##   [7,] 4545.952   4591.848   4575.555 4582.072   -6.517171       NA
##   [8,] 4753.612   4601.150   4609.920 4606.412    3.507894 4575.555
##   [9,] 4947.782   4688.738   4811.172 4762.198   48.973429 4609.920
##  [10,] 4880.359   4781.926   4975.277 4897.937   77.340373 4811.172
##  [11,] 4942.275   4881.007   5119.009 5023.808   95.201009 4975.277
##  [12,] 4904.088   4918.626   5087.045 5019.678   67.367737 5119.009
##  [13,] 4973.794   4925.129   5005.890 4973.586   32.304586 5087.045
##  [14,] 5031.256   4962.853   5031.102 5003.803   27.299601 5005.890
##  [15,] 5079.585   4997.181   5074.236 5043.414   30.822327 5031.102
##  [16,] 5082.991   5041.906   5142.138 5102.046   40.092794 5074.236
##  [17,] 5149.627   5085.865   5192.387 5149.778   42.608988 5142.138
##  [18,] 5143.893   5114.024   5204.491 5168.304   36.186707 5192.387
##  [19,] 5247.690   5156.050   5250.365 5212.639   37.725932 5204.491
##  [20,] 5272.810   5203.505   5309.578 5267.149   42.429321 5250.365
##  [21,] 5346.659   5252.763   5371.392 5323.941   47.451640 5309.578
##  [22,] 5239.851   5276.753   5367.561 5331.237   36.323222 5371.392
##  [23,] 5016.712   5219.008   5187.343 5200.009  -12.666077 5367.561
##  [24,] 5059.223   5165.611   5060.741 5102.689  -41.948283 5187.343
##  [25,] 4945.791   5065.394   4871.566 4949.097  -77.531514 5060.741
##  [26,] 4926.734   4987.115   4783.503 4864.948  -81.444783 4871.566
##  [27,] 5053.663   4996.353   4900.910 4939.087  -38.177043 4783.503
##  [28,] 5103.414   5007.401   4996.292 5000.735   -4.443420 4900.910
##  [29,] 5112.188   5049.000   5114.054 5088.033   26.021830 4996.292
##  [30,] 5128.225   5099.373   5201.608 5160.714   40.894104 5114.054
##  [31,] 5335.529   5169.839   5317.232 5258.275   58.957357 5201.608
##  [32,] 5461.058   5259.250   5450.724 5374.135   76.589783 5317.232
##  [33,] 5571.656   5374.117   5621.571 5522.589   98.981547 5450.724
##  [34,] 5783.335   5537.894   5875.593 5740.514  135.079549 5621.571
##  [35,] 5810.483   5656.633   5989.399 5856.292  133.106242 5875.593
##  [36,] 5938.329   5775.951   6092.287 5965.753  126.534627 5989.399
##  [37,] 6104.324   5909.118   6224.483 6098.337  126.145894 6092.287
##  [38,] 6008.709   5965.461   6196.579 6104.132   92.447082 6224.483
##  [39,] 5979.073   6007.609   6162.733 6100.683   62.049479 6196.579
##  [40,] 6257.835   6087.485   6245.930 6182.552   63.378011 6162.733
##  [41,] 6373.412   6154.757   6322.973 6255.686   67.286072 6245.930
##  [42,] 6307.127   6229.362   6411.959 6338.920   73.038981 6322.973
##  [43,] 5862.352   6200.182   6253.907 6232.417   21.490011 6411.959
##  [44,] 6151.729   6173.655   6147.265 6157.821  -10.555928 6253.907
##  [45,] 6222.521   6135.932   6054.515 6087.082  -32.566935 6147.265
##  [46,] 6231.932   6117.134   6051.147 6077.542  -26.394694 6054.515
##  [47,] 6241.796   6211.995   6299.187 6264.310   34.877116 6051.147
##  [48,] 6258.749   6238.750   6343.411 6301.547   41.864705 6299.187
##  [49,] 6358.209   6272.672   6376.895 6335.206   41.689494 6343.411
##  [50,] 6356.160   6303.729   6381.966 6350.671   31.295003 6376.895
##  [51,] 6195.562   6292.170   6317.737 6307.510   10.226766 6381.966
##  [52,] 6011.456   6230.347   6156.376 6185.964  -29.588277 6317.737
##  [53,] 6070.209   6158.347   6012.011 6070.546  -58.534159 6156.376
##  [54,] 6086.258   6090.871   5920.767 5988.809  -68.041667 6012.011
##  [55,] 6016.864   6046.197   5904.124 5960.953  -56.829142 5920.767
##  [56,] 5995.616   6042.237   5971.943 6000.061  -28.117432 5904.124
##  [57,] 5928.309   6006.762   5940.504 5967.007  -26.503235 5971.943
##  [58,] 5938.351   5969.785   5892.352 5923.325  -30.973328 5940.504
##  [59,] 5773.120   5908.849   5787.084 5835.790  -48.706014 5892.352
##  [60,] 5848.616   5872.099   5759.975 5804.824  -44.849752 5787.084
##  [61,] 6065.166   5906.313   5893.066 5898.365   -5.298869 5759.975
##  [62,] 6095.497   5945.600   6007.907 5982.984   24.922994 5893.066
##  [63,] 6007.120   6004.100   6124.220 6076.172   48.047872 6007.907
##  [64,] 6022.399   6047.546   6166.972 6119.201   47.770589 6124.220
##  [65,] 6023.008   6037.006   6084.411 6065.449   18.962118 6166.972
##  [66,] 6039.844   6023.093   6015.021 6018.250   -3.228841 6084.411
##  [67,] 6072.510   6039.440   6043.889 6042.109    1.779378 6015.021
##  [68,] 6101.690   6059.263   6091.867 6078.825   13.041646 6043.889
##  [69,] 6070.039   6071.021   6109.048 6093.837   15.211060 6091.867
##  [70,] 6203.431   6111.917   6181.096 6153.425   27.671427 6109.048
##  [71,] 6139.492   6128.663   6188.575 6164.610   23.964681 6181.096
##  [72,] 6030.772   6110.934   6119.767 6116.233    3.533244 6188.575
##  [73,] 6041.366   6103.765   6087.008 6093.711   -6.703003 6119.767
##  [74,] 6126.921   6084.638   6047.368 6062.276  -14.908101 6087.008
##  [75,] 6094.873   6073.483   6040.613 6053.761  -13.147949 6047.368
##  [76,] 6133.246   6099.102   6113.859 6107.956    5.903076 6040.613
##  [77,] 6144.815   6124.964   6173.992 6154.381   19.611470 6113.859
##  [78,] 6228.845   6150.445   6214.522 6188.891   25.631022 6173.992
##  [79,] 6481.769   6247.169   6400.084 6338.918   61.166056 6214.522
##  [80,] 6633.338   6372.192   6619.691 6520.691   98.999654 6400.084
##  [81,] 6643.738   6496.922   6797.323 6677.163  120.160339 6619.691
##  [82,] 6591.346   6587.548   6856.864 6749.138  107.726685 6797.323
##  [83,] 6581.785   6612.552   6771.299 6707.800   63.498881 6856.864
##  [84,] 6651.054   6616.981   6681.114 6655.461   25.653422 6771.299
##  [85,] 6720.263   6636.112   6674.136 6658.926   15.209371 6681.114
##  [86,] 6561.553   6628.664   6637.142 6633.751    3.391174 6674.136
##  [87,] 6538.506   6617.844   6606.084 6610.788   -4.704101 6637.142
##  [88,] 6652.922   6618.311   6606.775 6611.389   -4.614522 6606.084
##  [89,] 6601.932   6588.728   6547.631 6564.070  -16.439046 6606.775
##  [90,] 6562.900   6589.065   6565.028 6574.643   -9.614767 6547.631
##  [91,] 6581.482   6599.809   6601.193 6600.640    0.553772 6565.028
##  [92,] 6701.316   6611.907   6636.124 6626.438    9.686707 6601.193
##  [93,] 6693.401   6634.775   6677.917 6660.660   17.257100 6636.124
##  [94,] 6726.373   6675.643   6750.825 6720.752   30.072957 6677.917
##  [95,] 6645.511   6691.650   6755.244 6729.807   25.437622 6750.825
##  [96,] 6731.391   6699.169   6738.935 6723.029   15.906555 6755.244
##  [97,] 6815.607   6729.721   6780.845 6760.395   20.449910 6738.935
##  [98,] 6892.818   6771.332   6851.938 6819.696   32.242574 6780.845
##  [99,] 6888.171   6831.997   6955.234 6905.939   49.294779 6851.938
## [100,] 6928.328   6881.231   7010.666 6958.892   51.773967 6955.234
## [101,] 6922.602   6907.980   7007.721 6967.825   39.896627 7010.666
## [102,] 6954.965   6923.516   6985.742 6960.852   24.890340 7007.721
## [103,] 7002.532   6952.107   7011.937 6988.005   23.932210 6985.742
## [104,] 7078.760   6989.715   7067.024 7036.100   30.923523 7011.937
## [105,] 7210.835   7061.773   7195.098 7141.768   53.330139 7067.024
## [106,] 7235.532   7131.915   7295.311 7229.952   65.358317 7195.098
## [107,] 7225.606   7187.683   7345.870 7282.595   63.274536 7295.311
## [108,] 7228.914   7225.222   7347.844 7298.795   49.049072 7345.870
## [109,] 6840.217   7132.567   7071.268 7095.788  -24.519694 7347.844
## [110,] 6597.993   6973.182   6712.380 6816.701 -104.320814 7071.268
## [111,] 6918.144   6896.317   6628.808 6735.812 -107.003425 6712.380
## [112,] 7026.256   6845.652   6651.857 6729.375  -77.518229 6628.808
## [113,] 7182.961   6931.339   6964.198 6951.054   13.143941 6651.857
## [114,] 7086.648   7053.502   7256.502 7175.302   81.199782 6964.198
## [115,] 6936.967   7058.208   7201.596 7144.241   57.355089 7256.502
## [116,]       NA         NA         NA       NA          NA 7201.596
## [117,]       NA         NA         NA       NA          NA 7258.951
## [118,]       NA         NA         NA       NA          NA 7316.306
## [119,]       NA         NA         NA       NA          NA 7373.661
## [120,]       NA         NA         NA       NA          NA 7431.016
## [121,]       NA         NA         NA       NA          NA 7488.371
## [122,]       NA         NA         NA       NA          NA 7545.726
## [123,]       NA         NA         NA       NA          NA 7603.081
## [124,]       NA         NA         NA       NA          NA 7660.436
## [125,]       NA         NA         NA       NA          NA 7717.791
## [126,]       NA         NA         NA       NA          NA 7775.146
## [127,]       NA         NA         NA       NA          NA 7832.502
## [128,]       NA         NA         NA       NA          NA 7889.857
## [129,]       NA         NA         NA       NA          NA 7947.212
## [130,]       NA         NA         NA       NA          NA 8004.567
## [131,]       NA         NA         NA       NA          NA 8061.922
## [132,]       NA         NA         NA       NA          NA 8119.277
## [133,]       NA         NA         NA       NA          NA 8176.632
## [134,]       NA         NA         NA       NA          NA 8233.987
## [135,]       NA         NA         NA       NA          NA 8291.342
## [136,]       NA         NA         NA       NA          NA 8348.697
## [137,]       NA         NA         NA       NA          NA 8406.052
## [138,]       NA         NA         NA       NA          NA 8463.408
## [139,]       NA         NA         NA       NA          NA 8520.763
## [140,]       NA         NA         NA       NA          NA 8578.118
## [141,]       NA         NA         NA       NA          NA 8635.473
## [142,]       NA         NA         NA       NA          NA 8692.828
## [143,]       NA         NA         NA       NA          NA 8750.183

Hasil pemulusan menggunakan metode DMA divisualisasikan sebagai berikut

ts.plot(data1.ts, xlab="Time Period ", ylab="Close", main= "DMA N=4 Data Close")
points(data1.ts)
lines(data.gab2[,3],col="green",lwd=2)
lines(data.gab2[,6],col="red",lwd=2)
legend("topleft",c("data aktual","data pemulusan","data peramalan"), lty=8, col=c("black","green","red"), cex=0.8)

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

#Menghitung nilai keakuratan data latih
error_train.dma = train_ma.ts-data.ramal2[1:length(train_ma.ts)]
SSE_train.dma = sum(error_train.dma[8:length(train_ma.ts)]^2)
MSE_train.dma = mean(error_train.dma[8:length(train_ma.ts)]^2)
MAPE_train.dma = mean(abs((error_train.dma[8:length(train_ma.ts)]/train_ma.ts[8:length(train_ma.ts)])*100))

akurasi_train.dma <- matrix(c(SSE_train.dma, MSE_train.dma, MAPE_train.dma))
row.names(akurasi_train.dma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_train.dma) <- c("Akurasi m = 4")
akurasi_train.dma
##      Akurasi m = 4
## SSE   2.996853e+06
## MSE   2.774864e+04
## MAPE  1.979160e+00

Perhitungan akurasi pada data latih menggunakan nilai MAPE menghasilkan nilai MAPE yang kurang dari 10% sehingga dikategorikan sangat baik. Selanjutnya, perhitungan nilai akurasi dilakukan pada data uji.

#Menghitung nilai keakuratan data uji
error_test.dma = test_ma.ts-data.gab2[116:143,6]
SSE_test.dma = sum(error_test.dma^2)
MSE_test.dma = mean(error_test.dma^2)
MAPE_test.dma = mean(abs((error_test.dma/test_ma.ts*100)))

akurasi_test.dma <- matrix(c(SSE_test.dma, MSE_test.dma, MAPE_test.dma))
row.names(akurasi_test.dma)<- c("SSE", "MSE", "MAPE")
colnames(akurasi_test.dma) <- c("Akurasi m = 4")
akurasi_test.dma
##      Akurasi m = 4
## SSE   3.411581e+07
## MSE   1.218422e+06
## MAPE  1.414680e+01

Perhitungan akurasi menggunakan data latih menghasilkan nilai MAPE yang kurang dari 10% sehingga nilai akurasi ini dapat dikategorikan sebagai sangat baik.

Double Exponential Smoothing (DES)

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

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

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

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

#ramalan
ramalandes1<- forecast(des.1, h=28)
ramalandes1
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 116       7043.486 6783.969 7303.002 6646.590 7440.382
## 117       7038.680 6771.794 7305.565 6630.513 7446.846
## 118       7033.874 6757.273 7310.475 6610.849 7456.899
## 119       7029.068 6740.269 7317.867 6587.389 7470.747
## 120       7024.262 6720.728 7327.796 6560.047 7488.478
## 121       7019.456 6698.662 7340.250 6528.844 7510.068
## 122       7014.650 6674.140 7355.161 6493.884 7535.416
## 123       7009.844 6647.264 7372.425 6455.325 7564.364
## 124       7005.039 6618.159 7391.918 6413.357 7596.720
## 125       7000.233 6586.958 7413.508 6368.183 7632.282
## 126       6995.427 6553.791 7437.062 6320.004 7670.850
## 127       6990.621 6518.786 7462.455 6269.012 7712.230
## 128       6985.815 6482.059 7489.571 6215.387 7756.243
## 129       6981.009 6443.716 7518.302 6159.291 7802.727
## 130       6976.203 6403.854 7548.553 6100.870 7851.536
## 131       6971.397 6362.556 7580.238 6040.255 7902.539
## 132       6966.591 6319.901 7613.282 5977.564 7955.619
## 133       6961.786 6275.955 7647.616 5912.898 8010.673
## 134       6956.980 6230.779 7683.180 5846.352 8067.608
## 135       6952.174 6184.426 7719.921 5778.006 8126.342
## 136       6947.368 6136.945 7757.790 5707.934 8186.802
## 137       6942.562 6088.379 7796.745 5636.201 8248.923
## 138       6937.756 6038.765 7836.747 5562.868 8312.644
## 139       6932.950 5988.140 7877.761 5487.987 8377.913
## 140       6928.144 5936.534 7919.755 5411.607 8444.682
## 141       6923.338 5883.976 7962.700 5333.772 8512.905
## 142       6918.533 5830.494 8006.571 5254.521 8582.544
## 143       6913.727 5776.110 8051.344 5173.891 8653.562
#Lamda=0.6 dan gamma=0.3
des.2<- HoltWinters(train_ma.ts, gamma = FALSE, beta = 0.3, alpha = 0.6)
plot(des.2)

#ramalan
ramalandes2<- forecast(des.2, h=28)
ramalandes2
##     Point Forecast    Lo 80     Hi 80    Lo 95     Hi 95
## 116       7014.581 6835.589  7193.572 6740.837  7288.325
## 117       7014.706 6787.705  7241.708 6667.537  7361.876
## 118       7014.832 6730.129  7299.536 6579.416  7450.249
## 119       7014.958 6664.683  7365.233 6479.259  7550.658
## 120       7015.084 6592.573  7437.595 6368.909  7661.259
## 121       7015.210 6514.609  7515.810 6249.607  7780.812
## 122       7015.336 6431.362  7599.309 6122.225  7908.446
## 123       7015.461 6343.253  7687.669 5987.408  8043.515
## 124       7015.587 6250.608  7780.566 5845.653  8185.522
## 125       7015.713 6153.687  7877.739 5697.358  8334.068
## 126       7015.839 6052.705  7978.973 5542.852  8488.825
## 127       7015.965 5947.843  8084.087 5382.413  8649.517
## 128       7016.091 5839.257  8192.924 5216.279  8815.902
## 129       7016.216 5727.085  8305.348 5044.659  8987.773
## 130       7016.342 5611.447  8421.238 4867.740  9164.944
## 131       7016.468 5492.452  8540.484 4685.687  9347.249
## 132       7016.594 5370.199  8662.989 4498.649  9534.538
## 133       7016.720 5244.776  8788.664 4306.765  9726.674
## 134       7016.845 5116.265  8917.425 4110.159  9923.532
## 135       7016.971 4984.743  9049.199 3908.947 10124.996
## 136       7017.097 4850.279  9183.915 3703.235 10330.959
## 137       7017.223 4712.938  9321.508 3493.123 10541.323
## 138       7017.349 4572.780  9461.917 3278.704 10755.993
## 139       7017.475 4429.863  9605.086 3060.065 10974.884
## 140       7017.600 4284.241  9750.960 2837.288 11197.913
## 141       7017.726 4135.962  9899.490 2610.449 11425.004
## 142       7017.852 3985.076 10050.628 2379.621 11656.083
## 143       7017.978 3831.627 10204.329 2144.874 11891.081

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

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

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

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

#ramalan
ramalandesopt<- forecast(des.opt, h=28)
ramalandesopt
##     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 116       6949.466 6792.310 7106.623 6709.117 7189.816
## 117       6961.966 6737.507 7186.425 6618.686 7305.246
## 118       6974.466 6696.850 7252.081 6549.890 7399.042
## 119       6986.965 6663.263 7310.667 6491.906 7482.025
## 120       6999.465 6634.035 7364.895 6440.588 7558.342
## 121       7011.964 6607.789 7416.140 6393.831 7630.098
## 122       7024.464 6583.716 7465.212 6350.399 7698.530
## 123       7036.964 6561.295 7512.632 6309.491 7764.436
## 124       7049.463 6540.166 7558.760 6270.561 7828.366
## 125       7061.963 6520.072 7603.854 6233.212 7890.713
## 126       7074.462 6500.819 7648.106 6197.150 7951.775
## 127       7086.962 6482.258 7691.666 6162.147 8011.777
## 128       7099.462 6464.273 7734.650 6128.024 8070.899
## 129       7111.961 6446.770 7777.152 6094.639 8129.283
## 130       7124.461 6429.673 7819.249 6061.875 8187.047
## 131       7136.961 6412.919 7861.002 6029.634 8244.287
## 132       7149.460 6396.454 7902.466 5997.837 8301.083
## 133       7161.960 6380.236 7943.684 5966.416 8357.504
## 134       7174.459 6364.224 7984.695 5935.311 8413.607
## 135       7186.959 6348.387 8025.531 5904.474 8469.444
## 136       7199.459 6332.697 8066.220 5873.861 8525.056
## 137       7211.958 6317.129 8106.788 5843.434 8580.482
## 138       7224.458 6301.660 8147.255 5813.161 8635.755
## 139       7236.957 6286.274 8187.641 5783.012 8690.903
## 140       7249.457 6270.951 8227.963 5752.962 8745.952
## 141       7261.957 6255.679 8268.235 5722.987 8800.926
## 142       7274.456 6240.442 8308.470 5693.068 8855.844
## 143       7286.956 6225.230 8348.682 5663.186 8910.725

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

Akurasi Data Latih

#Akurasi Data Training
ssedes.train1<-des.1$SSE
msedes.train1<-ssedes.train1/length(train_ma.ts)
sisaandes1<-ramalandes1$residuals
head(sisaandes1)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]         NA         NA -124.49853  139.97828    6.64908  -71.13083
mapedes.train1 <- sum(abs(sisaandes1[3:length(train_ma.ts)]/train_ma.ts[3:length(train_ma.ts)])
                      *100)/length(train_ma.ts)

akurasides.1 <- matrix(c(ssedes.train1,msedes.train1,mapedes.train1))
row.names(akurasides.1)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.1) <- c("Akurasi lamda=0.2 dan gamma=0.2")
akurasides.1
##      Akurasi lamda=0.2 dan gamma=0.2
## SSE                     4.593269e+06
## MSE                     3.994147e+04
## MAPE                    2.590253e+00
ssedes.train2<-des.2$SSE
msedes.train2<-ssedes.train2/length(train_ma.ts)
sisaandes2<-ramalandes2$residuals
head(sisaandes2)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
## [1]         NA         NA -124.49853  207.20749  -36.71897  -98.53073
mapedes.train2 <- sum(abs(sisaandes2[3:length(train_ma.ts)]/train_ma.ts[3:length(train_ma.ts)])
                      *100)/length(train_ma.ts)

akurasides.2 <- matrix(c(ssedes.train2,msedes.train2,mapedes.train2))
row.names(akurasides.2)<- c("SSE", "MSE", "MAPE")
colnames(akurasides.2) <- c("Akurasi lamda=0.6 dan gamma=0.3")
akurasides.2
##      Akurasi lamda=0.6 dan gamma=0.3
## SSE                     2.184852e+06
## MSE                     1.899872e+04
## MAPE                    1.583727e+00

Hasil akurasi dari data latih didapatkan skenario 2 dengan lamda=0.6 dan gamma=0.3 memiliki hasil yang lebih baik. Namun untuk kedua skenario dapat dikategorikan peramalan sangat baik berdasarkan nilai MAPE-nya.

Akurasi Data Uji

#Akurasi Data Testing
selisihdes1<-ramalandes1$mean-testing_ma$Close
selisihdes1
## Time Series:
## Start = 116 
## End = 143 
## Frequency = 1 
##  [1]    0.5486256  244.3516252  293.6546248  377.1631904  137.3001740
##  [6]   68.3331536  -70.0044717 -119.4324291 -167.3955435 -135.0153959
## [11] -181.7524353 -252.0348857 -183.0551281 -197.5739065  -64.5946379
## [16]  -55.3858763  152.0616543  -55.9854441  -99.0603745  -93.3530779
## [21] -141.8381653 -139.6191497 -115.3937871  -86.6889325  213.0261761
## [26]  111.1455817  117.8597134   77.9185730
SSEtestingdes1<-sum(selisihdes1^2)
MSEtestingdes1<-SSEtestingdes1/length(testing_ma$Close)
MAPEtestingdes1<-sum(abs(selisihdes1/testing_ma$Close)*100)/length(testing_ma$Close)

selisihdes2<-ramalandes2$mean-testing_ma$Close
selisihdes2
## Time Series:
## Start = 116 
## End = 143 
## Frequency = 1 
##  [1]  -28.356353  220.378355  274.613063  363.053337  128.122029   64.086717
##  [7]  -69.319200 -113.815449 -156.846855 -119.534999 -161.340330 -226.691072
## [13] -152.779606 -162.366676  -24.455699  -10.315229  202.064010   -1.051380
## [19]  -39.194603  -28.555598  -72.108977  -64.958253  -35.801182   -2.164619
## [25]  302.482198  205.533312  217.179152  182.169720
SSEtestingdes2<-sum(selisihdes2^2)
MSEtestingdes2<-SSEtestingdes2/length(testing_ma$Close)
MAPEtestingdes2<-sum(abs(selisihdes2/testing_ma$Close)*100)/length(testing_ma$Close)

selisihdesopt<-ramalandesopt$mean-testing_ma$Close
selisihdesopt
## Time Series:
## Start = 116 
## End = 143 
## Frequency = 1 
##  [1]  -93.47061  167.63789  234.24638  335.06044  112.50292   60.84140
##  [7]  -60.19073  -92.31320 -122.97082  -73.28517 -102.71672 -155.69367
## [13]  -69.40842  -66.62170   83.66306  110.17732  334.93034  144.18874
## [19]  118.41931  141.43210  110.25250  129.77702  171.30787  217.31822
## [25]  534.33883  449.76373  473.78335  451.14771
SSEtestingdesopt<-sum(selisihdesopt^2)
MSEtestingdesopt<-SSEtestingdesopt/length(testing_ma$Close)
MAPEtestingdesopt<-sum(abs(selisihdesopt/testing_ma$Close)*100)/length(testing_ma$Close)

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  7.363921e+05 7.295707e+05 1.504534e+06
## MSE  2.629972e+04 2.605610e+04 5.373336e+04
## MAPE 2.028529e+00 1.873444e+00 2.701025e+00