svp_IC: Information criteria for SV(p) AR-order selection

View source: R/svp_information_criteria.R

svp_ICR Documentation

Information criteria for SV(p) AR-order selection

Description

Computes information criteria for an svp fit to support AR-order selection. Eight criteria are computable; four are returned by defaultBIC_Kalman, AIC_Kalman, BIC_HR, AIC_HR. These span two families (state-space QML and Hannan–Rissanen two-stage ARMA) and two penalty philosophies (Schwarz-consistent BIC / Shibata-efficient AIC), and were selected as the most informative criteria across the simulation grid of the SVHT methodology paper (Ahsan, Dufour and Rodriguez-Rondon 2026). The remaining four are available on request via the criteria argument.

Usage

svp_IC(
  fit,
  criteria = c("BIC_Kalman", "AIC_Kalman", "BIC_HR", "AIC_HR"),
  filter_method = c("mixture", "corrected", "particle"),
  proxy = c("bayes_optimal", "u"),
  K = 7L,
  M = 1000L,
  seed = 42L,
  del = 1e-10
)

Arguments

fit

Output of svp. Must carry the original y series (which svp() stores by default), errorType, and leverage fields.

criteria

Character vector. Subset of c("BIC_Kalman", "AIC_Kalman", "AICc_Kalman", "BIC_Whittle", "BIC_HR", "AIC_HR", "BIC_YW", "AIC_YW"). Default returns the four recommended criteria: c("BIC_Kalman", "AIC_Kalman", "BIC_HR", "AIC_HR"). See the description for the rationale for each opt-in criterion.

filter_method

Character. Filter method passed to filter_svp for *_Kalman criteria. One of "mixture" (default, recommended), "corrected", or "particle".

proxy

Character. Leverage proxy passed to filter_svp. "bayes_optimal" (default here, unlike filter_svp) removes the O(T) log-likelihood bias of the û-proxy under Student-t leverage and restores Schwarz consistency of BIC_Kalman. "u" reproduces the paper-faithful (Remark 3.5) Kalman likelihood; set this if you need IC values that match the filter's default behavior.

K

Integer. Number of mixture components for filter_method = "mixture". Default 7 (KSC).

M

Integer. Number of particles for filter_method = "particle". Default 1000. Ignored for other filter methods.

seed

Integer. Random seed for the bootstrap particle filter. Default 42. Ignored for non-particle filters.

del

Numeric. Small constant added inside \log to avoid \log 0. Default 1e-10.

Details

Default criteria (returned by svp_IC(fit)):

  • BIC_Kalman, AIC_Kalman: -2\,\hat\ell_K + k\log T and -2\,\hat\ell_K + 2k where \hat\ell_K is the (quasi-)log-likelihood from filter_svp; default filter_method = "mixture" uses the Gaussian mixture Kalman filter (Kim, Shephard and Chib 1998). BIC_Kalman is the primary recommended criterion: Schwarz-consistent under the Bayes-optimal leverage proxy (see proxy argument) and strong finite-sample performance across the simulation grid (Ahsan, Dufour and Rodriguez-Rondon 2026). AIC_Kalman is Shibata-efficient and often selects larger p sooner at p_{\mathrm{true}} \ge 2.

  • BIC_HR, AIC_HR: Hannan–Rissanen (1982) two-stage ARMA(p,p) criteria. Stage 1: long-AR pre-whitening at order L = \lfloor 1.5\, T^{1/3}\rfloor produces residuals \hat\varepsilon_t. Stage 2: OLS regression of y_t^* on AR lags 1{:}p of y_t^* and MA lags 1{:}p of \hat\varepsilon_t gives \hat\sigma_u^2. Then T_{\mathrm{eff}} \log \hat\sigma_u^2 + \{2(2p{+}1), (2p{+}1)\log T_{\mathrm{eff}}\}. Filter-free anchor, robust to mis-specification of the GMKF mixture. BIC_HR is Schwarz-consistent for ARMA(p,p) (Hannan & Rissanen 1982; Pötscher 1989).

