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