Different version of HRK Procedure
est_arma_hrk3.RdSee est_arma_hrk.
Stage III of the Hannan-Rissanen-Kavalieris procedure is implemented here as well.
This function returns the best model (since the iterations might not always improve the log-likelihood value) and
allows for returning results at different stages of the HRK procedure.
One notable differences is that the data needs to be demeaned because
we use Yule-Walker estimation in the first stage to ensure stability and because
the implementation of stage III would otherwise be even more cumbersome.
Arguments
- y
sample, i.e. an \((N,m)\) dimensional matrix, or a "time series" object (i.e.
as.matrix(y)should return an \((N,m)\)-dimensional numeric matrix). Missing values (NA,NaNandInf) are not supported.- tmpl
a model template, see
model structures(). Note that only the case is implemented, where \(a_0=b_0\) holds, the diagonal entries of \(a_0=b_0\) are equal to one and all other fixed elements are equal to zero. Furthermore the square rootsigma_Lof the noise covariance matrix is asssumed to be a lower triangular matrix without any further restrictions.
The given template is coerced to a template of this kind. If the given template does not comply to these restrictions, then a warning message is issued.- maxit_stage2, maxit_stage3
Integers. Default for both stages is 5.
- tol_stage2, tol_stage3
Default set to
1e-3. Maximal absolute distance of the deep parameters of adjacent iterations- info
Boolean. Indicates whether the slot
extra_infoof the returned list should contain a tibble with additional info about the model at different iterations, e.g., min and max absolute value of zeros, poles, value of objective function etc.- trace
(boolean) if
trace=TRUE, then some tracing information on the iterations is printed.- p.max
(integer or
NULL) Maximum order of the candidate AR models. For the default choice see below.- ic
(character string) Which information criterion shall be used to find the optimal AR order. Note that
ic="max"means that an AR(p) model withp=p.maxis fitted. Default isic="AIC".- mean_estimate
Character string giving the method used to estimate the mean \(\mu\). Default is
mean_estimate = "sample.mean". See the details below.- tol
Small tolerance, used to check whether the mean of the supplied data matrix is indeed zero.
Value
See est_arma_hrk().
The list contains the additional slots
- stage_opt
Since the best stable and miniphase model is returned, we also indicate whether this happened at stage II or stage III.
- info_tibble
Tibble containing all relevant info about the outcome at different stages and iterations.
and does not contain the slots y.mean (since mean is required to be zero) and converged.
Examples
data = BQdata_xts
for (pp in 0:2){
for (qq in 0:2){
if (pp + qq == 0){next}
cat(paste0("p = ", pp, " q = ", qq, "\n"))
tmpl = tmpl_arma_pq(m = 2, n = 2,
p = pp, q = qq)
ff = est_arma_hrk3(data, tmpl = tmpl)
}
}
#> p = 0 q = 1
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> p = 0 q = 2
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> p = 1 q = 0
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> p = 1 q = 1
#> p = 1 q = 2
#> p = 2 q = 0
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> Warning: no non-missing arguments to min; returning Inf
#> Warning: no non-missing arguments to max; returning -Inf
#> p = 2 q = 1
#> p = 2 q = 2
ff$info_tibble %>% print(n=100)
#> # A tibble: 21 × 10
#> stage iteration flipped min_pole max_pole min_zero max_zero trace log_lik
#> <dbl> <dbl> <lgl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 1 FALSE 1.23 3.13 Inf Inf 0.945 Inf
#> 2 2 1 FALSE 1.36 2.56 1.49 5.10 0.948 -1.33
#> 3 2 1 TRUE 1.36 2.56 1.49 5.10 0.948 -1.37
#> 4 2 2 FALSE 1.28 1.98 1.51 2.38 0.957 -1.34
#> 5 2 2 TRUE 1.28 1.98 1.51 2.38 0.957 -1.36
#> 6 2 3 FALSE 1.43 25.0 1.37 5.67 0.955 -1.34
#> 7 2 3 TRUE 1.43 25.0 1.37 5.67 0.955 -1.34
#> 8 2 4 FALSE 1.39 2.93 1.40 8.26 0.948 -1.33
#> 9 2 4 TRUE 1.39 2.93 1.40 8.26 0.948 -1.35
#> 10 2 5 FALSE 1.35 2.92 1.17 3.60 0.959 -1.34
#> 11 2 5 TRUE 1.35 2.92 1.17 3.60 0.959 -1.34
#> 12 3 1 FALSE 1.29 2.09 1.47 6.75 0.948 -1.34
#> 13 3 1 TRUE 1.29 2.09 1.47 6.75 0.963 -1.36
#> 14 3 2 FALSE 1.29 4.23 1.65 3.21 0.948 -1.34
#> 15 3 2 TRUE 1.29 4.23 1.65 3.21 0.958 -1.34
#> 16 3 3 FALSE 1.39 2.45 1.64 5.11 0.951 -1.34
#> 17 3 3 TRUE 1.39 2.45 1.64 5.11 0.958 -1.35
#> 18 3 4 FALSE 1.34 5.34 2.02 3.61 0.950 -1.34
#> 19 3 4 TRUE 1.34 5.34 2.02 3.61 0.952 -1.34
#> 20 3 5 FALSE 1.52 3.33 2.91 5.90 0.950 -1.34
#> 21 3 5 TRUE 1.52 3.33 2.91 5.90 0.952 -1.34
#> # ℹ 1 more variable: lndetSigma <dbl>