Hello to everybody
We started to experiment with the new "model.control" function in the process of using a large macro model for forecasting.
It seems indeed very powerful, but we need to understand how it precisely works, and why it is not working as desired in some cases.
1. It seems to work nicely in a block of non recursive equations (endogenous variables thereof are not influenced by the model solution. i.e. one-way causalities). But as soon as there is some recursiveness, the power of the "control" statement seems to decrease, the more so there is recursiveness, is that correct?
2. Hence a first question: when the control statement is executed, in a program, Eviews immediately calculates a value for the control variable (we use residuals of endogenous variables), right? Or are the values consectutive to the control statement influenced in the later course of the execution of the program by the "solve" command? Our observation is, that the residuals (controls) are set to match the trajectories during the execution of the "control" statement, and not altered in the course of the "solve" of the model EXCEPT if the "actexist=t(rue)" statement is used. In the latter case, the "control" function loses its power: there still seems to be a certain convergence in the sense that the target series come closer to the desired trajectories, but not perfectly; if the actexist=f(alse) statement is used, the match is perfect, even for series like GDP (an identity in our model that we target through the residuals of an endogenous series) that are by nature highly recursive.
3. Another observation is, that it makes a difference whether the respective targeted series are put in one control statement, or in several independent statements. The match is perfect if all the targets are put in one control statement (and actexist=f), correct? If several statements are used, the power of the "control" function decreases, correct?
Did anybody experience similar results? What do the developers of Eviews say?
Many thanks, kind regards
FA
Working of the model.control function
Moderators: EViews Gareth, EViews Moderator
-
- EViews Developer
- Posts: 563
- Joined: Thu Apr 25, 2013 7:48 pm
Re: Working of the model.control function
Hello,
Just to clarify, in EViews' terminology recursive blocks are those in which the endogenous variables are related only via unidirectional dependencies, e.g. X = f(Y) and Y = f(Z). In contrast, simultaneous blocks include bidirectional dependencies (direct or indirect), e.g., X = f(Y) and Y = f(X). In general, recursive blocks are "easier" to solve (or control) than simultaneous blocks just as a matter of numerical complexity. Each equation in a recursive block can be solved independently, where as the equations in a simultaneous block must be solved simultaneously. Consequently, a model with simultaneous blocks may be more prone to solve (or control) failures, but the actual difficulty really depends on the specification of each equation.
The control procedure is a calculation procedure, just like the solve procedure. It immediately calculates values. It's not a setting that only takes effect during future solve operations. More specifically, the results of a control operation are designed to induce a specific outcome during a future hypothetical solve operation. The control procedure therefore assumes that the current solve options and scenario settings will continue to be used in future and adjusts its calculations accordingly. If the active scenario has excluded observations or overridden variables, those will effect control's results. Similarly, if the solve options or scenario settings are changed after the control operation, a subsequent solve operation may not produce target values that match the trajectory series because the context has changed. Basically, a control operation and subsequent solve operation are only guaranteed to produce the expected targets if both operations have the same contextual parameters (and neither operation fails, of course).
That the control procedure is a calculation procedure hopefully helps illuminate why multiple control operations each over a single variable may behave differently than a single control operation over multiple variables. For example, given a simple model with X = f(A, B) and Y = f(A, B), if we first use A as a control for target X and then use B as a control for target Y, the first control operation will adjust series A and the second will adjust series B. However, during that first operation there are no constraints on how adjusting A may affect Y, and similarly during the second operation there are no constraints on how adjusting B may affect X. If we then performed a solve operation I'd expect Y to match its trajectory but X to not match its own. Instead, the adjustments to A and B should have been made together so that their simultaneous effects on X and Y could be accounted for and both trajectories matched. Therefore, it's necessary to use a single control operation to simultaneously adjust both controls.
Just to clarify, in EViews' terminology recursive blocks are those in which the endogenous variables are related only via unidirectional dependencies, e.g. X = f(Y) and Y = f(Z). In contrast, simultaneous blocks include bidirectional dependencies (direct or indirect), e.g., X = f(Y) and Y = f(X). In general, recursive blocks are "easier" to solve (or control) than simultaneous blocks just as a matter of numerical complexity. Each equation in a recursive block can be solved independently, where as the equations in a simultaneous block must be solved simultaneously. Consequently, a model with simultaneous blocks may be more prone to solve (or control) failures, but the actual difficulty really depends on the specification of each equation.
The control procedure is a calculation procedure, just like the solve procedure. It immediately calculates values. It's not a setting that only takes effect during future solve operations. More specifically, the results of a control operation are designed to induce a specific outcome during a future hypothetical solve operation. The control procedure therefore assumes that the current solve options and scenario settings will continue to be used in future and adjusts its calculations accordingly. If the active scenario has excluded observations or overridden variables, those will effect control's results. Similarly, if the solve options or scenario settings are changed after the control operation, a subsequent solve operation may not produce target values that match the trajectory series because the context has changed. Basically, a control operation and subsequent solve operation are only guaranteed to produce the expected targets if both operations have the same contextual parameters (and neither operation fails, of course).
That the control procedure is a calculation procedure hopefully helps illuminate why multiple control operations each over a single variable may behave differently than a single control operation over multiple variables. For example, given a simple model with X = f(A, B) and Y = f(A, B), if we first use A as a control for target X and then use B as a control for target Y, the first control operation will adjust series A and the second will adjust series B. However, during that first operation there are no constraints on how adjusting A may affect Y, and similarly during the second operation there are no constraints on how adjusting B may affect X. If we then performed a solve operation I'd expect Y to match its trajectory but X to not match its own. Instead, the adjustments to A and B should have been made together so that their simultaneous effects on X and Y could be accounted for and both trajectories matched. Therefore, it's necessary to use a single control operation to simultaneously adjust both controls.
Re: Working of the model.control function
Hello all (and Ferdy in particular, long time no see).
I would be interested in some evaluation of the EViews control function.
I myself have devised method, described in my book.
Did you try it and which one works the best?
I am available for any discussion on the subject.
Jean Louis (Brillet).
I would be interested in some evaluation of the EViews control function.
I myself have devised method, described in my book.
Did you try it and which one works the best?
I am available for any discussion on the subject.
Jean Louis (Brillet).
Who is online
Users browsing this forum: No registered users and 21 guests