Time varying coefficient models with kalman filter

Questions and discussions on Time Series Analysis
Aktar
Posts: 35
Joined: Thu Apr 16, 2009 8:12 am

Time varying coefficient models with kalman filter

Unread post by Aktar »

Hi all

I want build a time varying coefficent model with a kalman filter.

I have take the programme tvarying which come from example in user guide chap 10.13.2....

but i must make some modification because my regressions is not a VAR and my process is a return to normaility process. so i have program this

Code: Select all

calendar 2000 1 1
allocate 2008:5
open data Sspace.xls
data(format=xls, org=obs) / *
table
compute kstart=2001:1,kend=2008:5

equation kalmeq returns
# constant vol_g dif_inf dif_tx var_re libor abcp swap stan_poo_vol gdpre_rate ratio_cap_gdp
declare vector b(11) bmean(11)
ewise bmean(i)=(i==2)
compute bmean=b
associate(perm) kalmeq b

linreg returns
# constant vol_g dif_inf dif_tx var_re libor abcp swap stan_poo_vol gdpre_rate ratio_cap_gdp
compute rseesq=.9*%seesq

system kalmeq
kfset(constant,noscale,likelihood=likely) xxx
#rseesq
tvarying tvx
end(system)

compute pi5 = .20**2
compute pi2 = .5**2
compute pi3 = 10000.
compute pi7 = 0.00000001
compute pi8 = 1.00

dim xxx(11,11) tvx(11,11)
*
compute likely=%const(0.0)
compute b=bmean
compute xxx=%const(0.0)
compute xxx(1,1)=pi5*pi3*rseesq
do i=1,4
  compute decayfac=i**(2*.5)
  compute xxx(i+1,i+1)=pi5*decayfac
  compute xxx(i+5,i+5)=pi5*pi2*decayfac*rseesq
end do i
compute tvx=pi7*xxx
*
do time=kstart,kend
  if time==kstart
     kalman(start=time)
  else {
     compute b=pi8*b+(1-pi8)*bmean
     compute xxx=(pi8**2)*xxx
     kalman
     }
end do time
it don't work when i run the loop, i have nothing in the output
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: Time varying coefficient models with kalman filter

Unread post by TomDoan »

You might want to look at tsayp510.prg and tsayp533.prg (Tsay's textbook examples). Those estimate models with time-varying betas. It might be closer to what you want than you'll be getting from the "VAR" code that you're trying to modify.
Aktar
Posts: 35
Joined: Thu Apr 16, 2009 8:12 am

Re: Time varying coefficient models with kalman filter

Unread post by Aktar »

ok thanks,

but in tvarying prog which is the correspondence of hyperparameters Pi5 pi2 pi3 pi7 pi8 and how we must determinate it
Last edited by Aktar on Fri Mar 09, 2012 10:19 am, edited 1 time in total.
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: Time varying coefficient models with kalman filter

Unread post by TomDoan »

KALMAN has a COHISTORY option. There's an example of that on page 262 in the RATS 7 Reference Manual.

You're trying to adapt an example that is set up for a VAR to a completely different setting. For instance,

Code: Select all

ewise bmean(i)=(i==2)
is making the prior mean 1 for the 2nd variable, and zero for the others which is probably not appropriate in your case. Similarly, the prior standard deviations are being generated in a pattern designed for a VAR. There generally won't be as many hyperparameters governing time-varying betas. (That's what you're doing, isn't it?)
Aktar
Posts: 35
Joined: Thu Apr 16, 2009 8:12 am

Re: Time varying coefficient models with kalman filter

Unread post by Aktar »

the problem it is that my state equation is an return to normality process (mean reverting) and i don't know how i can make this with dlm instruction. it is possible ?
Aktar
Posts: 35
Joined: Thu Apr 16, 2009 8:12 am

Re: Time varying coefficient models with kalman filter

Unread post by Aktar »

ok

