Estimating Non-Linear ARDL in STATA

In my previous try on ARDL cointegrating bounds using Microfit here, Eviews here and here, and using STATA here. The comments and suggestions I received for them were very helpful. With my current experience, I would recommend using Microfit or Eviews for ARDL, but one must be cautious with calculation glitches when they are using the crack version of Eviews.

This blog is illustrating the Non-linear ARDL cointegrating bounds which is also called Asymmetric Effects ARDL (NARDL) proposed by (Shin, Yu & Greenwood-Nimmo, 2014).  The idea behind this model is questioning the standard assumption of symmetric estimates, by which the effect of increasing of a variable is equal and opposite to the decreasing of the same variable. There are few cases mentioned in the above study like creation and destruction of jobs in boom and recession.

In the example below the nardl_data is unemployment (dependent variable) and industrial production index (independent variable). You can import this data into Stata by simply copying and pasting in data editor (tutorial).

Once imported, you have to indicate Stata that data is time series for this following command is used

tsset time

This way all the time series command will become functional. In order to estimate the NARDL following files must be downloaded, uncompressed, and paste Stata/ado/base/n folder where ever it is installed, it will then work in Stata. Following is the command

In the command below p() and q() are the number of lags of dependent and independent variable used. You can identify optimal lag by using ‘varsoc’ command in Stata, illustrated here.

nardl un ip, p(2) q(2)

Above table is standard one step ECM, the first coefficient is the convergence coefficient. and x1 is the first independent variable where x1p is the increasing portion of x1 and x1n is the decreasing portion of x1.

Below is the F bounds test, here it is 2.22, its critical values are same as the simple ARDL cointegrating bounds. Can be seen from the following paper. Currently, it is smaller than critical values.

Below table shows the long run increasing and decreasing effect of independent variable on the dependent variable. When the independent variable increases it decreases unemployment by 14.71% but when independent variable decreases, it increases unemployment by 48.69%.

The long run asymmetry and short run asymmetry is tested using F test. Since only long run F test is significant so there is only long run asymmetry.

After estimating the model, there are four types of diagnostics reported, since all of them are insignificant, so there is no autocorrelation, heteroscedasticity, misspecification and non-normality respectively.

We can also generate the graph by adding the ‘plot’ option in command and further confidence interval by using bootstrap and level option. The horizon option will identify how many years the graph will be constructed.

nardl un ip, p(2) q(4) plot horizon(40) bootstrap(100) level(95)

in the above figure, we can see that decrease in IP(industrial production) has a positive effect on UN(unemployment) shown by red line. While increasing IP has a temporary negative effect on UN shown by the green line. And the blue line showing the increasing trend of asymmetry with time.

Your comments and suggestions are welcome.

Advertisements

56 thoughts on “Estimating Non-Linear ARDL in STATA”

1. Maruf ahmed says:

Dear Author,
I would like to know what should be done when the CUSUM and CUSUMQ are unstable( more precisely, if there is structural break in the data), how can the ARDL model be run in that case? Would you please like to describe the ARDL procedure for that case.
Thanks. All the best.

1. Noman Arshed says:

add the known structural break or unknown structural break in such case shown here. And hope that adding break will suffice.

2. ayu citra muthia says:

before i processed the nardl_test, i should do the nardl.ado right? I would like to know why the nardl couldn’t be processed? after i click do the nardl.ado, i click do the nardl_test and program said unable to change to /adodev/nardl. why? I tried to processed whitout nardl.ado file and just used narl_test file, when in nardl un ip if tin(1983m3,2003m11), p(12) q(5), stata said unrecognized command: nardl. I hope you answer my question because i am so confused how to process nardl and get cumulative dynamic effect. Thank you so much

1. ayu citra muthia says:

when i processed syntax varlist in nardl.ado, it said varlist required. Why? and what should i do with the red word such as “you must provide at least 2 variables”? i should change or delete that words? and when i processed generate dependent variable and regressors local thisvariable: word 1 of `varlist’ qui gen _y = `thisvariable’, it said invalid syntax. What should i do? Thanks

2. Noman Arshed says:

you have to use the nardl.do file and copy it relevant place as mentioned in the blog. It will only work after it.

1. ayu citra muthia says:

yeah it works.. Thanks!! Oh ya, can i use the nardl.ado to 3 variables? Or i must add some code to make 3 variables work?

