Di Indonesia, ketahanan pangan menjadi salah satu dari 11 prioritas pembangunan nasional. Untuk mendukung pencapaian ketahanan pangan tersebut, Kementerian Pertanian melaksanakan program yang disebut “Empat Sukses Pertanian” yang terdiri dari pencapaian swasembada lima komoditas pangan penting, salah satunya adalah gula. Gula merupakan salah satu kebutuhan pokok yang dikonsumsi oleh masyarakat di Indonesia, sehingga gula merupakan komoditas yang sangat strategis dalam perekonomian Indonesia. Produksi gula yang semakin menurun dari tahun ke tahun mengakibatkan adanya kesenjangan antara produksi dan konsumsi gula nasional. Untuk mencapai swasembada gula pada tahun 2029, Kementerian Pertanian melalui Direktorat Jenderal Perkebunan telah menyiapkan 5 strategi. Untuk menyiapkan 5 strategi yang akan diterapkan, dibutuhkan suatu analisis statistik yang dapat memproyeksikan tren produksi dan konsumsi gula di masa mendatang, salah satunya adalah metode peramalan. Dengan metode peramalan, pemerintah dapat memperoleh proyeksi kuantitatif mengenai perkembangan produksi dan konsumsi gula nasional hingga tahun 2028 serta melakukan evaluasi terhadap efektivitas strategi yang diterapkan. Berdasarkan dari uraian diatas, maka peneliti tertarik untuk melakukan peramalan terkait produksi gula perhektar di Indonesia mulai tahun 1961 sampai 2023 dengan membandingkan 3 metode peramalan yaitu ARIMA-NN-MA untuk memperoleh hasil peramalan yang paling akurat dan sesuai dengan pola data historis yang ada.

#PEMODELAN DENGAN ARIMA#

#Library
library(MASS)
library(car)
## Loading required package: carData
library(forecast)
## Warning: package 'forecast' was built under R version 4.4.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(tseries)
library(quadprog)
library(fracdiff)
library(fUnitRoots)
library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(nortest)
library(writexl)
library(Metrics)
## Warning: package 'Metrics' was built under R version 4.4.3
## 
## Attaching package: 'Metrics'
## The following object is masked from 'package:forecast':
## 
##     accuracy

Data yang digunakan pada penelitian ini adalah data produksi gula (ton/ha) di Indonesia mulai tahun 1961 sampai 2023 yang diperoleh dari website https://ourworldindata.org/.

data=read.table(file.choose(),header=T)
data
##         gula
## 1  136.64000
## 2  136.14801
## 3  135.75000
## 4  130.46901
## 5  130.52090
## 6  142.96260
## 7  136.15600
## 8  132.60930
## 9  148.44130
## 10 140.05600
## 11 158.12541
## 12 155.74330
## 13 126.87490
## 14 149.01780
## 15 124.56381
## 16 120.98691
## 17 116.13021
## 18 126.36601
## 19 106.60901
## 20  90.65241
## 21 115.49361
## 22  85.46700
## 23  95.78661
## 24  99.20030
## 25  82.77230
## 26  81.22330
## 27  84.29271
## 28  82.25111
## 29  78.87721
## 30  81.10040
## 31  77.07671
## 32  81.10651
## 33  79.01660
## 34  78.51271
## 35  70.38711
## 36  68.51530
## 37  73.42960
## 38  68.95410
## 39  60.08690
## 40  65.30730
## 41  65.23190
## 42  72.79250
## 43  72.97640
## 44  77.58280
## 45  76.68490
## 46  73.65530
## 47  58.90620
## 48  58.64770
## 49  59.80430
## 50  60.92530
## 51  55.17240
## 52  64.83560
## 53  60.30480
## 54  57.33310
## 55  59.23400
## 56  62.59081
## 57  66.64350
## 58  70.97100
## 59  70.45080
## 60  69.92911
## 61  71.71361
## 62  73.46821
## 63  68.74340
Zt<-ts(data$gula)
Zt
## Time Series:
## Start = 1 
## End = 63 
## Frequency = 1 
##  [1] 136.64000 136.14801 135.75000 130.46901 130.52090 142.96260 136.15600
##  [8] 132.60930 148.44130 140.05600 158.12541 155.74330 126.87490 149.01780
## [15] 124.56381 120.98691 116.13021 126.36601 106.60901  90.65241 115.49361
## [22]  85.46700  95.78661  99.20030  82.77230  81.22330  84.29271  82.25111
## [29]  78.87721  81.10040  77.07671  81.10651  79.01660  78.51271  70.38711
## [36]  68.51530  73.42960  68.95410  60.08690  65.30730  65.23190  72.79250
## [43]  72.97640  77.58280  76.68490  73.65530  58.90620  58.64770  59.80430
## [50]  60.92530  55.17240  64.83560  60.30480  57.33310  59.23400  62.59081
## [57]  66.64350  70.97100  70.45080  69.92911  71.71361  73.46821  68.74340

#TIME SERIES PLOT#

ts.plot(Zt,type="o",xlab="Time",ylab="Data",main="Data Produksi Gula (Ton/Ha) di Indonesia")
grid()

Berdasarkan time series plot di atas dapat dilihat bahwa secara umum produksi gula (ton/ha) di Indonesia cenderung mengalami trend turun dari waktu ke waktu.

#MEMBAGI PROPORSI DATA#

#Partisi Data In & Out Sample dengan Perbandingan 90:10
length(Zt)
## [1] 63
a=round(63*0.9)
a
## [1] 57
insmpl=Zt[1:57]
outsmpl=Zt[58:63]
insmpl
##  [1] 136.64000 136.14801 135.75000 130.46901 130.52090 142.96260 136.15600
##  [8] 132.60930 148.44130 140.05600 158.12541 155.74330 126.87490 149.01780
## [15] 124.56381 120.98691 116.13021 126.36601 106.60901  90.65241 115.49361
## [22]  85.46700  95.78661  99.20030  82.77230  81.22330  84.29271  82.25111
## [29]  78.87721  81.10040  77.07671  81.10651  79.01660  78.51271  70.38711
## [36]  68.51530  73.42960  68.95410  60.08690  65.30730  65.23190  72.79250
## [43]  72.97640  77.58280  76.68490  73.65530  58.90620  58.64770  59.80430
## [50]  60.92530  55.17240  64.83560  60.30480  57.33310  59.23400  62.59081
## [57]  66.64350
outsmpl
## [1] 70.97100 70.45080 69.92911 71.71361 73.46821 68.74340

Data produksi gula memiliki observasi sebanyak 63 yang dipartisi menjadi in dan out sample dengan proporsi 90:10. Dari proporsi data, In sample memiliki observasi sebanyak 57 sedangkan out sample sebanyak 6 observasi. In sample digunakan untuk membangun model sedangkan out sample digunakan sebagai evaluasi model. Visualisasi in sample disajikan pada time series plot berikut.

#TIME SERIES IN SAMPLE#

ts.plot(insmpl,type="o",xlab="Time",ylab="Data",main="Data In Sample")
grid()

Time series (ts) plot in sample tidak jauh berbeda dengan ts plot data aktual produksi gula(ton/ha), yang membedakan antara kedua ts plot ini hanya pada observasi in sample yaitu sebanyak 57, sedangkan ts plot data aktual sebanyak 63 observasi. Berdasarkan dari ts plot, dapat diketahui bahwa produksi gula (ton/hektar) mengalami trend turun. Diduga varians dan rata-rata data produksi gula (ton/ha) tidak konstan seiring bertambahnya waktu, sehingga perlu dilakukan pengecekan stasioneritas.

#PLOT PACF DAN ACF#

#Menampilkan Plot PACF-ACF Data In sample
Pacf(insmpl,57)
grid()

Acf(insmpl,57)
grid()

Berdasarkan gambar di atas dapat diketahui bahwa plot PACF in sample cut off setelah lag 2, sedangkan plot ACF mengalami pola sinusoidal.

#PENGECEKAN STASIONERITAS DALAM VARIANSI#

#Transformasi Box-Cox
boxcox(insmpl~1)

p<-powerTransform(insmpl)
p
## Estimated transformation parameter 
##     insmpl 
## -0.7099924

Berdasarkan dari output yang diperoleh, dapat diketahui nilai log likelihood maksimum ketika lambda bernilai -0.7099924. Nilai tersebut masih jauh dari angka 1, sehingga data produksi gula(ton/ha) belum stasioner dalam variansi dan perlu dilakukan transformasi yaitu memangkatkan data in sample dengan -0.7099924.

#TRANSFORMASI#

y<-(insmpl^-0.7099924)
p1<-powerTransform(y) #Data Telah Ditransformasi
p1
## Estimated transformation parameter 
## y 
## 1
boxcox(y~1)

Dapat diketahui nilai log likelihood maksimum ketika lambda bernilai 1 yang berarti data produksi gula (ton/ha) telah stasioner dalam variansi.

#MENAMPILKAN TS PLOT, PLOT PACF DAN ACF SETELAH TRANSFORMASI#

ts.plot(y,type="o",xlab="Time",ylab="Data",main="Data Transformasi")
grid()

Pacf(y,57)
grid()

Acf(y,57)
grid()

Pada ts plot dapat diketahui bahwa data produksi gula yang telah ditransformasi memiliki penyebaran data yang stabil dari waktu ke waktu. Kemudian untuk plot PACF mengalami cut off setelah lag 1, sedangkan plot ACF mengalami pola sinusoidal.

Berdasarkan ts plot diduga bahwa data masih belum stasioner dalam rata-rata sehingga perlu dilakukan pengecekan stasioneritas dalam rata-rata dengan menggunakan Augmented Dickey-Fuller (ADF) test.

#PENGECEKAN STASIONERITAS DALAM RATA-RATA#

#Uji ADF Data Transformasi
adfTest(y)
## 
## Title:
##  Augmented Dickey-Fuller Test
## 
## Test Results:
##   PARAMETER:
##     Lag Order: 1
##   STATISTIC:
##     Dickey-Fuller: 1.098
##   P VALUE:
##     0.9237 
## 
## Description:
##  Tue May 13 10:29:54 2025 by user: Hp

Berdasarkan output, diperoleh nilai p-value = 0,9273. Nilai ini lebih besar dari taraf signifikansi alpha = 0,05, sehingga dapat diketahui bahwa data produksi gula (ton/ha) setelah transformasi belum stasioner dalam rata-rata. Oleh karena itu, dilakukan differencing sebanyak 1 kali dan dilakukan uji ADF kembali.

#DIFFERENCING DATA TRANSFORMASI#

#Diff 1 Kali 
datadiff=diff(y,differences=1)
ts.plot(datadiff,type="o",xlab="Time",ylab="Data",main="Data Differencing orde 1")

adfTest(datadiff) #Cek Stasioner dalam Rata-Rata
## Warning in adfTest(datadiff): p-value smaller than printed p-value
## 
## Title:
##  Augmented Dickey-Fuller Test
## 
## Test Results:
##   PARAMETER:
##     Lag Order: 1
##   STATISTIC:
##     Dickey-Fuller: -6.8721
##   P VALUE:
##     0.01 
## 
## Description:
##  Tue May 13 10:29:54 2025 by user: Hp
Pacf(datadiff,57)
grid()

Acf(datadiff,57)
grid()

Berdasarkan ts plot data produksi gula setelah transformasi dan differencing 1 kali, diketahui bahwa grafik sudah memiliki rata-rata dan varians yang konstan. Hal ini dipertegas dari hasil uji ADF yang diperoleh dengan p-value = 0,01 < alpha = 0,05. Hal ini menandakan data telah stasioner dalam rata-rata. Oleh karena itu, dapat diketahui bahwa data telah stasioner setelah ditransformasi dan di differencing 1 kali.

Selanjutnya karena data telah stasioner, dilakukan identifikasi orde ARIMA menggunakan plot PACF dan ACF dari data yang telah stasioner. Berdasarkan gambar, plot PACF mengalami cut off di lag 1 sehingga orde AR yang diperoleh yaitu 0,1. Sedangkan grafik ACF juga mengalami cut off di lag 1 sehingga orde MA yang terbentuk yaitu 0,1. Model ARIMA sementara yang terbentuk ialah ARIMA(1,1,0); ARIMA(1,1,1); dan ARIMA(0,1,1).

#PEMODELAN ARIMA#

fit1=arima(x=y,order=c(1,1,0))
coeftest(fit1) #Sig
## 
## z test of coefficients:
## 
##     Estimate Std. Error z value Pr(>|z|)   
## ar1 -0.34107    0.12474 -2.7343 0.006252 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
fit2=arima(x=y,order=c(1,1,1))
coeftest(fit2) 
## 
## z test of coefficients:
## 
##     Estimate Std. Error z value Pr(>|z|)
## ar1 -0.13721    0.28388 -0.4833   0.6289
## ma1 -0.24585    0.26722 -0.9200   0.3575
fit3=arima(x=y,order=c(0,1,1))
coeftest(fit3) #Sig
## 
## z test of coefficients:
## 
##     Estimate Std. Error z value Pr(>|z|)   
## ma1 -0.35672    0.11512 -3.0987 0.001944 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Dapat diketahui bahwa model ARIMA sementara yang semua parameternya signifikan pada pada taraf signifikansi alpha 5% adalah model ARIMA (1,1,0) dan (0,1,1).

Model ARIMA sementara yang signifikan selanjutnya dapat dilanjutkan ke tahap pengecekan diagnostik yaitu normalitas residual dan white noise.

#PENGECEKAN DIAGNOSTIK#

