ssIRF#
Purpose#
Computes the impulse response functions based on the final parameters contained in the filled ssOut
structure.
Format#
- irf = ssIRF(ssmFinal, horizon, impulse[, orthogonalized, cumulative])#
- Parameters:
ssmFinal (Struct) – a filled instance of an
ssModel
structure.horizon (Scalar) – The number of impulse responses to compute.
impulse (Scalar) – The state innovation to pulse. Must be between 1 and the dimension of the state innovation with a positive definite covariance matrix.
orthogonalized (Scalar) – Optional argument, when set to anything other than 0, orthogonalized impulses are computed. Default = 0.
cumulative (Scalar) – Optional argument, when set to anything other than 0, cumulative impulses are computed. Default = 0.
- Returns:
irf (Matrix) – Computed impulse responses.
Examples#
new;
library cmlmt, tsmt, sslib;
/*
** Outline the state space process
*/
// Filename
fname = getGAUSShome $+ "pkgs/tsmt/examples/enders_sim2.dat";
y = loadd(fname, "ar2");
// Set up parameter vector and start values
param_vec_st = asDF(zeros(3, 1), "param");
param_vec_st[1] = -0.322;
param_vec_st[2] = 0.433;
param_vec_st[3] = 0.0025;
// Declare shape
k_endog = 1;
k_states = 2;
// Declare ssControl structure
struct ssControl ssCtl;
ssCtl = ssControlCreate(k_states, k_endog);
// Set fixed parameters of model
ssCtl.ssm.Z = { 1 0 };
ssCtl.ssm.R[1, 1] = 1;
// Constraint variables
ssCtl.stationary_vars = 1|2;
ssCtl.positive_vars = 3;
// Call ssFit function
struct ssOut sOut;
sOut = ssFit(&updateSSModel, param_vec_st, y, ssCtl);
/*
** Impulse response functions
*/
// Number of horizons
h = 20;
// State variable to shock
impulse = 1;
// Compute IRFs
irf = ssIRF(sOut.ssmFinal, h, impulse);
// Set up procedure for updating SS model
// structure
proc (0) = updateSSModel(struct ssModel *ssmod, param);
// Set up kalman filter matrices
ssmod->T = param[1 2]'|(1~0);
ssmod->Q[1, 1] = param[3];
endp;
After running the above code, the first five impulse response are:
1.0000000
0.68445237
0.0045511204
-0.31441880
-0.21731607
Remarks#
This function should be called after the ssOut
structure has been filled by the ssFit()
procedure.
Source#
ssmain.src
See also
Functions ssFit()
, ssPredict()