If your looking at state space models for forecasting, the Hyndman's forecasting has quite a bit.
On 8/14/07, Bernardo Ribeiro <[EMAIL PROTECTED]> wrote: > > Here is one of the codes..... > > Thanks a lot... > > > module(finmetrics) > > genvasicek.ssf = function(param, tau=NULL, freq=1/12){ > > ## 1. Check for valid inputs > > if(length(param) < 5) > stop("Parameters must have length greater than 4") > N = length(param) - 13 > if (length(tau) != N) > stop("Length of Tau is inconsistent with Parameters") > > ## 2.Extract Parameters and Impose Constraints > > k1 = (param[1]) > k2 = (param[2]) > k3 = (param[3]) > > lambda1 = param[4] > lambda2 = param[5] > lambda3 = param[6] > > Delta = (param[7]) > > s1 = (param[8]) > s2 = (param[9]) > s3 = (param[10]) > > r21 = param[11] > r31 = param[12] > r32 = param[13] > > st1 = (param[14]) > st2 = (param[15]) > st3 = (param[16]) > st4 = (param[17]) > > ## 3. Compute Matrixes > > A1 = function(x,tau){ > (1-exp(-x*tau))/x > } > > u1 = -A1(k1,tau) ## ok > u2 = -A1(k2,tau) ## ok > u3 = -A1(k3,tau) ## ok > H = cbind (-u1/tau,-u2/tau,-u3/tau) ## ok > > v1 = (lambda1/k1)*(tau - A1(k1,tau)) + (lambda2/k2)*(tau - A1(k2,tau)) > + > (lambda3/k3)*(tau - A1(k3,tau)) > v2 = +3 * Delta * tau # Teste > > v311 = ((s1*s1)/(k1*k1)) * (tau - A1(k1,tau) - A1(k1,tau) + > A1(2*k1,tau)) > v312 = ((s1*s2*r21)/(k1*k2)) * (tau - A1(k1,tau) - A1(k2,tau) + > A1(k1+k2,tau)) > v313 = ((s1*s3*r31)/(k1*k3)) * (tau - A1(k1,tau) - A1(k3,tau) + > A1(k1+k3,tau)) > > v322 = ((s2*s2)/(k2*k2)) * (tau - A1(k2,tau) - A1(k2,tau) + > A1(2*k2,tau)) > v321 = ((s1*s2*r21)/(k1*k2)) * (tau - A1(k1,tau) - A1(k2,tau) + > A1(k1+k2,tau)) > v323 = ((s2*s3*r32)/(k2*k3)) * (tau - A1(k2,tau) - A1(k3,tau) + > A1(k2+k3,tau)) > > v333 = ((s3*s3)/(k3*k3)) * (tau - A1(k3,tau) - A1(k3,tau) + > A1(2*k3,tau)) > v331 = ((s1*s3*r31)/(k1*k3)) * (tau - A1(k3,tau) - A1(k1,tau) + > A1(k3+k1,tau)) > v323 = ((s2*s3*r32)/(k2*k3)) * (tau - A1(k2,tau) - A1(k3,tau) + > A1(k2+k3,tau)) > > v = v1+v2+0.5*(v311+v312+v313+v322+v321+v323+v333+v331+v323) > > d = -v > > A = matrix(c(0,0,0,0,0,0,0,0,0),ncol=3) > A[1,1] = 1-k1*freq > A[1,2] = 0 > A[1,3] = 0 > A[2,1] = 0 > A[2,2] = 1-k2*freq > A[2,3] = 0 > A[3,1] = 0 > A[3,2] = 0 > A[3,3] = 1-k3*freq > > ct = c(-lambda1*freq,-lambda2*freq,-lambda3*freq) > > Q = matrix(c(0,0,0,0,0,0,0,0,0),ncol=3) > Q[1,1] = s1^2 > Q[1,2] = s1*s2*r21 > Q[1,3] = s1*s3*r31 > Q[2,1] = s2*s1*r21 > Q[2,2] = s2^2 > Q[2,3] = s2*s3*r32 > Q[3,1] = s1*s3*r31 > Q[3,2] = s2*s3*r32 > Q[3,3] = s3^2 > > ## 4. Compute the State Space Form > > mDelta = matrix(c(ct,d),ncol=1) > > mPhi = rbind(A,H) > > mOmega1 = matrix(c(Q,0,0,0,0,0,0,0,0,0,0,0,0),ncol=7) > mOmega2 = > matrix(c(0,0,0,0,0,0,0,0,0,0,0,0,diag(c(st1,st2,st3,st4))),ncol=7) > > mOmega = rbind(mOmega1,mOmega2) > > mSigma = matrix(c(0,0,0,0,0,0,0,0,0,0,0,0),ncol=3) > > mSigma[1,1] = ((s1^2)/(2*k1))*(1-exp(-2*k1*freq)) > mSigma[2,2] = ((s2^2)/(2*k2))*(1-exp(-2*k2*freq)) > mSigma[3,3] = ((s3^2)/(2*k3))*(1-exp(-2*k3*freq)) > > ## 7. Return State Space Form > > ssf.mod = list(mDelta=mDelta, mPhi=mPhi, mOmega=mOmega) > CheckSsf(ssf.mod) > > } > > start = c(0.1,0.1,0.1,0.3,0.3,0.3,0.06,0.005,0.005,0.005,0.001,0.001,0.001 > , > 0.003,0.1,0.003,0.01) > > names(start)=c("logkappa1","logkappa2","logkappa3","lambda1","lambda2","lambda3","logDelta","logSigma1","logSigma2","logSigma3","Corr12","Corr13","Corr23","logSigmat1","logSigmat2","logSigmat3","logSigmat4") > > tau = c(0.25,0.5,1,5) > > l = c(0,0,0,0,0,0,0,0,0,-0,-1,-1,-1,0,0,0,0) > u = c(10,10,10,10,10,10,0.5,10,10,10,1,1,1,10,10,10,10) > > > ans.vasicek = SsfFit(start, fama.bliss, genvasicek.ssf, tau=tau, > freq=1/12, > trace=T, lower=l, upper=u, control=nlminb.control(abs.tol=1e-6,, > rel.tol=1e-6, x.tol=1e-6, eval.max=1000,iter.max=135)) > > > On 8/13/07, Bernardo Ribeiro <[EMAIL PROTECTED]> wrote: > > > > Hey all, > > > > I am trying to work under a State Space form, but I didn't get the help > > exactly. > > Have anyone eles used this functions? > > > > I was used to work with S-PLUS, but I have some codes I need to adpt. > > > > Thanks alot, > > > > Bernardo > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.