#Uji Normalitas Residual
res1=resid(fit1)
shapiro.test(res1)
## 
##  Shapiro-Wilk normality test
## 
## data:  res1
## W = 0.9698, p-value = 0.1643
lillie.test(res1)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  res1
## D = 0.099868, p-value = 0.1686
ks.test(res1,"pnorm",mean(res1),sd(res1))
## 
##  Exact one-sample Kolmogorov-Smirnov test
## 
## data:  res1
## D = 0.099868, p-value = 0.5855
## alternative hypothesis: two-sided
res3=resid(fit3)
shapiro.test(res3)
## 
##  Shapiro-Wilk normality test
## 
## data:  res3
## W = 0.97367, p-value = 0.2475
lillie.test(res3)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  res3
## D = 0.099015, p-value = 0.1776
ks.test(res3,"pnorm",mean(res3),sd(res3))
## 
##  Exact one-sample Kolmogorov-Smirnov test
## 
## data:  res3
## D = 0.099015, p-value = 0.5963
## alternative hypothesis: two-sided

Berdasarkan uji Shapiro-Wilk, Lilliefors, dan Kolmogorov-Smirnov, diperoleh nilai p-value untuk residual kedua model > alpha = 0,05 sehingga residual model ARIMA(1,1,0) dan ARIMA(0,0,1) memenuhi asumsi normalitas.

Selain pengujian normalitas residual, terdapat pula pengecekan asumsi white noise atau nonautokorelasi antar residual pengamatan. Pengecekan ini dilakukan menggunakan grafik Ljung-Box sebagai berikut.

#White Noise
tsdiag(fit1,58)

tsdiag(fit3,58)

Dari hasil yang diperoleh, residual model ARIMA(1,1,0) dan ARIMA(0,1,1) memenuhi asumsi white noise karena nilai p-value pada kesemua lag berada di atas threshold yang berarti nilai-nilai p-value > alpha = 0,05.

#PEMILIHAN MODEL TERBAIK#

#Model Terbaik
summary(fit1)
## 
## Call:
## arima(x = y, order = c(1, 1, 0))
## 
## Coefficients:
##           ar1
##       -0.3411
## s.e.   0.1247
## 
## sigma^2 estimated as 7.74e-06:  log likelihood = 250.01,  aic = -496.02
## 
## Training set error measures:
##                        ME        RMSE         MAE       MPE     MAPE      MASE
## Training set 0.0004908079 0.002757601 0.002080677 0.9590496 4.903968 0.9434658
##                     ACF1
## Training set -0.09930224
summary(fit3)
## 
## Call:
## arima(x = y, order = c(0, 1, 1))
## 
## Coefficients:
##           ma1
##       -0.3567
## s.e.   0.1151
## 
## sigma^2 estimated as 7.658e-06:  log likelihood = 250.3,  aic = -496.61
## 
## Training set error measures:
##                        ME        RMSE         MAE      MPE     MAPE      MASE
## Training set 0.0005830932 0.002742946 0.002044017 1.165073 4.827982 0.9268427
##                     ACF1
## Training set -0.08652342

Model ARIMA sementara yang signifikan dan memenuhi asumsi normalitas dan white noise pada residual model adalah ARIMA(1,1,0) dan ARIMA(0,0,1). Pemilihan model ARIMA terbaik dilakukan berdasarkan nilai RMSE & MAPE terkecil, sehingga diperoleh model terbaik adalah ARIMA(0,0,1) dengan nilai RMSE sebesar 0,0027 dan MAPE sebesar 4,828.

#PREDIKSI DATA IN SAMPLE#

#Prediksi In Sample
Prediksi=fitted(fit3)
Prediksi
## Time Series:
## Start = 1 
## End = 57 
## Frequency = 1 
##  [1] 0.03043137 0.03046636 0.03051585 0.03057326 0.03115552 0.03135718
##  [7] 0.03016190 0.03040427 0.03086233 0.02948542 0.02977298 0.02828611
## [13] 0.02794712 0.03062400 0.02934962 0.03139566 0.03256291 0.03360986
## [19] 0.03270305 0.03503706 0.03872099 0.03589259 0.04014605 0.03953763
## [25] 0.03870137 0.04177707 0.04325194 0.04304121 0.04345092 0.04444516
## [31] 0.04423421 0.04520303 0.04450304 0.04478421 0.04501612 0.04744110
## [37] 0.04891249 0.04790216 0.04893229 0.05256907 0.05184962 0.05162014
## [43] 0.04905705 0.04808789 0.04644133 0.04609702 0.04683153 0.05231794
## [49] 0.05438645 0.05463243 0.05425869 0.05666218 0.05348052 0.05410140
## [55] 0.05560230 0.05530665 0.05383974
kembalikan.predict=Prediksi^(1/(-0.7099924))
kembalikan.predict
## Time Series:
## Start = 1 
## End = 57 
## Frequency = 1 
##  [1] 136.83268 136.61138 136.29945 135.93907 132.37450 131.17709 138.55763
##  [8] 137.00449 134.14916 143.05588 141.11369 151.67224 154.26983 135.62195
## [15] 143.98902 130.95067 124.38798 118.96557 123.63787 112.19745  97.46061
## [22] 108.44917  92.62351  94.63733  97.53020  87.57129  83.39490  83.97055
## [29]  82.85751  80.25885  80.79848  78.37011  80.11187  79.40436  78.82881
## [36]  73.21343  70.13058  72.22285  70.09060  63.35889  64.60064  65.00551
## [43]  69.83968  71.83028  75.44304  76.23791  74.55919  63.78767  60.39738
## [50]  60.01472  60.59778  57.00904  61.84335  60.84606  58.54556  58.98683
## [57]  61.26297

Hasil di atas merupakan prediksi model ARIMA(0,1,1) terhadap data aktual in sample. Hasil prediksi tersebut harus dikembalikan ke skala data aktual in sample dengan melakukan transformasi balik.

#PREDIKSI OUT SAMPLE DAN PENGEMBALIAN DATA TRANSFORMASI KE DATA AKTUAL#

#Prediksi Out Sample
model=arima(x=y,order=c(0,1,1))
model
## 
## Call:
## arima(x = y, order = c(0, 1, 1))
## 
## Coefficients:
##           ma1
##       -0.3567
## s.e.   0.1151
## 
## sigma^2 estimated as 7.658e-06:  log likelihood = 250.3,  aic = -496.61
ramalan=predict(model,n.ahead=6)
ramalan
## $pred
## Time Series:
## Start = 58 
## End = 63 
## Frequency = 1 
## [1] 0.05183038 0.05183038 0.05183038 0.05183038 0.05183038 0.05183038
## 
## $se
## Time Series:
## Start = 58 
## End = 63 
## Frequency = 1 
## [1] 0.002767326 0.003290447 0.003741121 0.004143059 0.004509311 0.004847972
kembalikan.ramalan=ramalan$pred^(1/(-0.7099924)) #Transformasi Balik
kembalikan.ramalan
## Time Series:
## Start = 58 
## End = 63 
## Frequency = 1 
## [1] 64.63443 64.63443 64.63443 64.63443 64.63443 64.63443

Output di atas merupakan hasil peramalan 6 periode ke depan atau prediksi untuk data aktual out sample. Berdasarkan hasil pada $pred dapat diketahui bahwa ramalan masih belum memiliki skala data yang sesuai dengan data aktual out sample sehingga dilakukan transformasi balik. Setelah di transformasi balik diperoleh bahwa untuk 6 periode ke depan, prediksi untuk data out sample adalah konstan di 64,63443 ton/ha.

#AKURASI MODEL#

#In Sample
rmse_in_ARIMA <- rmse(insmpl,kembalikan.predict)
mape_in_ARIMA <- mape(insmpl,kembalikan.predict)*100
smape_in_ARIMA <- smape(insmpl,kembalikan.predict)*100
cat("Akurasi model ARIMA (0,1,1) data In Sample")
## Akurasi model ARIMA (0,1,1) data In Sample
cat("\nRMSE : ",rmse_in_ARIMA)
## 
## RMSE :  9.307721
cat("\nMAPE : ",mape_in_ARIMA)
## 
## MAPE :  7.152922
cat("\nSMAPE: ",smape_in_ARIMA)
## 
## SMAPE:  6.918957
cat("\n")
#Out Sample
rmse_out_ARIMA <- rmse(outsmpl,kembalikan.ramalan)
mape_out_ARIMA <- mape(outsmpl,kembalikan.ramalan)*100
smape_out_ARIMA <- smape(outsmpl,kembalikan.ramalan)*100
cat("\nAkurasi model ARIMA (0,1,1) data Out Sample")
## 
## Akurasi model ARIMA (0,1,1) data Out Sample
cat("\nRMSE : ",rmse_out_ARIMA)
## 
## RMSE :  6.416773
cat("\nMAPE : ",mape_out_ARIMA)
## 
## MAPE :  8.771412
cat("\nSMAPE: ",smape_out_ARIMA)
## 
## SMAPE:  9.194142

Prediksi in sample memiliki nilai MAPE dan SMAPE yang lebih kecil sedangkan pada prediksi out sample hanya unggul dalam nilai RMSE. Berdasarkan hal tersebut, dapat diketahui bahwa akurasi prediksi in sample lebih baik dibandingkan out sample. Dapat diketahui pula bahwa nilai MAPE dan SMAPE in maupun out sample kurang dari 10% yang berarti ARIMA(0,1,1) memiliki kemampuan peramalan yang sangat baik.

#GRAFIK PERBANDINGAN ARIMA#

#Grafik Perbandingan Prediksi/Peramalan dengan Data Aktual
p_in_arima <- c(kembalikan.predict,rep(NA,6))
p_out_arima <- c(rep(NA,57),kembalikan.ramalan)

plot(Zt, type = "n", main = "Grafik Aktual vs Prediksi ARIMA(0,1,1)", ylab = "Produksi Gula (Ton/Ha)", xlab = "Time (Tahun)", ylim = c(45,185)) 

series_list1 <- list(Zt, p_in_arima, p_out_arima)
colors1 <- c("black", "firebrick", "firebrick1")

for (i in 1:3) {
  lines(series_list1[[i]], col = colors1[i], lwd = 1)
  points(series_list1[[i]], col = colors1[i], pch = 19, cex = 0.8)
}

abline(v = 57, col="blue",lwd = 1, lty = 2)
grid()

legend("topright", legend = c("Data Aktual","Prediksi In Sample", "Prediksi Out Sample"),
       cex = 0.75, lty = 1, pch = 19, col = colors1)

Berdasarkan gambar di atas, model ARIMA(0,1,1) mengalami overfitting karena mampu menangkap pola data in sample/data latih dengan baik tetapi tidak mampu menangkap pola data out sample/data testing dengan baik yang terlihat dari prediksinya yang konstan.

#PEMODELAN MOVING AVERAGE (MA)

#Library
library(zoo)      
library(Metrics) 
library(forecast) 

#MENENTUKAN PARAMETER MA#

#Parameter MA
k=2              
n_forecast=length(outsmpl)      

Menentukan parameter moving average dan juga jumlah data yang diramalkan berdasarkan jumlah data out sample.

#TIMA SERIES PLOT DATA IN SAMPLE UNTUK MA#

#Membuat Time Series dari Data In Sample
ts_data <- ts(insmpl, start = 1, frequency = 1)

Membuat time series dari data in sample agar periode pada data dapat terdefinisi secara jelas.

#MENGHITUNG MA IN SAMPLE#

ma_insample <- rollmean(ts_data, k = k, align = "right", fill = NA)
ma_insample
## Time Series:
## Start = 1 
## End = 57 
## Frequency = 1 
##  [1]        NA 136.39400 135.94900 133.10951 130.49496 136.74175 139.55930
##  [8] 134.38265 140.52530 144.24865 149.09071 156.93435 141.30910 137.94635
## [15] 136.79080 122.77536 118.55856 121.24811 116.48751  98.63071 103.07301
## [22] 100.48031  90.62680  97.49345  90.98630  81.99780  82.75800  83.27191
## [29]  80.56416  79.98880  79.08855  79.09161  80.06155  78.76466  74.44991
## [36]  69.45121  70.97245  71.19185  64.52050  62.69710  65.26960  69.01220
## [43]  72.88445  75.27960  77.13385  75.17010  66.28075  58.77695  59.22600
## [50]  60.36480  58.04885  60.00400  62.57020  58.81895  58.28355  60.91240
## [57]  64.61715

Melakukan perhitungan prediksi data in sample dengan moving average berdasarkan parameter yang telah didefinisikan di awal.

#VEKTOR PREDIKSI IN SAMPLE#

#Membuat Vektor Prediksi In Sample (Membuang NA Awal)
prediksi_insample <- ma_insample[!is.na(ma_insample)]
prediksi_insample
##  [1] 136.39400 135.94900 133.10951 130.49496 136.74175 139.55930 134.38265
##  [8] 140.52530 144.24865 149.09071 156.93435 141.30910 137.94635 136.79080
## [15] 122.77536 118.55856 121.24811 116.48751  98.63071 103.07301 100.48031
## [22]  90.62680  97.49345  90.98630  81.99780  82.75800  83.27191  80.56416
## [29]  79.98880  79.08855  79.09161  80.06155  78.76466  74.44991  69.45121
## [36]  70.97245  71.19185  64.52050  62.69710  65.26960  69.01220  72.88445
## [43]  75.27960  77.13385  75.17010  66.28075  58.77695  59.22600  60.36480
## [50]  58.04885  60.00400  62.57020  58.81895  58.28355  60.91240  64.61715
insmpl_actual <- insmpl[k:length(insmpl)]