Opt-in criteria (request via criteria = ...):

  • AICc_Kalman: AIC_Kalman with the Hurvich–Tsai (1989) small-sample correction 2k(k+1)/(T-k-1). Numerically equivalent to AIC_Kalman at T \ge 500; use when T < 500.

  • BIC_Whittle: -2\,\hat\ell_W + k\log T where \hat\ell_W is the Whittle log-likelihood evaluated at the SV(p) signal-plus-noise spectral density f(\omega) = \sigma_v^2 / |1 - \sum_j \phi_j e^{-ij\omega}|^2 + \sigma_\varepsilon^2(\nu). Schwarz-consistent but collapses to \hat p = 1 in 98–100% of cells at p_{\mathrm{true}} \ge 2 under near-unit-root persistence (Ahsan, Dufour and Rodriguez-Rondon 2026). Useful as a conservative diagnostic: a Whittle selection of p > 1 is strong evidence against p = 1.

  • AIC_YW, BIC_YW: Legacy / not recommended. Yule–Walker projection-error criteria on y_t^* = \log(y_t^2 + \delta) - \mu, computed as T \log \hat\sigma_{\mathrm{pred}}^2 + \{2k, k\log T\} with the AR(p) projection-error variance. Under SV(p), y_t^* is ARMA(p,p) (not AR(p)), so the AR projection error does not saturate at p_{\mathrm{true}} and the criteria are inconsistent: the AR(p) projection-error variance keeps decreasing past p_{\mathrm{true}}, producing non-monotone (sometimes anti-Schwarz) behaviour in T. Simulation evidence: 0–29% correct selection at p_{\mathrm{true}} = 2 across all DGP cells and T \le 10{,}000 (Ahsan, Dufour and Rodriguez-Rondon 2026). Retained for paper-reproducibility of the documented failure-case results; use BIC_HR / AIC_HR for theoretically consistent AR-order selection.

Lower is better; argmin over a grid of candidate p (see svp_AR_order) selects the AR order.

Value

Named numeric vector of the requested criteria. Lower is better.

Leverage invariance of non-Kalman criteria

Leverage does not affect AIC_YW, BIC_YW, or BIC_Whittle: under the W-ARMA-SV parameterization \mathrm{Cov}(v_t, \varepsilon_{t-1}) = 0 for all three error distributions (odd-times-even moment symmetry), so the autocovariance structure of y_t^* is invariant to the leverage parameter. The *_HR and *_Kalman criteria do incorporate leverage through the estimated \delta_p and the conditional state innovation variance.

References

Akaike, H. (1974). A new look at the statistical model identification. IEEE Transactions on Automatic Control 19(6), 716–723. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1109/TAC.1974.1100705")}

Schwarz, G. (1978). Estimating the dimension of a model. Annals of Statistics 6(2), 461–464. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1214/aos/1176344136")}

Shibata, R. (1976). Selection of the order of an autoregressive model by Akaike's information criterion. Biometrika 63(1), 117–126. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1093/biomet/63.1.117")}

Hannan, E. J. (1980). The estimation of the order of an ARMA process. Annals of Statistics 8(5), 1071–1081. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1214/aos/1176345144")}

Hannan, E. J., and Rissanen, J. (1982). Recursive estimation of mixed autoregressive-moving average order. Biometrika 69(1), 81–94. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1093/biomet/69.1.81")}

Pötscher, B. M. (1989). Model selection under nonstationarity: Autoregressive models and stochastic linear regression models. Annals of Statistics 17(3), 1257–1274. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1214/aos/1176347267")}

Whittle, P. (1953). Estimation and information in stationary time series. Arkiv f\"or Matematik 2, 423–434. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/BF02590998")}

Dunsmuir, W. (1979). A central limit theorem for parameter estimation in stationary vector time series and its application to models for a signal observed with noise. Annals of Statistics 7(3), 490–506. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1214/aos/1176344671")}

Hurvich, C. M., and Tsai, C.-L. (1989). Regression and time series model selection in small samples. Biometrika 76(2), 297–307. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1093/biomet/76.2.297")}

Kim, S., Shephard, N., and Chib, S. (1998). Stochastic volatility: likelihood inference and comparison with ARCH models. Review of Economic Studies 65(3), 361–393. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1111/1467-937X.00050")}

White, H. (1982). Maximum likelihood estimation of misspecified models. Econometrica 50(1), 1–25. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.2307/1912526")}

Ahsan, M. N., Dufour, J.-M., and Rodriguez-Rondon, G. (2026). Estimation and inference for stochastic volatility models with heavy-tailed distributions. Bank of Canada Staff Working Paper 2026-8. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.34989/swp-2026-8")}

See Also

svp_AR_order, svp, filter_svp

Examples


set.seed(1)
y <- sim_svp(2000, phi = 0.95, sigy = 1, sigv = 0.5)$y
fit1 <- svp(y, p = 1)
fit2 <- svp(y, p = 2)
svp_IC(fit1)
svp_IC(fit2)



wARMASVp documentation built on May 15, 2026, 5:07 p.m.