1 /* 2 * gretl -- Gnu Regression, Econometrics and Time-series Library 3 * Copyright (C) 2001 Allin Cottrell and Riccardo "Jack" Lucchetti 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 #ifndef VAR_H_ 21 #define VAR_H_ 22 23 #include "gretl_matrix.h" 24 #include "gretl_restrict.h" 25 26 enum Detflags { 27 DET_CONST = 1 << 0, 28 DET_TREND = 1 << 1, 29 DET_SEAS = 1 << 2 30 }; 31 32 enum VAR_robust { 33 VAR_HC = 1, 34 VAR_HAC 35 }; 36 37 typedef struct JohansenInfo_ JohansenInfo; 38 39 struct GRETL_VAR_ { 40 int ci; /* command index (VAR or VECM) */ 41 int refcount; /* for saving/deleting */ 42 int err; /* error code */ 43 int neqns; /* number of equations in system */ 44 int order; /* maximum lag order */ 45 int t1; /* starting observation */ 46 int t2; /* ending observation */ 47 int T; /* number of observations */ 48 int df; /* T - average coeffs per equation */ 49 int ifc; /* equations include a constant (1) or not (0) */ 50 int ncoeff; /* total coefficients per equation */ 51 int *lags; /* list of specific lags */ 52 int *ylist; /* list of stochastic vars */ 53 int *xlist; /* list of exogenous variables */ 54 int *rlist; /* restricted exogenous variables (VECM only) */ 55 int detflags; /* record of automatic deterministic vars added */ 56 int robust; /* computing robust std errors? */ 57 int xcols; /* full column size of X matrix (VECM special) */ 58 gretl_matrix *Y; /* matrix of dependent variables */ 59 gretl_matrix *X; /* matrix of independent variables */ 60 gretl_matrix *B; /* basic coefficient matrix */ 61 gretl_matrix *XTX; /* X'X inverse */ 62 gretl_matrix *A; /* augmented coefficient matrix (companion form) */ 63 gretl_matrix *L; /* lambda: inverse roots of A(L) polynomial */ 64 gretl_matrix *E; /* residuals matrix */ 65 gretl_matrix *C; /* Cholesky-decomposed covariance matrix */ 66 gretl_matrix *S; /* cross-equation variance matrix */ 67 gretl_matrix *F; /* optional forecast matrix */ 68 gretl_matrix *V; /* full parameter covariance matrix */ 69 gretl_matrix *ord; /* optional Cholesky-ordering vector */ 70 MODEL **models; /* pointers to individual equation estimates */ 71 double *Fvals; /* hold results of F-tests */ 72 double *Ivals; /* hold results of info criteria comparisons */ 73 double ldet; /* log-determinant of S */ 74 double ll; /* log-likelihood */ 75 double AIC; /* Akaike criterion */ 76 double BIC; /* Bayesian criterion */ 77 double HQC; /* Hannan-Quinn criterion */ 78 double LR; /* for likelihood-ratio testing */ 79 double LB; /* Ljung-Box (Portmanteau) test statistic */ 80 int LBs; /* order for Portmanteau test */ 81 JohansenInfo *jinfo; /* extra information for VECMs */ 82 char *name; /* for use in session management */ 83 }; 84 85 #define var_n_lags(v) ((v->lags != NULL)? v->lags[0] : v->order) 86 #define var_max_lag(v) ((v->lags != NULL)? v->lags[v->lags[0]] : v->order) 87 88 int var_max_order (const int *list, const DATASET *dset); 89 90 GRETL_VAR *gretl_VAR (int order, int *laglist, int *list, 91 const DATASET *dset, gretlopt opt, 92 PRN *prn, int *err); 93 94 GRETL_VAR *gretl_VECM (int order, int rank, int *list, 95 const DATASET *dset, gretlopt opt, 96 PRN *prn, int *err); 97 98 const gretl_matrix * 99 gretl_VAR_get_forecast_matrix (GRETL_VAR *var, int t1, int t2, 100 DATASET *dset, gretlopt opt, 101 int *err); 102 103 const gretl_matrix * 104 gretl_VAR_get_residual_matrix (const GRETL_VAR *var); 105 106 gretl_matrix * 107 gretl_VAR_get_fcast_decomp (const GRETL_VAR *var, 108 int targ, int periods, 109 int *errp); 110 111 gretl_matrix * 112 gretl_VAR_get_vma_matrix (const GRETL_VAR *var, const DATASET *dset, 113 int *err); 114 115 gretl_matrix *gretl_VAR_get_FEVD_matrix (const GRETL_VAR *var, 116 int targ, int shock, 117 int horizon, 118 const DATASET *dset, 119 int *err); 120 121 gretl_matrix * 122 gretl_VAR_get_full_FEVD_matrix (const GRETL_VAR *var, 123 const DATASET *dset, 124 int *err); 125 126 gretl_matrix *gretl_FEVD_from_bundle (gretl_bundle *b, 127 int targ, int shock, 128 const DATASET *dset, 129 int *err); 130 131 gretl_matrix *gretl_IRF_from_bundle (gretl_bundle *b, 132 int targ, int shock, 133 double alpha, 134 const DATASET *dset, 135 int *err); 136 137 gretl_matrix *VECM_get_EC_matrix (const GRETL_VAR *v, 138 const DATASET *dset, 139 int *err); 140 141 int 142 gretl_VAR_do_error_decomp (const gretl_matrix *S, gretl_matrix *C, 143 const gretl_matrix *ord); 144 145 const gretl_matrix *gretl_VAR_get_roots (GRETL_VAR *var, int *err); 146 147 int gretl_VAR_autocorrelation_test (GRETL_VAR *var, int order, 148 DATASET *dset, gretlopt opt, 149 PRN *prn); 150 151 int gretl_VAR_arch_test (GRETL_VAR *var, int order, 152 DATASET *dset, gretlopt opt, 153 PRN *prn); 154 155 int gretl_VAR_normality_test (const GRETL_VAR *var, 156 gretlopt opt, PRN *prn); 157 158 int set_VAR_model_stats (GRETL_VAR *var, int i); 159 160 const int *gretl_VAR_get_exo_list (const GRETL_VAR *var); 161 162 const int *gretl_VAR_get_endo_list (const GRETL_VAR *var); 163 164 GRETL_VAR *gretl_VAR_omit_test (GRETL_VAR *var, const int *omitlist, 165 DATASET *dset, gretlopt opt, 166 PRN *prn, int *err); 167 168 int gretl_VAR_wald_omit_test (GRETL_VAR *var, const int *omitlist, 169 DATASET *dset, gretlopt opt, 170 PRN *prn); 171 172 double *gretl_VECM_get_EC (GRETL_VAR *vecm, int j, const DATASET *dset, 173 int *err); 174 175 void gretl_VAR_free (GRETL_VAR *var); 176 177 int default_VAR_horizon (const DATASET *dset); 178 179 gretl_matrix * 180 gretl_VAR_get_impulse_response (GRETL_VAR *var, 181 int targ, int shock, 182 int periods, double alpha, 183 const DATASET *dset, 184 int *err); 185 186 void gretl_VAR_set_name (GRETL_VAR *var, const char *name); 187 188 const char *gretl_VAR_get_name (const GRETL_VAR *var); 189 190 int gretl_VAR_get_variable_number (const GRETL_VAR *var, int k); 191 192 int gretl_VAR_get_n_equations (const GRETL_VAR *var); 193 194 int gretl_VAR_get_t1 (const GRETL_VAR *var); 195 196 int gretl_VAR_get_t2 (const GRETL_VAR *var); 197 198 int gretl_var_get_sample (const GRETL_VAR *var, int *t1, int *t2); 199 200 const MODEL *gretl_VAR_get_model (const GRETL_VAR *var, int i); 201 202 double *gretl_VAR_get_resid_series (GRETL_VAR *var, int eqnum, 203 int *err); 204 205 int gretl_VAR_set_ordering (GRETL_VAR *var, gretl_matrix *ord); 206 207 int gretl_VAR_do_irf (GRETL_VAR *var, const char *line, 208 const DATASET *dset); 209 210 int gretl_VAR_get_highest_variable (const GRETL_VAR *var); 211 212 GRETL_VAR *johansen_test (int order, const int *list, 213 const DATASET *dset, gretlopt opt, 214 PRN *prn); 215 216 int johansen_test_simple (int order, const int *list, 217 const DATASET *dset, 218 gretlopt opt, PRN *prn); 219 220 int gretl_VECM_n_beta (const GRETL_VAR *vecm); 221 222 int gretl_VECM_n_alpha (const GRETL_VAR *vecm); 223 224 int gretl_VECM_test (GRETL_VAR *vecm, 225 gretl_restriction *rset, 226 const DATASET *dset, 227 gretlopt opt, 228 PRN *prn); 229 230 int gretl_VAR_test (GRETL_VAR *var, 231 gretl_restriction *rset, 232 const DATASET *dset, 233 gretlopt opt, 234 PRN *prn); 235 236 GRETL_VAR * 237 real_gretl_restricted_vecm (GRETL_VAR *orig, 238 gretl_restriction *rset, 239 const DATASET *dset, 240 PRN *prn, int *err); 241 242 int gretl_VECM_rank (const GRETL_VAR *vecm); 243 244 int beta_restricted_VECM (const GRETL_VAR *vecm); 245 246 int alpha_restricted_VECM (const GRETL_VAR *vecm); 247 248 int restricted_VECM (const GRETL_VAR *vecm); 249 250 const gretl_matrix *gretl_VECM_R_matrix (const GRETL_VAR *vecm); 251 252 const gretl_matrix *gretl_VECM_q_matrix (const GRETL_VAR *vecm); 253 254 const gretl_matrix *gretl_VECM_Ra_matrix (const GRETL_VAR *vecm); 255 256 const gretl_matrix *gretl_VECM_qa_matrix (const GRETL_VAR *vecm); 257 258 double *gretl_VAR_get_series (const GRETL_VAR *var, const DATASET *dset, 259 int idx, const char *key, int *err); 260 261 gretl_matrix *gretl_VAR_get_matrix (const GRETL_VAR *var, int idx, 262 int *err); 263 264 void gretl_VAR_param_names (GRETL_VAR *v, char **params, 265 const DATASET *dset); 266 267 int gretl_VAR_serialize (const GRETL_VAR *var, SavedObjectFlags flags, 268 PRN *prn); 269 270 int gretl_VAR_bundlize (const GRETL_VAR *var, DATASET *dset, 271 gretl_bundle *b); 272 273 int transcribe_VAR_models (GRETL_VAR *var, 274 const DATASET *dset, 275 const gretl_matrix *XTX); 276 277 #ifdef FULL_XML_HEADERS 278 279 GRETL_VAR *gretl_VAR_from_XML (xmlNodePtr node, xmlDocPtr doc, 280 const DATASET *dset, 281 int *err); 282 283 #endif 284 285 gretl_matrix *vma_rep (gretl_matrix *A, gretl_matrix *C, 286 int horizon, int *err); 287 288 #endif /* VAR_H_ */ 289