Am 23.02.2010 13:55, schrieb Riccardo (Jack) Lucchetti:
> On Tue, 23 Feb 2010, Sven Schreiber wrote:
>
>> Artur T. schrieb:
>>> Hello gretl community ;-)
>>>
>>> I would like to ask whether there are any plans to incorporate
>>> generalized impulse response functions into VAR analysis; based on the
>>> papers by:
>>>
>>> 1. Koop, G., Pesaran, M. H. and S. M. Potter (1996), “Impulse Response
>>> Analysis in Nonlinear Multivariate Models”, Journal of Econometrics, 
>>> 74,
>>> 119–147.
>>> and maybe
>>> 2. Pesaran, M. H. and Y. Shin (1998), “Generalized Impulse Response
>>> Analysis in Linear Multivariate Models”, Economics Letters, 58, 17–29.)
>>>
>>>
>>> Or maybe anyone has written some function for it? I have no idea how
>>> difficult it is to implement this feature, but I think it might be
>>> worthy if the programming effort is not too big and the demand for it
>>> sufficient.
>>>
>>
>> IIRC the "GIRFs" are easy to obtain. If you want the GIRF for the i-th
>> variable, you just reorder the variables in the VAR such that the i-th
>> variable is in the first (or last? I always mix it up...) position, and
>> then you apply the classic Cholesky decomp. So if you want the GIRFs for
>> all n variables, you repeat this trick n times.
>>
>> That's why IMHO the GIRFs are a little over-hyped, but OTOH I don't see
>> them in papers that much, so maybe the hype isn't real.
>>
>> So this looks like a very good case for a user-contributed function
>> package. Artur, I'm sure you could do it yourself!
>
> I agree with Sven. The only thing I want to add is that I'm working on 
> a substantially revised version of my SVAR package: the code is almost 
> ready (only the cointegrated case is missing), the docs are a bit 
> behind. I'll post a link when it's ready: by studying my code, you'll 
> probably be able to write a function for GIRFs with relatively little 
> effort.
>
>
> Riccardo (Jack) Lucchetti
> Dipartimento di Economia
> Università Politecnica delle Marche
>
> r.lucchetti(a)univpm.it
> http://www.econ.univpm.it/lucchetti
>
>
> _______________________________________________
> Gretl-users mailing list
> Gretl-users(a)lists.wfu.edu
> http://lists.wfu.edu/mailman/listinfo/gretl-users
Hi all,

I found some time to improve my gretl programming skills a little bit 
and improved the function for the GIRF. I've got still some issues with 
it. Maybe somebody is interested to help me with it...

1. The results seem to be ok from my perspective. Since I cannot compare 
them at the moment, maybe someone is interested in checking the code.

2. I would like to add an output describing which is the shock variable 
and which are the responses for the generated matrix. Something like:

Responses of the respective variables to a shock in Variable 1.
Period    Variable 1 Variable 2 ...
1                    0.03        0.9

2. I wrote the function in such a way that it estimates a VAR system and 
then conducts the GIRF. Since you can have all those additional options 
like --nc --trend --robust and so on, the function would be quite big to 
consider all those cases. So, is it maybe reasonable to call the 
function after one has estimated the VAR by the conventional way and 
then calling the function?

3. I also would like to improve the plotting. I want to plot the 
responses of all variables to a specific shock within one graph. For 
example, if I have three variables which are shocked, the plot command 
must be "gnuplot 1 2 3 --time-series..." where 1 2 3 denote the 
corresponding columns of the response matrix. Is there a way to 
generalize this in such a way that one can type in the corresponding 
numbers of coulumns one wants to plot in the "function-gui" or just to 
plot all columns which equals the number of endogenous variables?

The code is here:
---------------------------------------------------------------
function void Generalized_IRF (list Y "List of variables", scalar order 
"VAR order", scalar rk "cointegration rank", scalar horizon "Forecast 
horizon")
   if rk = 0
     var order Y
   else
     vecm order rk Y
   endif
   matrix A = $compan
   matrix D= zeros(nelem(Y)*order, nelem(Y))
   D[1:nelem(Y),] = $sigma
   scalar eq= nelem(Y)
   loop i=1..eq --quiet
     matrix A$i=A
   endloop
   loop i=1..eq --quiet
     matrix response$i = zeros(horizon,horizon)
     scalar M = D[$i,$i]
     matrix O = D[,$i]
     response$i[1] = transp(M^(-0.5)*transp(A$i)^0*O) #IRF for the first 
period
     loop j=3..horizon --quie
       A$j =A^(j-1)
       E = M^(-0.5)*A$j*O #Calculate the GIRF
       response$i[j-1] = transp(E[1:eq,])
       response$i=response$i[1:horizon-1,] #Delete last row because it 
is otherwise '0'
     endloop
     response$i = response$i[,1:nelem(Y)]
   endloop
   #Print the results
   loop i=1..eq --quiet
     print response$i
   endloop

   #Plotting. Unfortunately, one has manually to set up the columns to 
plot, e.g. gnuplot 1 2 .. --time-series
   loop i=1..eq --quiet
     gnuplot 1 2 --time-series --with-lines --matrix=response$i 
--output=display { set title 'Response of variable $i to the respective 
shock';}
   endloop
end function
---------------------------------------------------------------

Best wishes,
Artur

Am 23.02.2010 13:55, schrieb Riccardo (Jack) Lucchetti:
On Tue, 23 Feb 2010, Sven Schreiber wrote:

Artur T. schrieb:
Hello gretl community ;-)

I would like to ask whether there are any plans to incorporate
generalized impulse response functions into VAR analysis; based on the
papers by:

1. Koop, G., Pesaran, M. H. and S. M. Potter (1996), “Impulse Response
Analysis in Nonlinear Multivariate Models”, Journal of Econometrics, 74,
119–147.
and maybe
2. Pesaran, M. H. and Y. Shin (1998), “Generalized Impulse Response
Analysis in Linear Multivariate Models”, Economics Letters, 58, 17–29.)


