BT PQ P1.T2.20.24.3 AIC and BIC

Penalized MSE measures are called information criteria (IC) and two popular such measures are the Akaike Information Crite-rion (AIC) and the Bayesian Information Criterion (BIC).

David Harper https://www.bionicturtle.com/
2022-01-21

20.24.3. Eric is a commodity analyst who fit four different candidate AR(p) models to a series of oil prices. For each of the candidate models, he then retrieved the Akaike information criterion (AIC) and the Bayesian information criterion (BIC). The results are displayed below.

.. AIC and BIC values (table below) goes here …

As Eric interprets the results of these criteria (i.e., the AIC and BIC values), which of the following statements is TRUE?

  1. Both criteria (AIC and BIC) favor the AR(1) model
  2. Both criteria (AIC and BIC) favor the AR(2) model
  3. As both criteria are insignificant, any AR(p) model is a bad fit
  4. The criteria disagree and therefore the AIC’s preference should prevail because it prefers fewer lags
library(tidyverse)
library(scales)
library(gridExtra)
library(forecast)
library(tseries)
library(fpp2)
library(gt)
library(astsa)

# 175
set.seed(175)
ar2 <- arima.sim(model=list(order=c(2,0,0),ar = c(1.5,-.75)),n = 500)
ma2 <- arima.sim(model=list(order=c(0,0,2),ma = c(1.5,-.75)),n = 500)

ar1_fit <- sarima(ar2, p = 1, d = 0, q = 0)
initial  value 1.185288 
iter   2 value 0.473121
iter   3 value 0.473113
iter   4 value 0.473112
iter   5 value 0.473108
iter   6 value 0.473099
iter   7 value 0.473095
iter   8 value 0.473094
iter   9 value 0.473092
iter  10 value 0.473087
iter  11 value 0.473080
iter  12 value 0.473076
iter  13 value 0.473075
iter  14 value 0.473075
iter  15 value 0.473075
iter  16 value 0.473074
iter  17 value 0.473073
iter  18 value 0.473073
iter  19 value 0.473073
iter  20 value 0.473073
iter  21 value 0.473072
iter  22 value 0.473072
iter  23 value 0.473072
iter  24 value 0.473072
iter  25 value 0.473072
iter  26 value 0.473072
iter  27 value 0.473072
iter  27 value 0.473072
iter  27 value 0.473072
final  value 0.473072 
converged
initial  value 0.475632 
iter   2 value 0.475627
iter   3 value 0.475615
iter   4 value 0.475613
iter   5 value 0.475597
iter   6 value 0.475583
iter   7 value 0.475579
iter   8 value 0.475574
iter   9 value 0.475573
iter  10 value 0.475570
iter  11 value 0.475569
iter  12 value 0.475569
iter  13 value 0.475569
iter  13 value 0.475569
iter  13 value 0.475569
final  value 0.475569 
converged
ar2_fit <- sarima(ar2, p = 2, d = 0, q = 0)
initial  value 1.186082 
iter   2 value 1.063752
iter   3 value 0.611728
iter   4 value 0.360300
iter   5 value 0.180452
iter   6 value 0.026222
iter   7 value 0.023222
iter   8 value 0.022348
iter   9 value 0.022310
iter  10 value 0.022284
iter  11 value 0.022258
iter  12 value 0.022258
iter  13 value 0.022258
iter  14 value 0.022258
iter  15 value 0.022258
iter  16 value 0.022258
iter  17 value 0.022258
iter  17 value 0.022258
iter  17 value 0.022258
final  value 0.022258 
converged
initial  value 0.028108 
iter   2 value 0.028095
iter   3 value 0.028087
iter   4 value 0.028086
iter   5 value 0.028086
iter   6 value 0.028085
iter   7 value 0.028085
iter   8 value 0.028085
iter   8 value 0.028085
final  value 0.028085 
converged
ar3_fit <- sarima(ar2, p = 3, d = 0, q = 0)
initial  value 1.187086 
iter   2 value 0.966297
iter   3 value 0.720122
iter   4 value 0.651535
iter   5 value 0.270365
iter   6 value 0.157749
iter   7 value 0.106223
iter   8 value 0.068752
iter   9 value 0.027592
iter  10 value 0.020453
iter  11 value 0.020449
iter  12 value 0.020445
iter  13 value 0.020430
iter  14 value 0.020418
iter  15 value 0.020418
iter  16 value 0.020418
iter  17 value 0.020418
iter  18 value 0.020418
iter  19 value 0.020418
iter  20 value 0.020418
iter  20 value 0.020418
iter  20 value 0.020418
final  value 0.020418 
converged
initial  value 0.027093 
iter   2 value 0.027090
iter   3 value 0.027084
iter   4 value 0.027079
iter   5 value 0.027079
iter   6 value 0.027078
iter   7 value 0.027078
iter   8 value 0.027078
iter   8 value 0.027078
iter   8 value 0.027078
final  value 0.027078 
converged
ar4_fit <- sarima(ar2, p = 4, d = 0, q = 0)
initial  value 1.187677 
iter   2 value 1.182760
iter   3 value 0.389837
iter   4 value 0.312734
iter   5 value 0.257361
iter   6 value 0.134886
iter   7 value 0.042493
iter   8 value 0.035479
iter   9 value 0.028843
iter  10 value 0.020356
iter  11 value 0.020308
iter  12 value 0.020305
iter  13 value 0.020305
iter  14 value 0.020305
iter  15 value 0.020304
iter  16 value 0.020304
iter  17 value 0.020304
iter  18 value 0.020304
iter  19 value 0.020304
iter  20 value 0.020304
iter  21 value 0.020304
iter  22 value 0.020304
iter  22 value 0.020304
iter  22 value 0.020304
final  value 0.020304 
converged
initial  value 0.026957 
iter   2 value 0.026941
iter   3 value 0.026940
iter   4 value 0.026938
iter   5 value 0.026937
iter   6 value 0.026936
iter   7 value 0.026936
iter   8 value 0.026936
iter   9 value 0.026936
iter   9 value 0.026936
iter   9 value 0.026936
final  value 0.026936 
converged
ma1_fit <- sarima(ma2, p = 0, d = 0, q = 1)
initial  value 0.620720 
iter   2 value 0.616967
iter   3 value 0.616503
iter   4 value 0.616503
iter   4 value 0.616503
iter   4 value 0.616503
final  value 0.616503 
converged
initial  value 0.616515 
iter   2 value 0.616515
iter   2 value 0.616515
iter   2 value 0.616515
final  value 0.616515 
converged
ma2_fit <- sarima(ma2, p = 0, d = 0, q = 2)
initial  value 0.620720 
iter   2 value 0.601563
iter   3 value 0.601097
iter   4 value 0.601053
iter   5 value 0.601053
iter   5 value 0.601053
iter   5 value 0.601053
final  value 0.601053 
converged
initial  value 0.601132 
iter   2 value 0.601132
iter   2 value 0.601132
iter   2 value 0.601132
final  value 0.601132 
converged
ma3_fit <- sarima(ma2, p = 0, d = 0, q = 3)
initial  value 0.620720 
iter   2 value 0.601584
iter   3 value 0.601080
iter   4 value 0.600978
iter   5 value 0.600977
iter   5 value 0.600977
iter   5 value 0.600977
final  value 0.600977 
converged
initial  value 0.601058 
iter   2 value 0.601058
iter   3 value 0.601058
iter   3 value 0.601058
iter   3 value 0.601058
final  value 0.601058 
converged
ma4_fit <- sarima(ma2, p = 0, d = 0, q = 4)
initial  value 0.620720 
iter   2 value 0.599626
iter   3 value 0.599377
iter   4 value 0.599342
iter   5 value 0.599340
iter   6 value 0.599340
iter   7 value 0.599340
iter   7 value 0.599340
iter   7 value 0.599340
final  value 0.599340 
converged
initial  value 0.599424 
iter   2 value 0.599424
iter   3 value 0.599424
iter   3 value 0.599424
iter   3 value 0.599424
final  value 0.599424 
converged
print("AIC")
[1] "AIC"
ar1_fit$AIC
[1] 3.801016
ar2_fit$AIC
[1] 2.910047
ar3_fit$AIC
[1] 2.912034
ar4_fit$AIC
[1] 2.915749
print("BIC")
[1] "BIC"
ar1_fit$BIC
[1] 3.826304
ar2_fit$BIC
[1] 2.943764
ar3_fit$BIC
[1] 2.95418
ar4_fit$BIC
[1] 2.966324
AIC_ar2 <- c(ar1_fit$AIC, ar2_fit$AIC, ar3_fit$AIC, ar4_fit$AIC)
BIC_ar2 <- c(ar1_fit$BIC, ar2_fit$BIC, ar3_fit$BIC, ar4_fit$BIC)
AIC_BIC_ar2 <- cbind(AIC_ar2, BIC_ar2) %>% data.frame()
models <- c("AR(1)", "AR(2)", "AR(3)", "AR(4)")
models_AIC_BIC <- cbind(models, AIC_BIC_ar2)

