library(dLagM)
## Warning: package 'dLagM' was built under R version 4.5.3
## Loading required package: nardl
## Warning: package 'nardl' was built under R version 4.5.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Loading required package: dynlm
## Warning: package 'dynlm' was built under R version 4.5.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.5.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(dynlm)
library(MLmetrics)
## Warning: package 'MLmetrics' was built under R version 4.5.3
##
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:dLagM':
##
## MAPE
## The following object is masked from 'package:base':
##
## Recall
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.5.3
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.5.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
Data ini terdiri atas jumlah penumpang transjakarta sebagai peubah dependen (Y) dan penyesuain rute sebagai peubah independen (X) Indonesia periode Januari 2023 - Juni 2024.
data <- read.csv("C:\\Users\\ASUS\\Downloads\\Data Jumlah Penumpang Transjakarta Harian Tahun 2023-2024.1 (2).csv")
data <- data[,c(-1,-4)]
data
## jumlah_penumpang_transjakarta PenyesuaianRute
## 1 363250 0
## 2 730984 0
## 3 783228 0
## 4 798449 0
## 5 807905 0
## 6 807617 0
## 7 533011 0
## 8 462270 0
## 9 813091 0
## 10 813213 0
## 11 813605 0
## 12 814531 0
## 13 819097 0
## 14 535942 0
## 15 466899 0
## 16 811137 0
## 17 815885 0
## 18 812864 0
## 19 811051 0
## 20 806414 0
## 21 526233 0
## 22 472413 0
## 23 505072 0
## 24 818341 0
## 25 811874 0
## 26 810325 0
## 27 813532 0
## 28 487421 0
## 29 459960 0
## 30 816629 0
## 31 816317 0
## 32 814881 0
## 33 818742 0
## 34 819001 0
## 35 556834 0
## 36 488204 0
## 37 825070 0
## 38 832484 0
## 39 833095 0
## 40 831869 0
## 41 828212 0
## 42 510122 0
## 43 422854 0
## 44 835890 0
## 45 840872 0
## 46 846249 0
## 47 827555 0
## 48 831455 0
## 49 510507 0
## 50 472914 0
## 51 849058 0
## 52 847360 0
## 53 857541 0
## 54 839067 0
## 55 796438 0
## 56 538248 0
## 57 434772 0
## 58 816398 0
## 59 851556 0
## 60 55942 1
## 61 24204 1
## 62 251365 1
## 63 264137 1
## 64 230435 1
## 65 414003 1
## 66 407278 1
## 67 411878 1
## 68 430429 1
## 69 394506 1
## 70 270281 1
## 71 234304 1
## 72 419100 1
## 73 437186 1
## 74 403209 1
## 75 411942 1
## 76 392576 1
## 77 281295 1
## 78 246132 1
## 79 413469 1
## 80 425202 1
## 81 237001 1
## 82 217789 1
## 83 331433 1
## 84 190316 1
## 85 188906 1
## 86 420975 1
## 87 387151 1
## 88 392595 1
## 89 377990 1
## 90 385400 1
## 91 217669 1
## 92 175733 1
## 93 390929 1
## 94 390498 1
## 95 392872 1
## 96 385699 1
## 97 187926 1
## 98 204150 1
## 99 181400 1
## 100 373158 1
## 101 364583 1
## 102 379875 1
## 103 381208 1
## 104 375584 1
## 105 246273 1
## 106 195161 1
## 107 368669 1
## 108 335221 1
## 109 227004 1
## 110 181265 1
## 111 131793 1
## 112 122443 1
## 113 183995 1
## 114 202311 1
## 115 214362 1
## 116 293532 1
## 117 322559 1
## 118 313386 1
## 119 243623 1
## 120 241994 1
## 121 189308 1
## 122 389178 1
## 123 391130 1
## 124 382684 1
## 125 380701 1
## 126 255571 1
## 127 217454 1
## 128 396416 1
## 129 398379 1
## 130 400652 1
## 131 393284 1
## 132 383837 1
## 133 261201 1
## 134 235244 1
## 135 396244 1
## 136 399077 1
## 137 404735 1
## 138 220892 1
## 139 378441 1
## 140 267638 1
## 141 244690 1
## 142 398998 1
## 143 401465 1
## 144 400076 1
## 145 393110 1
## 146 391089 1
## 147 266874 1
## 148 234523 1
## 149 402805 1
## 150 404002 1
## 151 409625 1
## 152 248240 1
## 153 280427 1
## 154 265902 1
## 155 232667 1
## 156 399224 1
## 157 399423 1
## 158 406281 1
## 159 403579 1
## 160 400288 1
## 161 271681 1
## 162 237994 1
## 163 409206 1
## 164 410297 1
## 165 412628 1
## 166 403973 1
## 167 372722 1
## 168 272844 1
## 169 245111 1
## 170 406081 1
## 171 423167 1
## 172 414006 1
## 173 471272 1
## 174 403924 1
## 175 296045 1
## 176 255095 1
## 177 405495 1
## 178 404368 1
## 179 282160 1
## 180 162363 1
## 181 268616 1
## 182 266403 1
## 183 262267 1
## 184 410750 1
## 185 422607 1
## 186 425460 1
## 187 407207 1
## 188 397741 1
## 189 305910 1
## 190 283412 1
## 191 420365 1
## 192 424839 1
## 193 420454 1
## 194 417414 1
## 195 406018 1
## 196 279789 1
## 197 241523 1
## 198 408865 1
## 199 410957 1
## 200 213426 1
## 201 411124 1
## 202 401104 1
## 203 267510 1
## 204 228296 1
## 205 405764 1
## 206 409326 1
## 207 410340 1
## 208 404754 1
## 209 401208 1
## 210 286489 1
## 211 252302 1
## 212 411622 1
## 213 1009442 0
## 214 1000587 0
## 215 1002236 0
## 216 979014 0
## 217 670806 0
## 218 628885 0
## 219 1006666 0
## 220 1011406 0
## 221 1000208 0
## 222 991508 0
## 223 982905 0
## 224 676818 0
## 225 597413 0
## 226 1008471 0
## 227 1011261 0
## 228 989925 0
## 229 535537 0
## 230 941749 0
## 231 625534 0
## 232 498446 0
## 233 433517 0
## 234 418970 0
## 235 416837 0
## 236 409463 0
## 237 408345 0
## 238 282422 0
## 239 246739 0
## 240 420126 0
## 241 422024 0
## 242 430748 0
## 243 417971 0
## 244 1015361 0
## 245 695963 0
## 246 617558 0
## 247 1026591 0
## 248 1014345 0
## 249 1014851 0
## 250 1007231 0
## 251 1032009 0
## 252 700670 0
## 253 621726 0
## 254 1065550 0
## 255 1078830 0
## 256 1074826 0
## 257 1070391 0
## 258 1064895 0
## 259 711037 0
## 260 605562 0
## 261 1080611 0
## 262 1094329 0
## 263 1101370 0
## 264 1090495 0
## 265 1081846 0
## 266 742942 0
## 267 611442 0
## 268 1100966 0
## 269 1105993 0
## 270 1109120 0
## 271 615710 0
## 272 1043002 0
## 273 730363 0
## 274 650239 0
## 275 1083284 0
## 276 1105891 0
## 277 1100992 0
## 278 1102279 0
## 279 1087623 0
## 280 725319 0
## 281 630556 0
## 282 1100382 0
## 283 1109216 0
## 284 1107503 0
## 285 1103250 0
## 286 1093067 0
## 287 727497 0
## 288 635855 0
## 289 1107316 0
## 290 1128713 0
## 291 1121625 0
## 292 1110376 0
## 293 1097821 0
## 294 721052 0
## 295 629687 0
## 296 1104758 0
## 297 1120393 0
## 298 1107625 0
## 299 1111359 0
## 300 1097914 0
## 301 748153 0
## 302 633768 0
## 303 1109764 0
## 304 1121596 0
## 305 1117922 0
## 306 1121811 0
## 307 1101969 0
## 308 735079 0
## 309 642921 0
## 310 1121028 0
## 311 1130181 0
## 312 1128956 0
## 313 1124007 0
## 314 1101730 0
## 315 748574 0
## 316 653803 0
## 317 1135364 0
## 318 1146542 0
## 319 1132691 0
## 320 1131441 0
## 321 1126115 0
## 322 744568 0
## 323 654569 0
## 324 1146384 0
## 325 1149804 0
## 326 1171288 0
## 327 1145343 0
## 328 1118527 0
## 329 698469 0
## 330 642518 0
## 331 1147858 0
## 332 1153413 0
## 333 1158450 0
## 334 1140648 0
## 335 1127659 0
## 336 769649 0
## 337 662120 0
## 338 1149169 0
## 339 1174098 0
## 340 1167902 0
## 341 1164122 0
## 342 1123681 0
## 343 781721 0
## 344 674405 0
## 345 1151083 0
## 346 1156065 0
## 347 1151501 0
## 348 1143117 0
## 349 1131174 0
## 350 758456 0
## 351 680941 0
## 352 1083773 0
## 353 1081461 0
## 354 1089583 0
## 355 1070707 0
## 356 1027720 0
## 357 749305 0
## 358 708769 0
## 359 609034 0
## 360 735852 0
## 361 1012112 0
## 362 1010097 0
## 363 974703 0
## 364 748326 0
## 365 660343 0
## 366 632778 0
## 367 1045214 0
## 368 1041663 0
## 369 1097752 0
## 370 1105303 0
## 371 716205 0
## 372 624900 0
## 373 1137742 0
## 374 1150147 0
## 375 1147436 0
## 376 1125270 0
## 377 1129099 0
## 378 758105 0
## 379 683688 0
## 380 1154750 0
## 381 1158105 0
## 382 1131647 0
## 383 1142880 0
## 384 1066005 0
## 385 781421 0
## 386 651780 0
## 387 1157462 0
## 388 1165110 0
## 389 1168437 0
## 390 1152249 0
## 391 1145915 0
## 392 693411 0
## 393 639808 0
## 394 1114347 0
## 395 1120316 0
## 396 1095146 0
## 397 1155322 0
## 398 1152107 0
## 399 801212 0
## 400 670195 0
## 401 1159398 0
## 402 1168189 0
## 403 1180123 0
## 404 696518 0
## 405 774403 0
## 406 683082 0
## 407 645873 0
## 408 1147300 0
## 409 1157441 0
## 410 471864 0
## 411 1111148 0
## 412 1129816 0
## 413 742067 0
## 414 649062 0
## 415 1173362 0
## 416 1194157 0
## 417 1200226 0
## 418 1179609 0
## 419 1172659 0
## 420 769879 0
## 421 667620 0
## 422 1185213 0
## 423 1197537 0
## 424 1171695 0
## 425 1099316 0
## 426 1199898 0
## 427 791038 0
## 428 703924 0
## 429 1209113 0
## 430 1235499 0
## 431 1235063 0
## 432 1237464 0
## 433 1221948 0
## 434 747057 0
## 435 704383 0
## 436 593917 0
## 437 714500 0
## 438 1100220 0
## 439 1148676 0
## 440 1141872 0
## 441 656466 0
## 442 550347 0
## 443 1193240 0
## 444 1186975 0
## 445 1186823 0
## 446 1189852 0
## 447 1070739 0
## 448 738182 0
## 449 602385 0
## 450 1189677 0
## 451 1187533 0
## 452 1188138 0
## 453 1164143 0
## 454 662301 0
## 455 713388 0
## 456 621075 0
## 457 1126121 0
## 458 1159140 0
## 459 1144574 0
## 460 1097231 0
## 461 1046450 0
## 462 696891 0
## 463 602737 0
## 464 611444 0
## 465 495614 0
## 466 334789 0
## 467 481280 0
## 468 535906 0
## 469 646987 0
## 470 622202 0
## 471 727403 0
## 472 1016228 0
## 473 1094937 0
## 474 1126816 0
## 475 1134568 0
## 476 769162 0
## 477 668100 0
## 478 1179217 0
## 479 1189935 0
## 480 1202510 0
## 481 1190370 0
## 482 1173290 0
## 483 783384 0
## 484 687410 0
## 485 1170658 0
## 486 1185970 0
## 487 685485 0
## 488 1177299 0
## 489 1155576 0
## 490 801713 0
## 491 701049 0
## 492 1197302 0
## 493 1223878 0
## 494 1239648 0
## 495 727872 0
## 496 855915 0
## 497 793188 0
## 498 734457 0
## 499 1231170 0
## 500 1238837 0
## 501 1241336 0
## 502 1229401 0
## 503 1221876 0
## 504 848639 0
## 505 730335 0
## 506 1238643 0
## 507 1253256 0
## 508 1251442 0
## 509 703835 0
## 510 856274 0
## 511 755342 0
## 512 726615 0
## 513 1230649 0
## 514 1242030 0
## 515 1246323 0
## 516 1258449 0
## 517 1224491 0
## 518 817193 0
## 519 730832 0
## 520 1236594 0
## 521 1266654 0
## 522 1276021 0
## 523 1261933 0
## 524 1251558 0
## 525 873156 0
## 526 763276 0
## 527 1246892 0
## 528 1245940 0
## 529 1252232 0
## 530 1244140 0
## 531 1210476 0
## 532 792176 0
## 533 650471 0
## 534 424630 0
## 535 834190 0
## 536 1211872 0
## 537 1221791 0
## 538 1218522 0
## 539 1061448 0
## 540 839257 0
## 541 1200013 0
## 542 1199360 0
## 543 1216516 0
## 544 1197988 0
## 545 1183472 0
## 546 857366 0
# Membuat kolom tanggal yang dimulai dari 1 Januari 2023 dan memiliki 546 baris
dates <- seq(from = as.Date("2023-01-01"), by = "day", length.out = 546)
dates[546]
## [1] "2024-06-29"
# Menambahkan kolom tanggal ke dataset
data$Date <- dates
# Menampilkan data untuk memeriksa kolom baru
head(data)
## jumlah_penumpang_transjakarta PenyesuaianRute Date
## 1 363250 0 2023-01-01
## 2 730984 0 2023-01-02
## 3 783228 0 2023-01-03
## 4 798449 0 2023-01-04
## 5 807905 0 2023-01-05
## 6 807617 0 2023-01-06
# Plot time series jumlah penumpang dengan sumbu x berupa tanggal
plot( data$Date, data$jumlah_penumpang_transjakarta, type = "l", xlab = "Date", ylab = "Number of Passengers",
col = "blue", xaxt = "n")
# Menambahkan tanggal pada sumbu x dengan format bulan dan tahun
axis(1, at = seq(from = min(data$Date), to = max(data$Date), by = "months"),
labels = format(seq(from = min(data$Date), to = max(data$Date), by = "months"), "%b %Y"))
# Menambahkan titik untuk data penumpang
points(data[,1], pch = 20, col = "blue")
# Plot time series jumlah penumpang dengan sumbu x berupa tanggal
plot(data$Date, data$jumlah_penumpang_transjakarta, type = "l", xlab = "Date", ylab = "Number of Passengers",
col = "blue", xaxt = "n")
# Menambahkan tanggal pada sumbu x dengan format "YYYY-MM"
axis(1, at = seq(from = min(data$Date), to = max(data$Date), by = "month"),
labels = format(seq(from = min(data$Date), to = max(data$Date), by = "month"), "%Y-%m"))
# Menambahkan titik untuk data penumpang
points(data$Date, pch = 20, col = "blue")
ts.plot(data[,1], type="l", xlab = "Day", ylab="Number of Passengers", col="blue")
points(data[,1], pch = 20, col = "blue")
Yt <- data$jumlah_penumpang_transjakarta
Xt <- as.factor(data$PenyesuaianRute)
data <- as.data.frame(cbind(Yt, Xt))
# Split Data
training <- data[1:477,]
testing <- data[478:546,]
# Data Time Series
training.ts <- ts(training)
testing.ts <- ts(testing)
data.ts <- ts(data)
Peubah dependen dipengaruhi oleh peubah independen pada waktu sekarang, serta dipengaruhi juga oleh peubah dependen itu sendiri pada satu waktu yang lalu maka model tersebut disebut autoregressive (Gujarati 2004).
Pemodelan Autoregressive dilakukan menggunakan fungsi
dLagM::ardlDlm() . Fungsi tersebut akan menerapkan
autoregressive berordo \((p,q)\) dengan satu prediktor. Fungsi umum
dari ardlDlm() adalah sebagai berikut.
ardlDlm(formula = NULL , data = NULL , x = NULL , y = NULL , p = 1 , q = 1 ,
remove = NULL )
Dengan \(p\) adalah integer yang mewakili panjang lag yang terbatas dan \(q\) adalah integer yang merepresentasikan ordo dari proses autoregressive.
modelardl <- ardlBoundOrders(data = data.frame(data), ic = "AIC",
formula = Yt ~ Xt )
min_p=c()
for(i in 1:5){
min_p[i]=min(modelardl$Stat.table[[i]])
}
q_opt=which(min_p==min(min_p, na.rm = TRUE))
p_opt=which(modelardl$Stat.table[[q_opt]] ==
min(modelardl$Stat.table[[q_opt]], na.rm = TRUE))
data.frame("q_optimum" = q_opt, "p_optimum" = p_opt,
"AIC"=modelardl$min.Stat)
## q_optimum p_optimum AIC
## 1 5 14 14007.38
Dari tabel di atas, dapat terlihat bahwa nilai AIC terendah didapat
ketika \(p=14\) dan \(q=5\), yaitu sebesar 14007.38.
Artinya, model autoregressive optimum didapat ketika \(p=14\) dan \(q=5\).
Selanjutnya dapat dilakukan pemodelan dengan nilai \(p\) dan \(q\) optimum.
modelardl <- ardlDlm(formula = Yt ~ Xt, data = training, p = 14, q = 5)
summary(modelardl)
##
## Time series regression with "ts" data:
## Start = 15, End = 477
##
## Call:
## dynlm(formula = as.formula(model.text), data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -482505 -98809 18070 106630 535656
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.223e+05 8.902e+04 6.991 1.01e-11 ***
## Xt.t -6.849e+05 1.207e+05 -5.677 2.49e-08 ***
## Xt.1 4.240e+05 1.723e+05 2.461 0.014229 *
## Xt.2 -7.546e+04 1.734e+05 -0.435 0.663563
## Xt.3 6.435e+04 1.734e+05 0.371 0.710794
## Xt.4 9.660e+04 1.734e+05 0.557 0.577856
## Xt.5 5.754e+04 1.725e+05 0.333 0.738922
## Xt.6 -2.171e+05 1.697e+05 -1.279 0.201581
## Xt.7 1.342e+05 1.700e+05 0.789 0.430314
## Xt.8 -6.105e+04 1.701e+05 -0.359 0.719744
## Xt.9 1.827e+04 1.701e+05 0.107 0.914526
## Xt.10 -7.352e+04 1.701e+05 -0.432 0.665765
## Xt.11 1.849e+05 1.697e+05 1.090 0.276478
## Xt.12 2.244e+04 1.697e+05 0.132 0.894858
## Xt.13 -2.345e+05 1.697e+05 -1.382 0.167586
## Xt.14 1.032e+05 1.204e+05 0.857 0.392032
## Yt.1 7.038e-01 4.720e-02 14.911 < 2e-16 ***
## Yt.2 -3.322e-01 5.760e-02 -5.768 1.51e-08 ***
## Yt.3 2.217e-01 5.894e-02 3.761 0.000192 ***
## Yt.4 -1.055e-01 5.776e-02 -1.826 0.068543 .
## Yt.5 8.843e-02 4.745e-02 1.864 0.063051 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 169500 on 442 degrees of freedom
## Multiple R-squared: 0.7632, Adjusted R-squared: 0.7524
## F-statistic: 71.21 on 20 and 442 DF, p-value: < 2.2e-16
AIC(modelardl)
## [1] 12485.82
BIC(modelardl)
## [1] 12576.85
Dari hasil tersebut, didapat bahwa peubah \(x_t\), \(x_{t-1}\), \(y_{t-1}\), \(y_{t-2}\), dan \(y_{t-3}\) memiliki nilai \(P-Value<0.05\). Hal ini menunjukkan bahwa peubah \(x_t\), \(x_{t-1}\), \(y_{t-1}\), \(y_{t-2}\), dan \(y_{t-3}\) berpengaruh signifikan terhadap \(y_t\) sementara yang lainnya tidak berpengaruh signifikan terhadap \(y_t\). Artinya, jumlah penumpang transjakarta satu periode sebelumnya, dua periode sebelumnya, tiga periode sebelumnya, dan penyesuaian rute pada periode sekarang dan satu periode sebelumnya berpengaruh signifikan terhadap jumlah penumpang periode sekarang. Adapun model keseluruhannya adalah sebagai berikut.
\[ \hat{Y_t}=(6.223e+0)+(-6.849e+05)X_t-...+(8.843e-02)Y_{t-5} \]
dynlmPemodelan regresi dengan peubah lag tidak hanya dapat
dilakukan dengan fungsi pada packages dLagM ,
tetapi terdapat packages dynlm yang dapat
digunakan. Fungsi dynlm secara umum adalah sebagai
berikut.
dynlm(formula, data, subset, weights, na.action, method = "qr",
model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE,
contrasts = NULL, offset, start = NULL, end = NULL, ...)
Untuk menentukan formula model yang akan digunakan,
tersedia fungsi tambahan yang memungkinkan spesifikasi dinamika (melalui
d() dan L()) atau pola linier/siklus dengan
mudah (melalui trend(), season(), dan
harmon()). Semua fungsi formula baru mengharuskan
argumennya berupa objek deret waktu (yaitu, "ts" atau
"zoo").
#sama dengan model ardl p=14 q=5
cons_lm1 <- dynlm(Yt ~ Xt+L(Xt)+L(Xt,2)+L(Xt,3)+L(Xt,4)+L(Xt,5)+L(Xt,6)+L(Xt,7)+L(Xt,8)+L(Xt,9)+L(Xt,10)+L(Xt,11)+L(Xt,12)+L(Xt,13)+L(Xt,14)+L(Yt)+L(Yt,2)+L(Yt,3)+L(Yt,4)+L(Yt,5),data = training.ts)
cons_lm1
##
## Time series regression with "ts" data:
## Start = 15, End = 477
##
## Call:
## dynlm(formula = Yt ~ Xt + L(Xt) + L(Xt, 2) + L(Xt, 3) + L(Xt,
## 4) + L(Xt, 5) + L(Xt, 6) + L(Xt, 7) + L(Xt, 8) + L(Xt, 9) +
## L(Xt, 10) + L(Xt, 11) + L(Xt, 12) + L(Xt, 13) + L(Xt, 14) +
## L(Yt) + L(Yt, 2) + L(Yt, 3) + L(Yt, 4) + L(Yt, 5), data = training.ts)
##
## Coefficients:
## (Intercept) Xt L(Xt) L(Xt, 2) L(Xt, 3) L(Xt, 4)
## 6.223e+05 -6.849e+05 4.240e+05 -7.546e+04 6.435e+04 9.660e+04
## L(Xt, 5) L(Xt, 6) L(Xt, 7) L(Xt, 8) L(Xt, 9) L(Xt, 10)
## 5.754e+04 -2.171e+05 1.342e+05 -6.105e+04 1.827e+04 -7.352e+04
## L(Xt, 11) L(Xt, 12) L(Xt, 13) L(Xt, 14) L(Yt) L(Yt, 2)
## 1.849e+05 2.244e+04 -2.345e+05 1.032e+05 7.038e-01 -3.322e-01
## L(Yt, 3) L(Yt, 4) L(Yt, 5)
## 2.217e-01 -1.055e-01 8.843e-02
summary(cons_lm1)
##
## Time series regression with "ts" data:
## Start = 15, End = 477
##
## Call:
## dynlm(formula = Yt ~ Xt + L(Xt) + L(Xt, 2) + L(Xt, 3) + L(Xt,
## 4) + L(Xt, 5) + L(Xt, 6) + L(Xt, 7) + L(Xt, 8) + L(Xt, 9) +
## L(Xt, 10) + L(Xt, 11) + L(Xt, 12) + L(Xt, 13) + L(Xt, 14) +
## L(Yt) + L(Yt, 2) + L(Yt, 3) + L(Yt, 4) + L(Yt, 5), data = training.ts)
##
## Residuals:
## Min 1Q Median 3Q Max
## -482505 -98809 18070 106630 535656
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.223e+05 8.902e+04 6.991 1.01e-11 ***
## Xt -6.849e+05 1.207e+05 -5.677 2.49e-08 ***
## L(Xt) 4.240e+05 1.723e+05 2.461 0.014229 *
## L(Xt, 2) -7.546e+04 1.734e+05 -0.435 0.663563
## L(Xt, 3) 6.435e+04 1.734e+05 0.371 0.710794
## L(Xt, 4) 9.660e+04 1.734e+05 0.557 0.577856
## L(Xt, 5) 5.754e+04 1.725e+05 0.333 0.738922
## L(Xt, 6) -2.171e+05 1.697e+05 -1.279 0.201581
## L(Xt, 7) 1.342e+05 1.700e+05 0.789 0.430314
## L(Xt, 8) -6.105e+04 1.701e+05 -0.359 0.719744
## L(Xt, 9) 1.827e+04 1.701e+05 0.107 0.914526
## L(Xt, 10) -7.352e+04 1.701e+05 -0.432 0.665765
## L(Xt, 11) 1.849e+05 1.697e+05 1.090 0.276478
## L(Xt, 12) 2.244e+04 1.697e+05 0.132 0.894858
## L(Xt, 13) -2.345e+05 1.697e+05 -1.382 0.167586
## L(Xt, 14) 1.032e+05 1.204e+05 0.857 0.392032
## L(Yt) 7.038e-01 4.720e-02 14.911 < 2e-16 ***
## L(Yt, 2) -3.322e-01 5.760e-02 -5.768 1.51e-08 ***
## L(Yt, 3) 2.217e-01 5.894e-02 3.761 0.000192 ***
## L(Yt, 4) -1.055e-01 5.776e-02 -1.826 0.068543 .
## L(Yt, 5) 8.843e-02 4.745e-02 1.864 0.063051 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 169500 on 442 degrees of freedom
## Multiple R-squared: 0.7632, Adjusted R-squared: 0.7524
## F-statistic: 71.21 on 20 and 442 DF, p-value: < 2.2e-16
deviance(cons_lm1)
## [1] 1.26926e+13
dwtest(cons_lm1)
##
## Durbin-Watson test
##
## data: cons_lm1
## DW = 2.0852, p-value = 0.794
## alternative hypothesis: true autocorrelation is greater than 0
Berdasarkan hasil uji diagnostik model yaitu autokorelasi diperoleh \(P-Value>0.05\) untuk model ARDL. Artinya, tidak terjadi autokorelasi pada model ardl.
Box.test((residuals(cons_lm1))^2, type = "Ljung")
##
## Box-Ljung test
##
## data: (residuals(cons_lm1))^2
## X-squared = 6.0445, df = 1, p-value = 0.01395
Berdasarkan hasil uji diagnostik model yaitu heterogenitas diperoleh \(P-Value<0.05\). Artinya, terjadi heterogenitas pada model ardl.
shapiro.test(residuals(cons_lm1))
##
## Shapiro-Wilk normality test
##
## data: residuals(cons_lm1)
## W = 0.98715, p-value = 0.0004187
ks.test(residuals(cons_lm1), "pnorm", mean=mean(residuals(cons_lm1)), sd=sd(residuals(cons_lm1)))
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: residuals(cons_lm1)
## D = 0.066524, p-value = 0.03321
## alternative hypothesis: two-sided
nortest::ad.test(residuals(cons_lm1))
##
## Anderson-Darling normality test
##
## data: residuals(cons_lm1)
## A = 2.4683, p-value = 3.03e-06
tseries::jarque.bera.test(residuals(cons_lm1))
##
## Jarque Bera Test
##
## data: residuals(cons_lm1)
## X-squared = 2.593, df = 2, p-value = 0.2735
Berdasarkan hasil uji diagnostik model yaitu normalitas dengan menggunakan uji shapiro-wilk, kolmogorov smirnov, dan anderson darling diperoleh \(P-Value<0.05\) untuk ardl. Artinya, normalitas tidak terpenuhi pada model ardl. Namun, berdasarkan hasil uji diagnostik model yaitu normalitas dengan menggunakan uji jarque bera diperoleh \(P-Value>0.05\) untuk model ardl. Artinya, normalitas terpenuhi pada model ardl.
t.test(residuals(cons_lm1), mu = 0, conf.level = 0.95)
##
## One Sample t-test
##
## data: residuals(cons_lm1)
## t = 9.1025e-16, df = 462, p-value = 1
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -15137.39 15137.39
## sample estimates:
## mean of x
## 7.011691e-12
Berdasarkan hasil uji diagnostik model yaitu nilai harapan galat sama dengan 0 diperoleh \(P-Value > 0.05\) artinya nilai harapan galat = 0 terpenuhi.
Namun, akibat dari diagnostik model yaitu ragam homogen tidak terpenuhi maka peramalan belum dapat dilakukan. Dengan demikian perlu dilakukan penanganan terlebih dahulu agar mendapatkan model terbaik yang memenuhi diagnostik model.
Plot ccf digunaka untuk melakukan pengecekan terhadap lag. Kemudian lag signifikan atau melebihi batas saja yang akan dimasukkan ke dalam model.
ccf(data$Xt, data$Yt, main = "Cross-Correlation between Xt and Yt")
Berdasarkan plot ccf di atas diperoleh bahwa lag 0 hingga 24 signifikan sehingga plot ccf tidak membantu penanganan kasus ini.
Penanganan selanjutnya adalah dengan mencoba memasukkan satu per satu lag signifikan dan berhenti ketika lag tersebut tidak signifikan dimulai dari lag Xt dan dilanjutkan dengan lag Yt.
#sama dengan model ardl p=1 q=3
cons_lm2 <- dynlm(Yt ~ Xt+L(Xt)+L(Yt)+L(Yt,2)+L(Yt,3),data = training.ts)
cons_lm2
##
## Time series regression with "ts" data:
## Start = 4, End = 477
##
## Call:
## dynlm(formula = Yt ~ Xt + L(Xt) + L(Yt) + L(Yt, 2) + L(Yt, 3),
## data = training.ts)
##
## Coefficients:
## (Intercept) Xt L(Xt) L(Yt) L(Yt, 2) L(Yt, 3)
## 6.459e+05 -6.818e+05 4.326e+05 6.944e-01 -2.984e-01 1.595e-01
summary(cons_lm2)
##
## Time series regression with "ts" data:
## Start = 4, End = 477
##
## Call:
## dynlm(formula = Yt ~ Xt + L(Xt) + L(Yt) + L(Yt, 2) + L(Yt, 3),
## data = training.ts)
##
## Residuals:
## Min 1Q Median 3Q Max
## -489310 -98758 15243 101581 549100
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.459e+05 7.381e+04 8.751 < 2e-16 ***
## Xt -6.818e+05 1.198e+05 -5.690 2.24e-08 ***
## L(Xt) 4.326e+05 1.215e+05 3.559 0.000410 ***
## L(Yt) 6.944e-01 4.507e-02 15.408 < 2e-16 ***
## L(Yt, 2) -2.984e-01 5.290e-02 -5.641 2.93e-08 ***
## L(Yt, 3) 1.595e-01 4.427e-02 3.603 0.000348 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 168400 on 468 degrees of freedom
## Multiple R-squared: 0.7532, Adjusted R-squared: 0.7505
## F-statistic: 285.6 on 5 and 468 DF, p-value: < 2.2e-16
deviance(cons_lm2)
## [1] 1.327812e+13
dwtest(cons_lm2)
##
## Durbin-Watson test
##
## data: cons_lm2
## DW = 1.9843, p-value = 0.4015
## alternative hypothesis: true autocorrelation is greater than 0
Berdasarkan hasil uji diagnostik model yaitu autokorelasi diperoleh \(P-Value>0.05\) untuk model ARDL. Artinya, tidak terjadi autokorelasi pada model ardl.
Box.test((residuals(cons_lm2))^2, type = "Ljung")
##
## Box-Ljung test
##
## data: (residuals(cons_lm2))^2
## X-squared = 1.1013, df = 1, p-value = 0.294
Berdasarkan hasil uji diagnostik model yaitu heterogenitas diperoleh \(P-Value>0.05\). Artinya, tidak terjadi heterogenitas pada model ardl.
shapiro.test(residuals(cons_lm2))
##
## Shapiro-Wilk normality test
##
## data: residuals(cons_lm2)
## W = 0.98947, p-value = 0.001758
ks.test(residuals(cons_lm2), "pnorm", mean=mean(residuals(cons_lm2)), sd=sd(residuals(cons_lm2)))
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: residuals(cons_lm2)
## D = 0.050377, p-value = 0.1802
## alternative hypothesis: two-sided
nortest::ad.test(residuals(cons_lm2))
##
## Anderson-Darling normality test
##
## data: residuals(cons_lm2)
## A = 1.9953, p-value = 4.356e-05
tseries::jarque.bera.test(residuals(cons_lm2))
##
## Jarque Bera Test
##
## data: residuals(cons_lm2)
## X-squared = 0.94275, df = 2, p-value = 0.6241
Berdasarkan hasil uji diagnostik model yaitu normalitas dengan menggunakan uji shapiro-wilk dan anderson darling diperoleh \(P-Value<0.05\) untuk ardl. Artinya, normalitas tidak terpenuhi pada model ardl. Namun, berdasarkan hasil uji diagnostik model yaitu normalitas dengan menggunakan uji kolmogorov-smirnov dan jarque bera diperoleh \(P-Value>0.05\) untuk model ardl. Artinya, normalitas terpenuhi pada model ardl.
t.test(residuals(cons_lm2), mu = 0, conf.level = 0.95)
##
## One Sample t-test
##
## data: residuals(cons_lm2)
## t = 1.3821e-15, df = 473, p-value = 1
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -15122 15122
## sample estimates:
## mean of x
## 1.063588e-11
Berdasarkan hasil uji diagnostik model yaitu nilai harapan galat sama dengan 0 diperoleh \(P-Value > 0.05\) artinya nilai harapan galat = 0 terpenuhi.
Akibat semua diagnostik model terpenuhi maka bisa dilanjutkan dengan peramalan.
modelardl2 <- ardlDlm(formula = Yt ~ Xt, data = training, p = 1, q = 3)
summary(modelardl2)
##
## Time series regression with "ts" data:
## Start = 4, End = 477
##
## Call:
## dynlm(formula = as.formula(model.text), data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -489310 -98758 15243 101581 549100
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.459e+05 7.381e+04 8.751 < 2e-16 ***
## Xt.t -6.818e+05 1.198e+05 -5.690 2.24e-08 ***
## Xt.1 4.326e+05 1.215e+05 3.559 0.000410 ***
## Yt.1 6.944e-01 4.507e-02 15.408 < 2e-16 ***
## Yt.2 -2.984e-01 5.290e-02 -5.641 2.93e-08 ***
## Yt.3 1.595e-01 4.427e-02 3.603 0.000348 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 168400 on 468 degrees of freedom
## Multiple R-squared: 0.7532, Adjusted R-squared: 0.7505
## F-statistic: 285.6 on 5 and 468 DF, p-value: < 2.2e-16
AIC(modelardl2)
## [1] 12761.67
BIC(modelardl2)
## [1] 12790.79
foreardl <- forecast(model = modelardl2, x = training$Xt, h = 69)
foreardl
## $forecasts
## [1] 812143.6 884038.3 874863.7 870018.1 880859.1 888369.7 889577.6 889904.8
## [9] 890969.6 891804.1 892118.1 892257.0 892392.9 892495.9 892549.0 892576.9
## [17] 892596.8 892610.8 892619.0 892623.7 892626.7 892628.8 892630.0 892630.8
## [25] 892631.2 892631.5 892631.7 892631.8 892631.9 892632.0 892632.0 892632.0
## [33] 892632.0 892632.0 892632.0 892632.0 892632.0 892632.0 892632.0 892632.0
## [41] 892632.0 892632.0 892632.0 892632.0 892632.0 892632.0 892632.0 892632.0
## [49] 892632.0 892632.0 892632.0 892632.0 892632.0 892632.0 892632.0 892632.0
## [57] 892632.0 892632.0 892632.0 210869.6 170014.0 345065.4 370064.5 328676.0
## [65] 320399.0 330988.4 334209.5 331966.4 331136.8
##
## $call
## forecast.ardlDlm(model = modelardl2, x = training$Xt, h = 69)
##
## attr(,"class")
## [1] "forecast.ardlDlm" "dLagM"
# Akurasi Data Testing
mapeardl <- MAPE(foreardl$forecasts, testing$Yt)
mapeardl
## [1] 0.3178813
# Akurasi Data Training
GoF(modelardl)
## n MAE MPE MAPE sMAPE MASE MSE
## modelardl 463 126952 -0.06768397 0.2166388 0.1974668 1.053469 27413818385
## MRAE GMRAE
## modelardl 13.23198 2.323283
# 1. Syntax untuk fitted values pada data training
fitted_values_train <- fitted(modelardl2)
## Time Series:
## Start = 4
## End = 477
## Frequency = 1
## [1] 780445.49 834086.64 844445.36 843851.90 654751.37 687517.08
## [7] 908441.30 792564.41 848762.00 849307.54 852264.55 654418.33
## [13] 691688.30 906170.73 795741.36 847138.47 847538.25 844377.24
## [19] 650905.31 696391.20 690435.79 889649.50 796895.71 847721.26
## [25] 849378.89 621713.40 700459.53 904315.09 793295.78 849286.30
## [31] 852346.20 851144.96 669626.74 700234.13 912821.92 806509.42
## [37] 858457.27 858606.24 856529.99 636534.11 670260.21 932383.31
## [43] 798681.45 866814.99 853023.63 862167.51 635145.67 705425.85
## [49] 926652.19 807243.27 874821.14 858683.58 836216.96 666694.53
## [55] 665075.78 919777.97 132055.46 62523.06 283485.17 323789.01
## [61] 259815.72 268837.08 408405.62 343586.91 378070.03 388507.12
## [67] 358759.66 286171.82 292523.97 411770.78 363452.28 363939.18
## [73] 383026.64 361552.67 291447.17 297143.49 406088.14 358697.15
## [79] 251196.75 295881.98 350511.12 215541.64 274796.80 413862.86
## [85] 320905.24 371796.92 354634.90 365006.85 243988.57 266096.17
## [91] 401291.78 330093.25 366197.77 360439.52 225618.82 294752.16
## [97] 242564.89 385103.64 318303.54 362069.95 357064.97 355201.09
## [103] 267294.27 269486.95 384599.68 301448.19 263956.53 259148.02
## [109] 221178.24 222150.53 259792.36 252654.31 265376.38 319680.41
## [115] 318137.41 315735.31 274657.05 292878.31 245649.23 399905.59
## [121] 333220.03 358655.02 360109.44 272459.73 283009.82 398699.49
## [127] 340584.06 370124.19 364642.55 360643.29 277124.54 294184.12
## [133] 394169.99 343957.89 372723.85 243821.31 408985.41 255705.25
## [139] 297962.30 394290.78 346301.25 369215.28 365185.85 365639.34
## [145] 278872.45 293147.55 399846.22 345305.29 375696.69 262139.15
## [151] 333541.48 288107.39 274496.29 397758.20 342897.92 374169.56
## [157] 370278.68 369893.49 281135.78 295591.01 404022.39 348320.50
## [163] 376924.85 370393.06 351645.70 290231.34 295789.03 399914.26
## [169] 359325.53 373543.16 418769.37 353452.61 307768.15 300776.80
## [175] 400229.26 348038.39 287500.97 240594.65 330630.57 278280.63
## [181] 293017.90 397010.14 360280.19 382409.04 370773.71 370101.63
## [187] 306244.15 316511.20 403679.91 362334.24 379800.49 379711.49
## [193] 372005.35 287263.43 296536.44 404025.98 349443.50 238341.53
## [199] 434901.70 337445.30 279199.39 290231.12 403860.49 347126.23
## [205] 375076.66 371463.21 370829.25 291331.84 301255.30 1085555.46
## [211] 1015127.97 856016.67 955166.15 937135.53 730298.40 789445.34
## [217] 1015132.08 899015.08 950086.88 948142.67 942978.11 731601.03
## [223] 766417.05 1026735.09 893355.50 943277.24 634547.48 1048809.49
## [229] 635532.94 706428.27 648818.28 637817.13 630319.16 623514.38
## [235] 624597.99 536310.50 548925.44 659890.91 603782.05 636932.05
## [241] 625759.02 1045809.00 643723.08 779871.18 1036361.30 893303.98
## [247] 962556.86 955160.88 974721.84 736021.13 784016.73 1062922.83
## [253] 927124.71 991179.05 991412.34 988280.35 743482.90 774944.53
## [259] 1079858.35 930815.39 1007389.94 999925.38 998287.26 763787.83
## [265] 772212.01 1097328.40 933779.71 1012538.46 669768.25 1114214.41
## [271] 690906.68 796710.87 1071466.75 945173.56 1004103.99 1010065.67
## [277] 998722.60 751705.89 791665.20 1088408.49 939241.11 1010360.74
## [283] 1009327.61 1003251.97 751748.89 795563.53 1091990.00 951556.75
## [289] 1015456.10 1013172.53 1006679.75 746991.51 793961.67 1091025.96
## [295] 945558.44 1007808.53 1016705.27 1004217.79 765940.33 788724.13
## [301] 1097607.66 945551.15 1015398.68 1021082.96 1005557.61 757318.69
## [307] 799628.09 1100613.15 949611.96 1022296.24 1020685.08 1006496.51
## [313] 767111.64 803120.15 1109474.24 958431.86 1022295.01 1027342.88
## [319] 1021807.85 758239.65 808737.20 1116259.28 957531.16 1049882.52
## [325] 1026000.71 1018547.33 730708.78 812913.13 1113525.07 957675.21
## [331] 1040125.70 1027146.63 1024241.88 776664.64 806743.52 1119941.06
## [337] 974775.19 1040726.64 1043927.03 1015983.06 789979.25 811038.03
## [343] 1119530.31 963641.08 1035023.24 1031357.64 1024837.62 768236.93
## [349] 823713.85 1067126.82 932960.19 1003548.60 987648.30 964724.58
## [355] 781199.98 829266.29 727690.47 839049.35 977143.70 913544.11
## [361] 933634.72 786670.94 787472.81 758472.12 1039070.39 909145.59
## [367] 1014945.45 1002886.94 739379.40 793277.17 1114586.22 955615.23
## [373] 1031838.07 1019233.03 1028073.40 765765.42 825395.18 1115539.80
## [379] 965444.36 1021212.27 1037442.47 976485.94 803591.72 786215.77
## [385] 1130663.03 964409.79 1045102.85 1034088.69 1035051.01 720126.00
## [391] 816909.26 1090255.77 944258.29 1000695.31 1050945.70 1026742.88
## [397] 793628.96 806833.21 1129669.81 968907.78 1052608.09 714619.38
## [403] 914905.85 751107.54 764940.59 1109682.04 961174.05 562048.40
## [409] 1212165.57 925020.04 752161.51 806249.58 1136237.85 979403.15
## [415] 1061047.44 1048236.65 1050530.12 769612.28 817672.51 1143366.73
## [421] 981174.56 1042116.55 1001530.91 1088852.21 763370.16 840914.82
## [427] 1152506.52 1006196.39 1078606.66 1084613.09 1073052.35 748286.07
## [433] 857873.86 718142.85 828032.80 1042288.16 980082.15 1022427.79
## [439] 695106.64 765163.43 1165841.34 952737.91 1057053.81 1058203.22
## [445] 974559.46 779645.52 765571.07 1160875.15 962489.44 1057232.13
## [451] 1040046.74 698808.32 880195.68 720795.32 1107208.18 964717.55
## [457] 1025313.56 1002050.37 978589.07 743444.49 774261.34 752640.75
## [463] 654587.74 578855.94 710093.61 678663.65 762870.26 721228.43
## [469] 819397.80 984623.49 969883.74 1014608.85 1023035.48 772058.53
fitted_values_train
## Time Series:
## Start = 4
## End = 477
## Frequency = 1
## [1] 780445.49 834086.64 844445.36 843851.90 654751.37 687517.08
## [7] 908441.30 792564.41 848762.00 849307.54 852264.55 654418.33
## [13] 691688.30 906170.73 795741.36 847138.47 847538.25 844377.24
## [19] 650905.31 696391.20 690435.79 889649.50 796895.71 847721.26
## [25] 849378.89 621713.40 700459.53 904315.09 793295.78 849286.30
## [31] 852346.20 851144.96 669626.74 700234.13 912821.92 806509.42
## [37] 858457.27 858606.24 856529.99 636534.11 670260.21 932383.31
## [43] 798681.45 866814.99 853023.63 862167.51 635145.67 705425.85
## [49] 926652.19 807243.27 874821.14 858683.58 836216.96 666694.53
## [55] 665075.78 919777.97 132055.46 62523.06 283485.17 323789.01
## [61] 259815.72 268837.08 408405.62 343586.91 378070.03 388507.12
## [67] 358759.66 286171.82 292523.97 411770.78 363452.28 363939.18
## [73] 383026.64 361552.67 291447.17 297143.49 406088.14 358697.15
## [79] 251196.75 295881.98 350511.12 215541.64 274796.80 413862.86
## [85] 320905.24 371796.92 354634.90 365006.85 243988.57 266096.17
## [91] 401291.78 330093.25 366197.77 360439.52 225618.82 294752.16
## [97] 242564.89 385103.64 318303.54 362069.95 357064.97 355201.09
## [103] 267294.27 269486.95 384599.68 301448.19 263956.53 259148.02
## [109] 221178.24 222150.53 259792.36 252654.31 265376.38 319680.41
## [115] 318137.41 315735.31 274657.05 292878.31 245649.23 399905.59
## [121] 333220.03 358655.02 360109.44 272459.73 283009.82 398699.49
## [127] 340584.06 370124.19 364642.55 360643.29 277124.54 294184.12
## [133] 394169.99 343957.89 372723.85 243821.31 408985.41 255705.25
## [139] 297962.30 394290.78 346301.25 369215.28 365185.85 365639.34
## [145] 278872.45 293147.55 399846.22 345305.29 375696.69 262139.15
## [151] 333541.48 288107.39 274496.29 397758.20 342897.92 374169.56
## [157] 370278.68 369893.49 281135.78 295591.01 404022.39 348320.50
## [163] 376924.85 370393.06 351645.70 290231.34 295789.03 399914.26
## [169] 359325.53 373543.16 418769.37 353452.61 307768.15 300776.80
## [175] 400229.26 348038.39 287500.97 240594.65 330630.57 278280.63
## [181] 293017.90 397010.14 360280.19 382409.04 370773.71 370101.63
## [187] 306244.15 316511.20 403679.91 362334.24 379800.49 379711.49
## [193] 372005.35 287263.43 296536.44 404025.98 349443.50 238341.53
## [199] 434901.70 337445.30 279199.39 290231.12 403860.49 347126.23
## [205] 375076.66 371463.21 370829.25 291331.84 301255.30 1085555.46
## [211] 1015127.97 856016.67 955166.15 937135.53 730298.40 789445.34
## [217] 1015132.08 899015.08 950086.88 948142.67 942978.11 731601.03
## [223] 766417.05 1026735.09 893355.50 943277.24 634547.48 1048809.49
## [229] 635532.94 706428.27 648818.28 637817.13 630319.16 623514.38
## [235] 624597.99 536310.50 548925.44 659890.91 603782.05 636932.05
## [241] 625759.02 1045809.00 643723.08 779871.18 1036361.30 893303.98
## [247] 962556.86 955160.88 974721.84 736021.13 784016.73 1062922.83
## [253] 927124.71 991179.05 991412.34 988280.35 743482.90 774944.53
## [259] 1079858.35 930815.39 1007389.94 999925.38 998287.26 763787.83
## [265] 772212.01 1097328.40 933779.71 1012538.46 669768.25 1114214.41
## [271] 690906.68 796710.87 1071466.75 945173.56 1004103.99 1010065.67
## [277] 998722.60 751705.89 791665.20 1088408.49 939241.11 1010360.74
## [283] 1009327.61 1003251.97 751748.89 795563.53 1091990.00 951556.75
## [289] 1015456.10 1013172.53 1006679.75 746991.51 793961.67 1091025.96
## [295] 945558.44 1007808.53 1016705.27 1004217.79 765940.33 788724.13
## [301] 1097607.66 945551.15 1015398.68 1021082.96 1005557.61 757318.69
## [307] 799628.09 1100613.15 949611.96 1022296.24 1020685.08 1006496.51
## [313] 767111.64 803120.15 1109474.24 958431.86 1022295.01 1027342.88
## [319] 1021807.85 758239.65 808737.20 1116259.28 957531.16 1049882.52
## [325] 1026000.71 1018547.33 730708.78 812913.13 1113525.07 957675.21
## [331] 1040125.70 1027146.63 1024241.88 776664.64 806743.52 1119941.06
## [337] 974775.19 1040726.64 1043927.03 1015983.06 789979.25 811038.03
## [343] 1119530.31 963641.08 1035023.24 1031357.64 1024837.62 768236.93
## [349] 823713.85 1067126.82 932960.19 1003548.60 987648.30 964724.58
## [355] 781199.98 829266.29 727690.47 839049.35 977143.70 913544.11
## [361] 933634.72 786670.94 787472.81 758472.12 1039070.39 909145.59
## [367] 1014945.45 1002886.94 739379.40 793277.17 1114586.22 955615.23
## [373] 1031838.07 1019233.03 1028073.40 765765.42 825395.18 1115539.80
## [379] 965444.36 1021212.27 1037442.47 976485.94 803591.72 786215.77
## [385] 1130663.03 964409.79 1045102.85 1034088.69 1035051.01 720126.00
## [391] 816909.26 1090255.77 944258.29 1000695.31 1050945.70 1026742.88
## [397] 793628.96 806833.21 1129669.81 968907.78 1052608.09 714619.38
## [403] 914905.85 751107.54 764940.59 1109682.04 961174.05 562048.40
## [409] 1212165.57 925020.04 752161.51 806249.58 1136237.85 979403.15
## [415] 1061047.44 1048236.65 1050530.12 769612.28 817672.51 1143366.73
## [421] 981174.56 1042116.55 1001530.91 1088852.21 763370.16 840914.82
## [427] 1152506.52 1006196.39 1078606.66 1084613.09 1073052.35 748286.07
## [433] 857873.86 718142.85 828032.80 1042288.16 980082.15 1022427.79
## [439] 695106.64 765163.43 1165841.34 952737.91 1057053.81 1058203.22
## [445] 974559.46 779645.52 765571.07 1160875.15 962489.44 1057232.13
## [451] 1040046.74 698808.32 880195.68 720795.32 1107208.18 964717.55
## [457] 1025313.56 1002050.37 978589.07 743444.49 774261.34 752640.75
## [463] 654587.74 578855.94 710093.61 678663.65 762870.26 721228.43
## [469] 819397.80 984623.49 969883.74 1014608.85 1023035.48 772058.53
# 2. Forecast 28 hari ke depan setelah data testing (bukan data testing)
forecast_28 <- forecast(model = modelardl2, x = data$Xt, h = 14)
forecast_28
## $forecasts
## [1] 812143.6 884038.3 874863.7 870018.1 880859.1 888369.7 889577.6 889904.8
## [9] 890969.6 891804.1 892118.1 892257.0 892392.9 892495.9
##
## $call
## forecast.ardlDlm(model = modelardl2, x = data$Xt, h = 14)
##
## attr(,"class")
## [1] "forecast.ardlDlm" "dLagM"
# 3. Menghitung MAPE untuk data training dan testing secara manual
# MAPE untuk Training
actual_train <- training$Yt
mape_train <- mean(abs((actual_train[1:474] - fitted_values_train) / actual_train[1:474])) * 100
mape_train
## [1] 33.92546
# MAPE untuk Testing
actual_test <- testing$Yt
pred_test <- foreardl$forecasts # Forecast hasil pada testing
mape_test <- mean(abs((actual_test - pred_test) / actual_test)) * 100
mape_test
## [1] 31.78813
par(mfrow=c(1,1))
plot(testing$Xt, testing$Yt, type="b", col="black")
points(testing$Xt, foreardl$forecasts,col="green")
lines(testing$Xt, foreardl$forecasts,col="green")
legend("topleft",c("aktual", "autoregressive"), lty=1, col=c("black","green"), cex=0.8)
# Initialize vectors to store forecasts and actuals
forecasts <- numeric(length(testing$Yt))
actuals <- testing$Yt
model2 <- ardlDlm(formula = Yt ~ Xt, data = training, p = 1, q = 3)
# Iterative forecasting loop
for (i in 1:length(testing$Yt)) {
# Define training data up to the i-th test point
updated_training <- rbind(training, testing[1:i, ])
# Fit the ARDL model to the updated training data
model <- ardlDlm(formula = Yt ~ Xt, data = updated_training, p = 1, q = 3)
# Forecast the next time step (i-th point in the test set)
next_forecast <- forecast(model = model, x = testing$Xt[i], h = 1)$forecasts
# Store the forecasted value
forecasts[i] <- next_forecast
}
# Calculate MAPE for testing data
mape_testing <- MAPE(forecasts, actuals)
cat("MAPE for testing data:", mape_testing, "\n")
## MAPE for testing data: 0.1119063
# Create a data frame for plotting
forecast_data <- data.frame(
Date = 478:546,
Actual = actuals,
Forecast = forecasts
)
Forecast = forecasts
forecast_testing = forecasts
# Inisialisasi tanggal dari 21 April 2024 hingga 30 Juni 2024
forecast_data$Date <- seq(from = as.Date("2024-04-21"), to = as.Date("2024-06-28"), by = "day")
# Plot actual vs. forecasted values dengan rentang tanggal yang disesuaikan
ggplot(forecast_data, aes(x = Date)) +
geom_line(aes(y = Actual, color = "Actual"), size = 0.5) +
geom_line(aes(y = Forecast, color = "Forecast"), size = 0.5, linetype = "dashed") +
labs(
title = "Actual vs Forecasted Passenger Numbers",
x = "Date",
y = "Number of Passengers"
) +
scale_color_manual(
name = "Legend",
values = c("Actual" = "black", "Forecast" = "blue")
) +
theme_minimal()
Date <- seq(from = as.Date("2024-04-22"), to = as.Date("2024-06-29"), by = "day")
# Plot the actual vs. forecasted values
ggplot(forecast_data, aes(x = Date)) +
geom_line(aes(y = Actual, color = "Actual"), size = 0.5) +
geom_line(aes(y = Forecast, color = "Forecast"), size = 0.5, linetype = "dashed") +
labs(
title = "Actual vs Forecasted Passenger Numbers",
x = "Date",
y = "Number of Passengers"
) +
scale_color_manual(
name = "Legend",
values = c("Actual" = "black", "Forecast" = "blue")
) +
theme_minimal()
model2.1 <- dynlm(Yt ~ Xt+L(Xt)+L(Yt)+L(Yt,2)+L(Yt,3),data = training.ts)
dwtest(model2.1)
##
## Durbin-Watson test
##
## data: model2.1
## DW = 1.9843, p-value = 0.4015
## alternative hypothesis: true autocorrelation is greater than 0
Box.test((residuals(model2.1))^2, type = "Ljung")
##
## Box-Ljung test
##
## data: (residuals(model2.1))^2
## X-squared = 1.1013, df = 1, p-value = 0.294
tseries::jarque.bera.test(residuals(model2))
## Time Series:
## Start = 4
## End = 477
## Frequency = 1
## 4 5 6 7 8 9
## 18003.5138 -26181.6431 -36828.3558 -310840.9004 -192481.3742 125573.9214
## 10 11 12 13 14 15
## -95228.2991 21040.5895 -34231.0039 -30210.5437 -316322.5470 -187519.3292
## 16 17 18 19 20 21
## 119448.6965 -90285.7332 17122.6377 -36087.4694 -41124.2511 -318144.2353
## 22 23 24 25 26 27
## -178492.3106 -191319.1967 127905.2144 -77775.5004 13429.2862 -34189.2614
## 28 29 30 31 32 33
## -361957.8942 -161753.4015 116169.4658 -87998.0856 21585.2210 -30544.3022
## 34 35 36 37 38 39
## -33345.2008 -294310.9554 -181422.7450 124835.8749 -80337.9160 26585.5800
## 40 41 42 43 44 45
## -26588.2675 -30394.2427 -346407.9855 -213680.1117 165629.7864 -91511.3143
## 46 47 48 49 50 51
## 47567.5550 -39259.9852 -21568.6305 -351660.5083 -162231.6732 143632.1466
## 52 53 54 55 56 57
## -79292.1929 50297.7272 -35754.1359 -62245.5774 -297968.9619 -231922.5317
## 58 59 60 61 62 63
## 151322.2194 -68221.9664 -76113.4567 -38319.0642 -32120.1658 -59652.0135
## 64 65 66 67 68 69
## -29380.7153 145165.9185 -1127.6231 68291.0927 52358.9736 5998.8766
## 70 71 72 73 74 75
## -88478.6553 -51867.8196 126576.0320 25415.2175 39756.7206 48002.8247
## 76 77 78 79 80 81
## 9549.3565 -80257.6672 -45315.1655 116325.5068 19113.8552 -121696.1500
## 82 83 84 85 86 87
## -33407.7538 35551.0162 -160195.1212 -26635.6435 146178.1991 -26711.8552
## 88 89 90 91 92 93
## 71689.7567 6193.0791 30765.0995 -147337.8504 -68255.5671 124832.8336
## 94 95 96 97 98 99
## -10793.7797 62778.7461 19501.2290 -172513.5185 -21468.8248 -113352.1551
## 100 101 102 103 104 105
## 130593.1075 -20520.6381 61571.4639 19138.0510 18519.0251 -108928.0867
## 106 107 108 109 110 111
## -72133.2662 99182.0506 -49378.6782 -74444.1874 -82691.5299 -127355.0150
## 112 113 114 115 116 117
## -98735.2360 -38155.5311 -57481.3597 -38292.3144 28155.6242 2878.5885
## 118 119 120 121 122 123
## -4751.4065 -72112.3076 -32663.0453 -103570.3114 143528.7667 -8775.5927
## 124 125 126 127 128 129
## 49463.9680 22045.9778 -104538.4425 -55005.7299 113406.1776 -320.4942
## 130 131 132 133 134 135
## 60067.9444 23159.8066 19194.4542 -99442.2884 -41880.5379 102059.8783
## 136 137 138 139 140 141
## 4907.0127 60777.1101 -151831.8495 134619.6931 -141347.4148 -11015.2475
## 142 143 144 145 146 147
## 101035.6959 7174.2199 53774.7484 23894.7211 25903.1512 -98765.3364
## 148 149 150 151 152 153
## -44349.4509 109657.4464 4155.7844 64319.7078 -127456.6930 18287.8499
## 154 155 156 157 158 159
## -67639.4767 -55440.3907 124727.7142 1664.8015 63383.0776 29409.4399
## 160 161 162 163 164 165
## 30009.3238 -98212.4868 -43141.7803 113614.9866 6274.6066 64307.5013
## 166 167 168 169 170 171
## 27048.1547 2328.9391 -78801.7000 -45120.3389 110291.9716 23252.7406
## 172 173 174 175 176 177
## 54680.4668 97728.8425 -14845.3694 -57407.6055 -52673.1470 104718.2040
## 178 179 180 181 182 183
## 4138.7373 -65878.3930 -125137.9719 28021.3526 -64227.5714 -16013.6338
## 184 185 186 187 188 189
## 117732.1024 25596.8618 65179.8075 24797.9581 26967.2862 -64191.6257
## 190 191 192 193 194 195
## -22832.1450 103853.7983 21159.0886 58119.7631 37613.5057 26306.5106
## 196 197 198 199 200 201
## -92216.3453 -45740.4316 112328.5586 6931.0225 -136017.5040 172782.4718
## 202 203 204 205 206 207
## -33797.6968 -69935.3038 -50903.3862 115532.8761 5465.5118 63213.7688
## 208 209 210 211 212 213
## 29677.3435 29744.7906 -84340.2469 -39029.8351 110366.6967 -76113.4567
## 214 215 216 217 218 219
## -14540.9653 146219.3265 23847.8504 -266329.5341 -101413.3994 217220.6611
## 220 221 222 223 224 225
## -3726.0829 101192.9247 41421.1249 34762.3275 -266160.1058 -134188.0342
## 226 227 228 229 230 231
## 242053.9544 -15474.0945 96569.4962 -407740.2361 307201.5167 -423275.4885
## 232 233 234 235 236 237
## -137086.9394 -272911.2664 -229848.2807 -220980.1297 -220856.1584 -215169.3780
## 238 239 240 241 242 243
## -342175.9944 -289571.5031 -128799.4357 -237866.9075 -173034.0513 -218961.0512
## 244 245 246 247 248 249
## 389601.9769 -349846.0014 -26165.0754 246719.8213 -22016.3017 121547.0177
## 250 251 252 253 254 255
## 44674.1397 76848.1217 -274051.8385 -114295.1261 281533.2663 15907.1655
## 256 257 258 259 260 261
## 147701.2919 79211.9491 73482.6635 -277243.3467 -137920.9024 305666.4654
## 262 263 264 265 266 267
## 14470.6545 170554.6065 83105.0593 81920.6237 -255345.2613 -152345.8329
## 268 269 270 271 272 273
## 328753.9944 8664.6014 175340.2914 -396828.4595 373233.7503 -383851.4135
## 274 275 276 277 278 279
## -40667.6846 286573.1323 34424.2538 155818.4386 98175.0118 77557.3338
## 280 281 282 283 284 285
## -273403.6049 -121149.8945 308716.8034 20807.5060 168261.8878 92889.2648
## 286 287 288 289 290 291
## 83739.3876 -275754.9736 -115893.8858 311752.4736 36723.0007 170068.2457
## 292 293 294 295 296 297
## 94919.9002 84648.4718 -285627.7498 -117304.5064 310796.3346 29367.0441
## 298 299 300 301 302 303
## 162066.5572 103550.4697 81208.7336 -256064.7938 -132172.3296 321039.8680
## 304 305 306 307 308 309
## 23988.3443 172370.8496 106412.3248 80886.0425 -270478.6069 -114397.6872
## 310 311 312 313 314 315
## 321399.9105 29567.8499 179344.0351 101710.7554 81044.9246 -257922.5063
## 316 317 318 319 320 321
## -113308.6409 332243.8498 37067.7627 174259.1400 109145.9877 98772.1167
## 322 323 324 325 326 327
## -277239.8530 -103670.6520 337646.8012 33544.7170 213756.8420 95460.4801
## 328 329 330 331 332 333
## 92526.2903 -320078.3253 -88190.7810 334944.8739 39887.9301 200774.7852
## 334 335 336 337 338 339
## 100522.3004 100512.3713 -254592.8769 -114544.6434 342425.4779 54156.9429
## 340 341 342 343 344 345
## 193126.8141 123395.3623 79753.9711 -234262.0589 -115574.2518 340044.9718
## 346 347 348 349 350 351
## 36534.6907 187859.9174 108093.7568 99816.3555 -266381.6249 -87295.9282
## 352 353 354 355 356 357
## 260059.1519 14334.1762 156622.8093 67158.3957 40071.6983 -215419.5832
## 358 359 360 361 362 363
## -72430.9848 -220232.2913 8161.5295 173062.6543 32953.2998 61158.8869
## 364 365 366 367 368 369
## -185308.7233 -126327.9378 -154694.8078 286741.8830 2592.6085 188606.4081
## 370 371 372 373 374 375
## 90357.5472 -286681.9360 -114479.3991 344464.8334 35560.7824 191820.7686
## 376 377 378 379 380 381
## 93431.9283 109865.9740 -269968.3970 -82077.4242 329354.8169 42565.1999
## 382 383 384 385 386 387
## 166202.6378 121667.7283 28562.5262 -195064.9406 -151811.7161 371246.2342
## 388 389 390 391 392 393
## 34446.9713 204027.2076 107146.1497 111826.3148 -341640.0146 -80317.9973
## 394 395 396 397 398 399
## 297437.7446 30060.2295 150887.7067 154626.6910 101161.2995 -225530.8821
## 400 401 402 403 404 405
## -123433.9640 352564.7901 38519.1897 211215.2166 -356090.0865 59783.6238
## 406 407 408 409 410 411
## -231823.8452 -105234.5373 382359.4134 47758.9626 -489310.0549 549099.6019
## 412 413 414 415 416 417
## -82349.5651 -182953.0379 -103099.5133 367112.4171 57919.1482 220822.8531
## 418 419 420 421 422 423
## 118561.5604 124422.3466 -280651.1239 -101992.2824 367540.4881 54170.2710
## 424 425 426 427 428 429
## 190520.4448 57199.4499 198367.0872 -297814.2135 -59446.1584 368198.1800
## 430 431 432 433 434 435
## 82992.4767 228866.6063 158857.3386 137334.9122 -325995.3458 -43903.0680
## 436 437 438 439 440 441
## -263956.8649 -3642.8533 272187.2002 106387.8432 161789.8507 -365961.7905
## 442 443 444 445 446 447
## -144759.6427 428076.5661 21133.6583 234085.0940 132798.1940 12535.7815
## 448 449 450 451 452 453
## -236377.4564 -177260.5187 424105.9257 26657.8460 225648.5554 106910.8702
## 454 455 456 457 458 459
## -377745.7419 14579.6842 -259120.6757 405325.6802 51931.8247 179856.4541
## 460 461 462 463 464 465
## 71917.4445 44399.6270 -281698.0729 -140707.4920 -162817.3380 -257026.7535
## 466 467 468 469 470 471
## -319798.7367 -97575.9397 -174187.6146 -31676.6470 -140668.2638 6174.5664
## 472 473 474 475 476 477
## 196830.1958 110313.5130 156932.2623 119959.1467 -253873.4837 -103958.5287
##
## Jarque Bera Test
##
## data: residuals(model2)
## X-squared = 0.94275, df = 2, p-value = 0.6241
ks.test(residuals(model2.1), "pnorm",mean=mean(residuals(model2.1)),sd=sd(residuals(model2.1)))
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: residuals(model2.1)
## D = 0.050377, p-value = 0.1802
## alternative hypothesis: two-sided
y1 <- training$Yt
y1 <- y1[-c(1:3)]
y1 <- matrix(nrow=474, ncol=1, y1)
y2 <- model2.1$fitted.values
y2 <- matrix(nrow=474, ncol=1, y2)
mape <- function(y1, y2) {
mean(abs((y1 - y2) / y1)) * 100
}
mape(y1,y2) #mape testing
## [1] 21.69295
library(ggplot2)
# Inisialisasi vector untuk menyimpan prediksi
forecasts <- numeric(14) # Menyimpan prediksi 14 hari ke depan
# Salin data training dan testing sebagai data awal
updated_training <- training
# Multistep forecasting loop untuk 14 hari ke depan
for (i in 1:14) {
# Fit the ARDL model ke data training yang diperbarui
model <- ardlDlm(formula = Yt ~ Xt, data = updated_training, p = 1, q = 3)
# Forecast untuk langkah ke-i
# Ambil Xt dari data testing atau sebelumnya jika di luar data testing
if (i <= nrow(testing)) {
next_Xt <- testing$Xt[i]
} else {
next_Xt <- tail(updated_training$Xt, 1) # Gunakan Xt terakhir dari data yang diperbarui
}
# Prediksi nilai Yt berikutnya
next_forecast <- forecast(model = model, x = next_Xt, h = 1)$forecasts
# Simpan hasil prediksi
forecasts[i] <- next_forecast
# Perbarui data training dengan prediksi baru
new_data <- data.frame(Yt = next_forecast, Xt = next_Xt)
updated_training <- rbind(updated_training, new_data)
}
# Hasil prediksi
forecasts
## [1] 812143.6 884038.3 874863.7 870018.1 880859.1 888369.7 889577.6 889904.8
## [9] 890969.6 891804.1 892118.1 892257.0 892392.9 892495.9
# Buat vektor hari untuk sumbu X
days <- seq(from = as.Date("2024-06-30"), to = as.Date("2024-07-13"), by = "day")
# Buat plot sederhana
plot(
x = days,
y = forecasts,
type = "b", # Menggunakan garis dan titik
col = "blue", # Warna garis biru
pch = 16, # Bentuk titik bulat
xlab = "Date",
ylab = "Number of Passengers"
)
# Tambahkan grid agar lebih mudah dibaca
grid()
# Initialize a vector to store forecasts
forecasts <- numeric(14)
# Gunakan data training awal
updated_data <- training
# Iteratif forecast untuk 14 hari ke depan
for (i in 1:14) {
# Fit ARDL model ke data yang telah diperbarui
model <- ardlDlm(formula = Yt ~ Xt, data = updated_data, p = 1, q = 3)
# Forecast untuk hari berikutnya
next_forecast <- forecast(model = model, x = tail(updated_data$Xt, 1), h = 1)$forecasts
# Simpan hasil forecast
forecasts[i] <- next_forecast
# Update data dengan forecast sebagai nilai terbaru
new_row <- data.frame(Yt = next_forecast, Xt = tail(updated_data$Xt, 1)) # Xt dapat disesuaikan sesuai skenario
updated_data <- rbind(updated_data, new_row)
}
# Buat vektor hari untuk plot
days <- 1:14
# Plot hasil forecast
plot(
x = days,
y = forecasts,
type = "b", # Menggunakan garis dan titik
col = "blue", # Warna garis biru
pch = 16, # Bentuk titik bulat
xlab = "Hari",
ylab = "Number of Passengers",
)
# Tambahkan grid agar lebih mudah dibaca
grid()
Date =seq(from = as.Date("2023-01-01"), to = as.Date("2024-07-13"), by = "day")
length(Date)
## [1] 560
Forecast = c(data$Yt, forecasts)
length(Forecast)
## [1] 560
# Extend the data frame
combined_data <- data.frame(Date, Forecast
)
ggplot(combined_data, aes(x = Date)) +
geom_line(aes(y = Forecast), color = "black", size = 0.5) + # Garis prediksi hitam
labs(
x = "Date",
y = "Number of Passengers"
) +
theme_minimal(base_size = 15) + # Tema minimalis yang mirip
theme(
plot.title = element_text(hjust = 0.5), # Judul tengah dan tebal
panel.grid.major = element_blank(), # Menghapus grid utama
panel.grid.minor = element_blank() # Menghapus grid minor
)
# Extend the data frame
combined_data <- data.frame(
Date = Date,
Forecast = Forecast
)
# Panjang data aktual
actual_length <- length(data$Yt)
# Plot data aktual dan prediksi dengan warna berbeda
ggplot() +
# Garis data aktual (hitam)
geom_line(data = combined_data[1:actual_length, ], aes(x = Date, y = Forecast), color = "black", size = 0.5) +
# Garis data prediksi (biru)
geom_line(data = combined_data[(actual_length + 1):nrow(combined_data), ], aes(x = Date, y = Forecast), color = "blue", size = 0.5) +
labs(
x = "Date",
y = "Number of Passengers",
title = "Actual vs Forecasted Passenger Numbers"
) +
theme_minimal(base_size = 15) +
theme(
plot.title = element_text(hjust = 0.5), # Judul tengah
panel.grid.major = element_blank(), # Menghapus grid utama
panel.grid.minor = element_blank() # Menghapus grid minor
)
# Extend the data frame dengan label untuk Actual dan Forecast
combined_data <- data.frame(
Date = Date,
Value = Forecast,
Type = c(rep("Actual", length(data$Yt)), rep("Forecast", length(forecasts)))
)
# Plot gabungan
ggplot(combined_data, aes(x = Date, y = Value, color = Type)) +
geom_line(size = 0.5) + # Garis untuk masing-masing tipe
labs(
x = "Date",
y = "Number of Passengers",
title = "Actual vs Forecasted Passenger Numbers"
) +
scale_color_manual(
values = c("Actual" = "black", "Forecast" = "blue") # Hitam untuk Actual, Biru untuk Forecast
) +
theme_minimal(base_size = 15) +
theme(
plot.title = element_text(hjust = 0.5), # Judul tengah
panel.grid.major = element_blank(), # Menghapus grid utama
panel.grid.minor = element_blank() # Menghapus grid minor
)
# Panjang data aktual
actual_length <- length(data$Yt)
# Extend data frame untuk kompatibilitas plot
combined_data <- data.frame(
Date = Date,
Value = Forecast
)
# Plot data aktual (hitam) dan timpa dengan prediksi (biru)
ggplot(combined_data, aes(x = Date, y = Value)) +
# Garis data aktual (hitam)
geom_line(data = combined_data[1:actual_length, ], aes(x = Date, y = Value), color = "black", size = 0.5) +
# Garis data prediksi (biru) menimpa garis hitam
geom_line(data = combined_data[(actual_length + 1):nrow(combined_data), ], aes(x = Date, y = Value), color = "blue", size = 0.5) +
labs(
x = "Date",
y = "Number of Passengers",
title = "Actual vs Forecasted Passenger Numbers"
) +
theme_minimal(base_size = 15) +
theme(
plot.title = element_text(hjust = 0.5), # Judul tengah
panel.grid.major = element_blank(), # Menghapus grid utama
panel.grid.minor = element_blank() # Menghapus grid minor
)
# Extend data frame dengan prediksi dan actual yang terhubung
combined_data <- data.frame(
Date = Date,
Value = Forecast,
Type = c(rep("Actual", length(data$Yt)), rep("Forecast", length(forecasts)))
)
# Gabungkan data terakhir dari aktual ke prediksi
connection_point <- data.frame(
Date = Date[length(data$Yt)],
Value = Forecast[length(data$Yt)],
Type = "Forecast"
)
# Tambahkan connection_point ke data prediksi
connected_data <- rbind(combined_data, connection_point)
# Plot data
ggplot() +
# Garis data aktual (hitam)
geom_line(data = combined_data[combined_data$Type == "Actual", ],
aes(x = Date, y = Value), color = "black", size = 0.5) +
# Garis data prediksi (biru), termasuk connection_point
geom_line(data = connected_data[connected_data$Type == "Forecast", ],
aes(x = Date, y = Value), color = "blue", size = 0.5) +
labs(
x = "Date",
y = "Number of Passengers",
title = "Actual vs Forecasted Passenger Numbers (Connected)"
) +
theme_minimal(base_size = 15) +
theme(
plot.title = element_text(hjust = 0.5), # Judul tengah
panel.grid.major = element_blank(), # Menghapus grid utama
panel.grid.minor = element_blank() # Menghapus grid minor
)
library(ggplot2)
# Konversi kolom Date menjadi tipe Date
combined_data$Date <- as.Date(combined_data$Date)
connected_data$Date <- as.Date(connected_data$Date)
# Plot data dengan sumbu x diformat
ggplot() +
# Garis data aktual (hitam)
geom_line(data = combined_data[combined_data$Type == "Actual", ],
aes(x = Date, y = Value), color = "black", size = 0.5) +
# Garis data prediksi (biru), termasuk connection_point
geom_line(data = connected_data[connected_data$Type == "Forecast", ],
aes(x = Date, y = Value), color = "blue", size = 0.5) +
labs(
x = "Date",
y = "Number of Passengers",
title = "Actual vs Forecasted Passenger Numbers (Connected)"
) +
scale_x_date(
date_labels = "%b %Y", # Format label sumbu x
date_breaks = "1 month" # Jarak antar label
) +
theme_minimal(base_size = 15) +
theme(
plot.title = element_text(hjust = 0.5), # Judul tengah
panel.grid.major = element_blank(), # Menghapus grid utama
panel.grid.minor = element_blank() # Menghapus grid minor
)