View source: R/identification.R
| check_identification | R Documentation |
Assesses local identification by computing the Jacobian of the mapping from structural parameters to model-implied autocovariance moments. Uses an SVD decomposition to detect rank deficiency (non-identification) and near-collinearity (weak identification).
check_identification(x, ...)
## S3 method for class 'dsge_fit'
check_identification(x, n_lags = 4L, tol = 1e-06, ...)
## S3 method for class 'dsge_bayes'
check_identification(x, n_lags = 4L, tol = 1e-06, ...)
x |
A |
... |
Additional arguments (currently unused). |
n_lags |
Integer. Number of autocovariance lags to include in the moment vector. Default is 4. |
tol |
Numeric. Singular values below |
The identification check constructs the moment vector
m(\theta) = \mathrm{vec}(\Gamma(0), \Gamma(1), \ldots, \Gamma(K))
where \Gamma(k) is the autocovariance of observables at lag k,
implied by the state-space solution. The Jacobian
J = \partial m / \partial \theta is computed numerically.
A parameter is locally identified if the Jacobian has full column rank. If the rank is deficient, some linear combination of parameters cannot be distinguished from the data.
Per-parameter identification strength is measured by the norm of the corresponding Jacobian column: parameters with small column norms have little influence on the moments and may be weakly identified.
The condition number of J flags near-collinearity: a large condition number indicates that some parameter combinations are hard to distinguish.
An object of class "dsge_identification" containing:
The Jacobian matrix (n_moments x n_params).
SVD decomposition of the Jacobian.
Numerical rank of the Jacobian.
Logical: are all parameters locally identified?
Vector of singular values.
Per-parameter identification strength (norm of corresponding Jacobian column).
Condition number of the Jacobian.
Character vector of parameter names.
Data frame with per-parameter diagnostics.
m <- dsge_model(
obs(y ~ z),
state(z ~ rho * z),
start = list(rho = 0.5)
)
set.seed(1)
z <- numeric(100); for (i in 2:100) z[i] <- 0.8*z[i-1]+rnorm(1)
fit <- estimate(m, data = data.frame(y = z))
id <- check_identification(fit)
print(id)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.