#Input Data
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
#Menginputkan Data ke dalam R
data <-data.frame(Month =seq.Date(from =as.Date("2021-01-01"), by ="month", length.out=36),Sales =c(120, 125, 140, 152, 160, 165, 170, 180, 175, 190, 200, 210,220, 225, 230, 240, 245, 250, 255, 271, 265, 280, 290, 300, 310, 320, 330, 335, 340, 360, 370, 380, 375, 390, 403, 410))
data
## Month Sales
## 1 2021-01-01 120
## 2 2021-02-01 125
## 3 2021-03-01 140
## 4 2021-04-01 152
## 5 2021-05-01 160
## 6 2021-06-01 165
## 7 2021-07-01 170
## 8 2021-08-01 180
## 9 2021-09-01 175
## 10 2021-10-01 190
## 11 2021-11-01 200
## 12 2021-12-01 210
## 13 2022-01-01 220
## 14 2022-02-01 225
## 15 2022-03-01 230
## 16 2022-04-01 240
## 17 2022-05-01 245
## 18 2022-06-01 250
## 19 2022-07-01 255
## 20 2022-08-01 271
## 21 2022-09-01 265
## 22 2022-10-01 280
## 23 2022-11-01 290
## 24 2022-12-01 300
## 25 2023-01-01 310
## 26 2023-02-01 320
## 27 2023-03-01 330
## 28 2023-04-01 335
## 29 2023-05-01 340
## 30 2023-06-01 360
## 31 2023-07-01 370
## 32 2023-08-01 380
## 33 2023-09-01 375
## 34 2023-10-01 390
## 35 2023-11-01 403
## 36 2023-12-01 410
# Convert data to time series object
ts_data<-ts(data$Sales, start =c(2021, 1), frequency =12)
ts_data
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2021 120 125 140 152 160 165 170 180 175 190 200 210
## 2022 220 225 230 240 245 250 255 271 265 280 290 300
## 2023 310 320 330 335 340 360 370 380 375 390 403 410
#Visualisasi Data
# Visualisasikandata
plot(ts_data, main ="Monthly Sales Data", xlab="Time", ylab="Sales", col ="blue", lwd=2)
#Uji Stasioneritas
library(tseries)
# Uji stasioneritasdengan AugmentedDickey-FullerTest
adf.test(ts_data)
##
## Augmented Dickey-Fuller Test
##
## data: ts_data
## Dickey-Fuller = -1.2381, Lag order = 3, p-value = 0.8696
## alternative hypothesis: stationary
#diferensiasi
ts_data2 <-diff(ts_data)
adf.test(ts_data2)
##
## Augmented Dickey-Fuller Test
##
## data: ts_data2
## Dickey-Fuller = -4.0308, Lag order = 3, p-value = 0.01996
## alternative hypothesis: stationary
#Identifikasi Model ARIMA
# Identifikasimodel ARIMA denganauto.arima
fit <-auto.arima(ts_data2)
# Tampilkanhasil
summary(fit)
## Series: ts_data2
## ARIMA(0,0,0)(0,1,0)[12]
##
## sigma^2 = 23.04: log likelihood = -68.72
## AIC=139.43 AICc=139.62 BIC=140.57
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.2885714 3.891387 2.003143 -5.69753 23.03716 0.6581755 0.0875351
#Prediksi Menggunakan Model SARIMA
# Prediksi12 bulankedepan
forecast_result<-forecast(fit, h =12)
# Visualisasikanhasilprediksi
plot(forecast_result, main ="Forecast of Monthly Sales", xlab="Time", ylab="Sales")