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.