Helper Functions for Order Estimation
subspace-order-estimates.Rd
These helper function are used in the subspace estimation routine subspace methods for the estimation of the order of a state space model. For a discussion of order estimation in the context of subspace methods see e.g (Bauer 2001) .
Usage
estorder_SVC(s.max, Hsv = NULL, n.par, n.obs, Hsize, penalty = "lnN", ...)
estorder_IVC(s.max, lndetSigma = NULL, n.par, n.obs, penalty = "BIC", ...)
estorder_max(s.max, ...)
estorder_rkH(s.max, Hsv = NULL, tol = sqrt(.Machine$double.eps), ...)
estorder_MOE(s.max, Hsv = NULL, ...)
Arguments
- s.max
(integer) maximum order (maximum state space dimension).
- Hsv
vector with the Hankel singular values (must have at least s.max entries).
- n.par
(s.max+1) dimensional vector with the respective number of parameters.
- n.obs
(integer) sample size \(N\) (or
Inf
).- Hsize
two dimensional integer vector with the number of block rows and block columns of the Hankel matrix (
Hsize = c(f,p)
).- penalty
determines the penalty term. See the details below.
- ...
optional additional parameters.
- lndetSigma
(s.max+1) dimensional vector with the logarithms of the determinants of the respective estimated noise covariance matrices.
- tol
(small) tolarenace used to determine the rank of the Hankel matrix.
Value
Either NULL or a list with slots $s
(the selected/estimated order)
and $criterion
(an (s.max+1
) dimensional vector).
Details
estorder_max
simply returns the maximum order s.max
considered.
estorder_rkH
estimates the order by an estimate of the rank of the Hankel matrix.
If the maximum singular value is smaller than or equal to .Machine$double.eps
then the estimate is set to s=0
. Otherwise the estimated order is equal to
the number of singular values which are larger than or equal to tol
times the
maximum singular value.
The function estorder_MOE
searches for a "gap" in the singular values. The order is set to
maximum \(s\) which satisfies
$$\ln(\sigma_s) > (\ln(\sigma_1)+\ln(\sigma_m))/2$$
where \(\sigma_m\) is the minimum, non zero singular value.
This scheme is also implemented in the N4SID procedure of the
system identification toolbox of MATLAB (Ljung, 1991).
The function estorder_SVC
implements the so called Singular Value Criterion
$$svc(s) = \sigma_{s+1}^2 + c(N)d(s)/N$$
(see e.g. (Bauer 2001)
). Here \(\sigma_s\) is the \(s\)-th
singular value of the weighted Hankel marix, \(N\) is the sample size,
\(d(s) = 2ms\) denotes the number of parameters for a state space
model with \(s\) states (and \(m\) outputs) and \(c(N)\) is a "penalty" term.
This term is
\(c(N)=\ln(N)\) for penalty = "lnN"
and
\(c(N)=fp\ln(N)\) for penalty = "fplnN"
. The estimate of the
order is the minimizer of this criterion.
estorder_IVC
estimates the order via an information criterion of the form
$$ivc(s) = \ln\det\hat\Sigma_{s} + c(N)d(s)/N$$
where \(\hat\Sigma_s\) is the estimate of the noise covariace matrix
obtained from a model with order \(s\). Here the term \(c(N)\) is chosen as
\(c(N)=2\) for penalty = "AIC"
and
\(c(N)=\ln(N)\) for penalty = "BIC"
.
Note also that for both routines estorder_SVC
and estorder_IVC
one may also set penalty
to an arbitrary numeric value! E.g.
setting penalty=-1
would ensure that estorder_SVC
always choses
the maximum possible order s=s.max
.
References
Bauer D (2001). “Order estimation for subspace methods.” Automatica, 37(10), 1561 - 1573. doi:10.1016/S0005-1098(01)00118-2 .