Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dear Sir,
    I am running ARDL model and I don't use statistic software very often, so there is something that I don't really understand after following the steps as instructed. Here are my questions:
    1. I'm using monthly data in 11 year period, should I increase the maxlag in my model?
    2. In the case that an independent variable has lag 0, in ec model there is no coefficient in SR, does it mean that there is no SR relationship between the dependent variable and that independent variable?
    3. It is written in your paper that "If the bounds test does not reject the null hypothesis of no long-run relationship, an ARDL model purely in first differences (without an equilibrium correction term) might be estimated." Then what is the exact command I need to use in this case in order to consider the existence of long-run relationships between variables?

    Comment


    • 1. There is no general answer to this question. Monthly data over an 11-years time span certainly allows you to use more lags. You might try to set maxlag(12) which would allow the same month of the previous year to have an effect on the current outcome.
      2. It means that the short-run dynamics for this variable are completely determined by the adjustment to deviations from the long-run relationship.
      3. The postestimation command for the bounds test is estat ectest. See slides 18 and following of my 2018 London Stata Conference presentation:
      https://twitter.com/Kripfganz

      Comment


      • Hi Sebastian Kripfganz. Hope all is well. A quick question. Is there a way to use the NEWEY command keeping the structure of the alternative EC parametrization (ec1)? Thanks in advance.

        Comment


        • The procedure outlined on slide 41 of my 2018 London Stata Conference presentation should still work if you add the ec1 option.
          Code:
          webuse lutkepohl2
          ardl ln_inv ln_inc ln_consump, ec1 regstore(ardlreg)
          estimates restore ardlreg
          local cmdline `"`e(cmdline)'"'
          gettoken cmd cmdline : cmdline
          newey `cmdline' lag(4)
          The results are no longer separated into the three sections ADJ, LR, SR, but the coefficients still correspond to the ardl results.
          https://twitter.com/Kripfganz

          Comment


          • Thanks Sebastian Kripfganz for the prompt reply. I tried this, but again the output that I get corresponds to the parametrization of the ec option, not the one of the ec1. Any suggestion on how to obtain the Newey West covariance matrix for the alternative parametrization would be welcome.

            Comment


            • Two comments:

              1. My example in post #379 above, we have the special situation that the ec1 form is overparameterized because the underlying model is an ARDL(1,0,2) model with 0 lags for the ln_inc regressor. By forcing ln_inc to enter with its first lag in the long-run relationship, we have to artifically construct a corresponding short-run term that would not be present in the ec form. The coefficient of this short-run term is not freely estimated but determined by a nonlinear constraint. This overparameterization is not preserved when the results are stored with option regstore() because the covariance matrix of the coefficients would be singular. As you can see in the output, the regressor ln_consump (which has a positive number of lags) still appears with its first lag in the newey output when you use ardl with the ec1 option. You can avoid the problem for the ln_inc regressor by forcing it to have exactly 1 lag with the lags(. 1 .) option of the ardl command. Alternatively, there is the undocumented minlag1 option that enforces a minimum of 1 lag for each regressor.

              2. The parameterization of the long-run coefficients cannot be preserved for the newey command because it is a nonlinear transformation of the underlying ARDL coefficients. That remark holds both for the ec and the ec1 option. To obtain the Newey West standard errors for the long-run coefficients, you would need to use the nlcom command directly after the newey command, as on slide 42 of my 2018 London Stata Conference presentation:
              Code:
              nlcom (_b[ln_inc] / (1 - _b[L.ln_inv])) (_b[L.ln_consump] / (1 - _b[L.ln_inv]))
              https://twitter.com/Kripfganz

              Comment


              • Thanks a lot Sebastian Kripfganz . Extremely useful!

                Comment


                • Hello Sebastian thank you for all these responses. I am having a rough time finding out how you actually estimate the ARDL with ec1.I did not see this in the Stata help file or the presentations.

                  Suppose there are 2 models:

                  (1) D.Y_t = a + b*Y_t-1 + c*X_t-1 + d*D.X_t (unrestricted)
                  (2) D.Y_t = a + b*(Y_t-1 - e*X_t-1) + d*D.X_t (ec restricted)

                  In theory e = -c/b

                  It appears that your results reported are from (2).
                  Did you estimate (2) using non-linear methods (perhaps NLLS or MLE)? Do you know if this is even possible?
                  or did you estimate (1) and infer the coefficients for (2)? If so how did you estimate (1)? When I estimate (1) manually using OLS in Stata I get different answers from your estimates. I also see log-likelyhood statistic showing up in your estimation - are you using MLE? If so shouldn't the answers be the same since the model is linear - at least in theory? Also how did you obtain the standard errors for the coefficient e once it was solved for?

                  Thank you,

                  Zues

                  Comment


                  • ardl with option ec1 reports the coefficients as in equation (2). Yet, it does not directly estimate the model in this form. Instead, the model is estimated in ARDL form
                    Y_t = a1 + a2*Y_t-1 + a3*X_t + a4*X_t-1 + u_t
                    and then the coefficients for the EC representation are inferred from those ARDL coefficients. Standard errors are obtained using the Delta method. This is internally done with the nlcom command.

                    For linear models, OLS is equivalent to maximum likelihood estimation. This is why commands such as regress and ardl also report log-likelihood statistics. These statistics are easy to compute without actually running a maximum likelihood estimation.

                    You should not get different estimates when manually estimating equation (1). I can only suspect that the estimation sample may be different. The ardl command generally restricts the estimation to those observations for which the maximum lag (specified with option maxlag()) is non-missing, even if not all lags are used in the optimal model specification.
                    https://twitter.com/Kripfganz

                    Comment


                    • Originally posted by Sebastian Kripfganz View Post
                      ardl with option ec1 reports the coefficients as in equation (2). Yet, it does not directly estimate the model in this form. Instead, the model is estimated in ARDL form
                      Y_t = a1 + a2*Y_t-1 + a3*X_t + a4*X_t-1 + u_t
                      and then the coefficients for the EC representation are inferred from those ARDL coefficients. Standard errors are obtained using the Delta method. This is internally done with the nlcom command.

                      For linear models, OLS is equivalent to maximum likelihood estimation. This is why commands such as regress and ardl also report log-likelihood statistics. These statistics are easy to compute without actually running a maximum likelihood estimation.

                      You should not get different estimates when manually estimating equation (1). I can only suspect that the estimation sample may be different. The ardl command generally restricts the estimation to those observations for which the maximum lag (specified with option maxlag()) is non-missing, even if not all lags are used in the optimal model specification.


                      Hello Sebastian thank you for this reply and really all the time you are taking. Anyways I think I found an error in your code. It has to do with the estimation of the underlying model. Your program may sometimes eliminate the lag of the independent variable if its not significant/BIC criteria. You can fix it by requiring at least 1 lag.



                      Consider the example below. Once I do the first estimation I see the results of the underlying estimates do not even include a lag and the program it seems mistakenly computes the effects.
                      The fix is to make sure at least one lag is included - this can be specified with lags.


                      var1 var2 var3
                      1 5 1
                      2 7 2
                      4 1 3
                      8 5 4
                      10 4 5
                      17 7 6




                      tsset var3
                      ardl var1 var2, ec1 maxlag(1) regstore(one)
                      estimates replay one
                      reg d.var1 l.var1 l.var2 d.var2 (the true estimates)
                      ardl var1 var2, ec1 maxlag(1) lags(. 1) regstore(one) (a fix)




                      Comment


                      • That's actually not a bug but an intended feature. Forcing the command to include lags for all independent variables may not always be desirable. There is the somewhat hidden option minlag1 that ensures that at least one lag is always included, if that is desired.
                        https://twitter.com/Kripfganz

                        Comment


                        • Ok I got it now so you estimate:

                          D.Y_t-1 = aY_t-1 + bX_t

                          then adding and subtracting bX_t-1 you get:

                          D.Y_t-1 = a(Y_t-1 + b/aX_t-1)+ b(X_t -Xt-1)

                          Thank you

                          Comment


                          • That is correct.
                            https://twitter.com/Kripfganz

                            Comment


                            • Dear @Sebastian Kripfganz, thank you for your work on the ARDL package and the support you provide in this forum. I drafted a paper based on ARDL, and the results were almost perfect. Then I added fresh data, and unfortunately the new data found heteroskedasticity. Clearly this is a problem specifically with the bounds test. I have ran your `e(cmdline)' vce(robust) workaround, and see that I can have the ARDL results with robust standard errors, but these do not allow me to run the bounds test on them. Do you have any thoughts about how I should go about addressing this? Are there any other work arounds I should try?

                              Comment


                              • You might be able to apply the bootstrap procedure proposed in the following paper:
                                https://doi.org/10.1080/00036846.2017.1366643

                                I am unfortunately unable to provide help with the implementation of this procedure.
                                https://twitter.com/Kripfganz

                                Comment

                                Working...
                                X