models_AIC_BIC_gt <- gt(models_AIC_BIC)

models_AIC_BIC_gt <- 
  models_AIC_BIC_gt %>% 
  tab_options(
    table.font.size = 14
  ) %>% tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body()
  # ) %>% tab_style(
  #  style = cell_text(color = "cadetblue"),
  #  locations = cells_column_labels(
  #    columns = vars(model, 'h (lags)', statistic, 'p-value')
  #  )
  ) %>% tab_header(
    title = md("**AIC and BIC values**"),
    subtitle = "Four candidate models: AR(1) ... AR(4)"
  ) %>% fmt_number(
    columns = vars(AIC_ar2, BIC_ar2),
    decimals = 5
  ) %>% tab_source_note(
    source_note = md("AIC = Akaike information criterion")
  ) %>% tab_source_note(
    source_note = md("BIC = Bayesian information criterion")
  # ) %>% cols_width(
  #  vars(model) ~ px(70),
  #  vars(statistic, 'p-value') ~ px(90)
  ) %>% cols_label (
    models = md("**model**"),
    AIC_ar2 = md("**AIC**"),
    BIC_ar2 = md("**BIC**")
  ) %>% tab_options(
    heading.title.font.size = 16,
    heading.subtitle.font.size = 14
  )

models_AIC_BIC_gt
AIC and BIC values
Four candidate models: AR(1) ... AR(4)
model AIC BIC
AR(1) 3.80102 3.82630
AR(2) 2.91005 2.94376
AR(3) 2.91203 2.95418
AR(4) 2.91575 2.96632
AIC = Akaike information criterion
BIC = Bayesian information criterion