#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")