Commit Graph

1242 Commits (2f13d6610d6842adc4a4b448eb45ebd4223967e6)

Author SHA1 Message Date
Sébastien Villemot e7dfc6ab36
The MATLAB testsuite now works under Windows, so no need to special-case it 2019-03-25 18:47:49 +01:00
Sébastien Villemot 0f28974c2c
Provisions for MATLAB R2019a
In particular, use the new "-batch" option for running the testsuite.
2019-03-22 16:43:40 +01:00
Sébastien Villemot 4a62fbb687
Remove spurious file in EXTRA_DIST, introduced in 666c9b8003 2019-03-21 18:30:44 +01:00
Sébastien Villemot 44b50d41ae
Fix EOL convention of some files add in 666c9b8003 2019-03-20 16:49:52 +01:00
Willi Mutschler 666c9b8003 Improvement of Identification Toolbox
# Improvements
  * heavily commented (also auxiliary functions) and changed notation to make all the functions (hopefully) more readable and understandable, and hence, easier to debug
  * added identification criteria of Komunjer and Ng (2011, Econometrica) and Qu and Tkachenko (2012, Quantitative Economics)
  * tests can be turned of, i.e. nostrength disables identification strenght, noreducedform disables reduced form criteria, nomoments disables moment criteria, nospectrum disables spectrum criteria, nominimal disables minimal system criteria
  * all kronflags (analytic_derivation_mode) actually work in all functions
  * added functionality when there is correlation in Sigma_e and when one wants to consider corr parameters of exogenous shocks. Previously, (1) corr parameters were not allowed when calling identification and (2) when Sigma_e was not diagonal then the toolbox relied on numerical derviatives only (kronflag=-1). Now it is possible to handle both identification of corr parameters as well as correct analytical derivatives when Sigma_e is not diagonal with all possible kronflag values (-1|-2|0|1)
  * all plots and results are stored in the same folder named identification (previously there was another one with a capital I (Identification))

