Identification in Threshold VAR's
Identification in Threshold VAR's
Hi,
I have a threshold VAR of the form
y(t) = Ay(t-1) + [By(t-1)](Indicator(Z(t)>c)) + Eta(t) ;where Z(t) is the threshold variable and c is the cutoff.
The VAR is non-linear and I know that impulse responses cannot be inferred from the standard MA(infinity) representation. My question is on the identification. Can I still use sign restrictions in this setup? As in, can I simulate the impulses and impose the sign restrictions to identify the structural shocks?
I have a threshold VAR of the form
y(t) = Ay(t-1) + [By(t-1)](Indicator(Z(t)>c)) + Eta(t) ;where Z(t) is the threshold variable and c is the cutoff.
The VAR is non-linear and I know that impulse responses cannot be inferred from the standard MA(infinity) representation. My question is on the identification. Can I still use sign restrictions in this setup? As in, can I simulate the impulses and impose the sign restrictions to identify the structural shocks?
Re: Identification in Threshold VAR's
Only contemporaneous sign restrictions, which wouldn't be all that interesting. You could try to identify shocks based upon sign restrictions in one or the other branch only; whether that's sensible would probably depend upon how persistent the two branches are.
Re: Identification in Threshold VAR's
Hi, Tom
Yesterday I checked RATS Procedures and Examples. And I did not find code on Threshold VAR. Would you please give me some suggestions ?
I use structural 5-variables VAR.
Thank you very much.
Yesterday I checked RATS Procedures and Examples. And I did not find code on Threshold VAR. Would you please give me some suggestions ?
I use structural 5-variables VAR.
Thank you very much.
Re: Identification in Threshold VAR's
Hi, Tom
Thank you very much for your quick and useful reply.
I use a 5-variable structural VAR. And I took logarithm and first difference of CPI and other four variables in the VAR. And I want to use CPI level data as an indicator, how could I find the threshold for a structural VAR using CPI level data as an indicator?
I really appreciate you could give me more hints and suggestions.
guo
Thank you very much for your quick and useful reply.
I use a 5-variable structural VAR. And I took logarithm and first difference of CPI and other four variables in the VAR. And I want to use CPI level data as an indicator, how could I find the threshold for a structural VAR using CPI level data as an indicator?
I really appreciate you could give me more hints and suggestions.
guo
Re: Identification in Threshold VAR's
The threshold variable doesn't need to be one of the variables in the VAR itself. For instance, in the Tsay interest rates example, the threshold series was a series constructed from the spreads. Just follow what's done there, defining the thresh series as the CPI level.guo wrote:Hi, Tom
Thank you very much for your quick and useful reply.
I use a 5-variable structural VAR. And I took logarithm and first difference of CPI and other four variables in the VAR. And I want to use CPI level data as an indicator, how could I find the threshold for a structural VAR using CPI level data as an indicator?
I really appreciate you could give me more hints and suggestions.
guo
However, do you really want to use CPI level as the threshold variable? It's a trending variable (in most countries, certainly), so the threshold would really be a time sample split.
Re: Identification in Threshold VAR's
Dear Tom,
Thank you very much for your very useful reply. And I have gotten the threshold for CPI level data(101.2). And next step I want to apply this level CPI threshold to 5-variable structural VAR.
Could you please give me some hints or advice on how to apply level CPI threshold to a 5-variable structural VAR?
Thank you very much.
guo
Thank you very much for your very useful reply. And I have gotten the threshold for CPI level data(101.2). And next step I want to apply this level CPI threshold to 5-variable structural VAR.
Could you please give me some hints or advice on how to apply level CPI threshold to a 5-variable structural VAR?
Thank you very much.
guo
Re: Identification in Threshold VAR's
What is it that you want to do? You've identified the threshold so you can estimate the VAR over two regimes defined using a SMPL option with CPI above and below your threshold value.guo wrote:Dear Tom,
Thank you very much for your very useful reply. And I have gotten the threshold for CPI level data(101.2). And next step I want to apply this level CPI threshold to 5-variable structural VAR.
Could you please give me some hints or advice on how to apply level CPI threshold to a 5-variable structural VAR?
Thank you very much.
guo
Re: Identification in Threshold VAR's
Dear Tom,
Thank you very much for your kind and useful advice. And I have gotten the results I want. According to the CPI level threshold, the low inflation regime only contain 43 of the 127 whole samples. So the impulse responses are explosive. And I really appreciate you could help me to check if I use SMPL option correctly to define the two regimes as followings:
Thank you very much.
guo
Thank you very much for your kind and useful advice. And I have gotten the results I want. According to the CPI level threshold, the low inflation regime only contain 43 of the 127 whole samples. So the impulse responses are explosive. And I really appreciate you could help me to check if I use SMPL option correctly to define the two regimes as followings:
Code: Select all
order cpi
com e = cpi
smpl 1 43
system(model=model_cpi)
variables dslop c_ipi dslcpi dslm1 dlneero
lags 1 to lags
det constant
end(system)
estimate(noprint,cvout=v)
......
order cpi
com e = cpi
smpl 44 127
system(model=model_cpi)
variables dslop c_ipi dslcpi dslm1 dlneero
lags 1 to lags
det constant
end(system)
estimate(noprint,cvout=v)guo
Re: Identification in Threshold VAR's
That's definitely not going to work. When you order the CPI variable, the rest of the data set stays where it is so you're not getting the observations where CPI is low.
First off, if you're using CPI (not inflation) as the threshold variable, why is it that you think the low values are low "inflation"? They're low price level, not low inflation. Also, do you want to be using the current (rather than lagged) variable as your threshold. Current is generally only used for strictly exogenous threshold series.
What you want is to use the SMPL option on ESTIMATE, not the SMPL instruction. Something like
ESTIMATE(SMPL=CPI<c)
and
ESTIMATE(SMPL=CPI>=c)
where c is the threshold value. That keeps the data in the proper order and simply pulls out the observations.
First off, if you're using CPI (not inflation) as the threshold variable, why is it that you think the low values are low "inflation"? They're low price level, not low inflation. Also, do you want to be using the current (rather than lagged) variable as your threshold. Current is generally only used for strictly exogenous threshold series.
What you want is to use the SMPL option on ESTIMATE, not the SMPL instruction. Something like
ESTIMATE(SMPL=CPI<c)
and
ESTIMATE(SMPL=CPI>=c)
where c is the threshold value. That keeps the data in the proper order and simply pulls out the observations.
Re: Identification in Threshold VAR's
Dear Tom,
Thank you very much for your quick and really helpful reply.After considering your advice carefully, I think I should use lagged inflationary data rather than CPI level data. But how can I define the which lag I should use?
By the way, I want to choose the lag for SVAR. Would you please give me some advice on that?
I have use the code in the Rats Procedures and Examples to graph accumulated impulses, but the result is the same as the normal impulses. Would you please help me to figure out which part is wrong?
Thank you very much for your quick and really helpful reply.After considering your advice carefully, I think I should use lagged inflationary data rather than CPI level data. But how can I define the which lag I should use?
By the way, I want to choose the lag for SVAR. Would you please give me some advice on that?
I have use the code in the Rats Procedures and Examples to graph accumulated impulses, but the result is the same as the normal impulses. Would you please help me to figure out which part is wrong?
Code: Select all
dec rect[series] impulses(5,5)
impulse(model=model_cpi,result=impulses,noprint,steps=24)
dec rect[ser] accumimp(%nvar,%nvar)
do i = 1,%nvar
do j = 1,%nvar
accumulate impulses(i,j) 5 24 accumimp(i,j)
end do i
end do j
estimate
compute nvar =%nvar
compute fxx =%decomp(%xx)
compute fwish =%decomp(inv(%nobs*%sigma))
compute wishdof=%nobs-%nreg
compute betaols=%modelgetcoeffs(model_cpi)
com ndraws = 500
declare vect[rect] %%responses(ndraws)
declare rect[series] accumimp(nvar,nvar)
infobox(action=define,progress,lower=1,upper=ndraws) "Monte Carlo Integration"
do draw=1,ndraws
if %clock(draw,2)==1 {
compute sigmad =%ranwisharti(fwish,wishdof)
compute fsigma =%decomp(sigmad)
compute betau =%ranmvkron(fsigma,fxx)
compute betadraw=betaols+betau
}
else
compute betadraw=betaols-betau
Push the draw for the coefficient back into the model.
compute %modelsetcoeffs(model_cpi,betadraw)
impulse(noprint,model=model_cpi,factor=g,$
results=accumimp,steps=nstep)
Save the accumulated impulse responses
dim %%responses(draw)(nvar*nvar,nstep)
ewise %%responses(draw)(i,j)=ix=%vec(%xt(accumimp,j)),ix(i)
infobox(current=draw)
end do draw
infobox(action=remove)
@mcgraphirf(model=model_cpi)Re: Identification in Threshold VAR's
This whole thread is actually in the wrong forum (I'll move it). The issue you're dealing with is covered in several posts in the Structural Breaks and Switching Models forum. Non-linear models don't have typical impulse response functions because the response of the system depends upon where you are relative to the threshold. You might want to think about getting the Structural Breaks and Switching Models course which covers the various methods for getting something akin to an IRF for threshold models.