library(forecast)
## Warning: package 'forecast' was built under R version 4.5.1
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.1
library(tsibble)
## Warning: package 'tsibble' was built under R version 4.5.1
## Registered S3 method overwritten by 'tsibble':
## method from
## as_tibble.grouped_df dplyr
##
## Attaching package: 'tsibble'
## The following objects are masked from 'package:base':
##
## intersect, setdiff, union
library(tseries)
## Warning: package 'tseries' was built under R version 4.5.1
library(TSA)
## Warning: package 'TSA' was built under R version 4.5.1
## Registered S3 methods overwritten by 'TSA':
## method from
## fitted.Arima forecast
## plot.Arima forecast
##
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
##
## acf, arima
## The following object is masked from 'package:utils':
##
## tar
library(TTR)
## Warning: package 'TTR' was built under R version 4.5.1
library(aTSA)
##
## Attaching package: 'aTSA'
## The following objects are masked from 'package:tseries':
##
## adf.test, kpss.test, pp.test
## The following object is masked from 'package:forecast':
##
## forecast
## The following object is masked from 'package:graphics':
##
## identify
library(MASS)
## Warning: package 'MASS' was built under R version 4.5.1
data <- read.csv("C:/Users/Fathoni Sabri/Downloads/data_penjualan_ujian.csv")
data
## Hari Penjualan
## 1 1 190
## 2 2 176
## 3 3 182
## 4 4 184
## 5 5 182
## 6 6 178
## 7 7 189
## 8 8 176
## 9 9 191
## 10 10 176
## 11 11 185
## 12 12 191
## 13 13 165
## 14 14 173
## 15 15 174
## 16 16 179
## 17 17 172
## 18 18 155
## 19 19 157
## 20 20 183
## 21 21 171
## 22 22 160
## 23 23 171
## 24 24 181
## 25 25 185
## 26 26 169
## 27 27 169
## 28 28 159
## 29 29 174
## 30 30 166
## 31 31 173
## 32 32 175
## 33 33 177
## 34 34 166
## 35 35 173
## 36 36 158
## 37 37 164
## 38 38 164
## 39 39 154
## 40 40 171
## 41 41 172
## 42 42 168
## 43 43 176
## 44 44 166
## 45 45 162
## 46 46 174
## 47 47 166
## 48 48 182
## 49 49 170
## 50 50 178
## 51 51 176
## 52 52 169
## 53 53 186
## 54 54 180
## 55 55 177
## 56 56 179
## 57 57 182
## 58 58 178
## 59 59 156
## 60 60 180
## 61 61 176
## 62 62 180
## 63 63 183
## 64 64 188
## 65 65 173
## 66 66 187
## 67 67 180
## 68 68 185
## 69 69 184
## 70 70 182
## 71 71 170
## 72 72 176
## 73 73 182
## 74 74 171
## 75 75 174
## 76 76 181
## 77 77 182
## 78 78 180
## 79 79 170
## 80 80 168
## 81 81 185
## 82 82 176
## 83 83 174
## 84 84 172
## 85 85 164
## 86 86 176
## 87 87 170
## 88 88 170
## 89 89 178
## 90 90 178
## 91 91 182
## 92 92 169
## 93 93 177
## 94 94 182
## 95 95 166
## 96 96 168
## 97 97 166
## 98 98 164
## 99 99 175
## 100 100 179
## 101 101 183
## 102 102 182
## 103 103 169
## 104 104 189
## 105 105 172
## 106 106 178
## 107 107 174
## 108 108 177
## 109 109 179
## 110 110 179
## 111 111 178
## 112 112 179
## 113 113 175
## 114 114 175
## 115 115 167
## 116 116 177
## 117 117 176
## 118 118 200
## 119 119 171
## 120 120 182
## 121 121 172
## 122 122 173
## 123 123 185
## 124 124 177
## 125 125 185
## 126 126 182
## 127 127 180
## 128 128 170
## 129 129 176
## 130 130 187
## 131 131 190
## 132 132 183
## 133 133 187
## 134 134 195
## 135 135 198
## 136 136 179
## 137 137 187
## 138 138 197
## 139 139 185
## 140 140 189
## 141 141 190
## 142 142 184
## 143 143 187
## 144 144 190
## 145 145 187
## 146 146 198
## 147 147 185
## 148 148 184
## 149 149 193
## 150 150 179
## 151 151 187
## 152 152 176
## 153 153 197
## 154 154 187
## 155 155 185
## 156 156 179
## 157 157 187
## 158 158 181
## 159 159 182
## 160 160 195
## 161 161 184
## 162 162 176
## 163 163 185
## 164 164 180
## 165 165 186
## 166 166 191
## 167 167 172
## 168 168 182
## 169 169 178
## 170 170 183
## 171 171 174
## 172 172 180
## 173 173 161
## 174 174 184
## 175 175 178
## 176 176 171
## 177 177 161
## 178 178 174
## 179 179 173
## 180 180 169
## 181 181 169
## 182 182 164
## 183 183 170
## 184 184 169
## 185 185 166
## 186 186 160
## 187 187 175
## 188 188 174
## 189 189 165
## 190 190 161
## 191 191 174
## 192 192 170
## 193 193 174
## 194 194 164
## 195 195 167
## 196 196 182
## 197 197 177
## 198 198 178
## 199 199 186
## 200 200 175
## 201 201 160
## 202 202 178
## 203 203 185
## 204 204 192
## 205 205 168
## 206 206 170
## 207 207 173
## 208 208 169
## 209 209 172
## 210 210 176
## 211 211 170
## 212 212 194
## 213 213 180
## 214 214 179
## 215 215 183
## 216 216 181
## 217 217 181
## 218 218 193
## 219 219 181
## 220 220 174
## 221 221 187
## 222 222 182
## 223 223 180
## 224 224 177
## 225 225 188
## 226 226 183
## 227 227 188
## 228 228 183
## 229 229 179
## 230 230 193
## 231 231 181
## 232 232 189
## 233 233 173
## 234 234 177
## 235 235 177
## 236 236 174
## 237 237 185
## 238 238 174
## 239 239 175
## 240 240 165
## 241 241 166
## 242 242 178
## 243 243 180
## 244 244 180
## 245 245 162
## 246 246 186
## 247 247 180
## 248 248 174
## 249 249 182
## 250 250 171
## 251 251 172
## 252 252 182
## 253 253 175
## 254 254 186
## 255 255 194
## 256 256 178
## 257 257 180
## 258 258 186
## 259 259 179
## 260 260 184
## 261 261 195
## 262 262 198
## 263 263 194
## 264 264 178
## 265 265 192
## 266 266 201
## 267 267 199
## 268 268 192
## 269 269 174
## 270 270 197
## 271 271 202
## 272 272 199
## 273 273 199
## 274 274 202
## 275 275 197
## 276 276 211
## 277 277 205
## 278 278 192
## 279 279 213
## 280 280 212
## 281 281 209
## 282 282 189
## 283 283 199
## 284 284 211
## 285 285 207
## 286 286 210
## 287 287 229
## 288 288 202
## 289 289 192
## 290 290 212
## 291 291 205
## 292 292 215
## 293 293 204
## 294 294 230
## 295 295 210
## 296 296 207
## 297 297 210
## 298 298 219
## 299 299 212
## 300 300 198
## 301 301 212
## 302 302 218
## 303 303 213
## 304 304 219
## 305 305 211
## 306 306 211
## 307 307 215
## 308 308 221
## 309 309 203
## 310 310 214
## 311 311 214
## 312 312 208
## 313 313 206
## 314 314 210
## 315 315 220
## 316 316 210
## 317 317 205
## 318 318 213
## 319 319 201
## 320 320 220
## 321 321 206
## 322 322 211
## 323 323 209
## 324 324 207
## 325 325 220
## 326 326 198
## 327 327 214
## 328 328 204
## 329 329 197
## 330 330 203
## 331 331 210
## 332 332 202
## 333 333 199
## 334 334 206
## 335 335 212
## 336 336 202
## 337 337 191
## 338 338 193
## 339 339 198
## 340 340 200
## 341 341 204
## 342 342 208
## 343 343 199
## 344 344 192
## 345 345 203
## 346 346 199
## 347 347 206
## 348 348 183
## 349 349 197
## 350 350 208
## 351 351 205
## 352 352 195
## 353 353 211
## 354 354 200
## 355 355 206
## 356 356 222
## 357 357 210
## 358 358 220
## 359 359 210
## 360 360 199
## 361 361 205
## 362 362 203
## 363 363 209
## 364 364 211
## 365 365 214
## 366 366 216
## 367 367 237
## 368 368 211
## 369 369 221
## 370 370 229
## 371 371 241
## 372 372 228
## 373 373 240
## 374 374 215
## 375 375 245
## 376 376 226
## 377 377 231
## 378 378 224
## 379 379 238
## 380 380 256
## 381 381 264
## 382 382 231
## 383 383 249
## 384 384 260
## 385 385 245
## 386 386 245
## 387 387 245
## 388 388 255
## 389 389 264
## 390 390 257
## 391 391 254
## 392 392 249
## 393 393 256
## 394 394 244
## 395 395 247
## 396 396 259
## 397 397 252
## 398 398 249
## 399 399 244
## 400 400 256
## 401 401 259
## 402 402 237
## 403 403 245
## 404 404 244
## 405 405 239
## 406 406 236
## 407 407 246
## 408 408 253
## 409 409 262
## 410 410 229
## 411 411 242
## 412 412 246
## 413 413 232
## 414 414 243
## 415 415 244
## 416 416 248
## 417 417 237
## 418 418 267
## 419 419 262
## 420 420 289
## 421 421 285
## 422 422 262
## 423 423 281
## 424 424 273
## 425 425 289
## 426 426 279
## 427 427 272
## 428 428 284
## 429 429 280
## 430 430 275
## 431 431 298
## 432 432 271
## 433 433 273
## 434 434 261
## 435 435 280
## 436 436 293
## 437 437 262
## 438 438 284
## 439 439 274
## 440 440 304
## 441 441 302
## 442 442 289
## 443 443 301
## 444 444 274
## 445 445 295
## 446 446 279
## 447 447 290
## 448 448 283
## 449 449 283
## 450 450 291
## 451 451 270
## 452 452 281
## 453 453 287
## 454 454 283
## 455 455 291
## 456 456 289
## 457 457 314
## 458 458 304
## 459 459 332
## 460 460 288
## 461 461 308
## 462 462 324
## 463 463 305
## 464 464 291
## 465 465 296
## 466 466 308
## 467 467 324
## 468 468 316
## 469 469 282
## 470 470 300
## 471 471 306
## 472 472 286
## 473 473 312
## 474 474 273
## 475 475 302
## 476 476 293
## 477 477 290
## 478 478 293
## 479 479 300
## 480 480 302
## 481 481 295
## 482 482 275
## 483 483 283
## 484 484 284
## 485 485 312
## 486 486 300
## 487 487 305
## 488 488 282
## 489 489 293
## 490 490 305
## 491 491 297
## 492 492 299
## 493 493 300
## 494 494 316
## 495 495 296
## 496 496 312
## 497 497 315
## 498 498 291
## 499 499 308
## 500 500 306
str(data)
## 'data.frame': 500 obs. of 2 variables:
## $ Hari : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Penjualan: int 190 176 182 184 182 178 189 176 191 176 ...
head(data)
## Hari Penjualan
## 1 1 190
## 2 2 176
## 3 3 182
## 4 4 184
## 5 5 182
## 6 6 178
Menambahkan 2 digit terakhir pada nim ke dalam data
data$Penjualan <- data$Penjualan + 00
head(data)
## Hari Penjualan
## 1 1 190
## 2 2 176
## 3 3 182
## 4 4 184
## 5 5 182
## 6 6 178
dt <- ts(data$Penjualan)
plot.ts(dt,
lty = 1,
xlab = "Waktu",
ylab = "Penjualan",
main = "Penjualan Biji Kopi")
Berdasarkan plot data deret waktu, terlihat bahwa data cenderung memiliki trend yang positif. Data latih dan data uji ditetapkan dengan proporsi 90% : 10%.
n_penjualan <- NROW(data$Penjualan)*0.9
n_penjualan
## [1] 450
dt.train <- data$Penjualan[1:450]
train.ts <- ts(dt.train)
mean <- mean(train.ts)
mean
## [1] 199.14
var(train.ts)
## [1] 1092.66
plot.ts(train.ts, lty=1, xlab="Waktu", ylab="Penjualan", main="Plot Penjualan Biji Kopi (latih)")
Berdasarkan plot data deret waktu pada data latih, terlihat bahwa data tidak stasioner baik dalam rataan yang ditandai dengan adanya tren yang berfluktuasi dan jauh dari nilai rataannya \(199.14\) serta dalam ragam, yang ditandai dengan perbedaan pelebaran pita pada plot.
dt.test <- data$Penjualan[451:500]
test.ts <- ts(dt.test)
plot.ts(test.ts, lty=1, xlab="Waktu", ylab="Penjualan", main="Plot Penjualan Biji Kopi (Uji)")
plot <- train.ts |> as_tsibble() |>
ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
geom_hline(yintercept = mean, color = "red", linetype = "dashed") +
xlab("Periode") + ylab("Penjualan")
plot
Pada plot deret waktu diatas terlihat bahwa data tidak stasioner baik dalam rataan yang ditandai dengan adanya tren yang berfluktuasi dan jauh dari nilai rataannya \(199.14\) serta dalam ragam, yang ditandai dengan perbedaan pelebaran pita pada plot.
acf(train.ts)
Terlihat bahwa plot ACF diatas membentuk pola tails off. Dari plot ini diperlukan adanya uji lanjut untuk memastikan kestasioneran datanya.
\(H_0:Data \ Tidak \ Stasioner \ dalam \
Rataan\)
\(H_1:Data \ Stasioner \
dalam \ Rataan\)
tseries::adf.test(train.ts)
##
## Augmented Dickey-Fuller Test
##
## data: train.ts
## Dickey-Fuller = -1.0609, Lag order = 7, p-value = 0.9286
## alternative hypothesis: stationary
Hasil Uji ADF memperlihatkan nilai \(p-value\) sebesar \(0.9286\) yang lebih besar dari \(\alpha=0.05\) sehingga Tak Tolak \(H_0\) yang artinya data tidak stasioner dalam rataan, sesuai dengan plot ACF diatas.
index <- seq(1:450)
bc = boxcox(train.ts~index, lambda = seq(-4,4,by=0.01))
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] -2.54
ci_lambda <- bc$x[bc$y > max(bc$y) - 0.5 * qchisq(0.95, 1)]
ci_lower <- min(ci_lambda)
ci_upper <- max(ci_lambda)
c(Batas_Bawah = ci_lower, Batas_Atas = ci_upper)
## Batas_Bawah Batas_Atas
## -3.02 -2.08
Hasil uji Box–Cox menunjukkan bahwa nilai \(λ\) optimum adalah \(-2.54\). Pada selang kepercayaan diatas terlihat bahwa nilai batas bawah sebesar \(-3.02\) dan batas atas sebesar $ -2.08$, sehingga nilai \(\lambda=1\) tidak berada dalam selang tersebut, artinya data tidak stasioner dalam ragam.
train.diff1 <- diff(train.ts, differences = 1)
ts.plot(train.diff1,
main = "First-order Differencing dari data",
col = "blue", lwd = 2)
length(train.diff1)
## [1] 449
Setelah dilakukan proses differencing, terlihat bahwa data cenderung stasioner dalam rataan tetapi ada beberapa yang masih jauh dari rataannya, sehingga hal tersebut masih perlu dipastikan melalui plot ACF dan Uji ADF.
acf(train.diff1)
Pada plot ACF diatas terlihat bahwa plot memotong (cut off) pada lag 1, artinya secara keseluruhan plot ACF ini menggambarkan bahwa data sudah stasioner dalam rataan. Selanjutnya akan dibuktikan pada uji ADF.
tseries::adf.test(train.diff1)
## Warning in tseries::adf.test(train.diff1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: train.diff1
## Dickey-Fuller = -10.416, Lag order = 7, p-value = 0.01
## alternative hypothesis: stationary
Hasil Uji ADF memperlihatkan nilai \(p-value\) sebesar \(0.01\) yang lebih kecil dari \(\alpha=0.05\) Tolak \(H_0\) yang artinya data masih sudah stasioner dalam rataan.
index1 <- seq(1:449)
bc1 <- boxcox(train.diff1 - min(train.diff1) + 1 ~ index1,
lambda = seq(0, 5, by = 0.001))
lambda <- bc1$x[which.max(bc$y)]
lambda
## [1] 0.146
ci_lambda <- bc1$x[bc1$y > max(bc1$y) - 0.5 * qchisq(0.95, 1)]
ci_lower <- min(ci_lambda)
ci_upper <- max(ci_lambda)
c(Batas_Bawah = ci_lower, Batas_Atas = ci_upper)
## Batas_Bawah Batas_Atas
## 0.890 1.255
Hasil uji Box–Cox menunjukkan bahwa nilai \(λ\) optimum adalah \(1.067\). Pada selang kepercayaan diatas terlihat bahwa nilai batas bawah sebesar \(0.890\) dan batas atas sebesar \(1.255\), sehingga nilai \(\lambda=1\) berada dalam selang tersebut, artinya data stasioner dalam ragam.
acf(train.diff1)
Berdasarkan plot tersebut, terlihat bahwa plot ACF cenderung cuts off pada lag ke 1, sehingga jika plot PACF dianggap tails of, maka model tentatifnya adalah ARIMA(0,1,1).
pacf(train.diff1)
Berdasarkan plot tersebut, terlihat bahwa plot PACF cenderung cuts off pada lag ke 4, sehingga jika plot ACF dianggap tails of, maka model tentatifnya adalah ARIMA(4,1,0).
pada plota ACF, terjadi cuts off pada lag 1. Namun, jika diteruskan pada lag selanjutnya. terlihat plot membentuk pola sinus. sehingga jika baik plot ACF maupun PACF keduanya dianggap tails off. maka model terbentuk adalah ARIMA(1,1,1).
eacf(train.diff1)
## AR/MA
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x o o o x x o o o o o o o o
## 1 x o o o x x o o o o o o o o
## 2 x x x o o o o o o o o o o o
## 3 x o x o x o o o o o o o o o
## 4 o x x x o o o o o o o o o o
## 5 o o x x o o o o o o o o o o
## 6 x x x x o o o o o o o o o o
## 7 x x x o x x o o o o o o o o
Identifikasi model tentatif yang terbentuk menggunakan plot EACF adalah ARIMA(0,1,1), ARIMA(1,1,1), dan ARIMA(4,1,0). Sebagai opsi lain, ARIMA(4,1,4) juga akan dipilih karena membentuk pola segitiga terkecil.
model1 = Arima(train.diff1, order=c(0,1,1), method="ML")
summary(model1)
## Series: train.diff1
## ARIMA(0,1,1)
##
## Coefficients:
## ma1
## -1.0000
## s.e. 0.0062
##
## sigma^2 = 125.9: log likelihood = -1721.33
## AIC=3446.67 AICc=3446.7 BIC=3454.88
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.3679129 11.1942 8.918938 NaN Inf 0.5850197 -0.4794484
lmtest::coeftest(model1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ma1 -1.0000000 0.0062256 -160.63 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pada Model ARIMA(0,1,1)tidak ada parameter yang signifikan
model2 = Arima(train.diff1, order=c(1,1,1), method="ML")
summary(model2)
## Series: train.diff1
## ARIMA(1,1,1)
##
## Coefficients:
## ar1 ma1
## -0.4809 -1.000
## s.e. 0.0415 0.008
##
## sigma^2 = 96.84: log likelihood = -1662.63
## AIC=3331.26 AICc=3331.32 BIC=3343.58
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.4448016 9.807956 7.754081 NaN Inf 0.5086132 -0.146693
lmtest::coeftest(model2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.4809119 0.0414540 -11.601 < 2.2e-16 ***
## ma1 -0.9999973 0.0079671 -125.516 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pada Model ARIMA(1,1,1) tidak ada parameter signifikan.
model3 = Arima(train.diff1, order=c(4,1,0), method="ML")
summary(model3)
## Series: train.diff1
## ARIMA(4,1,0)
##
## Coefficients:
## ar1 ar2 ar3 ar4
## -1.3298 -1.2228 -0.8902 -0.4286
## s.e. 0.0427 0.0632 0.0630 0.0426
##
## sigma^2 = 112.6: log likelihood = -1693.07
## AIC=3396.15 AICc=3396.28 BIC=3416.67
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.05403007 10.55343 8.294073 NaN Inf 0.5440329 -0.1138781
lmtest::coeftest(model3)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -1.329760 0.042709 -31.135 < 2.2e-16 ***
## ar2 -1.222812 0.063181 -19.354 < 2.2e-16 ***
## ar3 -0.890150 0.063048 -14.119 < 2.2e-16 ***
## ar4 -0.428627 0.042604 -10.061 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pada Model ARIMA(4,1,0) tidak ada parameter yang signifikan.
model4 = Arima(train.diff1, order=c(4,1,4), method="ML")
summary(model4)
## Series: train.diff1
## ARIMA(4,1,4)
##
## Coefficients:
## ar1 ar2 ar3 ar4 ma1 ma2 ma3 ma4
## -0.8401 -0.9211 -0.3056 -0.1632 -0.9219 0.2137 -0.6938 0.4116
## s.e. 0.2294 0.1588 0.1154 0.0789 0.2290 0.3924 0.3031 0.1378
##
## sigma^2 = 78.79: log likelihood = -1613.43
## AIC=3244.86 AICc=3245.27 BIC=3281.8
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.6320232 8.786713 6.880828 NaN Inf 0.451334 -0.004022526
lmtest::coeftest(model4)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 -0.84015 0.22942 -3.6620 0.0002503 ***
## ar2 -0.92106 0.15884 -5.7985 6.692e-09 ***
## ar3 -0.30563 0.11540 -2.6485 0.0080850 **
## ar4 -0.16318 0.07891 -2.0680 0.0386435 *
## ma1 -0.92191 0.22896 -4.0265 5.662e-05 ***
## ma2 0.21374 0.39245 0.5446 0.5860023
## ma3 -0.69375 0.30309 -2.2889 0.0220827 *
## ma4 0.41156 0.13778 2.9871 0.0028161 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pada Model ARIMA(4,1,4) tidak ada parameter yang signifikan.
model_tentatif <- data.frame(
Model = c("ARIMA(0,1,1)","ARIMA(4,1,0)","ARIMA(1,1,1)", "ARIMA(4,1,4)"),
AIC = c(AIC(model1),AIC(model2), AIC(model3), AIC(model4)),
BIC = c(BIC(model1),BIC(model2), BIC(model3), BIC(model4))
)
model_tentatif
## Model AIC BIC
## 1 ARIMA(0,1,1) 3446.670 3454.879
## 2 ARIMA(4,1,0) 3331.262 3343.577
## 3 ARIMA(1,1,1) 3396.146 3416.670
## 4 ARIMA(4,1,4) 3244.859 3281.803
Berdasarkan pendugaan parameter di atas, nilai AIC terkecil dimiliki oleh model ARIMA(4,1,4). Namun tidak ada parameter yang signifikan.
sisaan <- model1$residuals
par(mfrow = c(2,2),
mar = c(4,4,2,1),
oma = c(0,0,2,0))
# Q-Q Plot
qqnorm(sisaan, main = "Normal Q-Q Plot")
qqline(sisaan, col = "blue", lwd = 2)
# Plot Sisaan vs Waktu
plot(sisaan, type = "p",
main = "Plot Sisaan vs Waktu",
xlab = "Waktu", ylab = "Sisaan")
# ACF
acf(sisaan, main = "ACF Sisaan")
# PACF
pacf(sisaan, main = "PACF Sisaan")
Berdasarkan plot kuantil-kuantil normal, secara eksploratif terlihat bahwa sisaan tidak sepenuhnya menyebar normal karena titik-titik cenderung menyimpang dari garis kemiringannya (slope). Selain itu, lebar pita sebaran sisaan tampak tidak seragam, yang mengindikasikan adanya heterogenitas ragam. Sementara itu, plot ACF dan PACF sisaan dari model ARIMA(4,1,4) menunjukkan adanya spike signifikan pada 20 lag pertama, sehingga secara visual sisaan tidak dapat dianggap saling bebas. Kondisi ini akan diuji lebih lanjut dengan uji formal.
# Sisaan menyebar normal
ks.test(sisaan,"pnorm")
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: sisaan
## D = 0.44099, p-value < 2.2e-16
## alternative hypothesis: two-sided
Berdasarkan uji KS tersebut, didapat p-value sebesar \(0.0000\) yang kurang dari taraf nyata 5% sehingga tolak \(H_0\) dan menandakan bahwa sisaan tidak menyebar normal. Hal ini sesuai dengan hasil eksplorasi menggunakan plot kuantil-kuantil normal.
# Sisaan saling bebas
Box.test(sisaan, type = "Ljung")
##
## Box-Ljung test
##
## data: sisaan
## X-squared = 103.9, df = 1, p-value < 2.2e-16
Berdasarkan uji Ljung-Box tersebut, didapat p-value sebesar \(0.0000\) yang lebih kecil dari taraf nyata 5% sehingga tolak \(H_0\) dan menandakan bahwa sisaan tidak saling bebas. Hal ini sesuai dengan hasil eksplorasi.
# Sisaan homogen
Box.test((sisaan)^2, type = "Ljung")
##
## Box-Ljung test
##
## data: (sisaan)^2
## X-squared = 15.877, df = 1, p-value = 6.759e-05
Berdasarkan uji Ljung-Box terhadap sisaan kuadrat tersebut, didapat p-value sebesar \(0.0006\) yang kurang dari taraf nyata 5% sehingga tak tolak \(H_0\) dan menandakan bahwa ragam sisaan tidak homogen.
# Nilai tengah sisaan sama dengan nol
t.test(sisaan, mu = 0, conf.level = 0.95)
##
## One Sample t-test
##
## data: sisaan
## t = 0.69603, df = 448, p-value = 0.4868
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.6709123 1.4067381
## sample estimates:
## mean of x
## 0.3679129
Berdasarkan uji-t tersebut, didapat p-value sebesar \(0.4868\) yang lebih besar dari taraf nyata 5% sehingga tak tolak \(H_0\) dan menandakan bahwa nilai tengah sisaan sama dengan nol. Hal ini berbeda dengan eksplorasi.