Nilai prediksi in sample yang telah diperoleh didefinisikan kembali, lalu menghilangkan nilai NA di awal agar tidak ada missing data pada vektor nilai prediksi in sample yang terbentuk.

#PERAMALAN#

#Peramalan Out Sample dari Data In Sample
data_series <- as.numeric(insmpl)
data_series
##  [1] 136.64000 136.14801 135.75000 130.46901 130.52090 142.96260 136.15600
##  [8] 132.60930 148.44130 140.05600 158.12541 155.74330 126.87490 149.01780
## [15] 124.56381 120.98691 116.13021 126.36601 106.60901  90.65241 115.49361
## [22]  85.46700  95.78661  99.20030  82.77230  81.22330  84.29271  82.25111
## [29]  78.87721  81.10040  77.07671  81.10651  79.01660  78.51271  70.38711
## [36]  68.51530  73.42960  68.95410  60.08690  65.30730  65.23190  72.79250
## [43]  72.97640  77.58280  76.68490  73.65530  58.90620  58.64770  59.80430
## [50]  60.92530  55.17240  64.83560  60.30480  57.33310  59.23400  62.59081
## [57]  66.64350
ramalan_outsample <- c()

for (i in 1:n_forecast) {
  recent_values <- tail(data_series, k)
  next_val <- mean(recent_values)
  ramalan_outsample <- c(ramalan_outsample, next_val)
  data_series <- c(data_series, next_val)
}
print(ramalan_outsample)
## [1] 64.61715 65.63033 65.12374 65.37703 65.25039 65.31371

Peramalan nilai out sample dilakukan dengan menggunakan data aktual dari in sample, sehingga diperoleh nilai ramalan data out sample sesuai jumlah data out sample pada data, yakni 10% dari keseluruhan data atau sebanyak 6 data.

#NILAI AKURASI IN SAMPLE#

#In Sample
rmse_in_MA <- rmse(insmpl_actual, prediksi_insample)
mape_in_MA <- mape(insmpl_actual, prediksi_insample) * 100
smape_in_MA <- smape(insmpl_actual, prediksi_insample) * 100
cat("Akurasi model MA data In Sample")
## Akurasi model MA data In Sample
cat("\nRMSE : ",rmse_in_MA)
## 
## RMSE :  5.300919
cat("\nMAPE : ",mape_in_MA)
## 
## MAPE :  3.863328
cat("\nSMAPE: ",smape_in_MA)
## 
## SMAPE:  3.807808

#NILAI AKURASI OUT SAMPLE#

#Out Sample
rmse_out_MA <- rmse(outsmpl, ramalan_outsample)
mape_out_MA <- mape(outsmpl, ramalan_outsample) * 100
smape_out_MA <- smape(outsmpl, ramalan_outsample) * 100
cat("Akurasi model MA data Out Sample")
## Akurasi model MA data Out Sample
cat("\nRMSE : ",rmse_out_MA)
## 
## RMSE :  5.861563
cat("\nMAPE : ",mape_out_MA)
## 
## MAPE :  7.946243
cat("\nSMAPE: ",smape_out_MA)
## 
## SMAPE:  8.297096

Berdasarkan perhitungan nilai akurasi di atas, diperoleh bahwa data in sample memiliki nilai akurasi yang lebih baik dibandingan dengan data out sample. Hal ini ditunjukkan salah satunya dari nilai MAPE in sample memiliki akurasi sebesar 3,863% yang lebih kecil dari nilai akurasi data out sample, yaitu sebesar 7,946%.

#GRAFIK PERBANDINGAN MA#

#Grafik Perbandingan Prediksi/Peramalan dengan Data Aktual
p_in_ma <- c(NA,prediksi_insample,rep(NA,6))
p_out_ma <- c(rep(NA,57),ramalan_outsample)

plot(Zt, type = "n", main = "Grafik Aktual vs Prediksi MA(2)", ylab = "Produksi Gula (Ton/Ha)", xlab = "Time (Tahun)", ylim = c(45,185)) 

series_list2 <- list(Zt, p_in_ma, p_out_ma)
colors2 <- c("black", "darkolivegreen4", "darkolivegreen2")

for (i in 1:3) {
  lines(series_list2[[i]], col = colors2[i], lwd = 1)
  points(series_list2[[i]], col = colors2[i], pch = 19, cex = 0.8)
}

abline(v = 57, col="blue",lwd = 1, lty = 2)
grid()

legend("topright", legend = c("Data Aktual","Prediksi In Sample", "Prediksi Out Sample"),
       cex = 0.75, lty = 1, pch = 19, col = colors2)

Berdasarkan gambar di atas, model MA(2) mengalami overfitting karena mampu menangkap pola data in sample/data latih dengan sangat baik tetapi tidak menangkap pola data out sample/data testing dengan baik yang terlihat dari prediksinya yang cenderung konstan.

#PEMODELAN NN#

#Library
library(forecast)
library(neuralnet)
## Warning: package 'neuralnet' was built under R version 4.4.3

#PLOT ACF DAN PACF NN#

#Pembentukan NN
acf(insmpl,57)
grid()

pacf(insmpl,57)
grid()

Variabel masukan dipilih berdasarkan pada lag yang signifikan pada grafik ACF atau PACF dari data in sample. Pada grafik ACF diketahui membentuk pola turun secara eksponensial, sedangkan pada grafik PACF diketahui membentuk pola cut off setelah lag 2, sehingga variabel masukan didasarkan pada grafik PACF agar parsimoni, berdasarkan hal tersebut maka variabel masukannya adalah Zt-1 sebagai X1 dan Zt-2 sebagai X2. selanjutnya yang digunakan sebagai variabel target yang digunakan merupakan Zt mulai t=3 dan dilambangkan dengan Y.

#Data Masukan NN
lag1=insmpl[1:55]
lag2=insmpl[2:56]
varnn=data.frame(Y=insmpl[3:57],X1=lag1,X2=lag2)
varnn
##            Y        X1        X2
## 1  135.75000 136.64000 136.14801
## 2  130.46901 136.14801 135.75000
## 3  130.52090 135.75000 130.46901
## 4  142.96260 130.46901 130.52090
## 5  136.15600 130.52090 142.96260
## 6  132.60930 142.96260 136.15600
## 7  148.44130 136.15600 132.60930
## 8  140.05600 132.60930 148.44130
## 9  158.12541 148.44130 140.05600
## 10 155.74330 140.05600 158.12541
## 11 126.87490 158.12541 155.74330
## 12 149.01780 155.74330 126.87490
## 13 124.56381 126.87490 149.01780
## 14 120.98691 149.01780 124.56381
## 15 116.13021 124.56381 120.98691
## 16 126.36601 120.98691 116.13021
## 17 106.60901 116.13021 126.36601
## 18  90.65241 126.36601 106.60901
## 19 115.49361 106.60901  90.65241
## 20  85.46700  90.65241 115.49361
## 21  95.78661 115.49361  85.46700
## 22  99.20030  85.46700  95.78661
## 23  82.77230  95.78661  99.20030
## 24  81.22330  99.20030  82.77230
## 25  84.29271  82.77230  81.22330
## 26  82.25111  81.22330  84.29271
## 27  78.87721  84.29271  82.25111
## 28  81.10040  82.25111  78.87721
## 29  77.07671  78.87721  81.10040
## 30  81.10651  81.10040  77.07671
## 31  79.01660  77.07671  81.10651
## 32  78.51271  81.10651  79.01660
## 33  70.38711  79.01660  78.51271
## 34  68.51530  78.51271  70.38711
## 35  73.42960  70.38711  68.51530
## 36  68.95410  68.51530  73.42960
## 37  60.08690  73.42960  68.95410
## 38  65.30730  68.95410  60.08690
## 39  65.23190  60.08690  65.30730
## 40  72.79250  65.30730  65.23190
## 41  72.97640  65.23190  72.79250
## 42  77.58280  72.79250  72.97640
## 43  76.68490  72.97640  77.58280
## 44  73.65530  77.58280  76.68490
## 45  58.90620  76.68490  73.65530
## 46  58.64770  73.65530  58.90620
## 47  59.80430  58.90620  58.64770
## 48  60.92530  58.64770  59.80430
## 49  55.17240  59.80430  60.92530
## 50  64.83560  60.92530  55.17240
## 51  60.30480  55.17240  64.83560
## 52  57.33310  64.83560  60.30480
## 53  59.23400  60.30480  57.33310
## 54  62.59081  57.33310  59.23400
## 55  66.64350  59.23400  62.59081

Selanjutnya dataset yang telah dibuat perlu di standarisasi terlebih dahulu, agar skalanya sesuai dengan fungsi aktivasi. Pada kali ini standarisasi data menggunakan standarisasi data Min-Max.

#STANDARISASI DATA#

#Hasil Standarisasi Data Masukan NN 
max=max(insmpl)
min=min(insmpl)
max
## [1] 158.1254
min
## [1] 55.1724
varnn1=((varnn-min)*1.8/(max-min))+(-0.9)
varnn1
##                Y            X1            X2
## 1   0.5087949444  0.5243554414  0.5157536336
## 2   0.4164636760  0.5157536336  0.5087949444
## 3   0.4173709054  0.5087949444  0.4164636760
## 4   0.6348979112  0.4164636760  0.4173709054
## 5   0.5158933284  0.4173709054  0.6348979112
## 6   0.4538838738  0.6348979112  0.5158933284
## 7   0.7306858828  0.5158933284  0.4538838738
## 8   0.5840797758  0.4538838738  0.7306858828
## 9   0.9000000000  0.7306858828  0.5840797758
## 10  0.8583518928  0.5840797758  0.9000000000
## 11  0.3536253190  0.9000000000  0.8583518928
## 12  0.7407652384  0.8583518928  0.3536253190
## 13  0.3132188170  0.3536253190  0.7407652384
## 14  0.2506814420  0.7407652384  0.3132188170
## 15  0.1657683345  0.3132188170  0.2506814420
## 16  0.3447279492  0.2506814420  0.1657683345
## 17 -0.0006975124  0.1657683345  0.3447279492
## 18 -0.2796780784  0.3447279492 -0.0006975124
## 19  0.1546382082 -0.0006975124 -0.2796780784
## 20 -0.3703381669 -0.2796780784  0.1546382082
## 21 -0.1899132255  0.1546382082 -0.3703381669
## 22 -0.1302292085 -0.3703381669 -0.1899132255
## 23 -0.4174515053 -0.1899132255 -0.1302292085
## 24 -0.4445337635 -0.1302292085 -0.4174515053
## 25 -0.3908691062 -0.4174515053 -0.4445337635
## 26 -0.4265638372 -0.4445337635 -0.3908691062
## 27 -0.4855521951 -0.3908691062 -0.4265638372
## 28 -0.4466825108 -0.4265638372 -0.4855521951
## 29 -0.5170315875 -0.4855521951 -0.4466825108
## 30 -0.4465756854 -0.4466825108 -0.5170315875
## 31 -0.4831150541 -0.5170315875 -0.4465756854
## 32 -0.4919249180 -0.4465756854 -0.4831150541
## 33 -0.6339905069 -0.4831150541 -0.4919249180
## 34 -0.6667166798 -0.4919249180 -0.6339905069
## 35 -0.5807965110 -0.6339905069 -0.6667166798
## 36 -0.6590448303 -0.6667166798 -0.5807965110
## 37 -0.8140762820 -0.5807965110 -0.6590448303
## 38 -0.7228043337 -0.6590448303 -0.8140762820
## 39 -0.7241226750 -0.8140762820 -0.7228043337
## 40 -0.5919353791 -0.7228043337 -0.7241226750
## 41 -0.5887201258 -0.7241226750 -0.5919353791
## 42 -0.5081831896 -0.5919353791 -0.5887201258
## 43 -0.5238818078 -0.5887201258 -0.5081831896
## 44 -0.5768503689 -0.5081831896 -0.5238818078
## 45 -0.8347193443 -0.5238818078 -0.5768503689
## 46 -0.8392388819 -0.5768503689 -0.8347193443
## 47 -0.8190171943 -0.8347193443 -0.8392388819
## 48 -0.7994179267 -0.8392388819 -0.8190171943
## 49 -0.9000000000 -0.8190171943 -0.7994179267
## 50 -0.7310514671 -0.7994179267 -0.9000000000
## 51 -0.8102666003 -0.9000000000 -0.7310514671
## 52 -0.8622229073 -0.7310514671 -0.8102666003
## 53 -0.8289881860 -0.8102666003 -0.8622229073
## 54 -0.7702987994 -0.8622229073 -0.8289881860
## 55 -0.6994426778 -0.8289881860 -0.7702987994

Langkah selanjutnya ialah melakukan proses pelatihan backpropagation dengan 3 macam variasi yakni variasi pertama yakni, 2 layer hidden dengan layer pertama 1 neuron dan layer kedua 2 neuron. Pada variasi kedua yakni, 2 layer hidden dengan layer pertama 1 neuron dan layer kedua 3 neuron dan variasi ketiga yakni, 2 layer hidden dengan layer pertama 2 neuron dan layer kedua 3 neuron. Kondisi pemberhentian yang digunakan adalah maksimum iterasi sebesar 1000000 dan target error 0,001.

#PELATIHAN NN SEBNYAK 1-3 NEURON#

#Pelatihan NN 1 Neuron
{set.seed(1000)
  nn1=neuralnet(Y~X1+X2,data=varnn1,hidden=c(1,2),act.fct="tanh",threshold=0.001,algorithm="backprop",
                stepmax=1000000,startweights=NULL,learningrate=0.01,linear.output=T)}