i have try with my data and i have a graph with evolution of beta !! but i don't have made modification on different option because i don't know what are signification

it is possible to have some explanation on the command ? because i don't understand what it is write on user guide on manual ?

it is very important for me (thesis of master degree and i want make a good thing for have allocation) it is possible to have your msn tomdoan and see in "directe live" my different question ?

Code: Select all

dlm(y=returns,c=||1.0,stan_poo_vol||,sv=1.0,var=concentrate,exact,free=2,type=filter) / xstates vstates
what is it c and sv and xstates and vstates

i dont understanr what are

Code: Select all

DLM Setup Options 

A=RECTANGULAR or FRML[RECT] [identity matrix]
This gives the A matrices. The expression should evaluate to an NxN matrix.

C=RECTANGULAR or FRML[RECT] [zero matrix]
This gives the C matrices—it should evaluate to an NxM matrix.

Y=VECTOR or FRML[VECT]  [no measurement equation]
This gives the Y vectors—it should evaluate to an M vector

Y=VECTOR or FRML[VECT]  [no measurement equation]
This gives the Y vectors—it should evaluate to an M vector

SV=SYMMETRIC or FRML[SYMMETRIC] [zero]
This gives the covariance matrices of the v’s—it should evaluate to an MxM SYMMETRIC.

SW=SYMMETRIC or FRML[SYMMETRIC] [zero]
This gives the covariance matrices of the w’s—it should evaluate to an NxN SYMMETRIC array.

SX0=SYMMETRIC or FRML[SYMMETRIC] [zero]
This gives the covariance of X(0)—it should evaluate to an NxN SYMMETRIC array.

X0=VECTOR or FRML[VECTOR] [zero vector]
This gives the initial X vector—it should evaluate to an N vector.

Z=VECTOR or FRML[VECTOR] [zero]
This allows the inclusion of exogenous shifts in the state equation—it should evaluate to an N VECTOR.

B=RECTANGULAR or FRML[RECT] [NxN identity matrix]
This gives the loadings from the w's to the X's. It should evaluate to an NxL matrix. 

F=RECTANGULAR or FRML[RECT] [zero matrix]
This gives the B matrices. The expression should evaluate to an NxP matrix.

Q=SYMMETRIC or FRML[SYMMETRIC] [zero]
This gives the Q matrices—it should evaluate to an NxN SYMMETRIC.

R=SYMMETRIC or FRML[SYMMETRIC] [zero]
This gives the R matrices—it should evaluate to a PxP SYMMETRIC.

i don't understand what are this different command

if i want make a filter i just replace smoothed by filterde ?

and if i want modify initial valu how i can do ?

thanks thanks thanks M tomdoan :P
Aktar
Posts: 35
Joined: Thu Apr 16, 2009 8:12 am

Re: Time varying coefficient models with kalman filter

Unread post by Aktar »

it is ok i have found on the user's guide for dlm instruction
Aktar
Posts: 35
Joined: Thu Apr 16, 2009 8:12 am

Re: Time varying coefficient models with kalman filter

Unread post by Aktar »

Code: Select all

## MAT13. Store into Out-of-Range Matrix or Series Element
The Error Occurred At Location 0113 of loop/block
Line 4 of loop/block
when i run the prog Tvarying i've got this message ... What is the sens please ?
TomDoan
Posts: 7814
Joined: Wed Nov 01, 2006 4:36 pm

Re: Time varying coefficient models with kalman filter

Unread post by TomDoan »

Aktar wrote:

Code: Select all

## MAT13. Store into Out-of-Range Matrix or Series Element
The Error Occurred At Location 0113 of loop/block
Line 4 of loop/block
when i run the prog Tvarying i've got this message ... What is the sens please ?
You have to initialize series prior to a loop if you are going to fill them up an entry at a time. We can't really help with this without seeing the whole program. Email that to support@estima.com along with your data set.
Post Reply