Page 1 of 1

IRF in VARX

Posted: Sat Jul 25, 2020 8:11 pm
by Alfa318
I'm running a VARX model and I'd like to obtain the response of the endogenous variables to a shock in the exogenous variable. How do I do this in EViews (I'm using EViews 11)?

Please bare in mind that I'm extremely novice. :oops:

Many thanks.

Re: IRF in VARX

Posted: Tue Jul 28, 2020 11:32 am
by EViews Matt
Hello,

I assume you're using an EViews VAR object for your model, and unfortunately the built-in IRF tools don't support shocks to exogenous variables. Conceptually, all you need to do is zero all your endogenous and exogenous data, except for the shock you want, and then run a forecast. From a practical standpoint, it's probably easiest to to wrap the VAR object in a MODEL object. For example,

Code: Select all

' Create a sample VAR(2) with 2 exogenous variables create u 100 series x = rnd series y = nrnd series z = rnd series j = rnd series k = rnd var v.ls 1 2 x y z @ j k ' Create a model object from the VAR v.makemodel(m) ' Switch to a model scenario where we can specify overrides m.scenario "scenario 1" ' Create new series for the VAR that are all zeros. series x_1 = 0 series y_1 = 0 series z_1 = 0 series j_1 = 0 j_1(3) = 1 ' This is our shock series k_1 = 0 ' Force the model to use the *_1 series instead of the original series. m.override x y z j k m.exclude x("1 2") y("1 2") z("1 2") ' Solve the model, effectively performing a forecast m.solve ' Results for our endogenous variables are in x_1, y_1, and z_1. View them. group g x_1 y_1 z_1 g.line(m)

Re: IRF in VARX

Posted: Thu Aug 13, 2020 7:49 pm
by Alfa318
Hi Matt,

Many thanks for your help! I'm running a panel VARX and when I reach the step of "m.solve" I get an error message: "Error in Sample: Range Error". When I did it with the code you provided, it was running perfectly. But when I switch to my panel dataset, I get this error. Any advice please?

Thank you very much.

Re: IRF in VARX

Posted: Fri Aug 14, 2020 1:04 pm
by EViews Matt
Hello,

I've modified my example below to operate over a simple panel. If it works fine on your machine then there may be a sample issue with your dataset, would you be able to post your workfile and whatever program you've used to create the IRFs?

Code: Select all

' Create a sample VAR(2) with 2 exogenous variables create a 2000 2020 3 series x = rnd series y = nrnd series z = rnd series j = rnd series k = rnd var v.ls 1 2 x y z @ j k ' Create a model object from the VAR v.makemodel(m) ' Switch to a model scenario where we can specify overrides m.scenario "scenario 1" ' Create new series for the VAR that are all zeros. series x_1 = 0 series y_1 = 0 series z_1 = 0 series j_1 = 0 j_1(v.@lagorder + 1) = 1 ' This is our shock series k_1 = 0 ' Force the model to use the *_1 series instead of the original series. m.override x y z j k %ex_range = @otod(1) + " " + @otod(v.@lagorder) m.exclude x(%ex_range) y(%ex_range) z(%ex_range) ' Solve the model, effectively performing a forecast m.solve ' Results for our endogenous variables are in x_1, y_1, and z_1. View them. group g x_1 y_1 z_1 g.line(m)

Re: IRF in VARX

Posted: Sun Jan 08, 2023 12:50 am
by minko.markovski123
Hello,

I tried to replicate your code for VARX but apparently I have an issue with the solve function.

It gives me the error "Error in Sample: Range Error in "M.SOLVE"". Could you please clarify what might be the issue and how to solve it?

Many thanks

Re: IRF in VARX

Posted: Mon Jan 09, 2023 5:51 pm
by EViews Matt
Hello,

The generic "Range Error" message indicates that EViews was expecting a pair of dates to specify a range (or multiple pairs for multiple ranges in some cases) but there was a problem with the provided specification. Usually, if an individual date specification is bad then a more descriptive error is generated. More likely is that only a single date was provided where a date range (two dates) was expected.

If you've adapted my sample code to your dataset, I believe the only place this error could arise is in a modification to the variable exclusion statement, "m.exclude x(%ex_range) ...". The parenthetical expects a sample string, which is commonly a pair of dates. If you've manually set the exclusion ranges, it's easy to forgot to specify a range when a single date would seemingly work. For example, in a monthly workfile, excluding an entire year still requires specifying a range, e.g. x("2022 2022"), even though it might be tempting to write x("2022"). Such an error isn't caught until the model object fully processes the sample string during the subsequent solve procedure.

Re: IRF in VARX

Posted: Mon Jan 09, 2023 10:58 pm
by minko.markovski123
Many thanks Matt,

It was very useful and it worked.

Could you please also help with extra code (for the first one in this topic) to produce and chart historical decomposition and variance decomposition?

Many thanks in advance

Re: IRF in VARX

Posted: Tue Jan 10, 2023 4:20 am
by dakila

Re: IRF in VARX

Posted: Tue Jan 10, 2023 8:57 pm
by minko.markovski123
Thank you Dakila,

Actually the impulse response works well for me.

I am interested in the variance decomposition and historical decomposition codes only now.

Many thanks in advance