#Pelatihan NN 2 Neuron
{set.seed(1000)
  nn2=neuralnet(Y~X1+X2,data=varnn1,hidden=c(1,3),act.fct="tanh",threshold=0.001,algorithm="backprop",
                stepmax=1000000,startweights=NULL,learningrate=0.01,linear.output=T)}

#Pelatihan NN 3 Neuron
{set.seed(1000)
  nn3=neuralnet(Y~X1+X2,data=varnn1,hidden=c(3,4),act.fct="tanh",threshold=0.001,algorithm="backprop",
                stepmax=1000000,startweights=NULL,learningrate=0.01,linear.output=T)}

Berdasarkan proses pelatihan yang dilakukan, diperoleh arsitektur NN sebagai berikut.

#NN 1

#Prediksi NN 1 Neuron Tersembunyi
nn1
## $call
## neuralnet(formula = Y ~ X1 + X2, data = varnn1, hidden = c(1, 
##     2), threshold = 0.001, stepmax = 1e+06, startweights = NULL, 
##     learningrate = 0.01, algorithm = "backprop", act.fct = "tanh", 
##     linear.output = T)
## 
## $response
##                Y
## 1   0.5087949444
## 2   0.4164636760
## 3   0.4173709054
## 4   0.6348979112
## 5   0.5158933284
## 6   0.4538838738
## 7   0.7306858828
## 8   0.5840797758
## 9   0.9000000000
## 10  0.8583518928
## 11  0.3536253190
## 12  0.7407652384
## 13  0.3132188170
## 14  0.2506814420
## 15  0.1657683345
## 16  0.3447279492
## 17 -0.0006975124
## 18 -0.2796780784
## 19  0.1546382082
## 20 -0.3703381669
## 21 -0.1899132255
## 22 -0.1302292085
## 23 -0.4174515053
## 24 -0.4445337635
## 25 -0.3908691062
## 26 -0.4265638372
## 27 -0.4855521951
## 28 -0.4466825108
## 29 -0.5170315875
## 30 -0.4465756854
## 31 -0.4831150541
## 32 -0.4919249180
## 33 -0.6339905069
## 34 -0.6667166798
## 35 -0.5807965110
## 36 -0.6590448303
## 37 -0.8140762820
## 38 -0.7228043337
## 39 -0.7241226750
## 40 -0.5919353791
## 41 -0.5887201258
## 42 -0.5081831896
## 43 -0.5238818078
## 44 -0.5768503689
## 45 -0.8347193443
## 46 -0.8392388819
## 47 -0.8190171943
## 48 -0.7994179267
## 49 -0.9000000000
## 50 -0.7310514671
## 51 -0.8102666003
## 52 -0.8622229073
## 53 -0.8289881860
## 54 -0.7702987994
## 55 -0.6994426778
## 
## $covariate
##                  X1            X2
##  [1,]  0.5243554414  0.5157536336
##  [2,]  0.5157536336  0.5087949444
##  [3,]  0.5087949444  0.4164636760
##  [4,]  0.4164636760  0.4173709054
##  [5,]  0.4173709054  0.6348979112
##  [6,]  0.6348979112  0.5158933284
##  [7,]  0.5158933284  0.4538838738
##  [8,]  0.4538838738  0.7306858828
##  [9,]  0.7306858828  0.5840797758
## [10,]  0.5840797758  0.9000000000
## [11,]  0.9000000000  0.8583518928
## [12,]  0.8583518928  0.3536253190
## [13,]  0.3536253190  0.7407652384
## [14,]  0.7407652384  0.3132188170
## [15,]  0.3132188170  0.2506814420
## [16,]  0.2506814420  0.1657683345
## [17,]  0.1657683345  0.3447279492
## [18,]  0.3447279492 -0.0006975124
## [19,] -0.0006975124 -0.2796780784
## [20,] -0.2796780784  0.1546382082
## [21,]  0.1546382082 -0.3703381669
## [22,] -0.3703381669 -0.1899132255
## [23,] -0.1899132255 -0.1302292085
## [24,] -0.1302292085 -0.4174515053
## [25,] -0.4174515053 -0.4445337635
## [26,] -0.4445337635 -0.3908691062
## [27,] -0.3908691062 -0.4265638372
## [28,] -0.4265638372 -0.4855521951
## [29,] -0.4855521951 -0.4466825108
## [30,] -0.4466825108 -0.5170315875
## [31,] -0.5170315875 -0.4465756854
## [32,] -0.4465756854 -0.4831150541
## [33,] -0.4831150541 -0.4919249180
## [34,] -0.4919249180 -0.6339905069
## [35,] -0.6339905069 -0.6667166798
## [36,] -0.6667166798 -0.5807965110
## [37,] -0.5807965110 -0.6590448303
## [38,] -0.6590448303 -0.8140762820
## [39,] -0.8140762820 -0.7228043337
## [40,] -0.7228043337 -0.7241226750
## [41,] -0.7241226750 -0.5919353791
## [42,] -0.5919353791 -0.5887201258
## [43,] -0.5887201258 -0.5081831896
## [44,] -0.5081831896 -0.5238818078
## [45,] -0.5238818078 -0.5768503689
## [46,] -0.5768503689 -0.8347193443
## [47,] -0.8347193443 -0.8392388819
## [48,] -0.8392388819 -0.8190171943
## [49,] -0.8190171943 -0.7994179267
## [50,] -0.7994179267 -0.9000000000
## [51,] -0.9000000000 -0.7310514671
## [52,] -0.7310514671 -0.8102666003
## [53,] -0.8102666003 -0.8622229073
## [54,] -0.8622229073 -0.8289881860
## [55,] -0.8289881860 -0.7702987994
## 
## $model.list
## $model.list$response
## [1] "Y"
## 
## $model.list$variables
## [1] "X1" "X2"
## 
## 
## $err.fct
## function (x, y) 
## {
##     1/2 * (y - x)^2
## }
## <bytecode: 0x00000227500311e8>
## <environment: 0x0000022750037a70>
## attr(,"type")
## [1] "sse"
## 
## $act.fct
## function (x) 
## {
##     tanh(x)
## }
## <bytecode: 0x0000022750028d88>
## <environment: 0x0000022750033df0>
## attr(,"type")
## [1] "tanh"
## 
## $linear.output
## [1] TRUE
## 
## $data
##                Y            X1            X2
## 1   0.5087949444  0.5243554414  0.5157536336
## 2   0.4164636760  0.5157536336  0.5087949444
## 3   0.4173709054  0.5087949444  0.4164636760
## 4   0.6348979112  0.4164636760  0.4173709054
## 5   0.5158933284  0.4173709054  0.6348979112
## 6   0.4538838738  0.6348979112  0.5158933284
## 7   0.7306858828  0.5158933284  0.4538838738
## 8   0.5840797758  0.4538838738  0.7306858828
## 9   0.9000000000  0.7306858828  0.5840797758
## 10  0.8583518928  0.5840797758  0.9000000000
## 11  0.3536253190  0.9000000000  0.8583518928
## 12  0.7407652384  0.8583518928  0.3536253190
## 13  0.3132188170  0.3536253190  0.7407652384
## 14  0.2506814420  0.7407652384  0.3132188170
## 15  0.1657683345  0.3132188170  0.2506814420
## 16  0.3447279492  0.2506814420  0.1657683345
## 17 -0.0006975124  0.1657683345  0.3447279492
## 18 -0.2796780784  0.3447279492 -0.0006975124
## 19  0.1546382082 -0.0006975124 -0.2796780784
## 20 -0.3703381669 -0.2796780784  0.1546382082
## 21 -0.1899132255  0.1546382082 -0.3703381669
## 22 -0.1302292085 -0.3703381669 -0.1899132255
## 23 -0.4174515053 -0.1899132255 -0.1302292085
## 24 -0.4445337635 -0.1302292085 -0.4174515053
## 25 -0.3908691062 -0.4174515053 -0.4445337635
## 26 -0.4265638372 -0.4445337635 -0.3908691062
## 27 -0.4855521951 -0.3908691062 -0.4265638372
## 28 -0.4466825108 -0.4265638372 -0.4855521951
## 29 -0.5170315875 -0.4855521951 -0.4466825108
## 30 -0.4465756854 -0.4466825108 -0.5170315875
## 31 -0.4831150541 -0.5170315875 -0.4465756854
## 32 -0.4919249180 -0.4465756854 -0.4831150541
## 33 -0.6339905069 -0.4831150541 -0.4919249180
## 34 -0.6667166798 -0.4919249180 -0.6339905069
## 35 -0.5807965110 -0.6339905069 -0.6667166798
## 36 -0.6590448303 -0.6667166798 -0.5807965110
## 37 -0.8140762820 -0.5807965110 -0.6590448303
## 38 -0.7228043337 -0.6590448303 -0.8140762820
## 39 -0.7241226750 -0.8140762820 -0.7228043337
## 40 -0.5919353791 -0.7228043337 -0.7241226750
## 41 -0.5887201258 -0.7241226750 -0.5919353791
## 42 -0.5081831896 -0.5919353791 -0.5887201258
## 43 -0.5238818078 -0.5887201258 -0.5081831896
## 44 -0.5768503689 -0.5081831896 -0.5238818078
## 45 -0.8347193443 -0.5238818078 -0.5768503689
## 46 -0.8392388819 -0.5768503689 -0.8347193443
## 47 -0.8190171943 -0.8347193443 -0.8392388819
## 48 -0.7994179267 -0.8392388819 -0.8190171943
## 49 -0.9000000000 -0.8190171943 -0.7994179267
## 50 -0.7310514671 -0.7994179267 -0.9000000000
## 51 -0.8102666003 -0.9000000000 -0.7310514671
## 52 -0.8622229073 -0.7310514671 -0.8102666003
## 53 -0.8289881860 -0.8102666003 -0.8622229073
## 54 -0.7702987994 -0.8622229073 -0.8289881860
## 55 -0.6994426778 -0.8289881860 -0.7702987994
## 
## $exclude
## NULL
## 
## $net.result
## $net.result[[1]]
##              [,1]
##  [1,]  0.53121546
##  [2,]  0.52614030
##  [3,]  0.47686345
##  [4,]  0.43929283
##  [5,]  0.55071281
##  [6,]  0.55554405
##  [7,]  0.50035628
##  [8,]  0.58219734
##  [9,]  0.58702119
## [10,]  0.61615813
## [11,]  0.62567019
## [12,]  0.54750060
## [13,]  0.57015864
## [14,]  0.49926032
## [15,]  0.19562983
## [16,]  0.02576537
## [17,]  0.19992058
## [18,] -0.09750592
## [19,] -0.22213362
## [20,] -0.20011425
## [21,] -0.22145596
## [22,] -0.25627492
## [23,] -0.21820705
## [24,] -0.29484088
## [25,] -0.45259533
## [26,] -0.42041525
## [27,] -0.42268538
## [28,] -0.49312144
## [29,] -0.49095189
## [30,] -0.53013937
## [31,] -0.50744954
## [32,] -0.50159817
## [33,] -0.52794524
## [34,] -0.63609918
## [35,] -0.70063181
## [36,] -0.66798602
## [37,] -0.68127905
## [38,] -0.75810404
## [39,] -0.75923582
## [40,] -0.74332776
## [41,] -0.69170986
## [42,] -0.64614017
## [43,] -0.59133812
## [44,] -0.56591351
## [45,] -0.61157174
## [46,] -0.74965450
## [47,] -0.78678236
## [48,] -0.78374306
## [49,] -0.77764769
## [50,] -0.79294237
## [51,] -0.77381637
## [52,] -0.76825043
## [53,] -0.78810194
## [54,] -0.78790107
## [55,] -0.77284287
## 
## 
## $weights
## $weights[[1]]
## $weights[[1]][[1]]
##            [,1]
## [1,] -0.2323791
## [2,] -1.1454599
## [3,] -1.8589160
## 
## $weights[[1]][[2]]
##           [,1]     [,2]
## [1,]  3.259665 3.072301
## [2,] -3.041624 3.452733
## 
## $weights[[1]][[3]]
##            [,1]
## [1,] -0.3820381
## [2,]  0.7942266
## [3,] -0.6218997
## 
## 
## 
## $generalized.weights
## $generalized.weights[[1]]
##              [,1]       [,2]
##  [1,]  1.00088953  1.6242991
##  [2,]  1.04701989  1.6991621
##  [3,]  1.49716854  2.4296883
##  [4,]  1.84964853  3.0017124
##  [5,]  0.82334165  1.3361646
##  [6,]  0.77919585  1.2645223
##  [7,]  1.28165955  2.0799483
##  [8,]  0.53367774  0.8660819
##  [9,]  0.48876780  0.7931995
## [10,]  0.21305728  0.3457612
## [11,]  0.12100972  0.1963813
## [12,]  0.85265157  1.3837303
## [13,]  0.64505873  1.0468372
## [14,]  1.29166275  2.0961821
## [15,]  5.28089910  8.5701365
## [16,] 32.41213719 52.6002171
## [17,]  5.17497259  8.3982330
## [18,] -5.22607193 -8.4811599
## [19,] -0.31070323 -0.5042265
## [20,] -0.34321733 -0.5569922
## [21,] -0.29873843 -0.4848093
## [22,] -0.73987353 -1.2007079
## [23,] -0.24061200 -0.3904785
## [24,] -0.94252813 -1.5295870
## [25,] -0.81887496 -1.3289158
## [26,] -0.89107979 -1.4460938
## [27,] -0.88629907 -1.4383354
## [28,] -0.71956558 -1.1677510
## [29,] -0.72500168 -1.1765730
## [30,] -0.62627818 -1.0163590
## [31,] -0.68351640 -1.1092484
## [32,] -0.69826279 -1.1331797
## [33,] -0.63180545 -1.0253290
## [34,] -0.37088913 -0.6018995
## [35,] -0.23301668 -0.3781524
## [36,] -0.30080728 -0.4881668
## [37,] -0.27270984 -0.4425687
## [38,] -0.12376582 -0.2008541
## [39,] -0.12174449 -0.1975737
## [40,] -0.15061640 -0.2444287
## [41,] -0.25113589 -0.4075573
## [42,] -0.34842132 -0.5654375
## [43,] -0.47517535 -0.7711410
## [44,] -0.53702341 -0.8715114
## [45,] -0.42723766 -0.6933450
## [46,] -0.13901502 -0.2256013
## [47,] -0.07408682 -0.1202322
## [48,] -0.07920042 -0.1285308
## [49,] -0.08956362 -0.1453488
## [50,] -0.06383202 -0.1035901
## [51,] -0.09615133 -0.1560397
## [52,] -0.10582335 -0.1717360
## [53,] -0.07187774 -0.1166472
## [54,] -0.07221358 -0.1171922
## [55,] -0.09783430 -0.1587709
## 
## 
## $startweights
## $startweights[[1]]
## $startweights[[1]][[1]]
##             [,1]
## [1,] -0.44577826
## [2,] -1.20585657
## [3,]  0.04112631
## 
## $startweights[[1]][[2]]
##            [,1]       [,2]
## [1,]  0.6393884 -0.3854893
## [2,] -0.7865544 -0.4758679
## 
## $startweights[[1]][[3]]
##             [,1]
## [1,]  0.71975069
## [2,] -0.01850562
## [3,] -1.37311776
## 
## 
## 
## $result.matrix
##                                [,1]
## error                  5.792043e-01
## reached.threshold      9.999975e-04
## steps                  6.135700e+04
## Intercept.to.1layhid1 -2.323791e-01
## X1.to.1layhid1        -1.145460e+00
## X2.to.1layhid1        -1.858916e+00
## Intercept.to.2layhid1  3.259665e+00
## 1layhid1.to.2layhid1  -3.041624e+00
## Intercept.to.2layhid2  3.072301e+00
## 1layhid1.to.2layhid2   3.452733e+00
## Intercept.to.Y        -3.820381e-01
## 2layhid1.to.Y          7.942266e-01
## 2layhid2.to.Y         -6.218997e-01
## 
## attr(,"class")
## [1] "nn"
plot(nn1)
Predictnn1=as.data.frame(nn1$net.result)
predn1=Predictnn1$s
predn1
##  [1]  0.53121546  0.52614030  0.47686345  0.43929283  0.55071281  0.55554405
##  [7]  0.50035628  0.58219734  0.58702119  0.61615813  0.62567019  0.54750060
## [13]  0.57015864  0.49926032  0.19562983  0.02576537  0.19992058 -0.09750592
## [19] -0.22213362 -0.20011425 -0.22145596 -0.25627492 -0.21820705 -0.29484088
## [25] -0.45259533 -0.42041525 -0.42268538 -0.49312144 -0.49095189 -0.53013937
## [31] -0.50744954 -0.50159817 -0.52794524 -0.63609918 -0.70063181 -0.66798602
## [37] -0.68127905 -0.75810404 -0.75923582 -0.74332776 -0.69170986 -0.64614017
## [43] -0.59133812 -0.56591351 -0.61157174 -0.74965450 -0.78678236 -0.78374306
## [49] -0.77764769 -0.79294237 -0.77381637 -0.76825043 -0.78810194 -0.78790107
## [55] -0.77284287
#Hasil Destandarisasi Prediksi NN 1 Neuron Tersembunyi
prednn1=((predn1+0.9)*(max-min)/1.8)+min
prednn1
##  [1] 137.03237 136.74209 133.92364 131.77475 138.14754 138.42387 135.26734
##  [8] 139.94833 140.22424 141.89076 142.43481 137.96381 139.25977 135.20466
## [15] 117.83817 108.12258 118.08359 101.07195  93.94372  95.20315  93.98248
## [22]  91.99097  94.16831  89.78515  80.76221  82.60279  82.47294  78.44427
## [29]  78.56836  76.32699  77.62476  77.95944  76.45249  70.26650  66.57549
## [36]  68.44270  67.68239  63.28830  63.22356  64.13344  67.08579  69.69220
## [43]  72.82666  74.28085  71.66938  63.77158  61.64801  61.82185  62.17048
## [50]  61.29568  62.38961  62.70796  61.57253  61.58402  62.44529