2. Noman Arshed says:

yes, write help nardl it will show you an example of nardl with more than 2 variables.

3. ayu citra muthia says:

I would like to know how to choose the number of L in constrain? Because i saw that the L number was so random. For example: constraint 1 L2._dy L3._dy L4._dy L5._dy L6._dy L7._dy L8._dy L9._dy L10._dy, constraint 2 L1._dx1p L3._dx1p L4._dx1p, constraint 3 L1._dx1n L2._dx1n L3._dx1n. Thank you so much

4. Noman Arshed says:

L means lag in stata. remaining i do not understand

3. ayu citra muthia says:

I would like to know in this blog before you used nardl un ip p(2) q(2), and after that you used p(2) q(4) for nardl un ip, p(2) q(4) plot horizon(40) bootstrap(100) level(95). why the number of p was changed? Thank you

1. ayu citra muthia says:

and once again, in your file, to get cumulative dynamic multiplier, you used constrain 1-3, why in your blog you didn’t use constrain? thank you

1. Noman Arshed says:

we use constraint if we have more than one independent variable and we dont want to check asymmetry in any one of them.

2. Noman Arshed says:

I just changed it to show that it can be changed, no other reason

4. khan says:

Dear Sir Noman!
Thank you very much for the presentation of NARDL. Its of great and highly appreciated.
Secondly, i would like to ask you that you mention in this tutorial that Y L1 is actually the ECM convergence coefficient. But as Y is independent variable so isn’t it the dependent variable lag 1 coefficient? Also you estimated the default model using variables as UN IP. But the below positive nad negative coefficients are different in the above-estimated NARDL model. If i am wrong please correct me. Kindly need some guidance in this regards.
Its highly appreciated.

1. Noman Arshed says:

in the example, Y is the dependent variable. This difference is the value is the calculation done by the module as proposed by the paper. they are different because when we calculate the long-run coefficients, we have to divide them with the convergence coefficient, that is why the value of IP is different in both tables.

5. Sarah Maskri says:

first of all I want to thank you sir for this interesting blog, and then I would like to ask you when we have 2 independent variable how we write the command, for example inflation is the dependent variable while oil price and real gdp are the independent variables so how to specify the command and specially the lags;
note : I didn’t found such case in nardl help so I hope you will help with this.

1. Noman Arshed says:

just add another independent variable in the command it will work.

1. Sarah Maskri says:

ok..it’s working but I still have a problem, when the results are shown there was just the regression results and the asymmetric statistics while the cointegration test statistic and the model diagnostic were absents, so what is the problem and what to do to get them ?

6. ayu citra muthia says:

Dear sir norman,
Can i know the constrain if i have 3 independent variables? because i want to know the asymmetric effect of all independent variables. Thank you so much

1. ayu citra muthia says:

1. If i had 3 exogenous variables and i used varsoc to know the maximum lag, and the result showed different lag in every variable. For example, X1=4, X2=1, X3=2, and dependent variable=2. How can i write in do file to p() and q()? Is it p(2) q(4)?
2. Is there any effect from the different lag of varsoc in every variables to constrains?
Thank you so much for your help

1. Noman Arshed says:

use the maximum P and maximum Q then the estimation will find the optimal from the selected range. Yes, different lag order can have a different effect if the model is sensitive to lag order.

2. Noman Arshed says:

if you want to see the asymmetric effect of all variables you do not need to use constrain

1. ayu citra muthia says:

But how many lag in maximum P and maximum Q? And i want to know, is it true the function of constrain is to selected lag order in first difference variables, so the variables can have bigger p-value than before? Thank you sir.

2. Noman Arshed says:

the maximum lag depends on the length of the data, and nature of the variables

7. belkhir says:

hi please i want check test the causality hatmi2011 in model NARDL
how i can do ???
thank’s

1. Noman Arshed says:

I dont know anything about the hatmi2011 causality, share me the paper to study then I will see

8. belkhir says:

hi thank you very much for answer me, i have another question
when we take model NARDL is it mean’s our model (non linear), f(x) = x1*x2 not f(x)=x1+x2+ut
thank’s

1. Noman Arshed says:

Actually, the correct name of this model is asymmetric information ARDL model, not non-linear model.

9. Ayu cm says:

Before we estimate nardl, Should we check serial correlation, heteroscedasticity, and ramsey test? And how to solve if our model has serial correlation or the ramsey test significant in 5%? Thank you

1. Noman Arshed says:

this model provides the tests of hetroskedastictiy, serial correlation, and RESET in its results

2. Ayu cm says:

But how if p-value of heteroscedasticity, serial correlation, or ramsey test was significant? It means the model had hetero, serial correlation, or t stable? Thank you

1. Ayu cm says:

But how if p-value of heteroscedasticity, serial correlation, or ramsey test was significant? It means the model had hetero, serial correlation, or not stable? Thank you

2. Noman Arshed says:

yes if they are significant it means there is a problem for that you need to study the null and alternative hypothesis used by the maker of this manual.

10. carol says:

Dear Sir Noman!
First of all ,Thank you so much for the presentation of NARDL, now ,I would like to ask you two question;
1. I can’t find the nardl.do file ,I want to know where i can get it . 2. NARDL have similar program with ARDL ,I want to know if I can use the ardl.do to estimate nardl ,or if i can use OLS to estimate NARDL immediately. look forward to your reply ,Thank you !

1. Noman Arshed says:

You can use the ARDL.do to manually calculate NARDL.do. you can download the plugin here

11. Mohammad Chhiddikur Rahman says:

Dear Sir Noman

Can you please let me know how to do AsymmetricVECM analysis using STATA or Eviews or R? I want to find out the asymmetric and symmetric price transmission equation between Wholesale and Retail prices.

Thankfully
Chhiddikur

1. Noman Arshed says:

See the paper shared in this blog, it has shown how to manually split the independent variable, use that variable in the standard VECM model to make it asymmetric VECM.

12. Mohammad Chhiddikur Rahman says:

Thank you sir. I am new in asymmetric analysis. Hope your guidance will be helpful for me.

13. Mohammad Chhiddikur Rahman says:

Dear sir
My result is here (Results.Nardl). I just followed the NARDL process that you mentioned in the blog. Can you please explain how can I get Asymmetric VECM model? I know how to het VECM model. But, wondering about asymmetric VECM.

Thanks

1. Noman Arshed says:

the Module for Asymmetric VECM is not invented yet. You have to invent it if you have to do it.

1. Mohammad Chhiddikur Rahman says:

Sir, can you please explain how can I do it?

Apologising for inconvenience.

2. Noman Arshed says:

learn the variable splitting method from the paper I shared, use it in the standard vecm model it will become asymmetric vecm

14. Mohammad Chhiddikur Rahman says:

My result is here:

nardl Retail Wholesale, p(2) q(2)

Regression results (variables renamed):

Source SS df MS Number of obs = 139
F(8, 130) = 61.81
Model 180.883053 8 22.6103816 Prob > F = 0.0000
Residual 47.5582926 130 .36583302 R-squared = 0.7918
Adj R-squared = 0.7790
Total 228.441345 138 1.65537207 Root MSE = .60484

_dy Coef. Std. Err. t P>t [95% Conf. Interval]

_y
L1. -.936925 .1095292 -8.55 0.000 -1.153615 -.7202346

_x1p
L1. .9517945 .112747 8.44 0.000 .728738 1.174851

_x1n
L1. .9344454 .1112373 8.40 0.000 .7143758 1.154515

_dy
L1. .2708677 .093002 2.91 0.004 .0868743 .4548611

_dx1p
. .7728061 .0627995 12.31 0.000 .6485648 .8970474
L1. -.264227 .1064052 -2.48 0.014 -.4747369 -.053717

_dx1n
. .903062 .0844055 10.70 0.000 .7360759 1.070048
L1. -.0922745 .0962119 -0.96 0.339 -.2826182 .0980693

_cons 15.92283 1.855981 8.58 0.000 12.25099 19.59466

Asymmetry statistics:

Long-run effect [+] Long-run effect [-]
Exog. var. coef. F-stat P>F coef. F-stat P>F

Wholesale 1.016 5252 0.000 -0.997 3578 0.000

Long-run asymmetry Short-run asymmetry
F-stat P>F F-stat P>F

Wholesale 23.46 0.000 4.232 0.042

Note: Long-run effect [-] refers to a permanent change in exog. var. by -1

Cointegration test statistics: t_BDM = -8.5541
F_PSS = 24.4760

Model diagnostics stat. p-value