Or maybe anyone has written some function for it? I have no idea how
difficult it is to implement this feature, but I think it might be
worthy if the programming effort is not too big and the demand for it
sufficient.


IIRC the "GIRFs" are easy to obtain. If you want the GIRF for the i-th
variable, you just reorder the variables in the VAR such that the i-th
variable is in the first (or last? I always mix it up...) position, and
then you apply the classic Cholesky decomp. So if you want the GIRFs for
all n variables, you repeat this trick n times.

That's why IMHO the GIRFs are a little over-hyped, but OTOH I don't see
them in papers that much, so maybe the hype isn't real.

So this looks like a very good case for a user-contributed function
package. Artur, I'm sure you could do it yourself!

I agree with Sven. The only thing I want to add is that I'm working on a substantially revised version of my SVAR package: the code is almost ready (only the cointegrated case is missing), the docs are a bit behind. I'll post a link when it's ready: by studying my code, you'll probably be able to write a function for GIRFs with relatively little effort.


Riccardo (Jack) Lucchetti
Dipartimento di Economia
Università Politecnica delle Marche

r.lucche...@univpm.it
http://www.econ.univpm.it/lucchetti
_______________________________________________ Gretl-users mailing list gretl-us...@lists.wfu.edu http://lists.wfu.edu/mailman/listinfo/gretl-users
Hi all,

I found some time to improve my gretl programming skills a little bit and improved the function for the GIRF. I've got still some issues with it. Maybe somebody is interested to help me with it...

1. The results seem to be ok from my perspective. Since I cannot compare them at the moment, maybe someone is interested in checking the code.

2. I would like to add an output describing which is the shock variable and which are the responses for the generated matrix. Something like:

Responses of the respective variables to a shock in Variable 1.
Period    Variable 1 Variable 2 ...
1                    0.03        0.9

2. I wrote the function in such a way that it estimates a VAR system and then conducts the GIRF. Since you can have all those additional options like --nc --trend --robust and so on, the function would be quite big to consider all those cases. So, is it maybe reasonable to call the function after one has estimated the VAR by the conventional way and then calling the function?

3. I also would like to improve the plotting. I want to plot the responses of all variables to a specific shock within one graph. For example, if I have three variables which are shocked, the plot command must be "gnuplot 1 2 3 --time-series..." where 1 2 3 denote the corresponding columns of the response matrix. Is there a way to generalize this in such a way that one can type in the corresponding numbers of coulumns one wants to plot in the "function-gui" or just to plot all columns which equals the number of endogenous variables?

The code is here:
---------------------------------------------------------------
function void Generalized_IRF (list Y "List of variables", scalar order "VAR order", scalar rk "cointegration rank", scalar horizon "Forecast horizon")
  if rk = 0
    var order Y
  else
    vecm order rk Y
  endif
  matrix A = $compan
  matrix D= zeros(nelem(Y)*order, nelem(Y))
  D[1:nelem(Y),] = $sigma
  scalar eq= nelem(Y)
  loop i=1..eq --quiet
    matrix A$i=A
  endloop
  loop i=1..eq --quiet
    matrix response$i = zeros(horizon,horizon)
    scalar M = D[$i,$i]
    matrix O = D[,$i]
    response$i[1] = transp(M^(-0.5)*transp(A$i)^0*O) #IRF for the first period
    loop j=3..horizon --quie
      A$j =A^(j-1)
      E = M^(-0.5)*A$j*O #Calculate the GIRF
      response$i[j-1] = transp(E[1:eq,])
      response$i=response$i[1:horizon-1,] #Delete last row because it is otherwise '0'
    endloop
    response$i = response$i[,1:nelem(Y)]
  endloop
  #Print the results
  loop i=1..eq --quiet
    print response$i
  endloop
 
  #Plotting. Unfortunately, one has manually to set up the columns to plot, e.g. gnuplot 1 2 .. --time-series
  loop i=1..eq --quiet
    gnuplot 1 2 --time-series --with-lines --matrix=response$i --output=display { set title 'Response of variable $i to the respective shock';}
  endloop
end function
---------------------------------------------------------------

Best wishes,
Artur

Reply via email to