#NN 2

#Prediksi NN 2 Neuron Tersembunyi
nn2
## $call
## neuralnet(formula = Y ~ X1 + X2, data = varnn1, hidden = c(1, 
##     3), threshold = 0.001, stepmax = 1e+06, startweights = NULL, 
##     learningrate = 0.01, algorithm = "backprop", act.fct = "tanh", 
##     linear.output = T)
## 
## $response
##                Y
## 1   0.5087949444
## 2   0.4164636760
## 3   0.4173709054
## 4   0.6348979112
## 5   0.5158933284
## 6   0.4538838738
## 7   0.7306858828
## 8   0.5840797758
## 9   0.9000000000
## 10  0.8583518928
## 11  0.3536253190
## 12  0.7407652384
## 13  0.3132188170
## 14  0.2506814420
## 15  0.1657683345
## 16  0.3447279492
## 17 -0.0006975124
## 18 -0.2796780784
## 19  0.1546382082
## 20 -0.3703381669
## 21 -0.1899132255
## 22 -0.1302292085
## 23 -0.4174515053
## 24 -0.4445337635
## 25 -0.3908691062
## 26 -0.4265638372
## 27 -0.4855521951
## 28 -0.4466825108
## 29 -0.5170315875
## 30 -0.4465756854
## 31 -0.4831150541
## 32 -0.4919249180
## 33 -0.6339905069
## 34 -0.6667166798
## 35 -0.5807965110
## 36 -0.6590448303
## 37 -0.8140762820
## 38 -0.7228043337
## 39 -0.7241226750
## 40 -0.5919353791
## 41 -0.5887201258
## 42 -0.5081831896
## 43 -0.5238818078
## 44 -0.5768503689
## 45 -0.8347193443
## 46 -0.8392388819
## 47 -0.8190171943
## 48 -0.7994179267
## 49 -0.9000000000
## 50 -0.7310514671
## 51 -0.8102666003
## 52 -0.8622229073
## 53 -0.8289881860
## 54 -0.7702987994
## 55 -0.6994426778
## 
## $covariate
##                  X1            X2
##  [1,]  0.5243554414  0.5157536336
##  [2,]  0.5157536336  0.5087949444
##  [3,]  0.5087949444  0.4164636760
##  [4,]  0.4164636760  0.4173709054
##  [5,]  0.4173709054  0.6348979112
##  [6,]  0.6348979112  0.5158933284
##  [7,]  0.5158933284  0.4538838738
##  [8,]  0.4538838738  0.7306858828
##  [9,]  0.7306858828  0.5840797758
## [10,]  0.5840797758  0.9000000000
## [11,]  0.9000000000  0.8583518928
## [12,]  0.8583518928  0.3536253190
## [13,]  0.3536253190  0.7407652384
## [14,]  0.7407652384  0.3132188170
## [15,]  0.3132188170  0.2506814420
## [16,]  0.2506814420  0.1657683345
## [17,]  0.1657683345  0.3447279492
## [18,]  0.3447279492 -0.0006975124
## [19,] -0.0006975124 -0.2796780784
## [20,] -0.2796780784  0.1546382082
## [21,]  0.1546382082 -0.3703381669
## [22,] -0.3703381669 -0.1899132255
## [23,] -0.1899132255 -0.1302292085
## [24,] -0.1302292085 -0.4174515053
## [25,] -0.4174515053 -0.4445337635
## [26,] -0.4445337635 -0.3908691062
## [27,] -0.3908691062 -0.4265638372
## [28,] -0.4265638372 -0.4855521951
## [29,] -0.4855521951 -0.4466825108
## [30,] -0.4466825108 -0.5170315875
## [31,] -0.5170315875 -0.4465756854
## [32,] -0.4465756854 -0.4831150541
## [33,] -0.4831150541 -0.4919249180
## [34,] -0.4919249180 -0.6339905069
## [35,] -0.6339905069 -0.6667166798
## [36,] -0.6667166798 -0.5807965110
## [37,] -0.5807965110 -0.6590448303
## [38,] -0.6590448303 -0.8140762820
## [39,] -0.8140762820 -0.7228043337
## [40,] -0.7228043337 -0.7241226750
## [41,] -0.7241226750 -0.5919353791
## [42,] -0.5919353791 -0.5887201258
## [43,] -0.5887201258 -0.5081831896
## [44,] -0.5081831896 -0.5238818078
## [45,] -0.5238818078 -0.5768503689
## [46,] -0.5768503689 -0.8347193443
## [47,] -0.8347193443 -0.8392388819
## [48,] -0.8392388819 -0.8190171943
## [49,] -0.8190171943 -0.7994179267
## [50,] -0.7994179267 -0.9000000000
## [51,] -0.9000000000 -0.7310514671
## [52,] -0.7310514671 -0.8102666003
## [53,] -0.8102666003 -0.8622229073
## [54,] -0.8622229073 -0.8289881860
## [55,] -0.8289881860 -0.7702987994
## 
## $model.list
## $model.list$response
## [1] "Y"
## 
## $model.list$variables
## [1] "X1" "X2"
## 
## 
## $err.fct
## function (x, y) 
## {
##     1/2 * (y - x)^2
## }
## <bytecode: 0x00000227500311e8>
## <environment: 0x0000022750658970>
## attr(,"type")
## [1] "sse"
## 
## $act.fct
## function (x) 
## {
##     tanh(x)
## }
## <bytecode: 0x0000022750028d88>
## <environment: 0x0000022750658e08>
## attr(,"type")
## [1] "tanh"
## 
## $linear.output
## [1] TRUE
## 
## $data
##                Y            X1            X2
## 1   0.5087949444  0.5243554414  0.5157536336
## 2   0.4164636760  0.5157536336  0.5087949444
## 3   0.4173709054  0.5087949444  0.4164636760
## 4   0.6348979112  0.4164636760  0.4173709054
## 5   0.5158933284  0.4173709054  0.6348979112
## 6   0.4538838738  0.6348979112  0.5158933284
## 7   0.7306858828  0.5158933284  0.4538838738
## 8   0.5840797758  0.4538838738  0.7306858828
## 9   0.9000000000  0.7306858828  0.5840797758
## 10  0.8583518928  0.5840797758  0.9000000000
## 11  0.3536253190  0.9000000000  0.8583518928
## 12  0.7407652384  0.8583518928  0.3536253190
## 13  0.3132188170  0.3536253190  0.7407652384
## 14  0.2506814420  0.7407652384  0.3132188170
## 15  0.1657683345  0.3132188170  0.2506814420
## 16  0.3447279492  0.2506814420  0.1657683345
## 17 -0.0006975124  0.1657683345  0.3447279492
## 18 -0.2796780784  0.3447279492 -0.0006975124
## 19  0.1546382082 -0.0006975124 -0.2796780784
## 20 -0.3703381669 -0.2796780784  0.1546382082
## 21 -0.1899132255  0.1546382082 -0.3703381669
## 22 -0.1302292085 -0.3703381669 -0.1899132255
## 23 -0.4174515053 -0.1899132255 -0.1302292085
## 24 -0.4445337635 -0.1302292085 -0.4174515053
## 25 -0.3908691062 -0.4174515053 -0.4445337635
## 26 -0.4265638372 -0.4445337635 -0.3908691062
## 27 -0.4855521951 -0.3908691062 -0.4265638372
## 28 -0.4466825108 -0.4265638372 -0.4855521951
## 29 -0.5170315875 -0.4855521951 -0.4466825108
## 30 -0.4465756854 -0.4466825108 -0.5170315875
## 31 -0.4831150541 -0.5170315875 -0.4465756854
## 32 -0.4919249180 -0.4465756854 -0.4831150541
## 33 -0.6339905069 -0.4831150541 -0.4919249180
## 34 -0.6667166798 -0.4919249180 -0.6339905069
## 35 -0.5807965110 -0.6339905069 -0.6667166798
## 36 -0.6590448303 -0.6667166798 -0.5807965110
## 37 -0.8140762820 -0.5807965110 -0.6590448303
## 38 -0.7228043337 -0.6590448303 -0.8140762820
## 39 -0.7241226750 -0.8140762820 -0.7228043337
## 40 -0.5919353791 -0.7228043337 -0.7241226750
## 41 -0.5887201258 -0.7241226750 -0.5919353791
## 42 -0.5081831896 -0.5919353791 -0.5887201258
## 43 -0.5238818078 -0.5887201258 -0.5081831896
## 44 -0.5768503689 -0.5081831896 -0.5238818078
## 45 -0.8347193443 -0.5238818078 -0.5768503689
## 46 -0.8392388819 -0.5768503689 -0.8347193443
## 47 -0.8190171943 -0.8347193443 -0.8392388819
## 48 -0.7994179267 -0.8392388819 -0.8190171943
## 49 -0.9000000000 -0.8190171943 -0.7994179267
## 50 -0.7310514671 -0.7994179267 -0.9000000000
## 51 -0.8102666003 -0.9000000000 -0.7310514671
## 52 -0.8622229073 -0.7310514671 -0.8102666003
## 53 -0.8289881860 -0.8102666003 -0.8622229073
## 54 -0.7702987994 -0.8622229073 -0.8289881860
## 55 -0.6994426778 -0.8289881860 -0.7702987994
## 
## $exclude
## NULL
## 
## $net.result
## $net.result[[1]]
##               [,1]
##  [1,]  0.526180785
##  [2,]  0.522594805
##  [3,]  0.479359188
##  [4,]  0.462672106
##  [5,]  0.552219805
##  [6,]  0.538184490
##  [7,]  0.499511425
##  [8,]  0.574736310
##  [9,]  0.563822781
## [10,]  0.598623391
## [11,]  0.602445821
## [12,]  0.503896744
## [13,]  0.570869386
## [14,]  0.462564079
## [15,]  0.275584432
## [16,]  0.102228037
## [17,]  0.333262820
## [18,] -0.241923139
## [19,]  0.005154946
## [20,] -0.389507653
## [21,] -0.098136427
## [22,] -0.067306657
## [23,] -0.413790352
## [24,] -0.360969043
## [25,] -0.483344685
## [26,] -0.444079775
## [27,] -0.460974273
## [28,] -0.516988125
## [29,] -0.502138972
## [30,] -0.543860802
## [31,] -0.509645802
## [32,] -0.519880038
## [33,] -0.534507295
## [34,] -0.631595727
## [35,] -0.681526429
## [36,] -0.633452106
## [37,] -0.666055347
## [38,] -0.767205334
## [39,] -0.746647462
## [40,] -0.731777234
## [41,] -0.652570310
## [42,] -0.622960011
## [43,] -0.568851056
## [44,] -0.562020482
## [45,] -0.600769067
## [46,] -0.764495384
## [47,] -0.801858849
## [48,] -0.794538070
## [49,] -0.783711924
## [50,] -0.819314493
## [51,] -0.764466423
## [52,] -0.776081710
## [53,] -0.807482437
## [54,] -0.801313913
## [55,] -0.772188636
## 
## 
## $weights
## $weights[[1]]
## $weights[[1]][[1]]
##            [,1]
## [1,] -0.6588498
## [2,] -0.6406638
## [3,] -1.9982215
## 
## $weights[[1]][[2]]
##            [,1]      [,2]      [,3]
## [1,]  -3.741006 -3.223970 -1.028061
## [2,] -13.275420  2.945483 -1.451788
## 
## $weights[[1]][[3]]
##            [,1]
## [1,]  0.1799124
## [2,] -0.8800089
## [3,] -0.4660827
## [4,]  2.1262946
## 
## 
## 
## $generalized.weights
## $generalized.weights[[1]]
##               [,1]        [,2]
##  [1,]   0.46544523   1.4517171
##  [2,]   0.48354710   1.5081766
##  [3,]   0.70516365   2.1993956
##  [4,]   0.79361492   2.4752738
##  [5,]   0.33420226   1.0423722
##  [6,]   0.40495030   1.2630343
##  [7,]   0.60085375   1.8740544
##  [8,]   0.21988586   0.6858209
##  [9,]   0.27548469   0.8592329
## [10,]   0.09612725   0.2998196
## [11,]   0.07596888   0.2369459
## [12,]   0.57842876   1.8041112
## [13,]   0.23963734   0.7474255
## [14,]   0.79419507   2.4770833
## [15,]   2.16403909   6.7496076
## [16,]   6.95228133  21.6840682
## [17,]   1.62332053   5.0631140
## [18,]  -3.30492590 -10.3080176
## [19,] 146.15488539 455.8550419
## [20,]  -2.06122862  -6.4289432
## [21,]  -7.47566448 -23.3164929
## [22,] -11.47805350 -35.7998882
## [23,]   9.43272719  29.4205441
## [24,]  -0.86732339  -2.7051695
## [25,]  -0.36203590  -1.1291849
## [26,]  -0.47332487  -1.4762936
## [27,]  -0.42021649  -1.3106493
## [28,]  -0.29818421  -0.9300324
## [29,]  -0.32311467  -1.0077901
## [30,]  -0.26405470  -0.8235829
## [31,]  -0.30990803  -0.9665988
## [32,]  -0.29387422  -0.9165896
## [33,]  -0.27451850  -0.8562194
## [34,]  -0.20296740  -0.6330525
## [35,]  -0.17300164  -0.5395897
## [36,]  -0.20191261  -0.6297626
## [37,]  -0.18273150  -0.5699370
## [38,]  -0.11147173  -0.3476788
## [39,]  -0.12720120  -0.3967388
## [40,]  -0.13826926  -0.4312599
## [41,]  -0.19085271  -0.5952669
## [42,]  -0.20785633  -0.6483010
## [43,]  -0.24174422  -0.7539968
## [44,]  -0.24716351  -0.7708995
## [45,]  -0.22060923  -0.6880771
## [46,]  -0.11356887  -0.3542197
## [47,]  -0.08423538  -0.2627290
## [48,]  -0.09003635  -0.2808221
## [49,]  -0.09857811  -0.3074637
## [50,]  -0.07036523  -0.2194682
## [51,]  -0.11359124  -0.3542895
## [52,]  -0.10456142  -0.3261256
## [53,]  -0.07977048  -0.2488030
## [54,]  -0.08466770  -0.2640774
## [55,]  -0.10759952  -0.3356014
## 
## 
## $startweights
## $startweights[[1]]
## $startweights[[1]][[1]]
##             [,1]
## [1,] -0.44577826
## [2,] -1.20585657
## [3,]  0.04112631
## 
## $startweights[[1]][[2]]
##            [,1]       [,2]        [,3]
## [1,]  0.6393884 -0.3854893  0.71975069
## [2,] -0.7865544 -0.4758679 -0.01850562
## 
## $startweights[[1]][[3]]
##            [,1]
## [1,] -1.3731178
## [2,] -0.9824278
## [3,] -0.5544887
## [4,]  0.1213812
## 
## 
## 
## $result.matrix
##                                [,1]
## error                  4.759198e-01
## reached.threshold      9.987143e-04
## steps                  8.115160e+05
## Intercept.to.1layhid1 -6.588498e-01
## X1.to.1layhid1        -6.406638e-01
## X2.to.1layhid1        -1.998222e+00
## Intercept.to.2layhid1 -3.741006e+00
## 1layhid1.to.2layhid1  -1.327542e+01
## Intercept.to.2layhid2 -3.223970e+00
## 1layhid1.to.2layhid2   2.945483e+00
## Intercept.to.2layhid3 -1.028061e+00
## 1layhid1.to.2layhid3  -1.451788e+00
## Intercept.to.Y         1.799124e-01
## 2layhid1.to.Y         -8.800089e-01
## 2layhid2.to.Y         -4.660827e-01
## 2layhid3.to.Y          2.126295e+00
## 
## attr(,"class")
## [1] "nn"
plot(nn2)
Predictnn2=as.data.frame(nn2$net.result)
predn2=Predictnn2$s

