Berikut data jumlah transportasi roda 4, baik transportasi pribadi seperti mobil dan transportasi umum seperti bus, yang melewati Malioboro Kepatihan selama 39 hari dari tanggal 25 April 2024 hingga 2 Juni 2024 dengan interval waktu 30 menit mulai pukul 17.00-17.30.
library(readxl)
library(zoo)
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
Data = read_excel("/Users/nadhifanurf/Documents/analisis runtun waktu/21106010065-data.xlsx")
Data
## # A tibble: 39 × 3
## Date Data Location
## <dttm> <dbl> <chr>
## 1 2024-04-25 00:00:00 302 Malioboro Kepatihan
## 2 2024-04-26 00:00:00 235 Malioboro Kepatihan
## 3 2024-04-27 00:00:00 252 Malioboro Kepatihan
## 4 2024-04-28 00:00:00 278 Malioboro Kepatihan
## 5 2024-04-29 00:00:00 255 Malioboro Kepatihan
## 6 2024-04-30 00:00:00 255 Kleringan (Jl. Abu Bakar Ali)
## 7 2024-05-01 00:00:00 230 Malioboro Kepatihan
## 8 2024-05-02 00:00:00 273 Malioboro Kepatihan
## 9 2024-05-03 00:00:00 276 Malioboro Kepatihan
## 10 2024-05-04 00:00:00 256 Malioboro Kepatihan
## # ℹ 29 more rows
ts_data = ts(Data$Data, frequency = 365)
ts_data
## Time Series:
## Start = c(1, 1)
## End = c(1, 39)
## Frequency = 365
## [1] 302 235 252 278 255 255 230 273 276 256 242 283 263 249 235 247 191 291 261
## [20] 268 244 274 285 271 264 238 274 220 215 119 151 250 252 238 253 334 293 147
## [39] 279
x = as.Date(Data$Date, format = "%d/%m/%Y", data = Data)
data = zoo(ts_data, order.by = x)
plot(data, xlab = "Date", ylab = "Jumlah Kendaraan Roda 4", main = "Plot Pengamatan Kendaraan Roda 4 di Malioboro Kepatihan")
Setelah data jumlah transportasi roda 4 diubah menjadi data time series, selanjutnya akan dianalisis stationeritas dari data tersebut. Berikut output untuk plot ACF dan PACF.
acf(ts_data, lag.max = 39, type = "correlation", main = "ACF Data Lalu Lintas")
acf(ts_data, lag.max = 39, type = "partial", main = "PACF Data Lalu Lintas")
Berdasarkan output plot ACF dan PACF dapat disimpulkan bahwa data time series stationer.
Kemudian akan dicari persamaan model MA(1). Berikut ouput untuk model MA(1) dari data time series yang telah stationer.
Model_MA = arima(ts_data, order = c(0, 0, 1))
Model_MA
##
## Call:
## arima(x = ts_data, order = c(0, 0, 1))
##
## Coefficients:
## ma1 intercept
## 0.2521 250.5380
## s.e. 0.1745 7.9743
##
## sigma^2 estimated as 1588: log likelihood = -199.09, aic = 404.19
Kemudian akan dicari persamaan model AR(1). Berikut ouput untuk model AR(1) dari data time series yang telah stationer.
Model_AR = arima(ts_data, order = c(1, 0, 0))
Model_AR
##
## Call:
## arima(x = ts_data, order = c(1, 0, 0))
##
## Coefficients:
## ar1 intercept
## 0.2147 250.3831
## s.e. 0.1587 8.1148
##
## sigma^2 estimated as 1599: log likelihood = -199.22, aic = 404.44
Kemudian akan dicari persamaan model ARMA(1,1). Berikut ouput untuk model ARMA(1,1) dari data time series yang telah stationer.
Model_ARMA = arima(ts_data, order = c(1, 0, 1))
Model_ARMA
##
## Call:
## arima(x = ts_data, order = c(1, 0, 1))
##
## Coefficients:
## ar1 ma1 intercept
## -0.1402 0.3869 250.5190
## s.e. 0.5815 0.5560 7.7472
##
## sigma^2 estimated as 1586: log likelihood = -199.07, aic = 406.13
Kemudian akan dicari persamaan model ARIMA(p,d,q) dengan p = 1, d = 0, dan q = 0 yang diperoleh dengan fungsi auto.arima. Berikut ouput untuk model ARIMA(1) dari data time series yang telah stationer.
library(forecast)
## Warning: package 'forecast' was built under R version 4.3.2
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
Model_ARIMA = auto.arima(ts_data)
summary(Model_ARIMA)
## Series: ts_data
## ARIMA(1,0,0) with non-zero mean
##
## Coefficients:
## ar1 mean
## 0.2147 250.3831
## s.e. 0.1587 8.1148
##
## sigma^2 = 1686: log likelihood = -199.22
## AIC=404.44 AICc=405.12 BIC=409.43
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.3150802 39.98953 27.71907 -3.860358 13.42333 NaN 0.01002601
Setelah diperoleh persamaan model MA(1), AR(1), ARMA(1,1), dan ARIMA(1,0,0), akan dipilih model terbaik diantara keempat model dengan AIC terkecil. Berikut diperoleh output AIC untuk masing-masing persamaan model.
AIC(Model_MA)
## [1] 404.1888
AIC(Model_AR)
## [1] 404.4366
AIC(Model_ARMA)
## [1] 406.1325
AIC(Model_ARIMA)
## [1] 404.4366
Berdasarkan output di atas, disimpulkan bahwa model terbaik diantara persamaan model MA(1), AR(1), ARMA(1,1), dan ARIMA(1,0,0) adalah model MA(1) sebab model tersebut memiliki nilai AIC terendah diantara model lainnya yaitu 404.1888.
Selanjutnya akan dilakukan uji diagnostik model MA(1) dengan uji Ljung Box. Berikut output uji Ljung Box untuk model MA(1).
loan.fit.ar2 = arima(ts_data, order=c(0, 0, 1))
fit.loan.ar2 = as.vector(fitted(loan.fit.ar2))
fit.loan.ar2
## [1] 252.0995 262.6847 243.5724 252.6627 256.9260 250.0524 251.7854 245.0455
## [9] 257.5859 255.1806 250.7446 248.3333 259.2782 251.4764 249.9137 246.7780
## [17] 250.5940 235.5131 264.5274 249.6487 255.1648 247.7231 257.1630 257.5563
## [25] 253.9274 253.0775 246.7367 257.4117 241.1058 243.9562 219.0340 233.3852
## [33] 254.7269 249.8505 247.5503 251.9120 271.2341 256.0256 223.0504
res.loan.ar2 = as.vector(residuals(loan.fit.ar2))
Box.test(res.loan.ar2, lag = 20, fitdf = 1, type = "Ljung")
##
## Box-Ljung test
##
## data: res.loan.ar2
## X-squared = 10.585, df = 19, p-value = 0.937
Berdasarkan uji Ljung-Box diperoleh p-value untuk model MA(1) sebesar 0.937 > 0.05, oleh karena itu dapat disimpulkan bahwa residu dari model MA(1) merupakan white noise dan model layak digunakan.
Untuk prediksi jumlah transportasi roda 4 pada malioboro kepatihan periode berikutnya setelah periode yang telah diamati sebelumnya akan digunakan fungsi forecast. Berikut output data forecast untuk model MA(1) 2 periode berikutnya.
loan.ar2.forecast = as.array(forecast(loan.fit.ar2, h = 2))
loan.ar2.forecast
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 1.106849 264.6441 213.5700 315.7181 186.5331 342.7551
## 1.109589 250.5380 197.8657 303.2103 169.9827 331.0933
Berdasarkan output di atas, disimpulkan bahwa prediksi utama untuk 2 periode berikutnya yaitu 3 Juni 2024 dan 4 Juni 2024 secara berurutan adalah 264.6441 dan 250.5380.
Berdasarkan model MA(1) diperoleh output plot data forecast sebagai berikut
autoplot(loan.ar2.forecast)
Berdasarkan data time series dan data fitted diperoleh output plot data time series dan data fitted berdasarkan model MA(1) sebagai berikut
x = as.Date(Data$Date, format = "%d/%m/%Y", data = Data)
data = zoo(ts_data, order.by = x)
plot(data, col = "black", xlab = "Date", ylab = "Jumlah Kendaraan Roda 4", main = "Plot Pengamatan Kendaraan Roda 4 di Malioboro Kepatihan")
X = as.Date(Data$Date, format = "%d/%m/%Y", data = Data)
fitted_data = zoo(fit.loan.ar2, order.by = X)
lines(fitted_data, col = "blue", xlab = "Date", ylab = "Jumlah Kendaraan Roda 4")
legend("bottomleft", legend = c("Data Time Series", "Data Fitted"), col=c("black", "blue"), lty = 1)