# Needed changes to preprocessor
  * add as field to options_ident:

    - tex (same as in options_)
    - nostrength (to turn off identification strength)
    - noreducedform (to turn off reduced form criteria)
    - nomoments (to turn off Iskrev's moment criteria)
    - nominimal (to turn off Komunjer and Ng's minimal system criteria)
    - nospectrum (to turn off Qu and Tkachenko's spectrum criteria)

  * add to options_ident:
    - normalize_jacobians (whether to normalize Jacobians or not)
    - grid_nbr (integer used to discretize the interval [-pi;pi]
    - tol_rank (tolerance level to compute ranks)
    - tol_deriv (tolerance level to select nonzero columns in derivatives)
    - tol_sv (tolerance level to select nonzero singular values)
    - ChecksViaSubsets (for debugging purposes, uses different function to find problematic parameter sets)
    - max_dim_subsets_groups (for debugging purposes, used for ChecksViaSubsets)

# Further Suggestions
  * Rename getH.m into getParamsDerivReducedForm.m to make the purpose of this function evident
  * Rename getJJ.m into getIdentificationJacobians.m to make the purpose of this function evident
  * Rename thet2tau.m into IdentificationNumericalObjectiveFunction.m to make the purpose of this function evident
  * dYss, d2Yss, dg1 should also include derivatives wrt to stderr and corr parameters (even though these are just 0), as in other functions (getJJ, dynare_estimation) we always add these manually
  * I am pretty sure the current handling in getH.m of dYss and d2Yss is not correct in the case of nonstationary variables (if g2static is nonempty), I added a warning message, as I am not sure whether this is ever used
  * It would be straigthforward to also include stderr and corr parameters of measurement errors (these is not possible right now). Should I do this?
  * Computations of d2A and d2Om need to be checked, as the differences between computing these with analytically (kronflag=0|1) or numerically kronflag=-1|-2 is really large for the example model of AnSchorfheide.
  * I am not sure how to best normalize Qu and Tkachenko's G matrix. It looks (and in the Gaussian case actually is) very similar to the Ahess matrix. So I used the same normalization rule as for the Ahess matrix. See comments in identification_checks.m. Anyone has a better idea? Please also check the models in test/identification/cgg for differences.
  * parts that are unclear to me are marked by a [@wmutschl] tag
  * the run time of tests/identification/as2007.mod increases from 0h01m27s to 0h03m46s (as Qu and Tkachenko's G matrix takes a little while to compute). One could decrease prior_mc=250 to prior_mc=150.

# New functions
  * commutation: Returns Magnus and Neudecker's commutation matrix that solves k*vec(X)=vec(X')
  * DerivABCD: Derivative of X(p)=A(p)*B(p)*C(p)*D(p) w.r.t to p as in Magnus and Neudecker (1999), p. 175
  * DeriveMinimalState: Derives minimal state space system by checking observability and controllability of all possible combinations of variables
  * duplication: Duplication Matrix (and its Moore Penrose Inverse) as defined by Magnus and Neudecker (2002), p.49, Dp*vec(X) = X
  * identification_checks_via_subsets: finds problematic parameters in a bruteforce fashion: It computes the rank of the Jacobians for all possible parameter combinations, if the rank condition is not fullfilled, these parameter sets are flagged as non-identifiable. For debugging purposes only, as the current identification_checks.m (based on nullspace and multicorrelation coefficients) is much faster

# Detailed changes in getH.m
  * functionality improvements

    - heavily commented (also auxiliary functions) and changed notation of several variables to make this function (hopefully) more readable and understandable, and hence, easier to debug
    - added functionality when Sigma_e is not diagonal and/or when one wants to consider corr parameters of exogenous shocks independent of the value of kronflag
    - fixed function for all values of kronflag, i.e. kronflag=-2|-1|0|1. Previosuly, only kronflag=-2|0 were working, all other kronflags ran into errors (-1 was actually never called , but was dealt with in getJJ.m). I assume kronflag=-1|1 was used only for debugging issues, but still was not working. I fixed this now, the function now works out-of-the-box for all kronflag values.
    - I also outlined and documented what each kronflag does and point to the corresponding equations in Ratto and Iskrev (2012) or Iskrev (2010,Appendix A)
    - the function additionally outputs the Jacobians of B and Sig, which are needed for Qu and Tkachenko (2012) and Komunjer and Ng (2011)'s criteria
    - Moved computation of Jacobian of tau=[ys;vec(A);vech(B * M_.Sigma_e * B')] into getJJ.m to have all Jacobians which are needed for identification in one place. That is, getH.m computes first and second parameter derivatives of (1) reduced-form solution, (2) steady state and (3) Jacobian of dynamic model, whereas getJJ computes and sets up all Jacobians which are used for identification purposes. Therefore, getH might be useful more generally for other purposes than identification. For instance, when doing a GMM estimation, we could use this function to compute analytically the gradient of the moments and provide this to the optimizer used in a GMM context.

  * output arguments

    - renamed `H` (Jacobian wrt parameters of tau=[ys;vec(A);vech(B * M_.Sigma_e * B')] into dTAU, (as H is very confusing, e.g. in other functions it is a Hessian, or Hss and H2ss is also just the steady state. Morevoer, tau is used in Iskrev(2010) for the steady state and reduced-form solution)
    - renamed `Hss` (Jacobian of steady state wrt model parameters only) into `dYss` (as H is very confusing here, see above)
    - renamed `H2ss` (Hessian wrt model parameters only of ys) into d2Yss (as H is very confusing, see above)
    - renamed `gp` into `dg1`, where g1 corresponds to the same variable as in dynamic model files. Note that in params_deriv files gp lacks the contribution of Jacobian wrt steady state and dg1 includes this using the implicit function theorem as outlined in Ratto and Iskrev (2012). Hence, dg1 denotes Jacobian wrt to parameters. It is useful and important to distinguish gp and dg1.
    - added `dB` (Jacobian wrt parameters of solution matrix B) needed for Qu and Tkachenko (2012) as well as Komunjer and Ng (2011)
    - added `dSig` (Jacobian wrt parameters of M_.Sigma_e) needed for Qu and Tkachenko (2012) as well as Komunjer and Ng (2011)

  * input arguments

    - renamed `indx` (index of model parameters to be checked) into `indpmodel`, the p makes it more clear that this is a parameter index
    - renamed `indexo` (index of stderr parameters) into `indpstderr`, the p makes it more clear that this is a parameter index
    - renamed `iv` (index of variables to consider) into `indvar`
    - Renamed `M_` to `M`, `estim_params_` to `estim_params`, `options_` to `options` , `oo_` to `oo` to visualize that these are local and not global variables
    - included `indpcorr` a matrix of indices for corr parameters to be checked

  * misc

    - distinguished clearly between variables in DR or in declaration order without overwriting this in between
    - added which functions call getH.m
    - updated copyright to 2010-2019

# Detailed changes in getJJ.m

  * functionality improvements

    - heavily commented and changed notation of several variables to make this function (hopefully) more readable and understandable, and hence, easier to debug
    - added functionality when Sigma_e is not diagonal and/or when one wants to consider corr parameters of exogenous shocks independent of the value of kronflag
    - tidied the function up, such that it sets up all Jacobians which are needed for identification, i.e. Iskrev's J matrix, Qu and Tkachenko (2012)'s G matrix, Komunjer and Ng (2011)'s D matrix, reduced-form solution (dTAU), linear rational expectation (i.e. Jacobian of steady state and dynamic model equations dLRE).
    - dTAU is now constructed in getJJ instead of in getH (see comment above in getH.m)
    - works for all kronflags, i.e. for numerical derivatives (-1 and -2) as well as for analytical derivatives based on kronecker products (1) or Sylvester Equations (0)
    - added functionality for stderr and corr parameters independent of the value of kronflag (previously this was only possible with numerical derivatives, now it works for all kronflags)
    - finds minimal state vector needed for Komunjer and Ng (2011)'s criteria (function `DeriveMinimalState.m`)
    - moved computations from kronflag=-1 (which were used in case of corr in shock block) into getH.m, so that getJJ now only sets up the Jacobians for LRE, Iskrev's J, Qu and Tkachenko's G and Komunjer and Ng's D, whereas getH computes the Jacobians (wrt parameters) of A, B, Sigma_e, Om, Yss and g1. This should simplify debugging as everything is now in one place and not in two

  * output arguments

    - renamed `JJ` into `J`
    - renamed `H` into `dTAU` (as H is very confusing, e.g. in other functions it is a Hessian, or Hss and H2ss is also just the steady state. Morevoer, tau is used in Iskrev(2010) for the steady state and reduced-form solution)
    - renamed `gp` into `dLRE`, as this corresponds to Jacobian of LRE=[Yss;vec(g1)] where g1 is the Jacobian of the dynamic model equations.
    - renamed `gam` into `MOMENTS`
    - added `G` for Qu and Tkachenko's Jacobian matrix G
    - added `D` for Komunjer and Ng's Jacobian matrix D
    - reordered output arguments

  * input arguments

    - added `options_ident` as input argument; hence, `kronflag`, `nlags` and `useautocorr` are removed from input arguments as these are available in options_ident
    - Renamed `M_` to `M`, `estim_params_` to `estim_params`, `options_` to `options` , `oo_` to `oo` to visualize that these are local and not global variables
    - renamed `indx` (index of model parameters to be checked) into `indpmodel`, the p makes it more clear that this is a parameter index
    - renamed `indexo` (index of stderr parameters) into `indpstderr`, the p makes it more clear that this is a parameter index
    - added `indpcorr` (index of corr parameters)
    - renamed `mf` (index of VAROBS variables) into `indvobs`

  * misc

    - updated copyright to 2010-2019
    - provided some comments on several ways to compute the spectral density matrix
    - added which functions call getJJ.m

# Detailed changes in thet2tau.m

  * functionality improvements

    - heavily commented and changed notation of several variables to make this function (hopefully) more readable and understandable, and hence, easier to debug
    - Added output option to compute spectral density matrix
    - Reorded and added some output option.
    - Instead of Om, `outputflag=0` computes B and Sigma_e, which are needed for Qu and Tkachenko as well as Komunjer and Ng. The Jacobian of Om is then computed in getJJ or getH from Jacobian of B and Sigma_e. Due to some testing with An and Schorfheide model this seems to be more accurate when I compare these with the analytical derivatives. The old behavior (computing Om directly) can be restored by setting `outputflag=-2`.
    - In total this function can now be used to compute numerically Jacobians of Yss, A, B, Sigma_e, Om, g1, autocovariogram and spectral density
    - Clearly distinguished (and commented) on the different outputs of this function.
    - Works for all types of parameters, ie. model, stderr and corr.
    - This function can now also be used when there is no estimated_params block. Previously, there was an error when there was no estimated_params block when calling `set_all_parameters` as this requires some information in `estim_params`. I fixed this by providing a temporary local estim_parms structure with the necessary information on model, stderr and corr parameters. In this way, this can be easily extended to also include stderr and corr parameters of measurement errors.

  * output arguments

    - renamed `tau` into `out`, as this function computes *very* different things (and not only tau) depending on an input flag

  * input arguments

    - renamed `flagmoments` into `outputflag` as this function does not only compute moments but many other things (see above)
    - renamed `indx` (index of model parameters to be checked) into `indpmodel`, the p makes it more clear that this is a parameter index
    - renamed `indexo` (index of stderr parameters) into `indpstderr`, the p makes it more clear that this is a parameter index
    - added `indpcorr` (index of corr parameters)
    - merged `mf` (index of observable variables) and `iv` (index of variables to consider) into a single index `indvar` as there is no need to distinguish between these two indices (they were never used in combination)
    - added `grid_nbr` (number of grid points to compute spectral density)
    - reordered input arguments

  * misc

    - added which functions call thet2tau
    - updated copyright to 2010-2019

# Detailed changes in identification_analysis.m

  * functionality improvements

    - heavily commented and changed notation of several variables to make this function (hopefully) more readable and understandable, and hence, easier to debug
    - renamed `dg1` to `dLRE`, renamed `vecg1` to `lre`, renamed `H` to `dTAU` (see comments above)
    - added option `numzerotolderiv` with default `1.e-8` used for non-zero derivatives
    - added option `numzerotolrank` with default `1.e-10` used for rank computations
    - added theoretical identification analysis based on Komunjer and Ng (2011)'s method, i.e. steady state and observational equivalent spectral densities within a minimal system
    - added theoretical identification analysis based on Qu and Tkachenko (2012)'s method, i.e. steady state and spectral density
    - restructured the code slightly to combined chunks of code that belong together on the one hand, and on the other hand to differentiate between the different criteria
    - added call to new function `identification_checks_via_subsets.m` (see above for the definition of the functionality) to perform identification checks differently as find it more intuitive and (most likely) more precise.

  * input arguments

    - removed `bounds` and `dataset_` as input argument, because these are not needed
    - moved `name_tex` and `tittxt` into `options_ident` as these two inputs are only used in `ident_bruteforce.m` and already set in `dynare_identification.m`

  * output arguments

    - added `ide_spectrum` structure for Qu and Tkachenko's criteria based on the spectral density
    - added `ide_minimal` structure for Komunjer and Ng's criteria based on the minimal state space system
    - reordered output arguments

  * misc

    - added which functions call identification_analysis
    - updated copyright to 2010-2019

# Detailed changes in dynare_identification.m

  * functionality improvements

    - heavily commented and changed notation of several variables to make this function (hopefully) more readable and understandable, and hence, easier to debug
    - included more options (and default values) which can be set by the user, i.e. nostrength, nomoments, nominimal, nospectrum, tex, tol_rank, tol_deriv, tol_sv, grid_nbr, ChecksViaSubsets, max_dim_subsets_group
    - instead of turning warnings globally off, I specified the relevant warnings for matlab and octave, respectively, off
    - improved the warning messages slightly
    - restructured chunks of code with respect to different criteria

  * output arguments

    - renamed arguments: TAU to STO_TAU, GAM to STO_MOMENTS, LRE to STO_LRE, gp to STO_si_dLRE, H to STO_si_dTAU, JJ to STO_si_J
    - added arguments: STO_G and STO_D for the two new criteria

  * misc

    - added which functions call dynare_identification
    - updated copyright to 2010-2019

# Detailed changes in identification_checks.m

  * functionality improvements

    - added checks for Komunjer and Ng's D matrix. Note that the Jacobian D=[D_par D_rest], where D_par depends on the parameters and D_rest does not. So this is taken into account.
    - added checks for Qu and Tkachenko's G matrix. Note that the Jacobian G is a Gram matrix with dimension nparam x nparam, similar to Ahess. So this is taken into account. I am, however, not sure whether this is correct regarding the multicorrelation and pairwise correlation coefficients. Please double check.
    - the rank is now actually computed at the prespecified tolerance level (and not Matlab's default level), so this is in accordance to the further analysis of problematic parameter sets

  * output arguments

    - added the rank to output arguments which is later also displayed
    - replaced the J or JJ part in the variable names with X as this function is used for all sorts of Jacobians, not only Iskrev's J

  * input arguments

    - renamed hess_flag to output_flag (and clearly outlined what each value does)
    - added tol_rank and tol_sv as input arguments, such that the tolerance levels can be changed by the user and not preimplemented in this function
    - added param_nbr which is needed for Komunjer and Ng's D matrix

  * misc

    - updated copyright to 2010-2019

# Detailed changes in ident_bruteforce.m

  * functionality improvements

    - the output directory was set with a capital I, i.e. Identification, whereas in all other functions we rely on lower case i, i.e. identification. I changed this to lower-cases, so everything is now saved in the same folder.
    - changed displayed strings to be more precise with the corresponding papers and notation

  * input arguments

    - renamed `n` to `max_dim_cova_group` to name options the same across functions
    - renamed `pnames_TeX` to `name_tex` to name options the same across functions
    - added `tol_deriv` as tolerance level which can be changed by the user

  * misc

    - Added some comments
    - updated copyright to 2010-2019

# Detailed changes in disp_identification.m

  * functionality improvements

    - this function displays the same output for different Jacobians, hence I put the common code into a for loop. This should simplify changing the output that is printed to the console. Previously the code was simply repeated for the different criteria and only the strings changed.
    - some settings relevant for the computation are now printed as a summary to the console
    - the tolerance level, rank and required rank are always displayed on the command line to see how many problematic sets there are and which tolerance level was used
    - the function is also able to display problematic parameters computed by the new function `identification_checks_via_subsets.m` which is only used for debugging.

  * input arguments

    - added `idespectrum` structure for analysis based on Qu and Tkachenko
    - added `ideminimal` structure for analysis based on Komunjer and Ng
    - added `options_ident` to have all necessary settings in a structure

  * misc

    - Added some comments
    - Removed uncommented code that was not used as this was redundant and probably an artifact of the original programming?!
    - updated copyright to 2010-2019

# Detailed changes in dsge_likelihood.m

  * misc

    - adjusted call of getH due to changes of input and output arguments
    - updated copyright to 2010-2019

# Detailed changes in cosn.m

  * misc

    - commented functionality, input and output arguments of this function
    - updated copyright to 2010-2019
2019-03-20 15:44:54 +00:00
Sébastien Villemot b6f0071501
Testsuite: activate k_order_perturbation/fs2000k4.mod 2019-02-26 18:59:42 +01:00
Sébastien Villemot cbf09080f9
Octave compatibility fix 2019-02-25 17:46:40 +01:00
Sébastien Villemot 073f5dd6f7
Fix function header 2019-02-25 15:28:23 +01:00
Sébastien Villemot 1f84bc051d
Under Octave, the "statistics" Forge package is now a requirement
The gamrnd fallback under matlab/missing/stats/ does not work under Octave
because the +gamrnd/ folder is not accessible (it has the same name as the
function, which does not work under Octave).

Instead of fixing this, rather make the statistics toolbox a requirement, since
anyways it is very easy to obtain under Octave.

Accordingly:
- do not try to run the unit tests of matlab/missing/stats/ under Octave
- merge the matlab/missing/stats-matlab/ into matlab/missing/stats/, since this
  directory is now MATLAB-only.

Also:
- move matlab/distributions/+gamrnd/ under matlab/missing/stats/ for
  consistency
- in the manual: remove obsolete link to Octave downloads on the Dynare
  website; update URL of Octave Forge

Closes #1638
2019-02-18 17:41:10 +01:00
Sébastien Villemot 548a6283ca
Testsuite: also move fataltests.m under tests/utils/ 2019-02-17 12:46:26 +01:00
Sébastien Villemot ce70e2a9ca
Testsuite: do not add top-level tests/ directory to the MATLAB/Octave path
This directory is cluttered with so many files that it creates problem (e.g.
dynare-command-options/ramst.mod was broken under Octave because of this).

Move files that have to be found through the path in a utils/ subdirectory.
2019-02-15 18:43:20 +01:00
Sébastien Villemot 9339869942
Octave compatibility fix in solow.mod test
- use optimoptions instead of optimset
- since one can't take the handle of a function in a package, use str2func to
  workaround it

It still does not work, the solver does not converge…
2019-02-15 18:43:19 +01:00
Stéphane Adjemia (Scylla) 3cb3b4aee5
Allow models with leads in bgp.write().
Also added tests to check that we are able to identify the Balanced Growth
Path, note that it does not work with tests/bgp/fs2000.mod.
2019-02-15 16:59:26 +01:00
Sébastien Villemot 9786ce3d07
Testsuite: display full stacktrace on Octave failures 2019-02-14 17:45:40 +01:00
Sébastien Villemot 0b1b365ed3
Testsuite: invert colors (green vs red) for expected failures
I.e. a test that is expected to fail and that actually fails will be displayed
in green. If it actually succeeds, it will be red.
2019-02-14 17:03:35 +01:00
Sébastien Villemot c8f3b5b96c
Various updates to .gitignore files 2019-02-13 16:12:16 +01:00
Stéphane Adjemia (Scylla) 0a084c8fe9
Cosmetic changes.
M_.endo_names and M_.exo_names are cell arrays, no need to use deblank to
remove trailing whitespaces.
2019-02-06 17:27:41 +01:00
Stéphane Adjemian 768555b523 Merge branch 'fixes_4.6' into 'master'
Fixes 4.6

See merge request Dynare/dynare!1641
2019-02-04 10:19:05 +00:00
Stéphane Adjemia (Scylla) b7c60ddf59
Added a routine for writing the problem to be solved to compute the BGP of a model.
- Only works with backward models.
 - Probably doesn't work if the model includes auxiliary variables.
 - Assumes that the trends are multiplicative.
2019-02-04 10:04:33 +01:00
Stéphane Adjemia (Scylla) f7b332efa6
Removed shocks. 2019-02-04 10:04:33 +01:00
Sébastien Villemot 1238fb2071
Remove duplicate test file
Another version is already under tests/trend_var/ directory.
2019-01-31 19:01:41 +01:00
Marco Ratto 8713e46c4e fixed bug with non-increasing time declarations of moment restrictions. Modified example to get more sensible graph of ACF.
(cherry picked from commit b0e7c47a000a679420970f1d05e4f2ed7d60764c)
2019-01-17 09:26:37 +00:00
Houtan Bastani fa7931e125
preprocessor: submodule update 2018-12-19 16:22:59 +01:00
Stéphane Adjemia (Scylla) 70011983e3
Changed test.
Epilogue should also be able to simulate backward models.

[ci skip]
2018-12-17 12:28:55 +01:00
Johannes Pfeifer 32b9853277
Add unit test for correctness of posterior moments 2018-12-15 19:23:05 +01:00
Johannes Pfeifer 0f5940ab1f
kim/kim2.mod: fix inconsistent prior specification 2018-12-15 18:49:53 +01:00
Johannes Pfeifer fec7455555
Make prior.m function account for endogenous prior restrictions 2018-12-15 18:44:53 +01:00
Houtan Bastani 6f3a4ce806
modify epilogue test 2018-12-10 16:31:42 +01:00
Stéphane Adjemia (Scylla) ecad43085c
Added integration test (epilogue block). 2018-12-10 16:16:15 +01:00
Sébastien Villemot 6995e24863
The testsuite can now be run from Windows 2018-11-21 16:21:59 +01:00
Sébastien Villemot 59d4dd185e Merge branch 'ident_test' into 'master'
kim2.mod: trigger case where estim_params_block is not detected

See merge request Dynare/dynare!1638
2018-11-16 17:55:39 +00:00
Sébastien Villemot a7a46a6b75
Add missing file in c407b63e84
Ref Dynare/preprocessor#13
2018-11-16 18:37:20 +01:00
Sébastien Villemot c407b63e84
Update preprocessor submodule + add test
Ref Dynare/preprocessor#13
2018-11-16 18:34:37 +01:00
Johannes Pfeifer 33d35d8fcc kim2.mod: trigger case where estim_params_block is not detected 2018-11-16 17:56:13 +01:00
Stéphane Adjemia (Scylla) 460dba40d7
Added integration test (estimated_params_init). 2018-10-25 10:33:31 +02:00
Stéphane Adjemia (Scylla) d4bfd6c9f0
Another attempt to fix numerical accuracy issues in integration tests. 2018-10-06 21:44:58 +02:00
Stéphane Adjemian (Charybdis) 084b7ac537
Changed optimization algorithm in integration tests.
fs2000_uncorr_ME_missing was failing on some servers due to a numerical
precision issue. It appears that the problem drops off if the smoothed
variables are computed on another point (given by another optimization
algorithm).
2018-10-04 12:02:31 +02:00
Stéphane Adjemian (Charybdis) 03bd2b73e6
Fixed integration test for the automatic tuning of mh_jscale. 2018-10-03 18:21:16 +02:00
Sébastien Villemot c6a17abc72 Testsuite: suppress MATLAB splash screen when generating .m.tls file 2018-10-01 16:40:26 +02:00
Stéphane Adjemian(Charybdis) 76c4df129c
Added integration tests. 2018-09-27 18:58:52 +02:00
Sébastien Villemot 39110b3087 Test for analytical_derivatives: use mode_compute=9
This optimizer seems more robust accross different hardware (with other
optimizers, the algorithm does not converge to a local maximum, e.g. on the
runner "lupi").
2018-09-27 15:05:14 +02:00
Sébastien Villemot 9b4daab8a0 Macro-processor: add comprehensions
- update preprocessor submodule
- add some tests
2018-09-24 18:27:55 +02:00
Sébastien Villemot a03fab76c2 Ensure that test summary is displayed even if there is a test failure 2018-09-14 15:21:39 +02:00
Stéphane Adjemian(Charybdis) 9adad552be Fixed rm argument list too long issue.
(cherry picked from commit d005def67f5d0afb2a99a40a6cd84766ca7dfd9f)
2018-09-13 17:31:24 +02:00
Sébastien Villemot a4c46a8121 tests/Makefile.am: replace PWD by CURDIR, fixes recursive make invocation 2018-09-13 16:43:30 +02:00
Sébastien Villemot 763b0a2392 make check-{matlab,octave} now return a non-zero exit code if there is a failed test 2018-09-13 16:18:41 +02:00
Sébastien Villemot 8ba9918652 Improve style of read_trs_files bash script
The script is now shellcheck-clean.

Incidentally, fix a bug in the counting of xfailed tests when there are several
such tests in a single .mod file.
2018-09-13 16:18:41 +02:00
Sébastien Villemot d03cc56587 solve_algo=7 and stack_solve_algo=2 are now allowed under Octave
The gmres() function has been implemented (actually since Octave 3.4.1!).
2018-08-02 15:20:39 +02:00
Sébastien Villemot fda021855c Fix forecast command with deterministic exogenous and linear option
Closes #1608
2018-08-02 14:20:51 +02:00
Sébastien Villemot 0da4aefd99 Update preprocessor submodule with macroprocessor refactoring
By the way, add new tests for the macroprocessor.
2018-07-25 18:51:38 +02:00
Stéphane Adjemian(Charybdis) 3dcd8fc9f5 Added preprocessor unit tests (on the fly declarations of types). 2018-07-19 23:51:37 +02:00
Stéphane Adjemian(Charybdis) 5f8b2c5a77 Revert "modify on-the-fly example to accept variables declared in equation tag"
This reverts commit 8ff8d787e8.
2018-07-19 19:08:07 +02:00
Sébastien Villemot 9c3ce0350d Replace LMMCP test with another one that converges
Incidentally the new one takes far less time, especially on Octave.
2018-07-18 17:52:44 +02:00
Sébastien Villemot ff676f5505 Gracefully fail when Octave crashes in a *.m test 2018-07-13 17:22:27 +02:00
Houtan Bastani 8ff8d787e8 modify on-the-fly example to accept variables declared in equation tag 2018-07-11 14:45:32 +02:00
Stéphane Adjemian(Charybdis) 0d4a677526 Added comments in example. 2018-07-09 20:30:38 +02:00
Houtan Bastani 01d5a13082 preprocessor: submodule update: on-the-fly variable declaration in equation tags 2018-07-09 15:36:49 +02:00
Sébastien Villemot b2c554623f Various fixes related to the new layout of generated files 2018-06-28 18:14:40 +02:00
Sébastien Villemot a1b8bd39b2 Move the location of various generated files on the filesystem
- M and MEX files are now under +${MODELNAME}/
- bytecode, C source and JSON now under ${MODELNAME}/model/
2018-06-27 17:03:39 +02:00
Sébastien Villemot 1e5fab3881 Fix tests for stack_solve_algo=7
Completes commit db0cf1b8ea from PR #1616.
2018-06-08 10:29:53 +02:00
Johannes Pfeifer db0cf1b8ea Add unit tests for perfect foresight simulations with exogenous leads and lags
Closes #1616
2018-06-07 20:46:30 +02:00
Sébastien Villemot 79484607a7 Fix various issues with stack_solve_algo=7 and lags on exogenous > 1
Complete the fix started in 8913791ff0.

Change the test case to prevent regressions.
2018-06-07 16:14:02 +02:00
Sébastien Villemot fec0947c7b Testsuite: clean files generated by move to temporary terms array 2018-06-04 18:08:28 +02:00
Johannes Pfeifer 2dd940dc1a datatomfile: Consistently replace char by cell arrays
Required after 7be8f10e0e
2018-06-04 11:56:43 +02:00
Frédéric Karamé 1c9e186d57 Updated tests for nonlinear filters.
(cherry picked from commit e2cf2260dbd5cceeade11f0617ab33de2f8ee72b)
2018-06-01 12:13:54 +02:00
Stéphane Adjemian(Charybdis) f53be721c1 Added new option mh_tune_jscale.
Works only with the Random Walk Metropolis Hastings algorithm.

Closes #1598
2018-05-16 16:37:22 +02:00
Houtan Bastani 7f3120eb2e preprocessor: submodule update; introduction of on-the-fly variable declaration 2018-03-20 16:43:06 +01:00
Stéphane Adjemian(Charybdis) 85b88e133b Fixed integration tests related to the simulation of backward models.
Use the histval interface for setting the initial conditions.
2018-03-12 09:47:06 +01:00
Stéphane Adjemian(Charybdis) d96aca093e Fixes for julia 0.6.x.
Updated the preprocessor module (adds new static and dynamic routines which
only return the jacobian).
2018-03-10 16:05:14 +01:00
Houtan Bastani 04ce089164 test suite: modify reporting test following dseries move to new MATLAB classes 2018-02-16 14:19:08 +01:00
Johannes Pfeifer dde1acd18d Make fast_realtime accept observation as input 2018-01-26 18:23:49 +01:00
Johannes Pfeifer 0d11246c35 Add fast_realtime option to integration test 2018-01-12 09:48:14 +01:00
Stéphane Adjemian (Scylla) 7be8f10e0e Use cells of strings instead of char arrays. 2018-01-09 22:30:01 +01:00
Stéphane Adjemian (Charybdis) 2be12bd50d Provide data to integration test.
This test, which is not run by the testsuite, fails.
2017-12-29 13:47:36 +01:00
Johannes Pfeifer a0ea6e3a21 Adjust tolerance of integration test 2017-10-05 11:33:17 +02:00
Johannes Pfeifer a1222a1d1b Implement variance decomposition with measurement error 2017-10-05 11:33:17 +02:00
Johannes Pfeifer f0b9f453e9 Make empirical moments independent of simul_replic by outputting first instead of later replication
Closes #1487
2017-10-04 15:32:28 +02:00
Stéphane Adjemian (Scylla) f284169248 Fixed integration tests related to simulation of backward models. 2017-09-30 16:44:23 +02:00
Johannes Pfeifer 79e510a99e Add integration tests for #1193 and #1510 2017-09-13 10:20:09 +02:00
Johannes Pfeifer 25bf43983f Add write_latex_steady_state_model to collect_latex_files.m 2017-09-01 17:58:25 +02:00
Houtan Bastani 85d00ad267 test suite: remove practicing directory. closes #1500 2017-08-29 17:15:06 +02:00
Houtan Bastani bb3e71646a Merge pull request #1497 from JohannesPfeifer/calib_smoother_test
Add calib_smoother command with parameter_set option to integration
2017-08-29 11:02:34 +02:00
Johannes Pfeifer cfc7413e96 Add calib_smoother command with parameter_set option to integration
Following #1477
2017-08-29 10:52:48 +02:00
Houtan Bastani 6fcc26ce2b test suite: aesthetic fix: remove British English :) 2017-08-29 10:27:49 +02:00
Houtan Bastani 9a3ea53274 test suite: change test to test for existence of files in current directory only 2017-08-29 10:25:39 +02:00
Stéphane Adjemian (Scylla) 32c3beb27d Fixed bug introduced in 7d180e2fcb. 2017-08-16 22:17:20 +02:00
Stéphane Adjemian (Scylla) 7d180e2fcb Renamed integration test (removed capital letters). 2017-08-16 16:08:18 +02:00
Stéphane Adjemian (Scylla) a1c34979f5 Merge branch 'pr#1484' 2017-08-16 11:20:55 +02:00
Johannes Pfeifer fdb24d6a1d Add unit test for sim1_linear.m 2017-08-01 11:36:07 +02:00
Stéphane Adjemian (Scylla) 16e0fca19c Added two examples (forecasts and IRFs in backward models).
(cherry picked from commit 949440ef9c)
2017-07-31 16:32:15 +02:00
Stéphane Adjemian (Scylla) 209e16888d Fixed bug in the integration test added in 45864f414f
Wrong name for the data file. Also reduced the number of chains.
2017-07-24 10:55:49 +02:00
Stéphane Adjemian (Scylla) 9203f9e52f Fixed encondig in the integration test added in 45864f414f. 2017-07-24 10:53:14 +02:00
Stéphane Adjemian (Scylla) 45864f414f Added integration test.
Trend + posterior filtered variables in a model with only one observed variable.
2017-07-23 23:34:49 +02:00
Stéphane Adjemian (Charybdis) 63d6dfccf4 Added the possibility to dynare the dynare command options in the mod file. 2017-06-30 10:16:26 +02:00
Stéphane Adjemian (Charybdis) b81e0cd91e Added json file in the clean rule. 2017-06-28 16:03:52 +02:00
Stéphane Adjemian (Charybdis) 119b5a62f2 Merge branch 'master' into json 2017-06-16 20:03:36 +02:00
Sébastien Villemot 7eaea0c772 Include tests/load_octave_packages.m in the distributed tarball. 2017-06-13 15:50:34 +02:00
Sébastien Villemot 21fa1ec86a Testsuite for octave: remove obsolete workaround. 2017-06-07 17:59:09 +02:00
Stéphane Adjemian 8015144817 Merge pull request #1460 from JohannesPfeifer/hessian_zero
Make sure that reverting to order=1 if Hessian is 0 does not crash ot…
2017-06-04 21:42:52 +02:00
Johannes Pfeifer d75e7278c2 Make sure that reverting to order=1 if Hessian is 0 does not crash other functions
Closes #1453
2017-05-27 19:26:12 +02:00
Stéphane Adjemian (Charybdis) 3c3fc0ace4 Fixed integration test. 2017-05-20 10:15:31 +02:00
Stéphane Adjemian (Charybdis) a53636e24e Fixed copyright notices. 2017-05-16 14:11:15 +02:00
Houtan Bastani 5bae0a8cb1 build system: add clean rule for test suite 2017-04-25 12:24:03 +02:00
Stéphane Adjemian (Charybdis) 19b206338d Fixed tests/dates/fs2000.mod and added in testsuite.
Provides an example showing how to directly pass a dseries object to the data
command for estimation.
2017-04-05 11:44:27 +02:00
Stéphane Adjemian (Charybdis) d43af0e4d7 Fixed wrong spaces/tab in tests/Makefile.am. 2017-04-05 11:44:27 +02:00
Johannes Pfeifer 00299a92c1 Make sure options_.first_obs is properly set 2017-04-05 11:44:27 +02:00
Houtan Bastani 753d8a17f0 preprocessor: move equation tags out of dmath mode, include all equation tags in one set of brackets, allow equation tags to be interpreted as latex, modify manual and test accordingly. #477 2017-04-05 11:01:25 +02:00
Johannes Pfeifer 59bafbf294 Add write_equation_tags option to integration test 2017-04-04 23:52:39 +02:00
Stéphane Adjemian (Charybdis) c1434118bd Added integration test for nonlinear filters with unit roots. 2017-04-03 11:25:05 +02:00
Houtan Bastani b3ecc8c003 preprocessor: add plot_shock_decomposition command. closes #1406 2017-03-24 12:11:36 +01:00
Houtan Bastani 5282e737e7 preprocessor: add realtime_shock_decomposition statement. #1406 2017-03-21 15:20:32 +01:00
Stéphane Adjemian (Charybdis) 9633f3ab77 Fixed bug introduced in 68b18b04f4.
Update of EXTRA_DIST was missing.
2017-03-20 22:17:54 +01:00
Stéphane Adjemian (Charybdis) 6d6f850a49 Test the value of oo_.deterministic_simulation.status in tests/deterministic_simulations/* 2017-03-20 16:27:13 +01:00
Johannes Pfeifer 828df26d71 Makefile.am: Add loglinear as test group
(cherry picked from commit a4c28306097f75b5dae2ded92628b26530f5dd20)
2017-03-20 09:43:23 +01:00
Stéphane Adjemian (Charybdis) c7926e250a Fixed spaces in 750f1d9ff4728216db0df8da69ef59f4d7dc254b. 2017-03-20 09:42:15 +01:00
Johannes Pfeifer 9adc2e9ca9 makefile: Replace 8 spaces by correct tab
(cherry picked from commit 750f1d9ff4728216db0df8da69ef59f4d7dc254b)
2017-03-20 09:40:57 +01:00
Johannes Pfeifer 68b18b04f4 Expand loglinear integration tests
(cherry picked from commit 7c17e97546df6ab269be939e6f7e8b32f45b5cc0)
2017-03-20 09:35:24 +01:00
Stéphane Adjemian (Charybdis) 8dc27292c9 Adapted integration test consistently with 0752d6a8e6. 2017-03-18 20:54:32 +01:00
Marco Ratto 727a9582c8 speed-up execution of test 2017-03-18 10:27:36 +01:00
Stéphane Adjemian (Charybdis) bc6c6fc486 Removed remaining calls or references to cputime. 2017-03-17 22:49:01 +01:00
Stéphane Adjemian (Charybdis) 117458e663 Complete c921212fe5. 2017-03-17 18:33:17 +01:00
Stéphane Adjemian (Charybdis) 052655e353 Changed some integration tests for lowering the execution time of the testsuite. 2017-03-17 18:24:56 +01:00
Stéphane Adjemian (Charybdis) 2125d82cae Adapted integration tests to ea49f971e58a4b40b422d06d808d863124092ef4.
FilteredVariablesKStepAheadVariances is computed and saved iff
filter_covariance option is used in estimation command.
2017-03-17 18:10:00 +01:00
Marco Ratto d35ee4b58e adapted testing routine 2017-03-17 12:41:59 +01:00
Marco Ratto f66191f59f added tex wrapper + small fixes to the test 2017-03-17 12:41:59 +01:00
Marco Ratto fcdecb5b1f test file for plot_shock_decomposition and realtime_shock_decomposition 2017-03-17 12:41:59 +01:00
Stéphane Adjemian (Charybdis) c921212fe5 Renamed trs field consistently with 1022e675c1. 2017-03-16 23:41:27 +01:00
Stéphane Adjemian (Charybdis) 1022e675c1 Do not use cputime as advised by Mathworks.
cputime time is not a good measure of performance on multithreaded applications.

TODO
 - Change trs field,
 - Adapt testsuite code.
2017-03-16 18:27:01 +01:00
Stéphane Adjemian (Charybdis) ae3752a0d3 Lowered threshold value for a test. 2017-03-16 15:51:11 +01:00
Houtan Bastani 9f7b084970 Merge branch 'master' into json 2017-03-10 17:20:15 +01:00
Houtan Bastani 38f36091a9 test suite: increase timeout option for downloading files to 30 seconds 2017-03-08 12:30:58 +01:00
Houtan Bastani 5063020c5d Merge branch 'master' into json 2017-03-03 14:42:25 +01:00
Houtan Bastani 1007ea1301 preprocessor: JSON output for statements, #1387 2017-02-20 11:23:10 +01:00
Stéphane Adjemian (Charybdis) 593d62a7c1 Removed optimizers/fs2000_12.mod from testsuite...
Because the Global Optimization Toolbox is not installed on dynbot@sedna.
2017-02-08 14:29:34 +01:00
Stéphane Adjemian (Charybdis) b14cf33c8f Changed priors in tests/optimizers/fs2000_* integration tests.
To avoid asymptote at zero on the autoregressive parameter rho.
2017-02-08 13:07:25 +00:00
Stéphane Adjemian (Charybdis) 5b73d7d59c Added new optimization routine (particleswarm).
Only available under Matlab if the Global Optimization Toolbox is installed.
2017-02-08 13:07:25 +00:00
Houtan Bastani f1d607af99 preprocessor: remove extra exogenous variables. closes #841 2017-01-27 22:48:17 +01:00
Houtan Bastani cfae273038 keep track of all times an undeclared variable is encountered 2017-01-27 20:36:26 +01:00
Stéphane Adjemian (Lupi) 1cabe76b06 Do not compute posterior kernel densities in some integration tests.
These data are not used in the tests, and take a lot of space in RAM and on
the disk (when the results, e.g. oo_, are saved in <MOD_FILE_NAME>_results.mat).
2017-01-27 15:15:55 +01:00
Stéphane Adjemian (Charybdis) b152f3920d Added the possiblity to run the testsuite on a subset of tests.
*Example*

To run all the tests related to the numerical gradient, just type:

~$ make m/gradient

in the tests subfolder. These tests will be done with Matlab. If you want to
test these routines against Octave instead:

~$ make o/gradient

If you want to test against Matlab and Octave:

~$ make gradient.

*Remark*

[1] Integration tests in subfolders can be accessed using the same approach. For
instance:

~/m/observation_trends_and_prefiltering/MCMC

will run all the mod files with matlab in tests/observation_trends_and_prefiltering/MCMC.

[2] Autocompletion works.

[3] Some folders/subfolders are still missing...

(cherry picked from commit 0271f2e8c13d5fe94871fa7aed027047a2cfd36f)
2017-01-24 16:00:50 +00:00
Johannes Pfeifer d5a6f132b5 unit tests: remove more unused exogenous variables 2017-01-10 19:58:44 +01:00
Johannes Pfeifer c5c465d675 Remove unused exogenous variables from unit tests 2017-01-08 19:00:04 +01:00
Stéphane Adjemian 420fb3896b Merge pull request #1361 from JohannesPfeifer/endogenous_prior_restrictions
Document irf_calibration and moment_calibration in the context of est…
2017-01-05 09:08:52 +01:00
Stéphane Adjemian b464226eaa Merge pull request #1358 from JohannesPfeifer/nograph
Implement posterior_nograph option
2017-01-05 06:52:08 +01:00
Stéphane Adjemian (Lupi) 3708b5c4e5 Fixed typo (integration test for nested parenthesis). 2017-01-05 00:32:37 +01:00
Stéphane Adjemian 90982d5fa0 Merge pull request #1357 from rattoma/parallel
Provisions for new node option NumberOfThreadsPerJob. Document option
2017-01-04 23:29:24 +01:00
Stéphane Adjemian (Karaba) 11962c0a21 Added integration test for nested parenthesis.
example1long.mod is the benchmark (less than 32 nested parenthesis). The two
other mod files have more than 32 nested parenthesis (rewrite the sum of
discounted ys using the Horner factorization). Both files compare the approaches
discussed in issue #1201 with the benchmark.
2017-01-04 23:23:41 +01:00
Johannes Pfeifer 6c9a08d7e2 Further adjust tolerance of Octave unit tests 2016-12-28 19:30:24 +01:00
Johannes Pfeifer 8900b99a74 Add posterior_nograph option to fs2000.mod unit test 2016-12-26 13:11:02 +01:00
Johannes Pfeifer c7290a5f03 Document irf_calibration and moment_calibration in the context of estimation
Also adds unit test. Closes #1318
2016-12-23 12:11:10 +01:00