#Hasil Destandarisasi Prediksi NN 2 Neuron Tersembunyi 
prednn2=((predn2+0.9)*(max-min)/1.8)+min
prednn2
##  [1] 136.74440 136.53930 134.06639 133.11195 138.23373 137.43097 135.21902
##  [8] 139.52159 138.89738 140.88784 141.10647 135.46984 139.30042 133.10577
## [15] 122.41126 112.49595 125.71024  92.81184 106.94375  84.37058 101.03588
## [22] 102.79923  82.98170  86.00288  79.00347  81.24927  80.28297  77.07919
## [29]  77.92851  75.54218  77.49914  76.91379  76.07716  70.52408  67.66824
## [36]  70.41790  68.55313  62.76774  63.94357  64.79409  69.32442  71.01801
## [43]  74.11283  74.50352  72.28725  62.92274  60.78569  61.20441  61.82363
## [50]  59.78730  62.92439  62.26004  60.46405  60.81686  62.48271

#NN 3

#Prediksi NN 3 Neuron Tersembunyi 
nn3
## $call
## neuralnet(formula = Y ~ X1 + X2, data = varnn1, hidden = c(3, 
##     4), threshold = 0.001, stepmax = 1e+06, startweights = NULL, 
##     learningrate = 0.01, algorithm = "backprop", act.fct = "tanh", 
##     linear.output = T)
## 
## $response
##                Y
## 1   0.5087949444
## 2   0.4164636760
## 3   0.4173709054
## 4   0.6348979112
## 5   0.5158933284
## 6   0.4538838738
## 7   0.7306858828
## 8   0.5840797758
## 9   0.9000000000
## 10  0.8583518928
## 11  0.3536253190
## 12  0.7407652384
## 13  0.3132188170
## 14  0.2506814420
## 15  0.1657683345
## 16  0.3447279492
## 17 -0.0006975124
## 18 -0.2796780784
## 19  0.1546382082
## 20 -0.3703381669
## 21 -0.1899132255
## 22 -0.1302292085
## 23 -0.4174515053
## 24 -0.4445337635
## 25 -0.3908691062
## 26 -0.4265638372
## 27 -0.4855521951
## 28 -0.4466825108
## 29 -0.5170315875
## 30 -0.4465756854
## 31 -0.4831150541
## 32 -0.4919249180
## 33 -0.6339905069
## 34 -0.6667166798
## 35 -0.5807965110
## 36 -0.6590448303
## 37 -0.8140762820
## 38 -0.7228043337
## 39 -0.7241226750
## 40 -0.5919353791
## 41 -0.5887201258
## 42 -0.5081831896
## 43 -0.5238818078
## 44 -0.5768503689
## 45 -0.8347193443
## 46 -0.8392388819
## 47 -0.8190171943
## 48 -0.7994179267
## 49 -0.9000000000
## 50 -0.7310514671
## 51 -0.8102666003
## 52 -0.8622229073
## 53 -0.8289881860
## 54 -0.7702987994
## 55 -0.6994426778
## 
## $covariate
##                  X1            X2
##  [1,]  0.5243554414  0.5157536336
##  [2,]  0.5157536336  0.5087949444
##  [3,]  0.5087949444  0.4164636760
##  [4,]  0.4164636760  0.4173709054
##  [5,]  0.4173709054  0.6348979112
##  [6,]  0.6348979112  0.5158933284
##  [7,]  0.5158933284  0.4538838738
##  [8,]  0.4538838738  0.7306858828
##  [9,]  0.7306858828  0.5840797758
## [10,]  0.5840797758  0.9000000000
## [11,]  0.9000000000  0.8583518928
## [12,]  0.8583518928  0.3536253190
## [13,]  0.3536253190  0.7407652384
## [14,]  0.7407652384  0.3132188170
## [15,]  0.3132188170  0.2506814420
## [16,]  0.2506814420  0.1657683345
## [17,]  0.1657683345  0.3447279492
## [18,]  0.3447279492 -0.0006975124
## [19,] -0.0006975124 -0.2796780784
## [20,] -0.2796780784  0.1546382082
## [21,]  0.1546382082 -0.3703381669
## [22,] -0.3703381669 -0.1899132255
## [23,] -0.1899132255 -0.1302292085
## [24,] -0.1302292085 -0.4174515053
## [25,] -0.4174515053 -0.4445337635
## [26,] -0.4445337635 -0.3908691062
## [27,] -0.3908691062 -0.4265638372
## [28,] -0.4265638372 -0.4855521951
## [29,] -0.4855521951 -0.4466825108
## [30,] -0.4466825108 -0.5170315875
## [31,] -0.5170315875 -0.4465756854
## [32,] -0.4465756854 -0.4831150541
## [33,] -0.4831150541 -0.4919249180
## [34,] -0.4919249180 -0.6339905069
## [35,] -0.6339905069 -0.6667166798
## [36,] -0.6667166798 -0.5807965110
## [37,] -0.5807965110 -0.6590448303
## [38,] -0.6590448303 -0.8140762820
## [39,] -0.8140762820 -0.7228043337
## [40,] -0.7228043337 -0.7241226750
## [41,] -0.7241226750 -0.5919353791
## [42,] -0.5919353791 -0.5887201258
## [43,] -0.5887201258 -0.5081831896
## [44,] -0.5081831896 -0.5238818078
## [45,] -0.5238818078 -0.5768503689
## [46,] -0.5768503689 -0.8347193443
## [47,] -0.8347193443 -0.8392388819
## [48,] -0.8392388819 -0.8190171943
## [49,] -0.8190171943 -0.7994179267
## [50,] -0.7994179267 -0.9000000000
## [51,] -0.9000000000 -0.7310514671
## [52,] -0.7310514671 -0.8102666003
## [53,] -0.8102666003 -0.8622229073
## [54,] -0.8622229073 -0.8289881860
## [55,] -0.8289881860 -0.7702987994
## 
## $model.list
## $model.list$response
## [1] "Y"
## 
## $model.list$variables
## [1] "X1" "X2"
## 
## 
## $err.fct
## function (x, y) 
## {
##     1/2 * (y - x)^2
## }
## <bytecode: 0x00000227500311e8>
## <environment: 0x000002274e20f1c8>
## attr(,"type")
## [1] "sse"
## 
## $act.fct
## function (x) 
## {
##     tanh(x)
## }
## <bytecode: 0x0000022750028d88>
## <environment: 0x000002274e20ed30>
## attr(,"type")
## [1] "tanh"
## 
## $linear.output
## [1] TRUE
## 
## $data
##                Y            X1            X2
## 1   0.5087949444  0.5243554414  0.5157536336
## 2   0.4164636760  0.5157536336  0.5087949444
## 3   0.4173709054  0.5087949444  0.4164636760
## 4   0.6348979112  0.4164636760  0.4173709054
## 5   0.5158933284  0.4173709054  0.6348979112
## 6   0.4538838738  0.6348979112  0.5158933284
## 7   0.7306858828  0.5158933284  0.4538838738
## 8   0.5840797758  0.4538838738  0.7306858828
## 9   0.9000000000  0.7306858828  0.5840797758
## 10  0.8583518928  0.5840797758  0.9000000000
## 11  0.3536253190  0.9000000000  0.8583518928
## 12  0.7407652384  0.8583518928  0.3536253190
## 13  0.3132188170  0.3536253190  0.7407652384
## 14  0.2506814420  0.7407652384  0.3132188170
## 15  0.1657683345  0.3132188170  0.2506814420
## 16  0.3447279492  0.2506814420  0.1657683345
## 17 -0.0006975124  0.1657683345  0.3447279492
## 18 -0.2796780784  0.3447279492 -0.0006975124
## 19  0.1546382082 -0.0006975124 -0.2796780784
## 20 -0.3703381669 -0.2796780784  0.1546382082
## 21 -0.1899132255  0.1546382082 -0.3703381669
## 22 -0.1302292085 -0.3703381669 -0.1899132255
## 23 -0.4174515053 -0.1899132255 -0.1302292085
## 24 -0.4445337635 -0.1302292085 -0.4174515053
## 25 -0.3908691062 -0.4174515053 -0.4445337635
## 26 -0.4265638372 -0.4445337635 -0.3908691062
## 27 -0.4855521951 -0.3908691062 -0.4265638372
## 28 -0.4466825108 -0.4265638372 -0.4855521951
## 29 -0.5170315875 -0.4855521951 -0.4466825108
## 30 -0.4465756854 -0.4466825108 -0.5170315875
## 31 -0.4831150541 -0.5170315875 -0.4465756854
## 32 -0.4919249180 -0.4465756854 -0.4831150541
## 33 -0.6339905069 -0.4831150541 -0.4919249180
## 34 -0.6667166798 -0.4919249180 -0.6339905069
## 35 -0.5807965110 -0.6339905069 -0.6667166798
## 36 -0.6590448303 -0.6667166798 -0.5807965110
## 37 -0.8140762820 -0.5807965110 -0.6590448303
## 38 -0.7228043337 -0.6590448303 -0.8140762820
## 39 -0.7241226750 -0.8140762820 -0.7228043337
## 40 -0.5919353791 -0.7228043337 -0.7241226750
## 41 -0.5887201258 -0.7241226750 -0.5919353791
## 42 -0.5081831896 -0.5919353791 -0.5887201258
## 43 -0.5238818078 -0.5887201258 -0.5081831896
## 44 -0.5768503689 -0.5081831896 -0.5238818078
## 45 -0.8347193443 -0.5238818078 -0.5768503689
## 46 -0.8392388819 -0.5768503689 -0.8347193443
## 47 -0.8190171943 -0.8347193443 -0.8392388819
## 48 -0.7994179267 -0.8392388819 -0.8190171943
## 49 -0.9000000000 -0.8190171943 -0.7994179267
## 50 -0.7310514671 -0.7994179267 -0.9000000000
## 51 -0.8102666003 -0.9000000000 -0.7310514671
## 52 -0.8622229073 -0.7310514671 -0.8102666003
## 53 -0.8289881860 -0.8102666003 -0.8622229073
## 54 -0.7702987994 -0.8622229073 -0.8289881860
## 55 -0.6994426778 -0.8289881860 -0.7702987994
## 
## $exclude
## NULL
## 
## $net.result
## $net.result[[1]]
##                [,1]
##  [1,]  0.5801320562
##  [2,]  0.5777334740
##  [3,]  0.5371085181
##  [4,]  0.5307503351
##  [5,]  0.5798366782
##  [6,]  0.5831982025
##  [7,]  0.5570327919
##  [8,]  0.5877335382
##  [9,]  0.5993737584
## [10,]  0.6133413285
## [11,]  0.6183045058
## [12,]  0.5143595975
## [13,]  0.3153543225
## [14,]  0.4700482296
## [15,]  0.3302170128
## [16,]  0.1392019913
## [17,] -0.0004649794
## [18,] -0.2074132052
## [19,]  0.1557280265
## [20,] -0.4076053188
## [21,] -0.2029451139
## [22,] -0.1350664120
## [23,] -0.3938638712
## [24,] -0.4254888548
## [25,] -0.4762502941
## [26,] -0.3814177441
## [27,] -0.4451223153
## [28,] -0.5284135421
## [29,] -0.4853549509
## [30,] -0.5602098965
## [31,] -0.4880435515
## [32,] -0.5267553242
## [33,] -0.5378242904
## [34,] -0.6563055024
## [35,] -0.6824428099
## [36,] -0.6146231249
## [37,] -0.6765562552
## [38,] -0.7945437959
## [39,] -0.7289560127
## [40,] -0.7322246159
## [41,] -0.6229286677
## [42,] -0.6198984785
## [43,] -0.5577305756
## [44,] -0.5680981712
## [45,] -0.6104023601
## [46,] -0.8013513601
## [47,] -0.8006127249
## [48,] -0.7943964415
## [49,] -0.7859353966
## [50,] -0.8077934360
## [51,] -0.7342421209
## [52,] -0.7921993041
## [53,] -0.8048182524
## [54,] -0.7975756952
## [55,] -0.7676744373
## 
## 
## $weights
## $weights[[1]]
## $weights[[1]][[1]]
##           [,1]        [,2]      [,3]
## [1,] 0.1208876  -0.9203309 -5.359142
## [2,] 0.3071994 -12.5492798  0.173599
## [3,] 3.7554360   5.0588214 -5.685851
## 
## $weights[[1]][[2]]
##            [,1]       [,2]        [,3]      [,4]
## [1,]  1.3793480 -4.6216816  0.28770384 11.583550
## [2,]  6.5441822  1.2658392 -5.17152077  4.585160
## [3,]  0.1227476 -3.1164951 -0.05312429 -4.928378
## [4,] -2.8801786  0.1083895  4.25292326 -7.850266
## 
## $weights[[1]][[3]]
##           [,1]
## [1,] -4.136487
## [2,] -1.031780
## [3,]  1.544988
## [4,] -1.231808
## [5,]  5.073841
## 
## 
## 
## $generalized.weights
## $generalized.weights[[1]]
##                [,1]          [,2]
##  [1,]  1.477947e-01  1.192035e+00
##  [2,]  1.606856e-01  1.255389e+00
##  [3,]  2.216851e-01  2.391928e+00
##  [4,]  4.613558e-01  2.401425e+00
##  [5,]  2.412568e+00 -4.192435e-01
##  [6,]  9.605028e-02  1.135640e+00
##  [7,]  1.837824e-01  1.850479e+00
##  [8,]  2.541638e+00 -7.570936e-01
##  [9,]  5.471264e-02  6.617599e-01
## [10,]  5.594318e-01 -1.535941e-01
## [11,]  6.591364e-03  7.891143e-02
## [12,]  2.459114e-01  3.006170e+00
## [13,]  2.963153e+01 -1.170200e+01
## [14,]  3.389912e-01  4.143752e+00
## [15,]  1.258115e+00  7.640131e+00
## [16,]  3.430796e+00  1.868202e+01
## [17,] -1.659247e+04  5.255869e+03
## [18,] -5.605549e-01 -6.771152e+00
## [19,]  2.329404e+00  2.313289e+01
## [20,] -1.247034e-05 -1.371961e-04
## [21,] -1.371585e+00 -1.748521e+01
## [22,]  3.117289e+00  3.932354e+01
## [23,]  1.382439e-02  1.808859e+00
## [24,] -3.327767e-01 -3.632111e+00
## [25,] -1.204912e-01 -2.084301e+00
## [26,] -3.184654e-01 -4.299568e+00
## [27,] -1.531703e-01 -2.702110e+00
## [28,] -5.566736e-02 -1.342684e+00
## [29,] -1.250544e-01 -1.892771e+00
## [30,] -3.123139e-02 -1.036671e+00
## [31,] -1.233951e-01 -1.835859e+00
## [32,] -6.560101e-02 -1.347403e+00
## [33,] -6.123992e-02 -1.208962e+00
## [34,]  1.537688e-02 -7.814194e-01
## [35,]  1.393794e-02 -7.631872e-01
## [36,] -8.464038e-03 -7.235777e-01
## [37,]  1.338494e-02 -7.702256e-01
## [38,]  7.763971e-03 -2.618801e-01
## [39,]  1.820366e-02 -7.049040e-01
## [40,]  1.813030e-02 -7.014609e-01
## [41,] -4.323508e-03 -7.012396e-01
## [42,] -5.775361e-03 -7.463444e-01
## [43,] -4.703788e-02 -9.848400e-01
## [44,] -3.596086e-02 -9.494064e-01
## [45,] -8.432393e-03 -7.819631e-01
## [46,]  4.656871e-03 -1.534145e-01
## [47,]  4.976145e-03 -1.663788e-01
## [48,]  7.800561e-03 -2.631722e-01
## [49,]  1.076540e-02 -3.677520e-01
## [50,]  1.381501e-03 -4.612903e-02
## [51,]  1.822136e-02 -6.865793e-01
## [52,]  8.648725e-03 -2.933435e-01
## [53,]  2.557663e-03 -8.490861e-02
## [54,]  6.444794e-03 -2.163538e-01
## [55,]  1.506144e-02 -5.292213e-01
## 
## 
## $startweights
## $startweights[[1]]
## $startweights[[1]][[1]]
##             [,1]       [,2]        [,3]
## [1,] -0.44577826  0.6393884 -0.47586788
## [2,] -1.20585657 -0.7865544  0.71975069
## [3,]  0.04112631 -0.3854893 -0.01850562
## 
## $startweights[[1]][[2]]
##            [,1]       [,2]        [,3]       [,4]
## [1,] -1.3731178 -0.1208723  0.02493187 -1.2270160
## [2,] -0.9824278 -1.3360410 -2.04658541  0.8342473
## [3,] -0.5544887  0.1700575  0.21315411  0.5325717
## [4,]  0.1213812  0.1550787  2.67007166 -0.6468250
## 
## $startweights[[1]][[3]]
##            [,1]
## [1,]  0.6031613
## [2,] -1.7838441
## [3,]  0.3349422
## [4,]  0.5609757
## [5,]  1.2209357
## 
## 
## 
## $result.matrix
##                                [,1]
## error                  3.524472e-01
## reached.threshold      9.993056e-04
## steps                  7.476470e+05
## Intercept.to.1layhid1  1.208876e-01
## X1.to.1layhid1         3.071994e-01
## X2.to.1layhid1         3.755436e+00
## Intercept.to.1layhid2 -9.203309e-01
## X1.to.1layhid2        -1.254928e+01
## X2.to.1layhid2         5.058821e+00
## Intercept.to.1layhid3 -5.359142e+00
## X1.to.1layhid3         1.735990e-01
## X2.to.1layhid3        -5.685851e+00
## Intercept.to.2layhid1  1.379348e+00
## 1layhid1.to.2layhid1   6.544182e+00
## 1layhid2.to.2layhid1   1.227476e-01
## 1layhid3.to.2layhid1  -2.880179e+00
## Intercept.to.2layhid2 -4.621682e+00
## 1layhid1.to.2layhid2   1.265839e+00
## 1layhid2.to.2layhid2  -3.116495e+00
## 1layhid3.to.2layhid2   1.083895e-01
## Intercept.to.2layhid3  2.877038e-01
## 1layhid1.to.2layhid3  -5.171521e+00
## 1layhid2.to.2layhid3  -5.312429e-02
## 1layhid3.to.2layhid3   4.252923e+00
## Intercept.to.2layhid4  1.158355e+01
## 1layhid1.to.2layhid4   4.585160e+00
## 1layhid2.to.2layhid4  -4.928378e+00
## 1layhid3.to.2layhid4  -7.850266e+00
## Intercept.to.Y        -4.136487e+00
## 2layhid1.to.Y         -1.031780e+00
## 2layhid2.to.Y          1.544988e+00
## 2layhid3.to.Y         -1.231808e+00
## 2layhid4.to.Y          5.073841e+00
## 
## attr(,"class")
## [1] "nn"
plot(nn3)
Predictnn3=as.data.frame(nn3$net.result)
predn3=Predictnn3$s