Portmanteau test up to lag 40 (chi2) 45.76 0.2453
Breusch/Pagan heteroskedasticity test (chi2) 3.346 0.0674
Ramsey RESET test (F) .7251 0.5388
Jarque-Bera test on normality (chi2) 102.2 0.0000

. nardl Retail Wholesale, p(2) q(4) plot horizon(40) bootstrap(100) level(95)

Regression results (variables renamed):

Source SS df MS Number of obs = 137
F(12, 124) = 40.28
Model 181.714824 12 15.142902 Prob > F = 0.0000
Residual 46.6214134 124 .37597914 R-squared = 0.7958
Adj R-squared = 0.7761
Total 228.336238 136 1.67894293 Root MSE = .61317

_dy Coef. Std. Err. t P>t [95% Conf. Interval]

_y
L1. -.9629842 .1178921 -8.17 0.000 -1.196326 -.7296427

_x1p
L1. .983102 .1230181 7.99 0.000 .7396148 1.226589

_x1n
L1. .9661562 .1217101 7.94 0.000 .7252579 1.207055

_dy
L1. .298807 .0990486 3.02 0.003 .1027621 .4948519

_dx1p
. .7792885 .0641396 12.15 0.000 .6523383 .9062387
L1. -.3036894 .1114811 -2.72 0.007 -.5243416 -.0830371
L2. .0316443 .073314 0.43 0.667 -.1134647 .1767532
L3. -.1046995 .0722644 -1.45 0.150 -.247731 .0383319

_dx1n
. .8987479 .0889749 10.10 0.000 .7226418 1.074854
L1. -.0859892 .1065775 -0.81 0.421 -.296936 .1249576
L2. -.0371117 .0821529 -0.45 0.652 -.1997153 .125492
L3. .0624673 .0756007 0.83 0.410 -.0871677 .2121024

_cons 16.40729 2.00825 8.17 0.000 12.4324 20.38218

(4 missing values generated)

Asymmetry statistics:

Long-run effect [+] Long-run effect [-]
Exog. var. coef. F-stat P>F coef. F-stat P>F

Wholesale 1.021 4433 0.000 -1.003 3065 0.000

Long-run asymmetry Short-run asymmetry
F-stat P>F F-stat P>F

Wholesale 19.95 0.000 4.276 0.041

Note: Long-run effect [-] refers to a permanent change in exog. var. by -1

Cointegration test statistics: t_BDM = -8.1684
F_PSS = 22.6040

Model diagnostics stat. p-value

Portmanteau test up to lag 40 (chi2) 45.38 0.2579
Breusch/Pagan heteroskedasticity test (chi2) 2.401 0.1213
Ramsey RESET test (F) .2812 0.8389
Jarque-Bera test on normality (chi2) 98.62 0.0000
Bootstrapping (one dot per 10 replications): ……….

15. iqra akram says:

Respected Sir
I don’t understand what is the meaning of “paste Stata/ado/base/n ” after ardl now m try to run nardl but its not working. Kindly help me…. Shall be very thankful to you

1. Noman Arshed says:

it means open the stata folder in program files, then open ado folder and then base folder and then n folder then paste the file

16. saqiba imam says:

my all variables are I(1), can i use NARDL ?

17. Abdulkabir Adedeji says:

Dear Prof/Dr. Arshed
I just come across your blog and your responses to the constructive questions.
I specified a NARDL model with two independent variables and p(4) and q(5), but, for example, if q3 is insignificant in each independent variable, I need to trim my regression to have a parsimonious model, where all lags must be significant, please,.how can I remove those insignificant lags only?

1. Noman Arshed says:

It is better not to make holes in the lag order but if you want to then you have to construct this same model manually as the module provided in Stata might not provide this facility

18. Farween Kamaluddin says:

Dear Sir,
I’ve regressed my model using NARDL in Stata. However, in the model estimation step or after trimming the model, I get a result that says “maximum number of iterations exceeded” in the asymmetry part. What does that mean? and how can I fix it?
Thank You.

1. Noman Arshed says:

the model is too complex. either increase sample or reduce the variables which you are proposing as non linear

1. Farween Kamaluddin says:

Thank you for the reply. I have another question here, based on the above results that you’ve provided, how to interpret the ECMt-1 and where to find it? Thank you..

19. huycan says:

thank you very much !!!