#Hasil Destandarisasi Prediksi NN 3 Neuron Tersembunyi 
prednn3=((predn3+0.9)*(max-min)/1.8)+min
prednn3
##  [1] 139.83021 139.69302 137.36943 137.00576 139.81331 140.00558 138.50902
##  [8] 140.26498 140.93076 141.72965 142.01352 136.06828 124.68595 133.53384
## [15] 125.53604 114.61072 106.62231  94.78568 115.55594  83.33546  95.04123
## [22]  98.92363  84.12142  82.31259  79.40924  84.83329  81.18964  76.42570
## [29]  78.88849  74.60707  78.73471  76.52055  75.88744  69.11078  67.61583
## [36]  71.49485  67.95251  61.20409  64.95545  64.76850  71.01980  71.19312
## [43]  74.74888  74.15590  71.73626  60.81472  60.85697  61.21251  61.69645
## [50]  60.44626  64.65311  61.33818  60.61643  61.03067  62.74091

Berikut hasil prediksi dari ketiga arsitektur NN yang telah dibuat.

#PREDIKSI NN DARI KETIGA NEURON#

#Hasil Prediksi NN 1, 2, dan 3 Neuron 
hasil_prediksi_nn=data.frame(aktual=insmpl[3:57],
                             NN_1=prednn1,
                             NN_2=prednn2,
                             NN_3=prednn3)
hasil_prediksi_nn
##       aktual      NN_1      NN_2      NN_3
## 1  135.75000 137.03237 136.74440 139.83021
## 2  130.46901 136.74209 136.53930 139.69302
## 3  130.52090 133.92364 134.06639 137.36943
## 4  142.96260 131.77475 133.11195 137.00576
## 5  136.15600 138.14754 138.23373 139.81331
## 6  132.60930 138.42387 137.43097 140.00558
## 7  148.44130 135.26734 135.21902 138.50902
## 8  140.05600 139.94833 139.52159 140.26498
## 9  158.12541 140.22424 138.89738 140.93076
## 10 155.74330 141.89076 140.88784 141.72965
## 11 126.87490 142.43481 141.10647 142.01352
## 12 149.01780 137.96381 135.46984 136.06828
## 13 124.56381 139.25977 139.30042 124.68595
## 14 120.98691 135.20466 133.10577 133.53384
## 15 116.13021 117.83817 122.41126 125.53604
## 16 126.36601 108.12258 112.49595 114.61072
## 17 106.60901 118.08359 125.71024 106.62231
## 18  90.65241 101.07195  92.81184  94.78568
## 19 115.49361  93.94372 106.94375 115.55594
## 20  85.46700  95.20315  84.37058  83.33546
## 21  95.78661  93.98248 101.03588  95.04123
## 22  99.20030  91.99097 102.79923  98.92363
## 23  82.77230  94.16831  82.98170  84.12142
## 24  81.22330  89.78515  86.00288  82.31259
## 25  84.29271  80.76221  79.00347  79.40924
## 26  82.25111  82.60279  81.24927  84.83329
## 27  78.87721  82.47294  80.28297  81.18964
## 28  81.10040  78.44427  77.07919  76.42570
## 29  77.07671  78.56836  77.92851  78.88849
## 30  81.10651  76.32699  75.54218  74.60707
## 31  79.01660  77.62476  77.49914  78.73471
## 32  78.51271  77.95944  76.91379  76.52055
## 33  70.38711  76.45249  76.07716  75.88744
## 34  68.51530  70.26650  70.52408  69.11078
## 35  73.42960  66.57549  67.66824  67.61583
## 36  68.95410  68.44270  70.41790  71.49485
## 37  60.08690  67.68239  68.55313  67.95251
## 38  65.30730  63.28830  62.76774  61.20409
## 39  65.23190  63.22356  63.94357  64.95545
## 40  72.79250  64.13344  64.79409  64.76850
## 41  72.97640  67.08579  69.32442  71.01980
## 42  77.58280  69.69220  71.01801  71.19312
## 43  76.68490  72.82666  74.11283  74.74888
## 44  73.65530  74.28085  74.50352  74.15590
## 45  58.90620  71.66938  72.28725  71.73626
## 46  58.64770  63.77158  62.92274  60.81472
## 47  59.80430  61.64801  60.78569  60.85697
## 48  60.92530  61.82185  61.20441  61.21251
## 49  55.17240  62.17048  61.82363  61.69645
## 50  64.83560  61.29568  59.78730  60.44626
## 51  60.30480  62.38961  62.92439  64.65311
## 52  57.33310  62.70796  62.26004  61.33818
## 53  59.23400  61.57253  60.46405  60.61643
## 54  62.59081  61.58402  60.81686  61.03067
## 55  66.64350  62.44529  62.48271  62.74091

#PEMILIHAN MODEL NN TERBAIK#

#Akurasi
#In Sample
rmse_in_NN1<-rmse(insmpl[3:57],prednn1)
mape_in_NN1<-mape(insmpl[3:57],prednn1)*100
smape_in_NN1<-smape(insmpl[3:57],prednn1)*100
cat("NN 1 In Sample")
## NN 1 In Sample
cat("\nRMSE : ",rmse_in_NN1)
## 
## RMSE :  8.300726
cat("\nMAPE : ",mape_in_NN1)
## 
## MAPE :  6.776717
cat("\nSMAPE: ",smape_in_NN1,"\n")
## 
## SMAPE:  6.738105
cat("\n")
rmse_in_NN2<-rmse(insmpl[3:57],prednn2)
mape_in_NN2<-mape(insmpl[3:57],prednn2)*100
smape_in_NN2<-smape(insmpl[3:57],prednn2)*100
cat("NN 2 In Sample")
## NN 2 In Sample
cat("\nRMSE : ",rmse_in_NN2)
## 
## RMSE :  7.524317
cat("\nMAPE : ",mape_in_NN2)
## 
## MAPE :  5.927345
cat("\nSMAPE: ",smape_in_NN2,"\n")
## 
## SMAPE:  5.873328
cat("\n")
rmse_in_NN3<-rmse(insmpl[3:57],prednn3)
mape_in_NN3<-mape(insmpl[3:57],prednn3)*100
smape_in_NN3<-smape(insmpl[3:57],prednn3)*100
cat("NN 3 In Sample")
## NN 3 In Sample
cat("\nRMSE : ",rmse_in_NN3)
## 
## RMSE :  6.475111
cat("\nMAPE : ",mape_in_NN3)
## 
## MAPE :  5.116365
cat("\nSMAPE: ",smape_in_NN3,"\n")
## 
## SMAPE:  5.081673

Berdasarkan output di atas, dapat diketahui bahwa model terbaik adalah NN 3 karena memiliki nilai RMSE, MAPE, dan SMAPE terkecil dibandingkan 2 model lainnya.

Selanjutnya dilakukan prediksi data outsample sebagai berikut.

#PREDIKSI OUT SAMPLE#
Ytest=c(varnn1$Y,rep(0,6))
Ytest
##  [1]  0.5087949444  0.4164636760  0.4173709054  0.6348979112  0.5158933284
##  [6]  0.4538838738  0.7306858828  0.5840797758  0.9000000000  0.8583518928
## [11]  0.3536253190  0.7407652384  0.3132188170  0.2506814420  0.1657683345
## [16]  0.3447279492 -0.0006975124 -0.2796780784  0.1546382082 -0.3703381669
## [21] -0.1899132255 -0.1302292085 -0.4174515053 -0.4445337635 -0.3908691062
## [26] -0.4265638372 -0.4855521951 -0.4466825108 -0.5170315875 -0.4465756854
## [31] -0.4831150541 -0.4919249180 -0.6339905069 -0.6667166798 -0.5807965110
## [36] -0.6590448303 -0.8140762820 -0.7228043337 -0.7241226750 -0.5919353791
## [41] -0.5887201258 -0.5081831896 -0.5238818078 -0.5768503689 -0.8347193443
## [46] -0.8392388819 -0.8190171943 -0.7994179267 -0.9000000000 -0.7310514671
## [51] -0.8102666003 -0.8622229073 -0.8289881860 -0.7702987994 -0.6994426778
## [56]  0.0000000000  0.0000000000  0.0000000000  0.0000000000  0.0000000000
## [61]  0.0000000000
for (i in 57:63){ 
  Xtest=t(matrix(c(Ytest[i-1],Ytest[i-2])
                 ,byrow=FALSE))
  Ytest[i]=compute(nn3,covariate=Xtest)$net.result
}

Ytest=((Ytest+0.9)*(max-min)/1.8)+min
Ytest
##  [1] 135.75000 130.46901 130.52090 142.96260 136.15600 132.60930 148.44130
##  [8] 140.05600 158.12541 155.74330 126.87490 149.01780 124.56381 120.98691
## [15] 116.13021 126.36601 106.60901  90.65241 115.49361  85.46700  95.78661
## [22]  99.20030  82.77230  81.22330  84.29271  82.25111  78.87721  81.10040
## [29]  77.07671  81.10651  79.01660  78.51271  70.38711  68.51530  73.42960
## [36]  68.95410  60.08690  65.30730  65.23190  72.79250  72.97640  77.58280
## [43]  76.68490  73.65530  58.90620  58.64770  59.80430  60.92530  55.17240
## [50]  64.83560  60.30480  57.33310  59.23400  62.59081  66.64350 106.64890
## [57]  65.06365  83.27470  64.06629  80.50573  63.37336  76.95686  62.94097

Selanjutnya dilakukan perhitungan akurasi untuk prediksi out sample.

#NILAI AKURASI
#Out Sample
rmse_out_NN<-rmse(outsmpl,Ytest[58:63])
mape_out_NN<-mape(outsmpl,Ytest[58:63])*100
smape_out_NN<-smape(outsmpl,Ytest[58:63])*100
cat("NN 3 Out Sample")
## NN 3 Out Sample
cat("\nRMSE : ",rmse_out_NN)
## 
## RMSE :  8.360689
cat("\nMAPE : ",mape_out_NN)
## 
## MAPE :  11.05709
cat("\nSMAPE: ",smape_out_NN)
## 
## SMAPE:  10.88438

Berdasarkan output di atas, dapat diketahui bahwa prediksi out sample tidak lebih baik dari prediksi in sample. Hal ini terlihat dari nilai RMSE, MAPE, dan SMAPE prediksi out sample yang lebih besar dari ketiga nilai akurasi prediksi NN 3 terhadap in sample.

#GRAFIK PERBANDINGAN NN#

#Grafik Perbandingan Prediksi/Peramalan dengan Data Aktual
p_in_nn <- c(rep(NA,2),prednn3,rep(NA,6))
p_out_nn <- c(rep(NA,57),Ytest[58:63])

plot(Zt, type = "n", main = "Grafik Aktual vs Prediksi NN 3", ylab = "Produksi Gula (Ton/Ha)", xlab = "Time (Tahun)", ylim = c(45,185)) 

series_list4 <- list(Zt, p_in_nn, p_out_nn)
colors4 <- c("black", "mediumorchid4", "purple1")

for (i in 1:3) {
  lines(series_list4[[i]], col = colors4[i], lwd = 1)
  points(series_list4[[i]], col = colors4[i], pch = 19, cex = 0.8)
}

abline(v = 57, col="blue",lwd = 1, lty = 2)
grid()

legend("topright", legend = c("Data Aktual","Prediksi In Sample", "Prediksi Out Sample"),
       cex = 0.75, lty = 1, pch = 19, col = colors4)

Berdasarkan gambar di atas, model NN 3 mengalami overfitting karena mampu menangkap pola data in sample/data latih dengan sangat baik tetapi tidak menangkap pola data out sample/data testing dengan baik.

#GRAFIK PERBANDINGAN ARIMA(0,1,1)-MA(2)-NN3#

#Grafik Perbandingan Keseluruhan
plot(Zt, type = "n", main = "Grafik Perbandingan ARIMA(0,1,1) vs MA(2) vs NN3", ylab = "Produksi Gula (Ton/Ha)", xlab = "Time (Tahun)", ylim = c(50,170)) 


series_list <- list(Zt,p_in_arima,p_out_arima,p_in_ma,p_out_ma,p_in_nn,p_out_nn)
colors <- c("black","firebrick","firebrick1","darkolivegreen4","darkolivegreen2","mediumorchid4","purple1")

for (i in 1:7) {
  lines(series_list[[i]], col = colors[i], lwd = 1)
  points(series_list[[i]], col = colors[i], pch = 19, cex = 0.8)
}

abline(v = 57, col="blue",lwd = 1, lty = 2)
grid()

legend("topright",
       legend = c("Data Aktual", 
                  "Prediksi ARIMA(0,1,1) In Sample", "Prediksi MA(2) In Sample",
                  "Prediksi NN 3 In Sample", "Prediksi ARIMA(0,1,1) Out Sample",
                  "Prediksi MA(2) Out Sample","Prediksi NN 3 Out Sample"),
       col = c("black","firebrick","darkolivegreen4","mediumorchid4","firebrick1","darkolivegreen2","purple"), pch = 19, lty = 1, cex = 0.6, ncol = 2)

#PERBANDINGAN NILAI AKURASI IN SAMPLE DARI ARIMA(0,1,1)-MA(2)-NN3#

#Akurasi In Sample Keseluruhan
akurasi_in <- data.frame(
  Model = c("ARIMA(0,1,1)", "MA(2)", "NN 3"),
  RMSE = c(rmse_in_ARIMA, rmse_in_MA, rmse_in_NN3),
  MAPE = c(mape_in_ARIMA, mape_in_MA, mape_in_NN3),
  SMAPE = c(smape_in_ARIMA, smape_in_MA, smape_in_NN3)
)
akurasi_in
##          Model     RMSE     MAPE    SMAPE
## 1 ARIMA(0,1,1) 9.307721 7.152922 6.918957
## 2        MA(2) 5.300919 3.863328 3.807808
## 3         NN 3 6.475111 5.116365 5.081673

#PERBANDINGAN NILAI AKURASI OUT SAMPLE DARI ARIMA(0,1,1)-MA(2)-NN3#

#Akurasi Out Sample Keseluruhan
akurasi_out <- data.frame(
  Model = c("ARIMA(0,1,1)", "MA(2)", "NN 3"),
  RMSE = c(rmse_out_ARIMA, rmse_out_MA, rmse_out_NN),
  MAPE = c(mape_out_ARIMA, mape_out_MA, mape_out_NN),
  SMAPE = c(smape_out_ARIMA, smape_out_MA, smape_out_NN)
)
akurasi_out
##          Model     RMSE      MAPE     SMAPE
## 1 ARIMA(0,1,1) 6.416773  8.771412  9.194142
## 2        MA(2) 5.861563  7.946243  8.297096
## 3         NN 3 8.360689 11.057092 10.884378

Dapat diketahui bahwa pada grafik, prediksi model MA(2) mampu menangkap pola data aktual in maupun out sample jauh lebih baik dibandingkan ARIMA(0,1,1) dan NN 3. Hal ini didukung pula dengan fakta bahwa model MA(2) memiliki nilai RMSE, MAPE, dan SMAPE yang terkecil.